@flanksource/clicky-ui 0.3.40 → 0.3.42

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 (759) hide show
  1. package/README.md +24 -0
  2. package/dist/ai.cjs +14 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +14 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.cjs +3 -1
  7. package/dist/comments/CommentCard.cjs.map +1 -1
  8. package/dist/comments/CommentCard.d.ts.map +1 -1
  9. package/dist/comments/CommentCard.js +4 -2
  10. package/dist/comments/CommentCard.js.map +1 -1
  11. package/dist/comments/CommentCardParts.cjs +16 -0
  12. package/dist/comments/CommentCardParts.cjs.map +1 -1
  13. package/dist/comments/CommentCardParts.d.ts +4 -1
  14. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  15. package/dist/comments/CommentCardParts.js +16 -0
  16. package/dist/comments/CommentCardParts.js.map +1 -1
  17. package/dist/comments/comment-types.cjs.map +1 -1
  18. package/dist/comments/comment-types.d.ts +4 -0
  19. package/dist/comments/comment-types.d.ts.map +1 -1
  20. package/dist/comments/comment-types.js.map +1 -1
  21. package/dist/components/AccordionList.cjs +5 -1
  22. package/dist/components/AccordionList.cjs.map +1 -1
  23. package/dist/components/AccordionList.d.ts +3 -1
  24. package/dist/components/AccordionList.d.ts.map +1 -1
  25. package/dist/components/AccordionList.js +5 -1
  26. package/dist/components/AccordionList.js.map +1 -1
  27. package/dist/components/Combobox.cjs +54 -8
  28. package/dist/components/Combobox.cjs.map +1 -1
  29. package/dist/components/Combobox.d.ts.map +1 -1
  30. package/dist/components/Combobox.js +56 -10
  31. package/dist/components/Combobox.js.map +1 -1
  32. package/dist/components/ComboboxMenu.cjs +139 -113
  33. package/dist/components/ComboboxMenu.cjs.map +1 -1
  34. package/dist/components/ComboboxMenu.d.ts +3 -1
  35. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  36. package/dist/components/ComboboxMenu.js +139 -113
  37. package/dist/components/ComboboxMenu.js.map +1 -1
  38. package/dist/components/ComboboxMenuTrigger.cjs +87 -0
  39. package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
  40. package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
  41. package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
  42. package/dist/components/ComboboxMenuTrigger.js +87 -0
  43. package/dist/components/ComboboxMenuTrigger.js.map +1 -0
  44. package/dist/components/JsonSchemaForm.cjs +39 -11
  45. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  46. package/dist/components/JsonSchemaForm.d.ts +1 -1
  47. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  48. package/dist/components/JsonSchemaForm.js +38 -10
  49. package/dist/components/JsonSchemaForm.js.map +1 -1
  50. package/dist/components/SegmentedControl.cjs +20 -3
  51. package/dist/components/SegmentedControl.cjs.map +1 -1
  52. package/dist/components/SegmentedControl.d.ts +11 -0
  53. package/dist/components/SegmentedControl.d.ts.map +1 -1
  54. package/dist/components/SegmentedControl.js +21 -4
  55. package/dist/components/SegmentedControl.js.map +1 -1
  56. package/dist/components/combobox-types.d.ts +8 -0
  57. package/dist/components/combobox-types.d.ts.map +1 -1
  58. package/dist/components/json-schema-form-accordion-array.cjs +3 -1
  59. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  60. package/dist/components/json-schema-form-accordion-array.d.ts +4 -1
  61. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.js +3 -1
  63. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  64. package/dist/components/json-schema-form-array-view.cjs +63 -0
  65. package/dist/components/json-schema-form-array-view.cjs.map +1 -0
  66. package/dist/components/json-schema-form-array-view.d.ts +21 -0
  67. package/dist/components/json-schema-form-array-view.d.ts.map +1 -0
  68. package/dist/components/json-schema-form-array-view.js +63 -0
  69. package/dist/components/json-schema-form-array-view.js.map +1 -0
  70. package/dist/components/json-schema-form-array.cjs +3 -7
  71. package/dist/components/json-schema-form-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-array.js +3 -7
  74. package/dist/components/json-schema-form-array.js.map +1 -1
  75. package/dist/components/json-schema-form-conditionals.cjs +67 -0
  76. package/dist/components/json-schema-form-conditionals.cjs.map +1 -0
  77. package/dist/components/json-schema-form-conditionals.d.ts +9 -0
  78. package/dist/components/json-schema-form-conditionals.d.ts.map +1 -0
  79. package/dist/components/json-schema-form-conditionals.js +67 -0
  80. package/dist/components/json-schema-form-conditionals.js.map +1 -0
  81. package/dist/components/json-schema-form-debug-badge.cjs +108 -0
  82. package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
  83. package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
  84. package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
  85. package/dist/components/json-schema-form-debug-badge.js +108 -0
  86. package/dist/components/json-schema-form-debug-badge.js.map +1 -0
  87. package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
  88. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
  89. package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
  90. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
  91. package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
  92. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
  93. package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
  94. package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
  95. package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
  96. package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
  97. package/dist/components/json-schema-form-debug-glyph.js +13 -0
  98. package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
  99. package/dist/components/json-schema-form-debug-groups.cjs +56 -0
  100. package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
  101. package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
  102. package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
  103. package/dist/components/json-schema-form-debug-groups.js +56 -0
  104. package/dist/components/json-schema-form-debug-groups.js.map +1 -0
  105. package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
  106. package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
  107. package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
  108. package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
  109. package/dist/components/json-schema-form-debug-keywords.js +159 -0
  110. package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
  111. package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
  112. package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
  113. package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
  114. package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
  115. package/dist/components/json-schema-form-debug-listeners.js +102 -0
  116. package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
  117. package/dist/components/json-schema-form-debug.cjs +31 -0
  118. package/dist/components/json-schema-form-debug.cjs.map +1 -0
  119. package/dist/components/json-schema-form-debug.d.ts +11 -0
  120. package/dist/components/json-schema-form-debug.d.ts.map +1 -0
  121. package/dist/components/json-schema-form-debug.js +31 -0
  122. package/dist/components/json-schema-form-debug.js.map +1 -0
  123. package/dist/components/json-schema-form-defaults.cjs +68 -0
  124. package/dist/components/json-schema-form-defaults.cjs.map +1 -0
  125. package/dist/components/json-schema-form-defaults.d.ts +4 -0
  126. package/dist/components/json-schema-form-defaults.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-defaults.js +68 -0
  128. package/dist/components/json-schema-form-defaults.js.map +1 -0
  129. package/dist/components/json-schema-form-enum-choice.cjs +114 -0
  130. package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
  131. package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
  132. package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-enum-choice.js +114 -0
  134. package/dist/components/json-schema-form-enum-choice.js.map +1 -0
  135. package/dist/components/json-schema-form-errors.cjs +49 -31
  136. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  137. package/dist/components/json-schema-form-errors.d.ts +4 -2
  138. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  139. package/dist/components/json-schema-form-errors.js +51 -33
  140. package/dist/components/json-schema-form-errors.js.map +1 -1
  141. package/dist/components/json-schema-form-fields.cjs +3 -93
  142. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  143. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  144. package/dist/components/json-schema-form-fields.js +1 -91
  145. package/dist/components/json-schema-form-fields.js.map +1 -1
  146. package/dist/components/json-schema-form-filter.cjs +2 -1
  147. package/dist/components/json-schema-form-filter.cjs.map +1 -1
  148. package/dist/components/json-schema-form-filter.js +2 -1
  149. package/dist/components/json-schema-form-filter.js.map +1 -1
  150. package/dist/components/json-schema-form-item-summary.cjs +6 -2
  151. package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
  152. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
  153. package/dist/components/json-schema-form-item-summary.js +6 -2
  154. package/dist/components/json-schema-form-item-summary.js.map +1 -1
  155. package/dist/components/json-schema-form-layout.cjs +28 -19
  156. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  157. package/dist/components/json-schema-form-layout.d.ts +8 -6
  158. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  159. package/dist/components/json-schema-form-layout.js +29 -20
  160. package/dist/components/json-schema-form-layout.js.map +1 -1
  161. package/dist/components/json-schema-form-listener-paths.cjs +52 -0
  162. package/dist/components/json-schema-form-listener-paths.cjs.map +1 -0
  163. package/dist/components/json-schema-form-listener-paths.d.ts +10 -0
  164. package/dist/components/json-schema-form-listener-paths.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-listener-paths.js +52 -0
  166. package/dist/components/json-schema-form-listener-paths.js.map +1 -0
  167. package/dist/components/json-schema-form-listener-types.d.ts +22 -0
  168. package/dist/components/json-schema-form-listener-types.d.ts.map +1 -0
  169. package/dist/components/json-schema-form-listeners.cjs +256 -0
  170. package/dist/components/json-schema-form-listeners.cjs.map +1 -0
  171. package/dist/components/json-schema-form-listeners.d.ts +13 -0
  172. package/dist/components/json-schema-form-listeners.d.ts.map +1 -0
  173. package/dist/components/json-schema-form-listeners.js +256 -0
  174. package/dist/components/json-schema-form-listeners.js.map +1 -0
  175. package/dist/components/json-schema-form-object-array-view.cjs +62 -0
  176. package/dist/components/json-schema-form-object-array-view.cjs.map +1 -0
  177. package/dist/components/json-schema-form-object-array-view.d.ts +14 -0
  178. package/dist/components/json-schema-form-object-array-view.d.ts.map +1 -0
  179. package/dist/components/json-schema-form-object-array-view.js +62 -0
  180. package/dist/components/json-schema-form-object-array-view.js.map +1 -0
  181. package/dist/components/json-schema-form-object.cjs +3 -0
  182. package/dist/components/json-schema-form-object.cjs.map +1 -1
  183. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  184. package/dist/components/json-schema-form-object.js +3 -0
  185. package/dist/components/json-schema-form-object.js.map +1 -1
  186. package/dist/components/json-schema-form-preferences.cjs +1 -0
  187. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  188. package/dist/components/json-schema-form-preferences.d.ts +1 -0
  189. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  190. package/dist/components/json-schema-form-preferences.js +1 -0
  191. package/dist/components/json-schema-form-preferences.js.map +1 -1
  192. package/dist/components/json-schema-form-render.cjs +36 -12
  193. package/dist/components/json-schema-form-render.cjs.map +1 -1
  194. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  195. package/dist/components/json-schema-form-render.js +38 -14
  196. package/dist/components/json-schema-form-render.js.map +1 -1
  197. package/dist/components/json-schema-form-resolve.cjs +6 -99
  198. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  199. package/dist/components/json-schema-form-resolve.d.ts +1 -8
  200. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  201. package/dist/components/json-schema-form-resolve.js +5 -98
  202. package/dist/components/json-schema-form-resolve.js.map +1 -1
  203. package/dist/components/json-schema-form-runtime-types.d.ts +16 -0
  204. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
  205. package/dist/components/json-schema-form-table-array.cjs +67 -16
  206. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  207. package/dist/components/json-schema-form-table-array.d.ts +4 -1
  208. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  209. package/dist/components/json-schema-form-table-array.js +70 -19
  210. package/dist/components/json-schema-form-table-array.js.map +1 -1
  211. package/dist/components/json-schema-form-tone.cjs +12 -0
  212. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  213. package/dist/components/json-schema-form-tone.js +12 -0
  214. package/dist/components/json-schema-form-tone.js.map +1 -1
  215. package/dist/components/json-schema-form-types.d.ts +17 -0
  216. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  217. package/dist/components/json-schema-form-utils.cjs +7 -1
  218. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  219. package/dist/components/json-schema-form-utils.d.ts +2 -1
  220. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  221. package/dist/components/json-schema-form-utils.js +7 -1
  222. package/dist/components/json-schema-form-utils.js.map +1 -1
  223. package/dist/components.cjs +3 -2
  224. package/dist/components.cjs.map +1 -1
  225. package/dist/components.d.ts +3 -2
  226. package/dist/components.d.ts.map +1 -1
  227. package/dist/components.js +2 -1
  228. package/dist/components.js.map +1 -1
  229. package/dist/data/DataTable.cjs +9 -3
  230. package/dist/data/DataTable.cjs.map +1 -1
  231. package/dist/data/DataTable.d.ts +6 -0
  232. package/dist/data/DataTable.d.ts.map +1 -1
  233. package/dist/data/DataTable.js +9 -3
  234. package/dist/data/DataTable.js.map +1 -1
  235. package/dist/data/FixtureEditor/FixtureEditor.cjs +43 -24
  236. package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -1
  237. package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -1
  238. package/dist/data/FixtureEditor/FixtureEditor.js +43 -24
  239. package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -1
  240. package/dist/data/GraphDiagram.cjs +125 -138
  241. package/dist/data/GraphDiagram.cjs.map +1 -1
  242. package/dist/data/GraphDiagram.d.ts +30 -23
  243. package/dist/data/GraphDiagram.d.ts.map +1 -1
  244. package/dist/data/GraphDiagram.js +128 -141
  245. package/dist/data/GraphDiagram.js.map +1 -1
  246. package/dist/data/GraphDiagramEdges.cjs +208 -0
  247. package/dist/data/GraphDiagramEdges.cjs.map +1 -0
  248. package/dist/data/GraphDiagramEdges.d.ts +40 -0
  249. package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
  250. package/dist/data/GraphDiagramEdges.js +208 -0
  251. package/dist/data/GraphDiagramEdges.js.map +1 -0
  252. package/dist/data/GraphDiagramNodes.cjs +142 -0
  253. package/dist/data/GraphDiagramNodes.cjs.map +1 -0
  254. package/dist/data/GraphDiagramNodes.d.ts +22 -0
  255. package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
  256. package/dist/data/GraphDiagramNodes.js +142 -0
  257. package/dist/data/GraphDiagramNodes.js.map +1 -0
  258. package/dist/data/Tree.cjs +10 -2
  259. package/dist/data/Tree.cjs.map +1 -1
  260. package/dist/data/Tree.d.ts +6 -1
  261. package/dist/data/Tree.d.ts.map +1 -1
  262. package/dist/data/Tree.js +10 -2
  263. package/dist/data/Tree.js.map +1 -1
  264. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
  265. package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
  266. package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
  267. package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
  268. package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
  269. package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
  270. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  271. package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
  272. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  273. package/dist/data/ai/PromptRunEditor/index.js +38 -44
  274. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  275. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
  276. package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
  277. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
  278. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
  279. package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
  280. package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
  281. package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
  282. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
  283. package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
  284. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
  285. package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
  286. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
  287. package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
  288. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
  289. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
  290. package/dist/data/ai/SessionInspector.approvals.js +26 -2
  291. package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
  292. package/dist/data/ai/SessionInspector.cjs +143 -167
  293. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  294. package/dist/data/ai/SessionInspector.collection-types.d.ts +5 -0
  295. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
  296. package/dist/data/ai/SessionInspector.collection.cjs +18 -5
  297. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
  298. package/dist/data/ai/SessionInspector.collection.d.ts +2 -0
  299. package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -1
  300. package/dist/data/ai/SessionInspector.collection.fixtures.d.ts +6 -0
  301. package/dist/data/ai/SessionInspector.collection.fixtures.d.ts.map +1 -0
  302. package/dist/data/ai/SessionInspector.collection.js +18 -5
  303. package/dist/data/ai/SessionInspector.collection.js.map +1 -1
  304. package/dist/data/ai/SessionInspector.d.ts +24 -2
  305. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  306. package/dist/data/ai/SessionInspector.hierarchy-state.cjs +105 -7
  307. package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -1
  308. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +12 -1
  309. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -1
  310. package/dist/data/ai/SessionInspector.hierarchy-state.js +107 -9
  311. package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -1
  312. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  313. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  314. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  315. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  316. package/dist/data/ai/SessionInspector.js +144 -168
  317. package/dist/data/ai/SessionInspector.js.map +1 -1
  318. package/dist/data/ai/SessionInspector.legacy.cjs +116 -0
  319. package/dist/data/ai/SessionInspector.legacy.cjs.map +1 -0
  320. package/dist/data/ai/SessionInspector.legacy.d.ts +19 -0
  321. package/dist/data/ai/SessionInspector.legacy.d.ts.map +1 -0
  322. package/dist/data/ai/SessionInspector.legacy.js +116 -0
  323. package/dist/data/ai/SessionInspector.legacy.js.map +1 -0
  324. package/dist/data/ai/SessionInspector.panels.cjs +3 -0
  325. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  326. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  327. package/dist/data/ai/SessionInspector.panels.js +3 -0
  328. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  329. package/dist/data/ai/SessionInspector.plan.cjs +29 -12
  330. package/dist/data/ai/SessionInspector.plan.cjs.map +1 -1
  331. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -1
  332. package/dist/data/ai/SessionInspector.plan.js +30 -13
  333. package/dist/data/ai/SessionInspector.plan.js.map +1 -1
  334. package/dist/data/ai/SessionInspector.remote-view.cjs +44 -0
  335. package/dist/data/ai/SessionInspector.remote-view.cjs.map +1 -0
  336. package/dist/data/ai/SessionInspector.remote-view.d.ts +11 -0
  337. package/dist/data/ai/SessionInspector.remote-view.d.ts.map +1 -0
  338. package/dist/data/ai/SessionInspector.remote-view.js +44 -0
  339. package/dist/data/ai/SessionInspector.remote-view.js.map +1 -0
  340. package/dist/data/ai/SessionInspector.remote.cjs +275 -0
  341. package/dist/data/ai/SessionInspector.remote.cjs.map +1 -0
  342. package/dist/data/ai/SessionInspector.remote.d.ts +57 -0
  343. package/dist/data/ai/SessionInspector.remote.d.ts.map +1 -0
  344. package/dist/data/ai/SessionInspector.remote.js +275 -0
  345. package/dist/data/ai/SessionInspector.remote.js.map +1 -0
  346. package/dist/data/ai/SessionInspector.summary.cjs +9 -159
  347. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  348. package/dist/data/ai/SessionInspector.summary.d.ts +0 -3
  349. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
  350. package/dist/data/ai/SessionInspector.summary.js +11 -161
  351. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  352. package/dist/data/ai/SessionInspector.tab-state.cjs +15 -0
  353. package/dist/data/ai/SessionInspector.tab-state.cjs.map +1 -0
  354. package/dist/data/ai/SessionInspector.tab-state.d.ts +3 -0
  355. package/dist/data/ai/SessionInspector.tab-state.d.ts.map +1 -0
  356. package/dist/data/ai/SessionInspector.tab-state.js +15 -0
  357. package/dist/data/ai/SessionInspector.tab-state.js.map +1 -0
  358. package/dist/data/ai/SessionInspector.tabs.model.cjs +31 -18
  359. package/dist/data/ai/SessionInspector.tabs.model.cjs.map +1 -1
  360. package/dist/data/ai/SessionInspector.tabs.model.d.ts +3 -1
  361. package/dist/data/ai/SessionInspector.tabs.model.d.ts.map +1 -1
  362. package/dist/data/ai/SessionInspector.tabs.model.js +32 -19
  363. package/dist/data/ai/SessionInspector.tabs.model.js.map +1 -1
  364. package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
  365. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
  366. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
  367. package/dist/data/ai/SessionInspector.transcript.js +4 -0
  368. package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
  369. package/dist/data/ai/SessionInspector.verification.cjs +53 -0
  370. package/dist/data/ai/SessionInspector.verification.cjs.map +1 -0
  371. package/dist/data/ai/SessionInspector.verification.d.ts +7 -0
  372. package/dist/data/ai/SessionInspector.verification.d.ts.map +1 -0
  373. package/dist/data/ai/SessionInspector.verification.js +53 -0
  374. package/dist/data/ai/SessionInspector.verification.js.map +1 -0
  375. package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
  376. package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
  377. package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
  378. package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
  379. package/dist/data/ai/SessionViewer.approval-body.js +146 -0
  380. package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
  381. package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
  382. package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
  383. package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
  384. package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
  385. package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
  386. package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
  387. package/dist/data/ai/SessionViewer.cjs +57 -20
  388. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  389. package/dist/data/ai/SessionViewer.d.ts +13 -3
  390. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  391. package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
  392. package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
  393. package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
  394. package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
  395. package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
  396. package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
  397. package/dist/data/ai/SessionViewer.decision.cjs +21 -0
  398. package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
  399. package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
  400. package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
  401. package/dist/data/ai/SessionViewer.decision.js +21 -0
  402. package/dist/data/ai/SessionViewer.decision.js.map +1 -0
  403. package/dist/data/ai/SessionViewer.input.cjs +14 -0
  404. package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
  405. package/dist/data/ai/SessionViewer.input.d.ts +5 -0
  406. package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
  407. package/dist/data/ai/SessionViewer.input.js +14 -0
  408. package/dist/data/ai/SessionViewer.input.js.map +1 -1
  409. package/dist/data/ai/SessionViewer.js +58 -21
  410. package/dist/data/ai/SessionViewer.js.map +1 -1
  411. package/dist/data/ai/SessionViewer.model.cjs +7 -1
  412. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  413. package/dist/data/ai/SessionViewer.model.d.ts +25 -3
  414. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  415. package/dist/data/ai/SessionViewer.model.js +7 -1
  416. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  417. package/dist/data/ai/SessionViewer.rows.cjs +6 -3
  418. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  419. package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
  420. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  421. package/dist/data/ai/SessionViewer.rows.js +6 -3
  422. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  423. package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
  424. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
  425. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  426. package/dist/data/ai/SessionViewer.tool-row.js +27 -235
  427. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
  428. package/dist/data/ai/SessionViewer.unified.d.ts +17 -0
  429. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  430. package/dist/data/ai/SessionViewerMenu.cjs +8 -2
  431. package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
  432. package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
  433. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  434. package/dist/data/ai/SessionViewerMenu.js +8 -2
  435. package/dist/data/ai/SessionViewerMenu.js.map +1 -1
  436. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
  437. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  438. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
  439. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  440. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
  441. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  442. package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
  443. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  444. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
  445. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  446. package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
  447. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  448. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
  449. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
  450. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  451. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
  452. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  453. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  454. package/dist/data/ai/SpecRuntimeEditor/update.cjs +14 -6
  455. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  456. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
  457. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  458. package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
  459. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  460. package/dist/data/ai/approval-request.cjs +75 -0
  461. package/dist/data/ai/approval-request.cjs.map +1 -0
  462. package/dist/data/ai/approval-request.d.ts +155 -0
  463. package/dist/data/ai/approval-request.d.ts.map +1 -0
  464. package/dist/data/ai/approval-request.js +75 -0
  465. package/dist/data/ai/approval-request.js.map +1 -0
  466. package/dist/data/ai/index.d.ts +6 -1
  467. package/dist/data/ai/index.d.ts.map +1 -1
  468. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
  469. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
  470. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
  471. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
  472. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
  473. package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
  474. package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
  475. package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
  476. package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
  477. package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
  478. package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
  479. package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
  480. package/dist/data/ai/runtime-preset-menu/model.js +73 -0
  481. package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
  482. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
  483. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
  484. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
  485. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
  486. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
  487. package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
  488. package/dist/data/ai/runtime-spec-fields.cjs +166 -0
  489. package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
  490. package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
  491. package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
  492. package/dist/data/ai/runtime-spec-fields.js +166 -0
  493. package/dist/data/ai/runtime-spec-fields.js.map +1 -0
  494. package/dist/data/ai/session-categories.cjs +4 -0
  495. package/dist/data/ai/session-categories.cjs.map +1 -1
  496. package/dist/data/ai/session-categories.d.ts +1 -0
  497. package/dist/data/ai/session-categories.d.ts.map +1 -1
  498. package/dist/data/ai/session-categories.js +4 -0
  499. package/dist/data/ai/session-categories.js.map +1 -1
  500. package/dist/data/ai/use-session-scroll.cjs +49 -21
  501. package/dist/data/ai/use-session-scroll.cjs.map +1 -1
  502. package/dist/data/ai/use-session-scroll.d.ts +2 -0
  503. package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
  504. package/dist/data/ai/use-session-scroll.js +49 -21
  505. package/dist/data/ai/use-session-scroll.js.map +1 -1
  506. package/dist/data/chat/Chat.runtime.cjs +1 -1
  507. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  508. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  509. package/dist/data/chat/Chat.runtime.js +1 -1
  510. package/dist/data/chat/Chat.runtime.js.map +1 -1
  511. package/dist/data/graph-columns-layout.cjs +216 -0
  512. package/dist/data/graph-columns-layout.cjs.map +1 -0
  513. package/dist/data/graph-columns-layout.d.ts +56 -0
  514. package/dist/data/graph-columns-layout.d.ts.map +1 -0
  515. package/dist/data/graph-columns-layout.js +216 -0
  516. package/dist/data/graph-columns-layout.js.map +1 -0
  517. package/dist/data/graph-diagram-model.cjs +73 -0
  518. package/dist/data/graph-diagram-model.cjs.map +1 -0
  519. package/dist/data/graph-diagram-model.d.ts +90 -0
  520. package/dist/data/graph-diagram-model.d.ts.map +1 -0
  521. package/dist/data/graph-diagram-model.js +73 -0
  522. package/dist/data/graph-diagram-model.js.map +1 -0
  523. package/dist/data/graph-edge-routing.cjs +235 -0
  524. package/dist/data/graph-edge-routing.cjs.map +1 -0
  525. package/dist/data/graph-edge-routing.d.ts +73 -0
  526. package/dist/data/graph-edge-routing.d.ts.map +1 -0
  527. package/dist/data/graph-edge-routing.js +235 -0
  528. package/dist/data/graph-edge-routing.js.map +1 -0
  529. package/dist/data/graph-layout.cjs +0 -82
  530. package/dist/data/graph-layout.cjs.map +1 -1
  531. package/dist/data/graph-layout.d.ts +1 -28
  532. package/dist/data/graph-layout.d.ts.map +1 -1
  533. package/dist/data/graph-layout.js +1 -83
  534. package/dist/data/graph-layout.js.map +1 -1
  535. package/dist/data/har/HarPanel.cjs +129 -33
  536. package/dist/data/har/HarPanel.cjs.map +1 -1
  537. package/dist/data/har/HarPanel.d.ts +13 -1
  538. package/dist/data/har/HarPanel.d.ts.map +1 -1
  539. package/dist/data/har/HarPanel.js +130 -34
  540. package/dist/data/har/HarPanel.js.map +1 -1
  541. package/dist/data/har/fixtures.d.ts +12 -0
  542. package/dist/data/har/fixtures.d.ts.map +1 -1
  543. package/dist/data/har/types.d.ts +12 -0
  544. package/dist/data/har/types.d.ts.map +1 -1
  545. package/dist/data/runtime/RuntimeBar.cjs +67 -84
  546. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  547. package/dist/data/runtime/RuntimeBar.d.ts +4 -5
  548. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  549. package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
  550. package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
  551. package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
  552. package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
  553. package/dist/data/runtime/RuntimeBar.fields.js +170 -0
  554. package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
  555. package/dist/data/runtime/RuntimeBar.js +70 -87
  556. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  557. package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
  558. package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
  559. package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
  560. package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
  561. package/dist/data/runtime/RuntimeBar.selection.js +56 -0
  562. package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
  563. package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
  564. package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
  565. package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
  566. package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
  567. package/dist/data/runtime/RuntimeBarActions.js +10 -6
  568. package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
  569. package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
  570. package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
  571. package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
  572. package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
  573. package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
  574. package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
  575. package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
  576. package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
  577. package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
  578. package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
  579. package/dist/data/runtime/RuntimeBarLayout.js +95 -0
  580. package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
  581. package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
  582. package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
  583. package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
  584. package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
  585. package/dist/data/runtime/RuntimeBarSegment.js +25 -14
  586. package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
  587. package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
  588. package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
  589. package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
  590. package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
  591. package/dist/data/runtime/RuntimeLimitInput.js +41 -0
  592. package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
  593. package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
  594. package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
  595. package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
  596. package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
  597. package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
  598. package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
  599. package/dist/data/use-edge-focus.cjs +20 -0
  600. package/dist/data/use-edge-focus.cjs.map +1 -0
  601. package/dist/data/use-edge-focus.d.ts +23 -0
  602. package/dist/data/use-edge-focus.d.ts.map +1 -0
  603. package/dist/data/use-edge-focus.js +20 -0
  604. package/dist/data/use-edge-focus.js.map +1 -0
  605. package/dist/data/use-pan-zoom.cjs +159 -0
  606. package/dist/data/use-pan-zoom.cjs.map +1 -0
  607. package/dist/data/use-pan-zoom.d.ts +79 -0
  608. package/dist/data/use-pan-zoom.d.ts.map +1 -0
  609. package/dist/data/use-pan-zoom.js +159 -0
  610. package/dist/data/use-pan-zoom.js.map +1 -0
  611. package/dist/data/version-info.cjs +3 -3
  612. package/dist/data/version-info.js +3 -3
  613. package/dist/data.cjs +5 -1
  614. package/dist/data.cjs.map +1 -1
  615. package/dist/data.d.ts +4 -3
  616. package/dist/data.d.ts.map +1 -1
  617. package/dist/data.js +6 -2
  618. package/dist/data.js.map +1 -1
  619. package/dist/devtools/useDebugStream.cjs +5 -1
  620. package/dist/devtools/useDebugStream.cjs.map +1 -1
  621. package/dist/devtools/useDebugStream.d.ts.map +1 -1
  622. package/dist/devtools/useDebugStream.js +6 -2
  623. package/dist/devtools/useDebugStream.js.map +1 -1
  624. package/dist/hooks/event-source-provider.cjs +9 -0
  625. package/dist/hooks/event-source-provider.cjs.map +1 -0
  626. package/dist/hooks/event-source-provider.d.ts +15 -0
  627. package/dist/hooks/event-source-provider.d.ts.map +1 -0
  628. package/dist/hooks/event-source-provider.js +9 -0
  629. package/dist/hooks/event-source-provider.js.map +1 -0
  630. package/dist/hooks/event-source.cjs +11 -0
  631. package/dist/hooks/event-source.cjs.map +1 -0
  632. package/dist/hooks/event-source.d.ts +22 -0
  633. package/dist/hooks/event-source.d.ts.map +1 -0
  634. package/dist/hooks/event-source.js +11 -0
  635. package/dist/hooks/event-source.js.map +1 -0
  636. package/dist/hooks/use-log-tail.cjs +5 -1
  637. package/dist/hooks/use-log-tail.cjs.map +1 -1
  638. package/dist/hooks/use-log-tail.d.ts.map +1 -1
  639. package/dist/hooks/use-log-tail.js +5 -1
  640. package/dist/hooks/use-log-tail.js.map +1 -1
  641. package/dist/hooks/use-prompts.cjs +5 -1
  642. package/dist/hooks/use-prompts.cjs.map +1 -1
  643. package/dist/hooks/use-prompts.d.ts.map +1 -1
  644. package/dist/hooks/use-prompts.js +6 -2
  645. package/dist/hooks/use-prompts.js.map +1 -1
  646. package/dist/hooks/use-task-run.cjs +9 -2
  647. package/dist/hooks/use-task-run.cjs.map +1 -1
  648. package/dist/hooks/use-task-run.d.ts.map +1 -1
  649. package/dist/hooks/use-task-run.js +10 -3
  650. package/dist/hooks/use-task-run.js.map +1 -1
  651. package/dist/hooks.cjs +4 -0
  652. package/dist/hooks.cjs.map +1 -1
  653. package/dist/hooks.d.ts +2 -0
  654. package/dist/hooks.d.ts.map +1 -1
  655. package/dist/hooks.js +4 -0
  656. package/dist/hooks.js.map +1 -1
  657. package/dist/icons/programmingCatalog.cjs +34 -34
  658. package/dist/icons/programmingCatalog.cjs.map +1 -1
  659. package/dist/icons/programmingCatalog.js +34 -34
  660. package/dist/icons/programmingCatalog.js.map +1 -1
  661. package/dist/index.cjs +14 -3
  662. package/dist/index.cjs.map +1 -1
  663. package/dist/index.js +14 -3
  664. package/dist/index.js.map +1 -1
  665. package/dist/monaco/MonacoEditor.cjs +4 -1
  666. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  667. package/dist/monaco/MonacoEditor.d.ts +1 -1
  668. package/dist/monaco/MonacoEditor.d.ts.map +1 -1
  669. package/dist/monaco/MonacoEditor.js +4 -1
  670. package/dist/monaco/MonacoEditor.js.map +1 -1
  671. package/dist/monaco/types.d.ts +2 -1
  672. package/dist/monaco/types.d.ts.map +1 -1
  673. package/dist/overlay/CommandPalette.cjs +14 -4
  674. package/dist/overlay/CommandPalette.cjs.map +1 -1
  675. package/dist/overlay/CommandPalette.d.ts +5 -1
  676. package/dist/overlay/CommandPalette.d.ts.map +1 -1
  677. package/dist/overlay/CommandPalette.js +14 -4
  678. package/dist/overlay/CommandPalette.js.map +1 -1
  679. package/dist/overlay/CommandPaletteList.cjs +5 -0
  680. package/dist/overlay/CommandPaletteList.cjs.map +1 -1
  681. package/dist/overlay/CommandPaletteList.d.ts +4 -2
  682. package/dist/overlay/CommandPaletteList.d.ts.map +1 -1
  683. package/dist/overlay/CommandPaletteList.js +5 -0
  684. package/dist/overlay/CommandPaletteList.js.map +1 -1
  685. package/dist/overlay/DropdownMenu.cjs +2 -0
  686. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  687. package/dist/overlay/DropdownMenu.d.ts +4 -0
  688. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  689. package/dist/overlay/DropdownMenu.js +2 -0
  690. package/dist/overlay/DropdownMenu.js.map +1 -1
  691. package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
  692. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  693. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  694. package/dist/overlay/DropdownMenuSubmenu.js +31 -15
  695. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  696. package/dist/rpc/OperationCatalog.cjs +32 -27
  697. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  698. package/dist/rpc/OperationCatalog.d.ts +11 -1
  699. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  700. package/dist/rpc/OperationCatalog.js +32 -27
  701. package/dist/rpc/OperationCatalog.js.map +1 -1
  702. package/dist/rpc/OperationEntityContextPicker.cjs +62 -256
  703. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
  704. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
  705. package/dist/rpc/OperationEntityContextPicker.js +64 -258
  706. package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
  707. package/dist/rpc/OperationEntityPicker.cjs +185 -0
  708. package/dist/rpc/OperationEntityPicker.cjs.map +1 -0
  709. package/dist/rpc/OperationEntityPicker.d.ts +51 -0
  710. package/dist/rpc/OperationEntityPicker.d.ts.map +1 -0
  711. package/dist/rpc/OperationEntityPicker.js +185 -0
  712. package/dist/rpc/OperationEntityPicker.js.map +1 -0
  713. package/dist/rpc/OperationEntityPicker.model.cjs +39 -0
  714. package/dist/rpc/OperationEntityPicker.model.cjs.map +1 -0
  715. package/dist/rpc/OperationEntityPicker.model.d.ts +27 -0
  716. package/dist/rpc/OperationEntityPicker.model.d.ts.map +1 -0
  717. package/dist/rpc/OperationEntityPicker.model.js +39 -0
  718. package/dist/rpc/OperationEntityPicker.model.js.map +1 -0
  719. package/dist/rpc/operationCatalogRowSelection.cjs +85 -0
  720. package/dist/rpc/operationCatalogRowSelection.cjs.map +1 -0
  721. package/dist/rpc/operationCatalogRowSelection.d.ts +57 -0
  722. package/dist/rpc/operationCatalogRowSelection.d.ts.map +1 -0
  723. package/dist/rpc/operationCatalogRowSelection.js +85 -0
  724. package/dist/rpc/operationCatalogRowSelection.js.map +1 -0
  725. package/dist/rpc/operationEntityPicker.fixtures.d.ts +13 -0
  726. package/dist/rpc/operationEntityPicker.fixtures.d.ts.map +1 -0
  727. package/dist/rpc/useOperationPages.cjs +6 -1
  728. package/dist/rpc/useOperationPages.cjs.map +1 -1
  729. package/dist/rpc/useOperationPages.d.ts +3 -1
  730. package/dist/rpc/useOperationPages.d.ts.map +1 -1
  731. package/dist/rpc/useOperationPages.js +6 -1
  732. package/dist/rpc/useOperationPages.js.map +1 -1
  733. package/dist/rpc.cjs +2 -0
  734. package/dist/rpc.cjs.map +1 -1
  735. package/dist/rpc.d.ts +2 -0
  736. package/dist/rpc.d.ts.map +1 -1
  737. package/dist/rpc.js +2 -0
  738. package/dist/rpc.js.map +1 -1
  739. package/dist/styles.css +1 -1
  740. package/package.json +4 -1
  741. package/schemas/json-schema-form.schema.json +571 -0
  742. package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
  743. package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
  744. package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
  745. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
  746. package/dist/data/runtime/RuntimeBarCombo.js +0 -423
  747. package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
  748. package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
  749. package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
  750. package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
  751. package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
  752. package/dist/data/runtime/RuntimeBarLimits.js +0 -262
  753. package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
  754. package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
  755. package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
  756. package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
  757. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
  758. package/dist/data/runtime/RuntimeBarSegments.js +0 -346
  759. package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
@@ -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;"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const DEFAULT_LIMITS = { minScale: 0.2, maxScale: 4 };
5
+ const BUTTON_ZOOM_FACTOR = 1.25;
6
+ const WHEEL_ZOOM_RATE = 0.01;
7
+ const OVERFLOW_MARGIN = 8;
8
+ const DRAG_THRESHOLD = 4;
9
+ function zoomAround(transform, point, factor, limits = DEFAULT_LIMITS) {
10
+ const scale = Math.min(limits.maxScale, Math.max(limits.minScale, transform.scale * factor));
11
+ const ratio = scale / transform.scale;
12
+ return {
13
+ x: point.x - (point.x - transform.x) * ratio,
14
+ y: point.y - (point.y - transform.y) * ratio,
15
+ scale
16
+ };
17
+ }
18
+ function fitOffset(viewport, content, focus, scale) {
19
+ const slack = viewport - content * scale;
20
+ return slack >= 0 ? slack / 2 : Math.min(0, Math.max(slack, viewport / 2 - focus * scale));
21
+ }
22
+ function fitTransform(content, viewport, limits = DEFAULT_LIMITS, fit = {}) {
23
+ if (viewport.width <= 0 || viewport.height <= 0 || content.width <= 0 || content.height <= 0) {
24
+ return { x: 0, y: 0, scale: 1 };
25
+ }
26
+ const whole = Math.min(1, viewport.width / content.width, viewport.height / content.height);
27
+ const scale = Math.max(limits.minScale, Math.min(1, fit.minScale ?? 0), whole);
28
+ const focus = fit.focus ?? { x: content.width / 2, y: content.height / 2 };
29
+ return {
30
+ x: fitOffset(viewport.width, content.width, focus.x, scale),
31
+ y: fitOffset(viewport.height, content.height, focus.y, scale),
32
+ scale
33
+ };
34
+ }
35
+ function viewportSize(element) {
36
+ return { width: element.clientWidth, height: element.clientHeight };
37
+ }
38
+ function overflowedSize(element, natural) {
39
+ const overflowed = (size, scrolled) => scrolled !== void 0 && scrolled > size ? scrolled + OVERFLOW_MARGIN : size;
40
+ return {
41
+ width: overflowed(natural.width, element == null ? void 0 : element.scrollWidth),
42
+ height: overflowed(natural.height, element == null ? void 0 : element.scrollHeight)
43
+ };
44
+ }
45
+ function useViewportResize(viewportRef, enabled, refit) {
46
+ react.useEffect(() => {
47
+ const viewport = viewportRef.current;
48
+ if (!enabled || !viewport) return;
49
+ refit();
50
+ if (typeof ResizeObserver === "undefined") return;
51
+ const observer = new ResizeObserver(refit);
52
+ observer.observe(viewport);
53
+ return () => observer.disconnect();
54
+ }, [viewportRef, enabled, refit]);
55
+ }
56
+ function useWheelZoom(viewportRef, enabled, zoomAt) {
57
+ react.useEffect(() => {
58
+ const viewport = viewportRef.current;
59
+ if (!enabled || !viewport) return;
60
+ const onWheel = (event) => {
61
+ if (!event.ctrlKey && !event.metaKey) return;
62
+ event.preventDefault();
63
+ const rect = viewport.getBoundingClientRect();
64
+ zoomAt(
65
+ { x: event.clientX - rect.left, y: event.clientY - rect.top },
66
+ Math.exp(-event.deltaY * WHEEL_ZOOM_RATE)
67
+ );
68
+ };
69
+ viewport.addEventListener("wheel", onWheel, { passive: false });
70
+ return () => viewport.removeEventListener("wheel", onWheel);
71
+ }, [viewportRef, enabled, zoomAt]);
72
+ }
73
+ function useDragPan(panBy) {
74
+ const [panning, setPanning] = react.useState(false);
75
+ const drag = react.useRef(null);
76
+ const endDrag = (event) => {
77
+ if (!drag.current || drag.current.pointerId !== event.pointerId) return;
78
+ drag.current = null;
79
+ setPanning(false);
80
+ };
81
+ return {
82
+ panning,
83
+ handlers: {
84
+ onPointerDown: (event) => {
85
+ if (event.button !== 0) return;
86
+ drag.current = { pointerId: event.pointerId, x: event.clientX, y: event.clientY, moved: false };
87
+ },
88
+ onPointerMove: (event) => {
89
+ var _a, _b;
90
+ const active = drag.current;
91
+ if (!active || active.pointerId !== event.pointerId) return;
92
+ const dx = event.clientX - active.x;
93
+ const dy = event.clientY - active.y;
94
+ if (!active.moved) {
95
+ if (Math.hypot(dx, dy) < DRAG_THRESHOLD) return;
96
+ (_b = (_a = event.currentTarget).setPointerCapture) == null ? void 0 : _b.call(_a, event.pointerId);
97
+ setPanning(true);
98
+ }
99
+ drag.current = { pointerId: active.pointerId, x: event.clientX, y: event.clientY, moved: true };
100
+ panBy(dx, dy);
101
+ },
102
+ onPointerUp: endDrag,
103
+ onPointerCancel: endDrag
104
+ }
105
+ };
106
+ }
107
+ function usePanZoom({ enabled, contentWidth, contentHeight, opening }) {
108
+ const viewportRef = react.useRef(null);
109
+ const contentRef = react.useRef(null);
110
+ const [transform, setTransform] = react.useState({ x: 0, y: 0, scale: 1 });
111
+ const fitted = react.useRef("opening");
112
+ const { minScale, focus } = opening ?? {};
113
+ const [focusX, focusY] = [focus == null ? void 0 : focus.x, focus == null ? void 0 : focus.y];
114
+ const refit = react.useCallback(() => {
115
+ const viewport = viewportRef.current;
116
+ if (!viewport || !fitted.current) return;
117
+ const content = overflowedSize(contentRef.current, { width: contentWidth, height: contentHeight });
118
+ const fit = fitted.current === "everything" ? {} : {
119
+ ...minScale !== void 0 ? { minScale } : {},
120
+ ...focusX !== void 0 && focusY !== void 0 ? { focus: { x: focusX, y: focusY } } : {}
121
+ };
122
+ setTransform(fitTransform(content, viewportSize(viewport), DEFAULT_LIMITS, fit));
123
+ }, [contentWidth, contentHeight, minScale, focusX, focusY]);
124
+ const zoomAt = react.useCallback((point, factor) => {
125
+ fitted.current = void 0;
126
+ setTransform((current) => zoomAround(current, point, factor));
127
+ }, []);
128
+ const zoomAtCentre = (factor) => {
129
+ const viewport = viewportRef.current;
130
+ if (!viewport) return;
131
+ const { width, height } = viewportSize(viewport);
132
+ zoomAt({ x: width / 2, y: height / 2 }, factor);
133
+ };
134
+ const { panning, handlers } = useDragPan((dx, dy) => {
135
+ fitted.current = void 0;
136
+ setTransform((current) => ({ ...current, x: current.x + dx, y: current.y + dy }));
137
+ });
138
+ useViewportResize(viewportRef, enabled, refit);
139
+ useWheelZoom(viewportRef, enabled, zoomAt);
140
+ const hold = (fit) => () => {
141
+ fitted.current = fit;
142
+ refit();
143
+ };
144
+ return {
145
+ viewportRef,
146
+ contentRef,
147
+ handlers: enabled ? handlers : {},
148
+ transform,
149
+ panning,
150
+ zoomIn: () => zoomAtCentre(BUTTON_ZOOM_FACTOR),
151
+ zoomOut: () => zoomAtCentre(1 / BUTTON_ZOOM_FACTOR),
152
+ fit: hold("everything"),
153
+ reset: hold("opening")
154
+ };
155
+ }
156
+ exports.fitTransform = fitTransform;
157
+ exports.usePanZoom = usePanZoom;
158
+ exports.zoomAround = zoomAround;
159
+ //# sourceMappingURL=use-pan-zoom.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-pan-zoom.cjs","sources":["../../src/data/use-pan-zoom.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useRef,\n useState,\n type PointerEvent as ReactPointerEvent,\n type RefObject,\n} from \"react\";\n\nexport interface PanZoomTransform {\n /** Translation of the content's top-left corner inside the viewport, in px. */\n x: number;\n y: number;\n scale: number;\n}\n\nexport interface PanZoomSize {\n width: number;\n height: number;\n}\n\nexport interface PanZoomLimits {\n minScale: number;\n maxScale: number;\n}\n\nconst DEFAULT_LIMITS: PanZoomLimits = { minScale: 0.2, maxScale: 4 };\nconst BUTTON_ZOOM_FACTOR = 1.25;\nconst WHEEL_ZOOM_RATE = 0.01;\n/** Air kept between overflowing content and the viewport edge when fitting, in content px. */\nconst OVERFLOW_MARGIN = 8;\n/** Pointer travel in px before a press becomes a pan rather than a click. */\nconst DRAG_THRESHOLD = 4;\n\n/** Scales by `factor`, clamped to `limits`, keeping the content under `point` (viewport px) where it is. */\nexport function zoomAround(\n transform: PanZoomTransform,\n point: { x: number; y: number },\n factor: number,\n limits: PanZoomLimits = DEFAULT_LIMITS,\n): PanZoomTransform {\n const scale = Math.min(limits.maxScale, Math.max(limits.minScale, transform.scale * factor));\n const ratio = scale / transform.scale;\n return {\n x: point.x - (point.x - transform.x) * ratio,\n y: point.y - (point.y - transform.y) * ratio,\n scale,\n };\n}\n\nexport interface FitOptions {\n /** The smallest scale the fit shrinks to. Content too large for it overflows the viewport. */\n minScale?: number;\n /** The content point an overflowing axis is centred on. Defaults to the content's centre. */\n focus?: { x: number; y: number };\n}\n\n/** Offset of one axis: centred when the content fits, else centred on `focus` without showing past either edge. */\nfunction fitOffset(viewport: number, content: number, focus: number, scale: number): number {\n const slack = viewport - content * scale;\n return slack >= 0 ? slack / 2 : Math.min(0, Math.max(slack, viewport / 2 - focus * scale));\n}\n\n/**\n * The transform that shows all of `content` centred in `viewport`. Content is\n * only ever shrunk to fit, never enlarged past its natural size. With\n * `fit.minScale` it is not shrunk past that either: it then overflows, centred\n * on `fit.focus`, and the rest is reached by panning. An unmeasured\n * (zero-sized) viewport yields the identity transform.\n */\nexport function fitTransform(\n content: PanZoomSize,\n viewport: PanZoomSize,\n limits: PanZoomLimits = DEFAULT_LIMITS,\n fit: FitOptions = {},\n): PanZoomTransform {\n if (viewport.width <= 0 || viewport.height <= 0 || content.width <= 0 || content.height <= 0) {\n return { x: 0, y: 0, scale: 1 };\n }\n const whole = Math.min(1, viewport.width / content.width, viewport.height / content.height);\n const scale = Math.max(limits.minScale, Math.min(1, fit.minScale ?? 0), whole);\n const focus = fit.focus ?? { x: content.width / 2, y: content.height / 2 };\n return {\n x: fitOffset(viewport.width, content.width, focus.x, scale),\n y: fitOffset(viewport.height, content.height, focus.y, scale),\n scale,\n };\n}\n\nexport interface UsePanZoomOptions {\n /** When false the hook is inert: no listeners, identity transform. */\n enabled: boolean;\n /** Natural (unscaled) size of the content being panned and zoomed. */\n contentWidth: number;\n contentHeight: number;\n /** How the content opens, and what `reset()` returns to. `fit()` ignores it and shows everything. */\n opening?: FitOptions;\n}\n\nexport interface PanZoomViewportHandlers {\n onPointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;\n onPointerMove: (event: ReactPointerEvent<HTMLDivElement>) => void;\n onPointerUp: (event: ReactPointerEvent<HTMLDivElement>) => void;\n onPointerCancel: (event: ReactPointerEvent<HTMLDivElement>) => void;\n}\n\nexport interface PanZoom {\n /** Attach to the clipping viewport element. */\n viewportRef: RefObject<HTMLDivElement | null>;\n /** Attach to the content element, so anything overflowing its box is fitted too. */\n contentRef: RefObject<HTMLDivElement | null>;\n /** Spread onto the viewport element; empty when disabled. */\n handlers: Partial<PanZoomViewportHandlers>;\n /** Apply to the content as `translate(x, y) scale(scale)` with a top-left transform origin. */\n transform: PanZoomTransform;\n panning: boolean;\n zoomIn: () => void;\n zoomOut: () => void;\n /** Shows everything, however small. */\n fit: () => void;\n /** Returns to how the content opened: see `UsePanZoomOptions.opening`. */\n reset: () => void;\n}\n\ntype ViewportRef = RefObject<HTMLDivElement | null>;\n\nfunction viewportSize(element: HTMLElement): PanZoomSize {\n return { width: element.clientWidth, height: element.clientHeight };\n}\n\n/**\n * The content's size, counting children that overflow its box to the right or\n * below (a label hanging off its edge): they extend its scroll size, which a\n * transform leaves untouched.\n */\nfunction overflowedSize(element: HTMLElement | null, natural: PanZoomSize): PanZoomSize {\n const overflowed = (size: number, scrolled: number | undefined) =>\n scrolled !== undefined && scrolled > size ? scrolled + OVERFLOW_MARGIN : size;\n return {\n width: overflowed(natural.width, element?.scrollWidth),\n height: overflowed(natural.height, element?.scrollHeight),\n };\n}\n\n/** Runs `refit` now and whenever the viewport is resized. */\nfunction useViewportResize(viewportRef: ViewportRef, enabled: boolean, refit: () => void): void {\n useEffect(() => {\n const viewport = viewportRef.current;\n if (!enabled || !viewport) return;\n refit();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(refit);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [viewportRef, enabled, refit]);\n}\n\nfunction useWheelZoom(\n viewportRef: ViewportRef,\n enabled: boolean,\n zoomAt: (point: { x: number; y: number }, factor: number) => void,\n): void {\n useEffect(() => {\n const viewport = viewportRef.current;\n if (!enabled || !viewport) return;\n const onWheel = (event: WheelEvent) => {\n if (!event.ctrlKey && !event.metaKey) return;\n event.preventDefault();\n const rect = viewport.getBoundingClientRect();\n zoomAt(\n { x: event.clientX - rect.left, y: event.clientY - rect.top },\n Math.exp(-event.deltaY * WHEEL_ZOOM_RATE),\n );\n };\n // React registers wheel listeners as passive, which cannot preventDefault the page zoom.\n viewport.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => viewport.removeEventListener(\"wheel\", onWheel);\n }, [viewportRef, enabled, zoomAt]);\n}\n\nfunction useDragPan(panBy: (dx: number, dy: number) => void): {\n panning: boolean;\n handlers: PanZoomViewportHandlers;\n} {\n const [panning, setPanning] = useState(false);\n const drag = useRef<{ pointerId: number; x: number; y: number; moved: boolean } | null>(null);\n const endDrag = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!drag.current || drag.current.pointerId !== event.pointerId) return;\n drag.current = null;\n setPanning(false);\n };\n return {\n panning,\n handlers: {\n onPointerDown: (event) => {\n if (event.button !== 0) return;\n drag.current = { pointerId: event.pointerId, x: event.clientX, y: event.clientY, moved: false };\n },\n onPointerMove: (event) => {\n const active = drag.current;\n if (!active || active.pointerId !== event.pointerId) return;\n const dx = event.clientX - active.x;\n const dy = event.clientY - active.y;\n if (!active.moved) {\n if (Math.hypot(dx, dy) < DRAG_THRESHOLD) return;\n // Capturing only once a drag is under way leaves plain clicks on nodes and edges alone,\n // and retargets the click that ends a drag to the viewport so it selects nothing.\n event.currentTarget.setPointerCapture?.(event.pointerId);\n setPanning(true);\n }\n drag.current = { pointerId: active.pointerId, x: event.clientX, y: event.clientY, moved: true };\n panBy(dx, dy);\n },\n onPointerUp: endDrag,\n onPointerCancel: endDrag,\n },\n };\n}\n\n/**\n * Pan and zoom for a fixed-size content box inside a clipping viewport:\n * ctrl/meta + wheel (which is also what a trackpad pinch sends) zooms around\n * the pointer, dragging pans, and `zoomIn`/`zoomOut`/`fit` back a control\n * cluster. The content stays fitted to the viewport — across content and\n * viewport size changes — until the user pans or zooms, and again after\n * `fit()` or `reset()`.\n */\nexport function usePanZoom({ enabled, contentWidth, contentHeight, opening }: UsePanZoomOptions): PanZoom {\n const viewportRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [transform, setTransform] = useState<PanZoomTransform>({ x: 0, y: 0, scale: 1 });\n // Which fit the content is held to, until the user pans or zooms.\n const fitted = useRef<\"opening\" | \"everything\" | undefined>(\"opening\");\n const { minScale, focus } = opening ?? {};\n const [focusX, focusY] = [focus?.x, focus?.y];\n\n const refit = useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport || !fitted.current) return;\n const content = overflowedSize(contentRef.current, { width: contentWidth, height: contentHeight });\n const fit: FitOptions =\n fitted.current === \"everything\"\n ? {}\n : {\n ...(minScale !== undefined ? { minScale } : {}),\n ...(focusX !== undefined && focusY !== undefined ? { focus: { x: focusX, y: focusY } } : {}),\n };\n setTransform(fitTransform(content, viewportSize(viewport), DEFAULT_LIMITS, fit));\n }, [contentWidth, contentHeight, minScale, focusX, focusY]);\n const zoomAt = useCallback((point: { x: number; y: number }, factor: number) => {\n fitted.current = undefined;\n setTransform((current) => zoomAround(current, point, factor));\n }, []);\n const zoomAtCentre = (factor: number) => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n const { width, height } = viewportSize(viewport);\n zoomAt({ x: width / 2, y: height / 2 }, factor);\n };\n const { panning, handlers } = useDragPan((dx, dy) => {\n fitted.current = undefined;\n setTransform((current) => ({ ...current, x: current.x + dx, y: current.y + dy }));\n });\n useViewportResize(viewportRef, enabled, refit);\n useWheelZoom(viewportRef, enabled, zoomAt);\n const hold = (fit: \"opening\" | \"everything\") => () => {\n fitted.current = fit;\n refit();\n };\n\n return {\n viewportRef,\n contentRef,\n handlers: enabled ? handlers : {},\n transform,\n panning,\n zoomIn: () => zoomAtCentre(BUTTON_ZOOM_FACTOR),\n zoomOut: () => zoomAtCentre(1 / BUTTON_ZOOM_FACTOR),\n fit: hold(\"everything\"),\n reset: hold(\"opening\"),\n };\n}\n"],"names":["useEffect","useState","useRef","useCallback"],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { PointerEvent as ReactPointerEvent, RefObject } from 'react';
2
+ export interface PanZoomTransform {
3
+ /** Translation of the content's top-left corner inside the viewport, in px. */
4
+ x: number;
5
+ y: number;
6
+ scale: number;
7
+ }
8
+ export interface PanZoomSize {
9
+ width: number;
10
+ height: number;
11
+ }
12
+ export interface PanZoomLimits {
13
+ minScale: number;
14
+ maxScale: number;
15
+ }
16
+ /** Scales by `factor`, clamped to `limits`, keeping the content under `point` (viewport px) where it is. */
17
+ export declare function zoomAround(transform: PanZoomTransform, point: {
18
+ x: number;
19
+ y: number;
20
+ }, factor: number, limits?: PanZoomLimits): PanZoomTransform;
21
+ export interface FitOptions {
22
+ /** The smallest scale the fit shrinks to. Content too large for it overflows the viewport. */
23
+ minScale?: number;
24
+ /** The content point an overflowing axis is centred on. Defaults to the content's centre. */
25
+ focus?: {
26
+ x: number;
27
+ y: number;
28
+ };
29
+ }
30
+ /**
31
+ * The transform that shows all of `content` centred in `viewport`. Content is
32
+ * only ever shrunk to fit, never enlarged past its natural size. With
33
+ * `fit.minScale` it is not shrunk past that either: it then overflows, centred
34
+ * on `fit.focus`, and the rest is reached by panning. An unmeasured
35
+ * (zero-sized) viewport yields the identity transform.
36
+ */
37
+ export declare function fitTransform(content: PanZoomSize, viewport: PanZoomSize, limits?: PanZoomLimits, fit?: FitOptions): PanZoomTransform;
38
+ export interface UsePanZoomOptions {
39
+ /** When false the hook is inert: no listeners, identity transform. */
40
+ enabled: boolean;
41
+ /** Natural (unscaled) size of the content being panned and zoomed. */
42
+ contentWidth: number;
43
+ contentHeight: number;
44
+ /** How the content opens, and what `reset()` returns to. `fit()` ignores it and shows everything. */
45
+ opening?: FitOptions;
46
+ }
47
+ export interface PanZoomViewportHandlers {
48
+ onPointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;
49
+ onPointerMove: (event: ReactPointerEvent<HTMLDivElement>) => void;
50
+ onPointerUp: (event: ReactPointerEvent<HTMLDivElement>) => void;
51
+ onPointerCancel: (event: ReactPointerEvent<HTMLDivElement>) => void;
52
+ }
53
+ export interface PanZoom {
54
+ /** Attach to the clipping viewport element. */
55
+ viewportRef: RefObject<HTMLDivElement | null>;
56
+ /** Attach to the content element, so anything overflowing its box is fitted too. */
57
+ contentRef: RefObject<HTMLDivElement | null>;
58
+ /** Spread onto the viewport element; empty when disabled. */
59
+ handlers: Partial<PanZoomViewportHandlers>;
60
+ /** Apply to the content as `translate(x, y) scale(scale)` with a top-left transform origin. */
61
+ transform: PanZoomTransform;
62
+ panning: boolean;
63
+ zoomIn: () => void;
64
+ zoomOut: () => void;
65
+ /** Shows everything, however small. */
66
+ fit: () => void;
67
+ /** Returns to how the content opened: see `UsePanZoomOptions.opening`. */
68
+ reset: () => void;
69
+ }
70
+ /**
71
+ * Pan and zoom for a fixed-size content box inside a clipping viewport:
72
+ * ctrl/meta + wheel (which is also what a trackpad pinch sends) zooms around
73
+ * the pointer, dragging pans, and `zoomIn`/`zoomOut`/`fit` back a control
74
+ * cluster. The content stays fitted to the viewport — across content and
75
+ * viewport size changes — until the user pans or zooms, and again after
76
+ * `fit()` or `reset()`.
77
+ */
78
+ export declare function usePanZoom({ enabled, contentWidth, contentHeight, opening }: UsePanZoomOptions): PanZoom;
79
+ //# sourceMappingURL=use-pan-zoom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-pan-zoom.d.ts","sourceRoot":"","sources":["../../src/data/use-pan-zoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,IAAI,iBAAiB,EACtC,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,4GAA4G;AAC5G,wBAAgB,UAAU,CACxB,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,aAA8B,GACrC,gBAAgB,CAQlB;AAED,MAAM,WAAW,UAAU;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAQD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,WAAW,EACrB,MAAM,GAAE,aAA8B,EACtC,GAAG,GAAE,UAAe,GACnB,gBAAgB,CAYlB;AAED,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,qGAAqG;IACrG,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClE,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChE,eAAe,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,OAAO;IACtB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9C,oFAAoF;IACpF,UAAU,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3C,+FAA+F;IAC/F,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,uCAAuC;IACvC,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAiGD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAsDxG"}