@flanksource/clicky-ui 0.2.21 → 0.3.2

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 (522) hide show
  1. package/dist/comments/CommentAuthor.cjs +58 -0
  2. package/dist/comments/CommentAuthor.cjs.map +1 -0
  3. package/dist/comments/CommentAuthor.d.ts +17 -0
  4. package/dist/comments/CommentAuthor.d.ts.map +1 -0
  5. package/dist/comments/CommentAuthor.js +58 -0
  6. package/dist/comments/CommentAuthor.js.map +1 -0
  7. package/dist/comments/CommentCard.cjs +343 -0
  8. package/dist/comments/CommentCard.cjs.map +1 -0
  9. package/dist/comments/CommentCard.d.ts +27 -0
  10. package/dist/comments/CommentCard.d.ts.map +1 -0
  11. package/dist/comments/CommentCard.js +343 -0
  12. package/dist/comments/CommentCard.js.map +1 -0
  13. package/dist/comments/CommentComposer.cjs +207 -0
  14. package/dist/comments/CommentComposer.cjs.map +1 -0
  15. package/dist/comments/CommentComposer.d.ts +23 -0
  16. package/dist/comments/CommentComposer.d.ts.map +1 -0
  17. package/dist/comments/CommentComposer.js +207 -0
  18. package/dist/comments/CommentComposer.js.map +1 -0
  19. package/dist/comments/CommentFilterBar.cjs +145 -0
  20. package/dist/comments/CommentFilterBar.cjs.map +1 -0
  21. package/dist/comments/CommentFilterBar.d.ts +15 -0
  22. package/dist/comments/CommentFilterBar.d.ts.map +1 -0
  23. package/dist/comments/CommentFilterBar.js +145 -0
  24. package/dist/comments/CommentFilterBar.js.map +1 -0
  25. package/dist/comments/CommentMarkdown.cjs +156 -0
  26. package/dist/comments/CommentMarkdown.cjs.map +1 -0
  27. package/dist/comments/CommentMarkdown.d.ts +13 -0
  28. package/dist/comments/CommentMarkdown.d.ts.map +1 -0
  29. package/dist/comments/CommentMarkdown.js +156 -0
  30. package/dist/comments/CommentMarkdown.js.map +1 -0
  31. package/dist/comments/CommentProgress.cjs +86 -0
  32. package/dist/comments/CommentProgress.cjs.map +1 -0
  33. package/dist/comments/CommentProgress.d.ts +16 -0
  34. package/dist/comments/CommentProgress.d.ts.map +1 -0
  35. package/dist/comments/CommentProgress.js +86 -0
  36. package/dist/comments/CommentProgress.js.map +1 -0
  37. package/dist/comments/CommentProvider.cjs +99 -0
  38. package/dist/comments/CommentProvider.cjs.map +1 -0
  39. package/dist/comments/CommentProvider.d.ts +19 -0
  40. package/dist/comments/CommentProvider.d.ts.map +1 -0
  41. package/dist/comments/CommentProvider.js +99 -0
  42. package/dist/comments/CommentProvider.js.map +1 -0
  43. package/dist/comments/CommentSidePanel.cjs +219 -0
  44. package/dist/comments/CommentSidePanel.cjs.map +1 -0
  45. package/dist/comments/CommentSidePanel.d.ts +16 -0
  46. package/dist/comments/CommentSidePanel.d.ts.map +1 -0
  47. package/dist/comments/CommentSidePanel.js +219 -0
  48. package/dist/comments/CommentSidePanel.js.map +1 -0
  49. package/dist/comments/CommentThread.cjs +57 -0
  50. package/dist/comments/CommentThread.cjs.map +1 -0
  51. package/dist/comments/CommentThread.d.ts +24 -0
  52. package/dist/comments/CommentThread.d.ts.map +1 -0
  53. package/dist/comments/CommentThread.js +57 -0
  54. package/dist/comments/CommentThread.js.map +1 -0
  55. package/dist/comments/CommentThreadList.cjs +124 -0
  56. package/dist/comments/CommentThreadList.cjs.map +1 -0
  57. package/dist/comments/CommentThreadList.d.ts +25 -0
  58. package/dist/comments/CommentThreadList.d.ts.map +1 -0
  59. package/dist/comments/CommentThreadList.js +124 -0
  60. package/dist/comments/CommentThreadList.js.map +1 -0
  61. package/dist/comments/GroupedComments.cjs +74 -0
  62. package/dist/comments/GroupedComments.cjs.map +1 -0
  63. package/dist/comments/GroupedComments.d.ts +18 -0
  64. package/dist/comments/GroupedComments.d.ts.map +1 -0
  65. package/dist/comments/GroupedComments.js +74 -0
  66. package/dist/comments/GroupedComments.js.map +1 -0
  67. package/dist/comments/MentionTextarea.cjs +253 -0
  68. package/dist/comments/MentionTextarea.cjs.map +1 -0
  69. package/dist/comments/MentionTextarea.d.ts +28 -0
  70. package/dist/comments/MentionTextarea.d.ts.map +1 -0
  71. package/dist/comments/MentionTextarea.js +253 -0
  72. package/dist/comments/MentionTextarea.js.map +1 -0
  73. package/dist/comments/comment-context.cjs +33 -0
  74. package/dist/comments/comment-context.cjs.map +1 -0
  75. package/dist/comments/comment-context.d.ts +32 -0
  76. package/dist/comments/comment-context.d.ts.map +1 -0
  77. package/dist/comments/comment-context.js +33 -0
  78. package/dist/comments/comment-context.js.map +1 -0
  79. package/dist/comments/comment-fixtures.d.ts +11 -0
  80. package/dist/comments/comment-fixtures.d.ts.map +1 -0
  81. package/dist/comments/comment-types.cjs +19 -0
  82. package/dist/comments/comment-types.cjs.map +1 -0
  83. package/dist/comments/comment-types.d.ts +170 -0
  84. package/dist/comments/comment-types.d.ts.map +1 -0
  85. package/dist/comments/comment-types.js +19 -0
  86. package/dist/comments/comment-types.js.map +1 -0
  87. package/dist/comments/comment-utils.cjs +216 -0
  88. package/dist/comments/comment-utils.cjs.map +1 -0
  89. package/dist/comments/comment-utils.d.ts +59 -0
  90. package/dist/comments/comment-utils.d.ts.map +1 -0
  91. package/dist/comments/comment-utils.js +216 -0
  92. package/dist/comments/comment-utils.js.map +1 -0
  93. package/dist/comments.cjs +57 -0
  94. package/dist/comments.cjs.map +1 -0
  95. package/dist/comments.d.ts +16 -0
  96. package/dist/comments.d.ts.map +1 -0
  97. package/dist/comments.js +57 -0
  98. package/dist/comments.js.map +1 -0
  99. package/dist/components/Combobox.cjs +5 -2
  100. package/dist/components/Combobox.cjs.map +1 -1
  101. package/dist/components/Combobox.d.ts.map +1 -1
  102. package/dist/components/Combobox.js +5 -2
  103. package/dist/components/Combobox.js.map +1 -1
  104. package/dist/components/FilterBar.cjs +293 -256
  105. package/dist/components/FilterBar.cjs.map +1 -1
  106. package/dist/components/FilterBar.d.ts.map +1 -1
  107. package/dist/components/FilterBar.js +293 -256
  108. package/dist/components/FilterBar.js.map +1 -1
  109. package/dist/components/JsonSchemaForm.cjs +22 -6
  110. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  111. package/dist/components/JsonSchemaForm.d.ts +1 -1
  112. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  113. package/dist/components/JsonSchemaForm.js +25 -9
  114. package/dist/components/JsonSchemaForm.js.map +1 -1
  115. package/dist/components/MultiSelect.cjs +29 -32
  116. package/dist/components/MultiSelect.cjs.map +1 -1
  117. package/dist/components/MultiSelect.d.ts.map +1 -1
  118. package/dist/components/MultiSelect.js +30 -33
  119. package/dist/components/MultiSelect.js.map +1 -1
  120. package/dist/components/NamespacePicker.cjs +52 -0
  121. package/dist/components/NamespacePicker.cjs.map +1 -0
  122. package/dist/components/NamespacePicker.d.ts +17 -0
  123. package/dist/components/NamespacePicker.d.ts.map +1 -0
  124. package/dist/components/NamespacePicker.js +52 -0
  125. package/dist/components/NamespacePicker.js.map +1 -0
  126. package/dist/components/TimeRange.cjs +29 -37
  127. package/dist/components/TimeRange.cjs.map +1 -1
  128. package/dist/components/TimeRange.d.ts.map +1 -1
  129. package/dist/components/TimeRange.js +30 -38
  130. package/dist/components/TimeRange.js.map +1 -1
  131. package/dist/components/TreePickerField.cjs +6 -3
  132. package/dist/components/TreePickerField.cjs.map +1 -1
  133. package/dist/components/TreePickerField.d.ts.map +1 -1
  134. package/dist/components/TreePickerField.js +6 -3
  135. package/dist/components/TreePickerField.js.map +1 -1
  136. package/dist/components/form-lookup-context.cjs +36 -0
  137. package/dist/components/form-lookup-context.cjs.map +1 -0
  138. package/dist/components/form-lookup-context.d.ts +9 -0
  139. package/dist/components/form-lookup-context.d.ts.map +1 -0
  140. package/dist/components/form-lookup-context.js +36 -0
  141. package/dist/components/form-lookup-context.js.map +1 -0
  142. package/dist/components/icon-menu-picker.cjs +9 -3
  143. package/dist/components/icon-menu-picker.cjs.map +1 -1
  144. package/dist/components/icon-menu-picker.d.ts.map +1 -1
  145. package/dist/components/icon-menu-picker.js +9 -3
  146. package/dist/components/icon-menu-picker.js.map +1 -1
  147. package/dist/components/json-schema-form-discriminator.cjs +67 -0
  148. package/dist/components/json-schema-form-discriminator.cjs.map +1 -0
  149. package/dist/components/json-schema-form-discriminator.d.ts +10 -0
  150. package/dist/components/json-schema-form-discriminator.d.ts.map +1 -0
  151. package/dist/components/json-schema-form-discriminator.js +67 -0
  152. package/dist/components/json-schema-form-discriminator.js.map +1 -0
  153. package/dist/components/json-schema-form-fields.cjs +146 -3
  154. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  155. package/dist/components/json-schema-form-fields.d.ts +22 -0
  156. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  157. package/dist/components/json-schema-form-fields.js +147 -4
  158. package/dist/components/json-schema-form-fields.js.map +1 -1
  159. package/dist/components/json-schema-form-grid.cjs +92 -0
  160. package/dist/components/json-schema-form-grid.cjs.map +1 -0
  161. package/dist/components/json-schema-form-grid.d.ts +9 -0
  162. package/dist/components/json-schema-form-grid.d.ts.map +1 -0
  163. package/dist/components/json-schema-form-grid.js +92 -0
  164. package/dist/components/json-schema-form-grid.js.map +1 -0
  165. package/dist/components/json-schema-form-refs.cjs +60 -0
  166. package/dist/components/json-schema-form-refs.cjs.map +1 -0
  167. package/dist/components/json-schema-form-refs.d.ts +3 -0
  168. package/dist/components/json-schema-form-refs.d.ts.map +1 -0
  169. package/dist/components/json-schema-form-refs.js +60 -0
  170. package/dist/components/json-schema-form-refs.js.map +1 -0
  171. package/dist/components/json-schema-form-render.cjs +34 -5
  172. package/dist/components/json-schema-form-render.cjs.map +1 -1
  173. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  174. package/dist/components/json-schema-form-render.js +36 -7
  175. package/dist/components/json-schema-form-render.js.map +1 -1
  176. package/dist/components/json-schema-form-resolve.cjs +29 -2
  177. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  178. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  179. package/dist/components/json-schema-form-resolve.js +29 -2
  180. package/dist/components/json-schema-form-resolve.js.map +1 -1
  181. package/dist/components/json-schema-form-template-menu.cjs +83 -0
  182. package/dist/components/json-schema-form-template-menu.cjs.map +1 -0
  183. package/dist/components/json-schema-form-template-menu.d.ts +15 -0
  184. package/dist/components/json-schema-form-template-menu.d.ts.map +1 -0
  185. package/dist/components/json-schema-form-template-menu.js +83 -0
  186. package/dist/components/json-schema-form-template-menu.js.map +1 -0
  187. package/dist/components/json-schema-form-template.cjs +18 -0
  188. package/dist/components/json-schema-form-template.cjs.map +1 -0
  189. package/dist/components/json-schema-form-template.d.ts +13 -0
  190. package/dist/components/json-schema-form-template.d.ts.map +1 -0
  191. package/dist/components/json-schema-form-template.js +18 -0
  192. package/dist/components/json-schema-form-template.js.map +1 -0
  193. package/dist/components/json-schema-form-types.d.ts +41 -2
  194. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  195. package/dist/components/json-schema-form-utils.cjs +8 -0
  196. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  197. package/dist/components/json-schema-form-utils.d.ts +1 -0
  198. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  199. package/dist/components/json-schema-form-utils.js +8 -0
  200. package/dist/components/json-schema-form-utils.js.map +1 -1
  201. package/dist/components/workload-picker-utils.cjs.map +1 -1
  202. package/dist/components/workload-picker-utils.d.ts +11 -1
  203. package/dist/components/workload-picker-utils.d.ts.map +1 -1
  204. package/dist/components/workload-picker-utils.js.map +1 -1
  205. package/dist/components.cjs +10 -0
  206. package/dist/components.cjs.map +1 -1
  207. package/dist/components.d.ts +7 -2
  208. package/dist/components.d.ts.map +1 -1
  209. package/dist/components.js +10 -0
  210. package/dist/components.js.map +1 -1
  211. package/dist/data/Clicky.cjs +231 -69
  212. package/dist/data/Clicky.cjs.map +1 -1
  213. package/dist/data/Clicky.d.ts +7 -1
  214. package/dist/data/Clicky.d.ts.map +1 -1
  215. package/dist/data/Clicky.fixtures.d.ts +3 -1
  216. package/dist/data/Clicky.fixtures.d.ts.map +1 -1
  217. package/dist/data/Clicky.js +232 -70
  218. package/dist/data/Clicky.js.map +1 -1
  219. package/dist/data/DataTable.cjs +23 -17
  220. package/dist/data/DataTable.cjs.map +1 -1
  221. package/dist/data/DataTable.d.ts +7 -1
  222. package/dist/data/DataTable.d.ts.map +1 -1
  223. package/dist/data/DataTable.js +24 -18
  224. package/dist/data/DataTable.js.map +1 -1
  225. package/dist/data/ExecutionTree.cjs +68 -0
  226. package/dist/data/ExecutionTree.cjs.map +1 -0
  227. package/dist/data/ExecutionTree.d.ts +40 -0
  228. package/dist/data/ExecutionTree.d.ts.map +1 -0
  229. package/dist/data/ExecutionTree.js +68 -0
  230. package/dist/data/ExecutionTree.js.map +1 -0
  231. package/dist/data/Gauge.cjs +37 -4
  232. package/dist/data/Gauge.cjs.map +1 -1
  233. package/dist/data/Gauge.d.ts +6 -1
  234. package/dist/data/Gauge.d.ts.map +1 -1
  235. package/dist/data/Gauge.js +37 -4
  236. package/dist/data/Gauge.js.map +1 -1
  237. package/dist/data/GaugeHoverCard.cjs +35 -0
  238. package/dist/data/GaugeHoverCard.cjs.map +1 -0
  239. package/dist/data/GaugeHoverCard.d.ts +25 -0
  240. package/dist/data/GaugeHoverCard.d.ts.map +1 -0
  241. package/dist/data/GaugeHoverCard.js +35 -0
  242. package/dist/data/GaugeHoverCard.js.map +1 -0
  243. package/dist/data/MarkdownEditor.cjs +616 -0
  244. package/dist/data/MarkdownEditor.cjs.map +1 -0
  245. package/dist/data/MarkdownEditor.d.ts +61 -0
  246. package/dist/data/MarkdownEditor.d.ts.map +1 -0
  247. package/dist/data/MarkdownEditor.js +616 -0
  248. package/dist/data/MarkdownEditor.js.map +1 -0
  249. package/dist/data/MarkdownEditor.model.cjs +27 -0
  250. package/dist/data/MarkdownEditor.model.cjs.map +1 -0
  251. package/dist/data/MarkdownEditor.model.d.ts +38 -0
  252. package/dist/data/MarkdownEditor.model.d.ts.map +1 -0
  253. package/dist/data/MarkdownEditor.model.js +27 -0
  254. package/dist/data/MarkdownEditor.model.js.map +1 -0
  255. package/dist/data/ObjectGraph.cjs +44 -0
  256. package/dist/data/ObjectGraph.cjs.map +1 -0
  257. package/dist/data/ObjectGraph.d.ts +39 -0
  258. package/dist/data/ObjectGraph.d.ts.map +1 -0
  259. package/dist/data/ObjectGraph.js +44 -0
  260. package/dist/data/ObjectGraph.js.map +1 -0
  261. package/dist/data/SchemaViewer.cjs +152 -0
  262. package/dist/data/SchemaViewer.cjs.map +1 -0
  263. package/dist/data/SchemaViewer.d.ts +27 -0
  264. package/dist/data/SchemaViewer.d.ts.map +1 -0
  265. package/dist/data/SchemaViewer.js +152 -0
  266. package/dist/data/SchemaViewer.js.map +1 -0
  267. package/dist/data/TimeseriesCoreBars.cjs +169 -32
  268. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  269. package/dist/data/TimeseriesCoreBars.d.ts +42 -5
  270. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  271. package/dist/data/TimeseriesCoreBars.js +170 -33
  272. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  273. package/dist/data/TimeseriesCoreBars.model.cjs +5 -5
  274. package/dist/data/TimeseriesCoreBars.model.cjs.map +1 -1
  275. package/dist/data/TimeseriesCoreBars.model.d.ts +4 -4
  276. package/dist/data/TimeseriesCoreBars.model.d.ts.map +1 -1
  277. package/dist/data/TimeseriesCoreBars.model.js +5 -5
  278. package/dist/data/TimeseriesCoreBars.model.js.map +1 -1
  279. package/dist/data/TimeseriesGauge.cjs +132 -36
  280. package/dist/data/TimeseriesGauge.cjs.map +1 -1
  281. package/dist/data/TimeseriesGauge.d.ts +15 -1
  282. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  283. package/dist/data/TimeseriesGauge.js +133 -37
  284. package/dist/data/TimeseriesGauge.js.map +1 -1
  285. package/dist/data/WorkloadCard.cjs +371 -0
  286. package/dist/data/WorkloadCard.cjs.map +1 -0
  287. package/dist/data/WorkloadCard.d.ts +25 -0
  288. package/dist/data/WorkloadCard.d.ts.map +1 -0
  289. package/dist/data/WorkloadCard.js +371 -0
  290. package/dist/data/WorkloadCard.js.map +1 -0
  291. package/dist/data/WorkloadCard.model.cjs +51 -0
  292. package/dist/data/WorkloadCard.model.cjs.map +1 -0
  293. package/dist/data/WorkloadCard.model.d.ts +53 -0
  294. package/dist/data/WorkloadCard.model.d.ts.map +1 -0
  295. package/dist/data/WorkloadCard.model.js +51 -0
  296. package/dist/data/WorkloadCard.model.js.map +1 -0
  297. package/dist/data/ai/ChatFab.cjs +3 -1
  298. package/dist/data/ai/ChatFab.cjs.map +1 -1
  299. package/dist/data/ai/ChatFab.d.ts.map +1 -1
  300. package/dist/data/ai/ChatFab.js +3 -1
  301. package/dist/data/ai/ChatFab.js.map +1 -1
  302. package/dist/data/ai/ChatWindow.cjs +19 -9
  303. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  304. package/dist/data/ai/ChatWindow.d.ts +4 -2
  305. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  306. package/dist/data/ai/ChatWindow.js +19 -9
  307. package/dist/data/ai/ChatWindow.js.map +1 -1
  308. package/dist/data/ai/ChatWindowRequestBody.cjs +20 -0
  309. package/dist/data/ai/ChatWindowRequestBody.cjs.map +1 -0
  310. package/dist/data/ai/ChatWindowRequestBody.d.ts +9 -0
  311. package/dist/data/ai/ChatWindowRequestBody.d.ts.map +1 -0
  312. package/dist/data/ai/ChatWindowRequestBody.js +20 -0
  313. package/dist/data/ai/ChatWindowRequestBody.js.map +1 -0
  314. package/dist/data/ai/chat-window-context.cjs +2 -1
  315. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  316. package/dist/data/ai/chat-window-context.d.ts +1 -1
  317. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  318. package/dist/data/ai/chat-window-context.js +2 -1
  319. package/dist/data/ai/chat-window-context.js.map +1 -1
  320. package/dist/data/ai/context.cjs.map +1 -1
  321. package/dist/data/ai/context.d.ts +3 -0
  322. package/dist/data/ai/context.d.ts.map +1 -1
  323. package/dist/data/ai/context.js.map +1 -1
  324. package/dist/data/chat/Chat.cjs +21 -1
  325. package/dist/data/chat/Chat.cjs.map +1 -1
  326. package/dist/data/chat/Chat.d.ts +11 -2
  327. package/dist/data/chat/Chat.d.ts.map +1 -1
  328. package/dist/data/chat/Chat.js +22 -2
  329. package/dist/data/chat/Chat.js.map +1 -1
  330. package/dist/data/chat/Message.cjs +13 -4
  331. package/dist/data/chat/Message.cjs.map +1 -1
  332. package/dist/data/chat/Message.d.ts +4 -2
  333. package/dist/data/chat/Message.d.ts.map +1 -1
  334. package/dist/data/chat/Message.js +13 -4
  335. package/dist/data/chat/Message.js.map +1 -1
  336. package/dist/data/chat/ToolCall.cjs +9 -4
  337. package/dist/data/chat/ToolCall.cjs.map +1 -1
  338. package/dist/data/chat/ToolCall.d.ts +3 -2
  339. package/dist/data/chat/ToolCall.d.ts.map +1 -1
  340. package/dist/data/chat/ToolCall.js +9 -4
  341. package/dist/data/chat/ToolCall.js.map +1 -1
  342. package/dist/data/chat/index.d.ts +1 -1
  343. package/dist/data/chat/index.d.ts.map +1 -1
  344. package/dist/data/chat/types.cjs.map +1 -1
  345. package/dist/data/chat/types.d.ts +7 -0
  346. package/dist/data/chat/types.d.ts.map +1 -1
  347. package/dist/data/chat/types.js.map +1 -1
  348. package/dist/data/gauge-stats.cjs +19 -0
  349. package/dist/data/gauge-stats.cjs.map +1 -0
  350. package/dist/data/gauge-stats.d.ts +15 -0
  351. package/dist/data/gauge-stats.d.ts.map +1 -0
  352. package/dist/data/gauge-stats.js +19 -0
  353. package/dist/data/gauge-stats.js.map +1 -0
  354. package/dist/data/schema-viewer-model.cjs +436 -0
  355. package/dist/data/schema-viewer-model.cjs.map +1 -0
  356. package/dist/data/schema-viewer-model.d.ts +64 -0
  357. package/dist/data/schema-viewer-model.d.ts.map +1 -0
  358. package/dist/data/schema-viewer-model.js +436 -0
  359. package/dist/data/schema-viewer-model.js.map +1 -0
  360. package/dist/data/version-info.cjs +2 -2
  361. package/dist/data/version-info.js +2 -2
  362. package/dist/data.cjs +30 -0
  363. package/dist/data.cjs.map +1 -1
  364. package/dist/data.d.ts +14 -4
  365. package/dist/data.d.ts.map +1 -1
  366. package/dist/data.js +31 -1
  367. package/dist/data.js.map +1 -1
  368. package/dist/hooks/use-sort.cjs +19 -10
  369. package/dist/hooks/use-sort.cjs.map +1 -1
  370. package/dist/hooks/use-sort.d.ts +3 -0
  371. package/dist/hooks/use-sort.d.ts.map +1 -1
  372. package/dist/hooks/use-sort.js +19 -10
  373. package/dist/hooks/use-sort.js.map +1 -1
  374. package/dist/index.cjs +98 -2
  375. package/dist/index.cjs.map +1 -1
  376. package/dist/index.d.ts +1 -0
  377. package/dist/index.d.ts.map +1 -1
  378. package/dist/index.js +98 -2
  379. package/dist/index.js.map +1 -1
  380. package/dist/layout/AppShell.cjs +6 -10
  381. package/dist/layout/AppShell.cjs.map +1 -1
  382. package/dist/layout/AppShell.d.ts +2 -0
  383. package/dist/layout/AppShell.d.ts.map +1 -1
  384. package/dist/layout/AppShell.js +6 -10
  385. package/dist/layout/AppShell.js.map +1 -1
  386. package/dist/overlay/DropdownMenu.cjs +50 -38
  387. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  388. package/dist/overlay/DropdownMenu.d.ts +5 -1
  389. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  390. package/dist/overlay/DropdownMenu.js +50 -38
  391. package/dist/overlay/DropdownMenu.js.map +1 -1
  392. package/dist/overlay/HoverCard.cjs +7 -2
  393. package/dist/overlay/HoverCard.cjs.map +1 -1
  394. package/dist/overlay/HoverCard.d.ts.map +1 -1
  395. package/dist/overlay/HoverCard.js +7 -2
  396. package/dist/overlay/HoverCard.js.map +1 -1
  397. package/dist/overlay/Modal.cjs +20 -17
  398. package/dist/overlay/Modal.cjs.map +1 -1
  399. package/dist/overlay/Modal.d.ts.map +1 -1
  400. package/dist/overlay/Modal.js +21 -18
  401. package/dist/overlay/Modal.js.map +1 -1
  402. package/dist/overlay/Toast.cjs +9 -1
  403. package/dist/overlay/Toast.cjs.map +1 -1
  404. package/dist/overlay/Toast.d.ts.map +1 -1
  405. package/dist/overlay/Toast.js +9 -1
  406. package/dist/overlay/Toast.js.map +1 -1
  407. package/dist/overlay/modalStack.cjs +53 -1
  408. package/dist/overlay/modalStack.cjs.map +1 -1
  409. package/dist/overlay/modalStack.d.ts +12 -0
  410. package/dist/overlay/modalStack.d.ts.map +1 -1
  411. package/dist/overlay/modalStack.js +54 -2
  412. package/dist/overlay/modalStack.js.map +1 -1
  413. package/dist/overlay/zIndex.cjs +20 -0
  414. package/dist/overlay/zIndex.cjs.map +1 -0
  415. package/dist/overlay/zIndex.d.ts +39 -0
  416. package/dist/overlay/zIndex.d.ts.map +1 -0
  417. package/dist/overlay/zIndex.js +20 -0
  418. package/dist/overlay/zIndex.js.map +1 -0
  419. package/dist/rpc/EntityExplorerApp.cjs +102 -143
  420. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  421. package/dist/rpc/EntityExplorerApp.d.ts +34 -1
  422. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  423. package/dist/rpc/EntityExplorerApp.js +105 -146
  424. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  425. package/dist/rpc/OperationActionBar.cjs +135 -0
  426. package/dist/rpc/OperationActionBar.cjs.map +1 -0
  427. package/dist/rpc/OperationActionBar.d.ts +20 -0
  428. package/dist/rpc/OperationActionBar.d.ts.map +1 -0
  429. package/dist/rpc/OperationActionBar.js +135 -0
  430. package/dist/rpc/OperationActionBar.js.map +1 -0
  431. package/dist/rpc/OperationCatalog.cjs +79 -116
  432. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  433. package/dist/rpc/OperationCatalog.d.ts +8 -1
  434. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  435. package/dist/rpc/OperationCatalog.js +80 -117
  436. package/dist/rpc/OperationCatalog.js.map +1 -1
  437. package/dist/rpc/OperationCommandPage.cjs +134 -223
  438. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  439. package/dist/rpc/OperationCommandPage.d.ts +1 -1
  440. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  441. package/dist/rpc/OperationCommandPage.js +135 -224
  442. package/dist/rpc/OperationCommandPage.js.map +1 -1
  443. package/dist/rpc/OperationEntityPage.cjs +49 -100
  444. package/dist/rpc/OperationEntityPage.cjs.map +1 -1
  445. package/dist/rpc/OperationEntityPage.d.ts +6 -1
  446. package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
  447. package/dist/rpc/OperationEntityPage.js +50 -101
  448. package/dist/rpc/OperationEntityPage.js.map +1 -1
  449. package/dist/rpc/OperationResultView.cjs +43 -0
  450. package/dist/rpc/OperationResultView.cjs.map +1 -0
  451. package/dist/rpc/OperationResultView.d.ts +30 -0
  452. package/dist/rpc/OperationResultView.d.ts.map +1 -0
  453. package/dist/rpc/OperationResultView.js +43 -0
  454. package/dist/rpc/OperationResultView.js.map +1 -0
  455. package/dist/rpc/SchemaActionForm.cjs +102 -0
  456. package/dist/rpc/SchemaActionForm.cjs.map +1 -0
  457. package/dist/rpc/SchemaActionForm.d.ts +23 -0
  458. package/dist/rpc/SchemaActionForm.d.ts.map +1 -0
  459. package/dist/rpc/SchemaActionForm.js +102 -0
  460. package/dist/rpc/SchemaActionForm.js.map +1 -0
  461. package/dist/rpc/accept-options.cjs.map +1 -1
  462. package/dist/rpc/accept-options.d.ts +0 -1
  463. package/dist/rpc/accept-options.d.ts.map +1 -1
  464. package/dist/rpc/accept-options.js.map +1 -1
  465. package/dist/rpc/apiClient.cjs +34 -2
  466. package/dist/rpc/apiClient.cjs.map +1 -1
  467. package/dist/rpc/apiClient.d.ts +4 -1
  468. package/dist/rpc/apiClient.d.ts.map +1 -1
  469. package/dist/rpc/apiClient.js +34 -2
  470. package/dist/rpc/apiClient.js.map +1 -1
  471. package/dist/rpc/clickyMetadata.cjs +4 -4
  472. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  473. package/dist/rpc/clickyMetadata.d.ts +0 -1
  474. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  475. package/dist/rpc/clickyMetadata.js +4 -4
  476. package/dist/rpc/clickyMetadata.js.map +1 -1
  477. package/dist/rpc/formMetadata.cjs +1 -0
  478. package/dist/rpc/formMetadata.cjs.map +1 -1
  479. package/dist/rpc/formMetadata.d.ts +6 -1
  480. package/dist/rpc/formMetadata.d.ts.map +1 -1
  481. package/dist/rpc/formMetadata.js +1 -0
  482. package/dist/rpc/formMetadata.js.map +1 -1
  483. package/dist/rpc/rowNavigation.cjs +86 -0
  484. package/dist/rpc/rowNavigation.cjs.map +1 -0
  485. package/dist/rpc/rowNavigation.d.ts +14 -0
  486. package/dist/rpc/rowNavigation.d.ts.map +1 -0
  487. package/dist/rpc/rowNavigation.js +86 -0
  488. package/dist/rpc/rowNavigation.js.map +1 -0
  489. package/dist/rpc/schemaActionPath.cjs +22 -0
  490. package/dist/rpc/schemaActionPath.cjs.map +1 -0
  491. package/dist/rpc/schemaActionPath.d.ts +4 -0
  492. package/dist/rpc/schemaActionPath.d.ts.map +1 -0
  493. package/dist/rpc/schemaActionPath.js +22 -0
  494. package/dist/rpc/schemaActionPath.js.map +1 -0
  495. package/dist/rpc/surfaceIconMap.cjs +35 -0
  496. package/dist/rpc/surfaceIconMap.cjs.map +1 -0
  497. package/dist/rpc/surfaceIconMap.d.ts +3 -0
  498. package/dist/rpc/surfaceIconMap.d.ts.map +1 -0
  499. package/dist/rpc/surfaceIconMap.js +35 -0
  500. package/dist/rpc/surfaceIconMap.js.map +1 -0
  501. package/dist/rpc/types.cjs.map +1 -1
  502. package/dist/rpc/types.d.ts +2 -0
  503. package/dist/rpc/types.d.ts.map +1 -1
  504. package/dist/rpc/types.js.map +1 -1
  505. package/dist/rpc/useOperations.cjs.map +1 -1
  506. package/dist/rpc/useOperations.d.ts +4 -1
  507. package/dist/rpc/useOperations.d.ts.map +1 -1
  508. package/dist/rpc/useOperations.js.map +1 -1
  509. package/dist/rpc.cjs +4 -2
  510. package/dist/rpc.cjs.map +1 -1
  511. package/dist/rpc.d.ts +7 -6
  512. package/dist/rpc.d.ts.map +1 -1
  513. package/dist/rpc.js +4 -2
  514. package/dist/rpc.js.map +1 -1
  515. package/dist/styles.css +1 -1
  516. package/package.json +6 -1
  517. package/dist/rpc/AcceptPicker.cjs +0 -135
  518. package/dist/rpc/AcceptPicker.cjs.map +0 -1
  519. package/dist/rpc/AcceptPicker.d.ts +0 -12
  520. package/dist/rpc/AcceptPicker.d.ts.map +0 -1
  521. package/dist/rpc/AcceptPicker.js +0 -135
  522. package/dist/rpc/AcceptPicker.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownEditor.js","sources":["../../src/data/MarkdownEditor.tsx"],"sourcesContent":["import {\n useEffect,\n useId,\n useMemo,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { Button } from \"../components/button\";\nimport { IconButton } from \"../components/IconButton\";\nimport {\n SegmentedControl,\n type SegmentedOption,\n} from \"../components/SegmentedControl\";\nimport { cn } from \"../lib/utils\";\nimport {\n UiCopy,\n UiEdit,\n UiEye,\n UiFileCode,\n UiFileSpreadsheet,\n UiFileText,\n UiJson,\n UiMarkdown,\n UiRefresh,\n} from \"../icons\";\nimport { Clicky, type ClickyProps } from \"./Clicky\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { JsonView } from \"./JsonView\";\nimport { Markdown } from \"./Markdown\";\nimport {\n buildMarkdownPreviewUrl,\n MARKDOWN_EDITOR_PREVIEW_FORMATS,\n type MarkdownEditorPreviewFormat,\n type MarkdownEditorPreviewHeaders,\n type MarkdownEditorPreviewRequest,\n type MarkdownEditorPreviewResult,\n} from \"./MarkdownEditor.model\";\n\nexport type MarkdownEditorProps = {\n /** Controlled markdown source. */\n value?: string;\n /** Initial markdown source for uncontrolled usage. */\n defaultValue?: string;\n /** Called whenever the editor source changes. */\n onChange?: (value: string) => void;\n /** Editor label. */\n label?: ReactNode;\n /** Textarea placeholder. */\n placeholder?: string;\n /** Preview formats to expose in the toolbar. */\n previewFormats?: readonly MarkdownEditorPreviewFormat[];\n /** Controlled active preview format. */\n previewFormat?: MarkdownEditorPreviewFormat;\n /** Initial active preview format for uncontrolled usage. */\n defaultPreviewFormat?: MarkdownEditorPreviewFormat;\n /** Called when the active preview format changes. */\n onPreviewFormatChange?: (format: MarkdownEditorPreviewFormat) => void;\n /** Clicky endpoint that accepts markdown and a `format=` query parameter. */\n previewEndpoint?: string;\n /** HTTP method for `previewEndpoint`; POST sends the markdown body. */\n previewMethod?: \"GET\" | \"POST\" | \"PUT\";\n /** Extra headers for remote previews. */\n previewHeaders?: MarkdownEditorPreviewHeaders;\n /** Build a URL for remote preview requests instead of `previewEndpoint`. */\n buildPreviewUrl?: (request: {\n markdown: string;\n format: MarkdownEditorPreviewFormat;\n }) => string | undefined;\n /** Custom loader for host-specific markdown conversion. */\n loadPreview?: (\n request: MarkdownEditorPreviewRequest,\n ) => Promise<MarkdownEditorPreviewResult> | MarkdownEditorPreviewResult;\n /** Local Clicky document for the React preview, or a mapper from markdown. */\n clickyData?: ClickyProps[\"data\"] | ((markdown: string) => ClickyProps[\"data\"] | undefined);\n /** Debounce interval for remote preview requests. */\n previewDebounceMs?: number;\n /** Minimum height for both editor and preview panes. */\n minHeight?: number | string;\n /** Disable editing and preview refresh. */\n disabled?: boolean;\n /** Render the source as read-only. */\n readOnly?: boolean;\n /** Classes applied to the component root. */\n className?: string;\n /** Classes applied to the textarea. */\n editorClassName?: string;\n /** Classes applied to the preview body. */\n previewClassName?: string;\n /** Extra toolbar content rendered after the built-in actions. */\n toolbar?: ReactNode;\n};\n\ntype PreviewState =\n | { status: \"idle\" }\n | { status: \"loading\"; result?: MarkdownEditorPreviewResult }\n | { status: \"success\"; result: MarkdownEditorPreviewResult }\n | { status: \"error\"; error: string; result?: MarkdownEditorPreviewResult };\n\ntype FormatMeta = {\n label: string;\n icon: StaticIconComponent;\n iconClassName?: string;\n};\n\nconst FORMAT_META: Record<MarkdownEditorPreviewFormat, FormatMeta> = {\n react: {\n label: \"React\",\n icon: UiEye,\n },\n html: {\n label: \"HTML\",\n icon: UiFileCode,\n },\n markdown: {\n label: \"Markdown\",\n icon: UiMarkdown,\n },\n pdf: {\n label: \"PDF\",\n icon: UiFileText,\n iconClassName: \"text-rose-600 dark:text-rose-400\",\n },\n json: {\n label: \"JSON\",\n icon: UiJson,\n },\n csv: {\n label: \"CSV\",\n icon: UiFileSpreadsheet,\n iconClassName: \"text-emerald-600 dark:text-emerald-400\",\n },\n excel: {\n label: \"Excel\",\n icon: UiFileSpreadsheet,\n iconClassName: \"text-emerald-700 dark:text-emerald-300\",\n },\n};\n\n/**\n * Split-pane markdown editor with local Markdown/React preview and optional\n * Clicky-backed format previews. Hosts can pass `previewEndpoint` for the\n * standard Clicky `format=` contract or `loadPreview` for custom conversion.\n */\nexport function MarkdownEditor({\n value,\n defaultValue = \"\",\n onChange,\n label = \"Markdown\",\n placeholder = \"Write markdown...\",\n previewFormats,\n previewFormat,\n defaultPreviewFormat,\n onPreviewFormatChange,\n previewEndpoint,\n previewMethod = \"POST\",\n previewHeaders,\n buildPreviewUrl,\n loadPreview,\n clickyData,\n previewDebounceMs = 350,\n minHeight = 420,\n disabled = false,\n readOnly = false,\n className,\n editorClassName,\n previewClassName,\n toolbar,\n}: MarkdownEditorProps) {\n const editorId = useId();\n const formats = useMemo(\n () => normalizePreviewFormats(previewFormats),\n [previewFormats],\n );\n const firstFormat = formats[0] ?? \"react\";\n const [draft, setDraft] = useState(defaultValue);\n const markdown = value ?? draft;\n const [internalFormat, setInternalFormat] = useState<MarkdownEditorPreviewFormat>(\n () =>\n normalizeInitialFormat(defaultPreviewFormat, formats) ??\n firstFormat,\n );\n const activeFormat = formats.includes(previewFormat ?? internalFormat)\n ? previewFormat ?? internalFormat\n : firstFormat;\n const [refreshKey, setRefreshKey] = useState(0);\n const [previewState, setPreviewState] = useState<PreviewState>({\n status: \"idle\",\n });\n const contentStyle = useMemo<CSSProperties>(\n () => ({ minHeight: cssSize(minHeight) }),\n [minHeight],\n );\n const remoteEnabled = Boolean(loadPreview || previewEndpoint || buildPreviewUrl);\n const currentMeta = FORMAT_META[activeFormat];\n const segmentOptions = useMemo<SegmentedOption<MarkdownEditorPreviewFormat>[]>(\n () =>\n formats.map((format) => {\n const meta = FORMAT_META[format];\n return {\n id: format,\n label: meta.label,\n icon: meta.icon,\n title: `${meta.label} preview`,\n };\n }),\n [formats],\n );\n\n useEffect(() => {\n if (formats.includes(activeFormat)) return;\n setInternalFormat(firstFormat);\n }, [activeFormat, firstFormat, formats]);\n\n useEffect(() => {\n if (!remoteEnabled) {\n setPreviewState({ status: \"idle\" });\n return;\n }\n\n const controller = new AbortController();\n const timeout = window.setTimeout(() => {\n setPreviewState((current) =>\n current.status === \"success\"\n ? { status: \"loading\", result: current.result }\n : { status: \"loading\" },\n );\n\n resolvePreview({\n markdown,\n format: activeFormat,\n signal: controller.signal,\n previewEndpoint,\n previewMethod,\n previewHeaders,\n buildPreviewUrl,\n loadPreview,\n })\n .then((result) => {\n if (!controller.signal.aborted) {\n setPreviewState({ status: \"success\", result });\n }\n })\n .catch((error: unknown) => {\n if (controller.signal.aborted) return;\n setPreviewState((current) => ({\n status: \"error\",\n error: error instanceof Error ? error.message : \"Preview failed\",\n ...(current.status === \"loading\" && current.result\n ? { result: current.result }\n : {}),\n }));\n });\n }, Math.max(0, previewDebounceMs));\n\n return () => {\n window.clearTimeout(timeout);\n controller.abort();\n };\n }, [\n activeFormat,\n buildPreviewUrl,\n loadPreview,\n markdown,\n previewDebounceMs,\n previewEndpoint,\n previewHeaders,\n previewMethod,\n refreshKey,\n remoteEnabled,\n ]);\n\n const updateMarkdown = (next: string) => {\n if (value === undefined) setDraft(next);\n onChange?.(next);\n };\n\n const updateFormat = (next: MarkdownEditorPreviewFormat) => {\n if (previewFormat === undefined) setInternalFormat(next);\n onPreviewFormatChange?.(next);\n };\n\n const copySource = () => {\n const clipboard = globalThis.navigator?.clipboard;\n if (clipboard?.writeText) {\n void clipboard.writeText(markdown).catch(() => undefined);\n }\n };\n\n return (\n <div className={cn(\"rounded-md border border-border bg-card\", className)}>\n <div className=\"flex flex-wrap items-center gap-density-2 border-b border-border px-density-3 py-density-2\">\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n <Icon icon={UiEdit} className=\"text-base text-muted-foreground\" />\n <label\n htmlFor={editorId}\n className=\"truncate text-sm font-medium text-card-foreground\"\n >\n {label}\n </label>\n {previewState.status === \"loading\" && (\n <span className=\"text-xs text-muted-foreground\">Refreshing...</span>\n )}\n </div>\n <div className=\"flex min-w-0 flex-wrap items-center justify-end gap-2\">\n <SegmentedControl\n value={activeFormat}\n options={segmentOptions}\n onChange={updateFormat}\n size=\"sm\"\n aria-label=\"Markdown preview format\"\n className=\"max-w-full flex-wrap\"\n />\n {remoteEnabled && (\n <IconButton\n icon={UiRefresh}\n label=\"Refresh preview\"\n disabled={disabled}\n onClick={() => setRefreshKey((current) => current + 1)}\n />\n )}\n <IconButton icon={UiCopy} label=\"Copy markdown\" onClick={copySource} />\n {toolbar}\n </div>\n </div>\n\n <div className=\"grid gap-density-3 p-density-3 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]\">\n <div className=\"min-w-0 overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"border-b border-border px-density-3 py-density-2 text-xs font-medium text-muted-foreground\">\n Source\n </div>\n <textarea\n id={editorId}\n value={markdown}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n spellCheck\n onChange={(event) => updateMarkdown(event.currentTarget.value)}\n className={cn(\n \"block w-full resize-y border-0 bg-transparent px-density-3 py-density-3 font-mono text-sm leading-6 text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-60\",\n editorClassName,\n )}\n style={contentStyle}\n />\n </div>\n\n <div className=\"min-w-0 overflow-hidden rounded-md border border-border bg-background\">\n <div className=\"flex items-center gap-2 border-b border-border px-density-3 py-density-2 text-xs font-medium text-muted-foreground\">\n <Icon\n icon={currentMeta.icon}\n className={cn(\"text-sm\", currentMeta.iconClassName)}\n />\n <span>{currentMeta.label}</span>\n </div>\n <div\n className={cn(\n \"overflow-auto px-density-3 py-density-3\",\n previewClassName,\n )}\n style={contentStyle}\n >\n <MarkdownEditorPreview\n format={activeFormat}\n markdown={markdown}\n state={previewState}\n clickyData={clickyData}\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction MarkdownEditorPreview({\n format,\n markdown,\n state,\n clickyData,\n}: {\n format: MarkdownEditorPreviewFormat;\n markdown: string;\n state: PreviewState;\n clickyData?: MarkdownEditorProps[\"clickyData\"];\n}) {\n const result =\n state.status === \"success\" || state.status === \"loading\" || state.status === \"error\"\n ? state.result\n : undefined;\n\n return (\n <div className=\"space-y-density-3\">\n {state.status === \"error\" && (\n <PreviewNotice title=\"Preview failed\" message={state.error} tone=\"danger\" />\n )}\n {result ? (\n <PreviewResult format={format} result={result} />\n ) : (\n <LocalPreview\n format={format}\n markdown={markdown}\n clickyData={clickyData}\n />\n )}\n </div>\n );\n}\n\nfunction LocalPreview({\n format,\n markdown,\n clickyData,\n}: {\n format: MarkdownEditorPreviewFormat;\n markdown: string;\n clickyData?: MarkdownEditorProps[\"clickyData\"];\n}) {\n if (format === \"react\") {\n const data =\n typeof clickyData === \"function\" ? clickyData(markdown) : clickyData;\n return data === undefined ? <Markdown text={markdown} /> : <Clicky data={data} />;\n }\n\n if (format === \"markdown\") {\n return <TextPreview label=\"Markdown source\" text={markdown} />;\n }\n\n return (\n <PreviewNotice\n title={`${FORMAT_META[format].label} preview not configured`}\n message=\"Pass previewEndpoint or loadPreview to render this format from Clicky.\"\n />\n );\n}\n\nfunction PreviewResult({\n format,\n result,\n}: {\n format: MarkdownEditorPreviewFormat;\n result: MarkdownEditorPreviewResult;\n}) {\n switch (result.kind) {\n case \"clicky\":\n return <Clicky data={result.data} />;\n case \"html\":\n return <HtmlPreview html={result.html} />;\n case \"json\":\n return <JsonView data={result.data} />;\n case \"url\":\n return <UrlPreview format={format} url={result.url} />;\n case \"blob\":\n return <BlobPreview format={format} result={result} />;\n case \"text\":\n return <TextResult format={format} result={result} />;\n }\n}\n\nfunction TextResult({\n format,\n result,\n}: {\n format: MarkdownEditorPreviewFormat;\n result: Extract<MarkdownEditorPreviewResult, { kind: \"text\" }>;\n}) {\n if (format === \"react\") {\n return <Clicky data={result.text} />;\n }\n\n if (format === \"html\" || isHtmlContent(result.contentType)) {\n return <HtmlPreview html={result.text} />;\n }\n\n if (format === \"json\" || isJsonContent(result.contentType)) {\n const parsed = parseJson(result.text);\n return parsed.ok ? (\n <JsonView data={parsed.value} />\n ) : (\n <TextPreview label=\"JSON output\" text={result.text} />\n );\n }\n\n return (\n <TextPreview\n label={`${FORMAT_META[format].label} output`}\n text={result.text}\n />\n );\n}\n\nfunction UrlPreview({\n format,\n url,\n}: {\n format: MarkdownEditorPreviewFormat;\n url: string;\n}) {\n if (format === \"react\") {\n return <Clicky url={url} view={[\"clicky\"]} download={{ all: false }} />;\n }\n\n if (format === \"html\") {\n return <HtmlPreview src={url} />;\n }\n\n if (format === \"pdf\") {\n return <FramePreview title=\"PDF preview\" src={url} />;\n }\n\n if (format === \"excel\") {\n return <DownloadPreview label=\"Open Excel workbook\" href={url} />;\n }\n\n return <TextPreview label={`${FORMAT_META[format].label} URL`} text={url} />;\n}\n\nfunction BlobPreview({\n format,\n result,\n}: {\n format: MarkdownEditorPreviewFormat;\n result: Extract<MarkdownEditorPreviewResult, { kind: \"blob\" }>;\n}) {\n const [url, setUrl] = useState<string>();\n\n useEffect(() => {\n const next = URL.createObjectURL(result.blob);\n setUrl(next);\n return () => URL.revokeObjectURL(next);\n }, [result.blob]);\n\n if (!url) {\n return <PreviewNotice title=\"Preparing preview\" message=\"Creating object URL.\" />;\n }\n\n if (format === \"pdf\") {\n return <FramePreview title=\"PDF preview\" src={url} />;\n }\n\n return (\n <DownloadPreview\n label={`Open ${FORMAT_META[format].label}`}\n href={url}\n {...(result.filename ? { download: result.filename } : {})}\n />\n );\n}\n\nfunction HtmlPreview({\n html,\n src,\n}: {\n html?: string;\n src?: string;\n}) {\n return (\n <FramePreview\n title=\"HTML preview\"\n {...(src ? { src } : {})}\n {...(html ? { srcDoc: html } : {})}\n sandbox=\"allow-same-origin\"\n />\n );\n}\n\nfunction FramePreview({\n title,\n src,\n srcDoc,\n sandbox,\n}: {\n title: string;\n src?: string;\n srcDoc?: string;\n sandbox?: string;\n}) {\n return (\n <div className=\"overflow-hidden rounded-md border border-border bg-background\">\n <iframe\n title={title}\n {...(src ? { src } : {})}\n {...(srcDoc ? { srcDoc } : {})}\n {...(sandbox ? { sandbox } : {})}\n className=\"h-[720px] w-full bg-background\"\n />\n </div>\n );\n}\n\nfunction DownloadPreview({\n label,\n href,\n download,\n}: {\n label: string;\n href: string;\n download?: string;\n}) {\n return (\n <PreviewNotice\n title=\"Inline preview unavailable\"\n message={\n <Button asChild variant=\"outline\" size=\"sm\">\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n {...(download ? { download } : {})}\n >\n {label}\n </a>\n </Button>\n }\n />\n );\n}\n\nfunction TextPreview({ label, text }: { label: string; text: string }) {\n return (\n <pre\n aria-label={label}\n className=\"overflow-auto whitespace-pre-wrap break-words rounded-md border border-border bg-muted/30 px-density-3 py-density-3 font-mono text-xs text-foreground\"\n >\n {text || \"No content\"}\n </pre>\n );\n}\n\nfunction PreviewNotice({\n title,\n message,\n tone = \"default\",\n}: {\n title: string;\n message: ReactNode;\n tone?: \"default\" | \"danger\";\n}) {\n return (\n <div\n className={cn(\n \"rounded-md border p-density-3\",\n tone === \"danger\"\n ? \"border-destructive/30 bg-destructive/5\"\n : \"border-border bg-muted/30\",\n )}\n >\n <div\n className={cn(\n \"text-sm font-medium\",\n tone === \"danger\" && \"text-destructive\",\n )}\n >\n {title}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">{message}</div>\n </div>\n );\n}\n\nfunction normalizePreviewFormats(\n formats: readonly MarkdownEditorPreviewFormat[] | undefined,\n): MarkdownEditorPreviewFormat[] {\n const seen = new Set<MarkdownEditorPreviewFormat>();\n const source = formats && formats.length > 0 ? formats : MARKDOWN_EDITOR_PREVIEW_FORMATS;\n for (const format of source) {\n seen.add(format);\n }\n return [...seen];\n}\n\nfunction normalizeInitialFormat(\n format: MarkdownEditorPreviewFormat | undefined,\n formats: readonly MarkdownEditorPreviewFormat[],\n) {\n return format && formats.includes(format) ? format : undefined;\n}\n\nfunction cssSize(size: number | string) {\n return typeof size === \"number\" ? `${size}px` : size;\n}\n\nasync function resolvePreview({\n markdown,\n format,\n signal,\n previewEndpoint,\n previewMethod,\n previewHeaders,\n buildPreviewUrl,\n loadPreview,\n}: MarkdownEditorPreviewRequest & {\n previewEndpoint: string | undefined;\n previewMethod: \"GET\" | \"POST\" | \"PUT\";\n previewHeaders: MarkdownEditorPreviewHeaders | undefined;\n buildPreviewUrl: MarkdownEditorProps[\"buildPreviewUrl\"] | undefined;\n loadPreview: MarkdownEditorProps[\"loadPreview\"] | undefined;\n}): Promise<MarkdownEditorPreviewResult> {\n if (loadPreview) {\n return loadPreview({ markdown, format, signal });\n }\n\n const url =\n buildPreviewUrl?.({ markdown, format }) ??\n (previewEndpoint\n ? buildMarkdownPreviewUrl(previewEndpoint, format)\n : undefined);\n\n if (!url) {\n throw new Error(\"No preview endpoint configured\");\n }\n\n const headers = new Headers(\n typeof previewHeaders === \"function\"\n ? previewHeaders({ markdown, format })\n : previewHeaders,\n );\n headers.set(\"Accept\", previewAccept(format));\n\n const init: RequestInit = {\n method: previewMethod,\n headers,\n signal,\n };\n\n if (previewMethod !== \"GET\") {\n headers.set(\"Content-Type\", \"text/markdown; charset=utf-8\");\n init.body = markdown;\n }\n\n const response = await fetch(url, init);\n if (!response.ok) {\n throw new Error(\n `Preview failed with ${response.status} ${response.statusText}`.trim(),\n );\n }\n\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (format === \"pdf\" || format === \"excel\" || isBinaryContent(contentType)) {\n return {\n kind: \"blob\",\n blob: await response.blob(),\n contentType,\n filename: previewFilename(format),\n };\n }\n\n const text = await response.text();\n if (format === \"react\") {\n return { kind: \"clicky\", data: text };\n }\n if (format === \"html\" || isHtmlContent(contentType)) {\n return { kind: \"html\", html: text };\n }\n if (format === \"json\" || isJsonContent(contentType)) {\n const parsed = parseJson(text);\n return parsed.ok\n ? { kind: \"json\", data: parsed.value }\n : { kind: \"text\", text, contentType };\n }\n return { kind: \"text\", text, contentType };\n}\n\nfunction previewAccept(format: MarkdownEditorPreviewFormat) {\n switch (format) {\n case \"react\":\n return \"application/json+clicky, application/clicky+json;q=0.9, application/json;q=0.8,*/*;q=0.7\";\n case \"html\":\n return \"text/html, */*;q=0.7\";\n case \"markdown\":\n return \"text/markdown, text/plain;q=0.8,*/*;q=0.7\";\n case \"pdf\":\n return \"application/pdf, */*;q=0.7\";\n case \"json\":\n return \"application/json, text/plain;q=0.8,*/*;q=0.7\";\n case \"csv\":\n return \"text/csv, text/plain;q=0.8,*/*;q=0.7\";\n case \"excel\":\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, */*;q=0.7\";\n }\n}\n\nfunction previewFilename(format: MarkdownEditorPreviewFormat) {\n switch (format) {\n case \"react\":\n return \"preview.clicky.json\";\n case \"html\":\n return \"preview.html\";\n case \"markdown\":\n return \"preview.md\";\n case \"pdf\":\n return \"preview.pdf\";\n case \"json\":\n return \"preview.json\";\n case \"csv\":\n return \"preview.csv\";\n case \"excel\":\n return \"preview.xlsx\";\n }\n}\n\nfunction parseJson(text: string): { ok: true; value: unknown } | { ok: false } {\n try {\n return { ok: true, value: JSON.parse(text) as unknown };\n } catch {\n return { ok: false };\n }\n}\n\nfunction isJsonContent(contentType: string | undefined) {\n return contentType?.toLowerCase().includes(\"json\") ?? false;\n}\n\nfunction isHtmlContent(contentType: string | undefined) {\n return contentType?.toLowerCase().includes(\"html\") ?? false;\n}\n\nfunction isBinaryContent(contentType: string | undefined) {\n const normalized = contentType?.toLowerCase() ?? \"\";\n return (\n normalized.includes(\"application/pdf\") ||\n normalized.includes(\"spreadsheetml\") ||\n normalized.includes(\"application/vnd.ms-excel\")\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const MARKDOWN_EDITOR_PREVIEW_FORMATS = [
4
+ "react",
5
+ "html",
6
+ "markdown",
7
+ "pdf",
8
+ "json",
9
+ "csv",
10
+ "excel"
11
+ ];
12
+ function buildMarkdownPreviewUrl(endpoint, format) {
13
+ const base = typeof window === "undefined" ? "http://localhost" : window.location.origin;
14
+ const resolved = new URL(endpoint, base);
15
+ resolved.searchParams.set("format", clickyFormatForMarkdownPreview(format));
16
+ if (/^[a-z][a-z0-9+.-]*:/i.test(endpoint)) {
17
+ return resolved.toString();
18
+ }
19
+ return `${resolved.pathname}${resolved.search}${resolved.hash}`;
20
+ }
21
+ function clickyFormatForMarkdownPreview(format) {
22
+ return format === "react" ? "clicky-json" : format;
23
+ }
24
+ exports.MARKDOWN_EDITOR_PREVIEW_FORMATS = MARKDOWN_EDITOR_PREVIEW_FORMATS;
25
+ exports.buildMarkdownPreviewUrl = buildMarkdownPreviewUrl;
26
+ exports.clickyFormatForMarkdownPreview = clickyFormatForMarkdownPreview;
27
+ //# sourceMappingURL=MarkdownEditor.model.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownEditor.model.cjs","sources":["../../src/data/MarkdownEditor.model.ts"],"sourcesContent":["import type { ClickyProps } from \"./Clicky\";\n\nexport const MARKDOWN_EDITOR_PREVIEW_FORMATS = [\n \"react\",\n \"html\",\n \"markdown\",\n \"pdf\",\n \"json\",\n \"csv\",\n \"excel\",\n] as const;\n\nexport type MarkdownEditorPreviewFormat =\n (typeof MARKDOWN_EDITOR_PREVIEW_FORMATS)[number];\n\nexport type MarkdownEditorPreviewRequest = {\n markdown: string;\n format: MarkdownEditorPreviewFormat;\n signal: AbortSignal;\n};\n\nexport type MarkdownEditorPreviewResult =\n | {\n kind: \"clicky\";\n data: NonNullable<ClickyProps[\"data\"]>;\n }\n | {\n kind: \"html\";\n html: string;\n }\n | {\n kind: \"json\";\n data: unknown;\n }\n | {\n kind: \"text\";\n text: string;\n contentType?: string;\n }\n | {\n kind: \"url\";\n url: string;\n contentType?: string;\n }\n | {\n kind: \"blob\";\n blob: Blob;\n contentType?: string;\n filename?: string;\n };\n\nexport type MarkdownEditorPreviewHeaders =\n | HeadersInit\n | ((request: {\n markdown: string;\n format: MarkdownEditorPreviewFormat;\n }) => HeadersInit | undefined);\n\nexport function buildMarkdownPreviewUrl(\n endpoint: string,\n format: MarkdownEditorPreviewFormat,\n) {\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(endpoint, base);\n resolved.searchParams.set(\"format\", clickyFormatForMarkdownPreview(format));\n\n if (/^[a-z][a-z0-9+.-]*:/i.test(endpoint)) {\n return resolved.toString();\n }\n\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nexport function clickyFormatForMarkdownPreview(\n format: MarkdownEditorPreviewFormat,\n) {\n return format === \"react\" ? \"clicky-json\" : format;\n}\n"],"names":[],"mappings":";;AAEO,MAAM,kCAAkC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAgDO,SAAS,wBACd,UACA,QACA;AACA,QAAM,OACJ,OAAO,WAAW,cAAc,qBAAqB,OAAO,SAAS;AACvE,QAAM,WAAW,IAAI,IAAI,UAAU,IAAI;AACvC,WAAS,aAAa,IAAI,UAAU,+BAA+B,MAAM,CAAC;AAE1E,MAAI,uBAAuB,KAAK,QAAQ,GAAG;AACzC,WAAO,SAAS,SAAA;AAAA,EAClB;AAEA,SAAO,GAAG,SAAS,QAAQ,GAAG,SAAS,MAAM,GAAG,SAAS,IAAI;AAC/D;AAEO,SAAS,+BACd,QACA;AACA,SAAO,WAAW,UAAU,gBAAgB;AAC9C;;;;"}
@@ -0,0 +1,38 @@
1
+ import { ClickyProps } from './Clicky';
2
+ export declare const MARKDOWN_EDITOR_PREVIEW_FORMATS: readonly ["react", "html", "markdown", "pdf", "json", "csv", "excel"];
3
+ export type MarkdownEditorPreviewFormat = (typeof MARKDOWN_EDITOR_PREVIEW_FORMATS)[number];
4
+ export type MarkdownEditorPreviewRequest = {
5
+ markdown: string;
6
+ format: MarkdownEditorPreviewFormat;
7
+ signal: AbortSignal;
8
+ };
9
+ export type MarkdownEditorPreviewResult = {
10
+ kind: "clicky";
11
+ data: NonNullable<ClickyProps["data"]>;
12
+ } | {
13
+ kind: "html";
14
+ html: string;
15
+ } | {
16
+ kind: "json";
17
+ data: unknown;
18
+ } | {
19
+ kind: "text";
20
+ text: string;
21
+ contentType?: string;
22
+ } | {
23
+ kind: "url";
24
+ url: string;
25
+ contentType?: string;
26
+ } | {
27
+ kind: "blob";
28
+ blob: Blob;
29
+ contentType?: string;
30
+ filename?: string;
31
+ };
32
+ export type MarkdownEditorPreviewHeaders = HeadersInit | ((request: {
33
+ markdown: string;
34
+ format: MarkdownEditorPreviewFormat;
35
+ }) => HeadersInit | undefined);
36
+ export declare function buildMarkdownPreviewUrl(endpoint: string, format: MarkdownEditorPreviewFormat): string;
37
+ export declare function clickyFormatForMarkdownPreview(format: MarkdownEditorPreviewFormat): "html" | "json" | "markdown" | "csv" | "pdf" | "excel" | "clicky-json";
38
+ //# sourceMappingURL=MarkdownEditor.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownEditor.model.d.ts","sourceRoot":"","sources":["../../src/data/MarkdownEditor.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,+BAA+B,uEAQlC,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,2BAA2B,CAAC;IACpC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GACnC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CACxC,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,MAAM,MAAM,4BAA4B,GACpC,WAAW,GACX,CAAC,CAAC,OAAO,EAAE;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,2BAA2B,CAAC;CACrC,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC;AAEnC,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,2BAA2B,UAYpC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,2BAA2B,0EAGpC"}
@@ -0,0 +1,27 @@
1
+ const MARKDOWN_EDITOR_PREVIEW_FORMATS = [
2
+ "react",
3
+ "html",
4
+ "markdown",
5
+ "pdf",
6
+ "json",
7
+ "csv",
8
+ "excel"
9
+ ];
10
+ function buildMarkdownPreviewUrl(endpoint, format) {
11
+ const base = typeof window === "undefined" ? "http://localhost" : window.location.origin;
12
+ const resolved = new URL(endpoint, base);
13
+ resolved.searchParams.set("format", clickyFormatForMarkdownPreview(format));
14
+ if (/^[a-z][a-z0-9+.-]*:/i.test(endpoint)) {
15
+ return resolved.toString();
16
+ }
17
+ return `${resolved.pathname}${resolved.search}${resolved.hash}`;
18
+ }
19
+ function clickyFormatForMarkdownPreview(format) {
20
+ return format === "react" ? "clicky-json" : format;
21
+ }
22
+ export {
23
+ MARKDOWN_EDITOR_PREVIEW_FORMATS,
24
+ buildMarkdownPreviewUrl,
25
+ clickyFormatForMarkdownPreview
26
+ };
27
+ //# sourceMappingURL=MarkdownEditor.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownEditor.model.js","sources":["../../src/data/MarkdownEditor.model.ts"],"sourcesContent":["import type { ClickyProps } from \"./Clicky\";\n\nexport const MARKDOWN_EDITOR_PREVIEW_FORMATS = [\n \"react\",\n \"html\",\n \"markdown\",\n \"pdf\",\n \"json\",\n \"csv\",\n \"excel\",\n] as const;\n\nexport type MarkdownEditorPreviewFormat =\n (typeof MARKDOWN_EDITOR_PREVIEW_FORMATS)[number];\n\nexport type MarkdownEditorPreviewRequest = {\n markdown: string;\n format: MarkdownEditorPreviewFormat;\n signal: AbortSignal;\n};\n\nexport type MarkdownEditorPreviewResult =\n | {\n kind: \"clicky\";\n data: NonNullable<ClickyProps[\"data\"]>;\n }\n | {\n kind: \"html\";\n html: string;\n }\n | {\n kind: \"json\";\n data: unknown;\n }\n | {\n kind: \"text\";\n text: string;\n contentType?: string;\n }\n | {\n kind: \"url\";\n url: string;\n contentType?: string;\n }\n | {\n kind: \"blob\";\n blob: Blob;\n contentType?: string;\n filename?: string;\n };\n\nexport type MarkdownEditorPreviewHeaders =\n | HeadersInit\n | ((request: {\n markdown: string;\n format: MarkdownEditorPreviewFormat;\n }) => HeadersInit | undefined);\n\nexport function buildMarkdownPreviewUrl(\n endpoint: string,\n format: MarkdownEditorPreviewFormat,\n) {\n const base =\n typeof window === \"undefined\" ? \"http://localhost\" : window.location.origin;\n const resolved = new URL(endpoint, base);\n resolved.searchParams.set(\"format\", clickyFormatForMarkdownPreview(format));\n\n if (/^[a-z][a-z0-9+.-]*:/i.test(endpoint)) {\n return resolved.toString();\n }\n\n return `${resolved.pathname}${resolved.search}${resolved.hash}`;\n}\n\nexport function clickyFormatForMarkdownPreview(\n format: MarkdownEditorPreviewFormat,\n) {\n return format === \"react\" ? \"clicky-json\" : format;\n}\n"],"names":[],"mappings":"AAEO,MAAM,kCAAkC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAgDO,SAAS,wBACd,UACA,QACA;AACA,QAAM,OACJ,OAAO,WAAW,cAAc,qBAAqB,OAAO,SAAS;AACvE,QAAM,WAAW,IAAI,IAAI,UAAU,IAAI;AACvC,WAAS,aAAa,IAAI,UAAU,+BAA+B,MAAM,CAAC;AAE1E,MAAI,uBAAuB,KAAK,QAAQ,GAAG;AACzC,WAAO,SAAS,SAAA;AAAA,EAClB;AAEA,SAAO,GAAG,SAAS,QAAQ,GAAG,SAAS,MAAM,GAAG,SAAS,IAAI;AAC/D;AAEO,SAAS,+BACd,QACA;AACA,SAAO,WAAW,UAAU,gBAAgB;AAC9C;"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const Tree = require("./Tree.cjs");
5
+ function ObjectGraph({
6
+ roots,
7
+ className,
8
+ empty,
9
+ showControls,
10
+ defaultOpenDepth = 2,
11
+ renderLabel,
12
+ loadChildren
13
+ }) {
14
+ return /* @__PURE__ */ jsxRuntime.jsx(
15
+ Tree.Tree,
16
+ {
17
+ roots,
18
+ getKey: (n) => n.id,
19
+ getChildren: (n) => n.children,
20
+ defaultOpen: (_n, depth) => depth < defaultOpenDepth,
21
+ ...className !== void 0 ? { className } : {},
22
+ ...empty !== void 0 ? { empty } : {},
23
+ ...showControls !== void 0 ? { showControls } : {},
24
+ ...loadChildren ? { loadChildren, hasMoreChildren: (n) => n.expandable === true } : {},
25
+ renderRow: ({ node, loading, error }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-wrap items-center gap-2 font-mono text-xs", children: [
26
+ renderLabel ? renderLabel(node) : /* @__PURE__ */ jsxRuntime.jsx(DefaultObjectLabel, { node }),
27
+ loading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-muted-foreground", children: "…" }),
28
+ error != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "break-all text-red-600", children: error instanceof Error ? error.message : String(error) })
29
+ ] })
30
+ }
31
+ );
32
+ }
33
+ function DefaultObjectLabel({ node }) {
34
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
35
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: node.label }),
36
+ node.type && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground/60", children: [
37
+ "@",
38
+ node.type
39
+ ] }),
40
+ node.value != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "break-all text-foreground", children: String(node.value) }) : node.raw && !node.children ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "break-all italic text-muted-foreground/70", children: node.raw }) : null
41
+ ] });
42
+ }
43
+ exports.ObjectGraph = ObjectGraph;
44
+ //# sourceMappingURL=ObjectGraph.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectGraph.cjs","sources":["../../src/data/ObjectGraph.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tree } from \"./Tree\";\n\n// ObjectGraph renders a generic, type-agnostic expandable object/value\n// inspector — a bean's fields, a map's entries, a list's elements, a scalar\n// leaf. It is the shared home for what used to be per-feature object viewers\n// (e.g. an OGNL inspector): any producer maps its data into ObjectGraphNode and\n// gets the same tree, search, and lazy-expansion behaviour.\n\nexport type ObjectGraphNode = {\n /** Stable unique key within the tree. */\n id: string;\n /** Display label (field name, map key, index, …). */\n label: string;\n /** Optional type annotation rendered as `@type`. */\n type?: string;\n /** Scalar value for a leaf; absent for containers. */\n value?: string | number | boolean | null;\n /** Free-form node kind hint (object|map|list|scalar|…). */\n kind?: string;\n /** Accessor path from the root (used by lazy expansion). */\n path?: string;\n /** Verbatim preview for an opaque node with no structured children. */\n raw?: string;\n /** Node can be expanded via loadChildren even with no inline children. */\n expandable?: boolean;\n /** Caller-opaque context (carried through, not rendered by default). */\n metadata?: Record<string, unknown>;\n children?: ObjectGraphNode[];\n};\n\nexport type ObjectGraphProps<T extends ObjectGraphNode = ObjectGraphNode> = {\n roots: T[];\n className?: string;\n empty?: ReactNode;\n showControls?: boolean;\n /** Open nodes shallower than this depth on first render (default 2). */\n defaultOpenDepth?: number;\n /** Override the row label rendering. */\n renderLabel?: (node: T) => ReactNode;\n /**\n * Lazily fetch a node's children the first time an `expandable` node opens.\n * When omitted, only inline `children` are shown.\n */\n loadChildren?: (node: T) => Promise<T[]>;\n};\n\nexport function ObjectGraph<T extends ObjectGraphNode = ObjectGraphNode>({\n roots,\n className,\n empty,\n showControls,\n defaultOpenDepth = 2,\n renderLabel,\n loadChildren,\n}: ObjectGraphProps<T>) {\n return (\n <Tree<T>\n roots={roots}\n getKey={(n) => n.id}\n getChildren={(n) => n.children as T[] | undefined}\n defaultOpen={(_n, depth) => depth < defaultOpenDepth}\n {...(className !== undefined ? { className } : {})}\n {...(empty !== undefined ? { empty } : {})}\n {...(showControls !== undefined ? { showControls } : {})}\n {...(loadChildren ? { loadChildren, hasMoreChildren: (n: T) => n.expandable === true } : {})}\n renderRow={({ node, loading, error }) => (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-2 font-mono text-xs\">\n {renderLabel ? renderLabel(node) : <DefaultObjectLabel node={node} />}\n {loading && <span className=\"shrink-0 text-muted-foreground\">…</span>}\n {error != null && (\n <span className=\"break-all text-red-600\">\n {error instanceof Error ? error.message : String(error)}\n </span>\n )}\n </div>\n )}\n />\n );\n}\n\nfunction DefaultObjectLabel({ node }: { node: ObjectGraphNode }) {\n return (\n <>\n <span className=\"text-muted-foreground\">{node.label}</span>\n {node.type && <span className=\"text-muted-foreground/60\">@{node.type}</span>}\n {node.value != null ? (\n <span className=\"break-all text-foreground\">{String(node.value)}</span>\n ) : node.raw && !node.children ? (\n <span className=\"break-all italic text-muted-foreground/70\">{node.raw}</span>\n ) : null}\n </>\n );\n}\n"],"names":["jsx","Tree","jsxs","Fragment"],"mappings":";;;;AA+CO,SAAS,YAAyD;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,EACA;AACF,GAAwB;AACtB,SACEA,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,QAAQ,CAAC,MAAM,EAAE;AAAA,MACjB,aAAa,CAAC,MAAM,EAAE;AAAA,MACtB,aAAa,CAAC,IAAI,UAAU,QAAQ;AAAA,MACnC,GAAI,cAAc,SAAY,EAAE,UAAA,IAAc,CAAA;AAAA,MAC9C,GAAI,UAAU,SAAY,EAAE,MAAA,IAAU,CAAA;AAAA,MACtC,GAAI,iBAAiB,SAAY,EAAE,aAAA,IAAiB,CAAA;AAAA,MACpD,GAAI,eAAe,EAAE,cAAc,iBAAiB,CAAC,MAAS,EAAE,eAAe,KAAA,IAAS,CAAA;AAAA,MACzF,WAAW,CAAC,EAAE,MAAM,SAAS,YAC3BC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sEACZ,UAAA;AAAA,QAAA,cAAc,YAAY,IAAI,IAAIF,2BAAAA,IAAC,sBAAmB,MAAY;AAAA,QAClE,WAAWA,2BAAAA,IAAC,QAAA,EAAK,WAAU,kCAAiC,UAAA,KAAC;AAAA,QAC7D,SAAS,QACRA,2BAAAA,IAAC,QAAA,EAAK,WAAU,0BACb,UAAA,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAA,CACxD;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAAS,mBAAmB,EAAE,QAAmC;AAC/D,SACEE,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,IAAAH,2BAAAA,IAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,KAAK,OAAM;AAAA,IACnD,KAAK,QAAQE,gCAAC,QAAA,EAAK,WAAU,4BAA2B,UAAA;AAAA,MAAA;AAAA,MAAE,KAAK;AAAA,IAAA,GAAK;AAAA,IACpE,KAAK,SAAS,OACbF,2BAAAA,IAAC,UAAK,WAAU,6BAA6B,UAAA,OAAO,KAAK,KAAK,EAAA,CAAE,IAC9D,KAAK,OAAO,CAAC,KAAK,WACpBA,2BAAAA,IAAC,UAAK,WAAU,6CAA6C,UAAA,KAAK,IAAA,CAAI,IACpE;AAAA,EAAA,GACN;AAEJ;;"}
@@ -0,0 +1,39 @@
1
+ import { ReactNode } from 'react';
2
+ export type ObjectGraphNode = {
3
+ /** Stable unique key within the tree. */
4
+ id: string;
5
+ /** Display label (field name, map key, index, …). */
6
+ label: string;
7
+ /** Optional type annotation rendered as `@type`. */
8
+ type?: string;
9
+ /** Scalar value for a leaf; absent for containers. */
10
+ value?: string | number | boolean | null;
11
+ /** Free-form node kind hint (object|map|list|scalar|…). */
12
+ kind?: string;
13
+ /** Accessor path from the root (used by lazy expansion). */
14
+ path?: string;
15
+ /** Verbatim preview for an opaque node with no structured children. */
16
+ raw?: string;
17
+ /** Node can be expanded via loadChildren even with no inline children. */
18
+ expandable?: boolean;
19
+ /** Caller-opaque context (carried through, not rendered by default). */
20
+ metadata?: Record<string, unknown>;
21
+ children?: ObjectGraphNode[];
22
+ };
23
+ export type ObjectGraphProps<T extends ObjectGraphNode = ObjectGraphNode> = {
24
+ roots: T[];
25
+ className?: string;
26
+ empty?: ReactNode;
27
+ showControls?: boolean;
28
+ /** Open nodes shallower than this depth on first render (default 2). */
29
+ defaultOpenDepth?: number;
30
+ /** Override the row label rendering. */
31
+ renderLabel?: (node: T) => ReactNode;
32
+ /**
33
+ * Lazily fetch a node's children the first time an `expandable` node opens.
34
+ * When omitted, only inline `children` are shown.
35
+ */
36
+ loadChildren?: (node: T) => Promise<T[]>;
37
+ };
38
+ export declare function ObjectGraph<T extends ObjectGraphNode = ObjectGraphNode>({ roots, className, empty, showControls, defaultOpenDepth, renderLabel, loadChildren, }: ObjectGraphProps<T>): import("react/jsx-runtime").JSX.Element;
39
+ //# sourceMappingURL=ObjectGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectGraph.d.ts","sourceRoot":"","sources":["../../src/data/ObjectGraph.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,MAAM,MAAM,eAAe,GAAG;IAC5B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACzC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IAC1E,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IACrC;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,EACvE,KAAK,EACL,SAAS,EACT,KAAK,EACL,YAAY,EACZ,gBAAoB,EACpB,WAAW,EACX,YAAY,GACb,EAAE,gBAAgB,CAAC,CAAC,CAAC,2CAwBrB"}
@@ -0,0 +1,44 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { Tree } from "./Tree.js";
3
+ function ObjectGraph({
4
+ roots,
5
+ className,
6
+ empty,
7
+ showControls,
8
+ defaultOpenDepth = 2,
9
+ renderLabel,
10
+ loadChildren
11
+ }) {
12
+ return /* @__PURE__ */ jsx(
13
+ Tree,
14
+ {
15
+ roots,
16
+ getKey: (n) => n.id,
17
+ getChildren: (n) => n.children,
18
+ defaultOpen: (_n, depth) => depth < defaultOpenDepth,
19
+ ...className !== void 0 ? { className } : {},
20
+ ...empty !== void 0 ? { empty } : {},
21
+ ...showControls !== void 0 ? { showControls } : {},
22
+ ...loadChildren ? { loadChildren, hasMoreChildren: (n) => n.expandable === true } : {},
23
+ renderRow: ({ node, loading, error }) => /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-wrap items-center gap-2 font-mono text-xs", children: [
24
+ renderLabel ? renderLabel(node) : /* @__PURE__ */ jsx(DefaultObjectLabel, { node }),
25
+ loading && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", children: "…" }),
26
+ error != null && /* @__PURE__ */ jsx("span", { className: "break-all text-red-600", children: error instanceof Error ? error.message : String(error) })
27
+ ] })
28
+ }
29
+ );
30
+ }
31
+ function DefaultObjectLabel({ node }) {
32
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
33
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: node.label }),
34
+ node.type && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground/60", children: [
35
+ "@",
36
+ node.type
37
+ ] }),
38
+ node.value != null ? /* @__PURE__ */ jsx("span", { className: "break-all text-foreground", children: String(node.value) }) : node.raw && !node.children ? /* @__PURE__ */ jsx("span", { className: "break-all italic text-muted-foreground/70", children: node.raw }) : null
39
+ ] });
40
+ }
41
+ export {
42
+ ObjectGraph
43
+ };
44
+ //# sourceMappingURL=ObjectGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectGraph.js","sources":["../../src/data/ObjectGraph.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tree } from \"./Tree\";\n\n// ObjectGraph renders a generic, type-agnostic expandable object/value\n// inspector — a bean's fields, a map's entries, a list's elements, a scalar\n// leaf. It is the shared home for what used to be per-feature object viewers\n// (e.g. an OGNL inspector): any producer maps its data into ObjectGraphNode and\n// gets the same tree, search, and lazy-expansion behaviour.\n\nexport type ObjectGraphNode = {\n /** Stable unique key within the tree. */\n id: string;\n /** Display label (field name, map key, index, …). */\n label: string;\n /** Optional type annotation rendered as `@type`. */\n type?: string;\n /** Scalar value for a leaf; absent for containers. */\n value?: string | number | boolean | null;\n /** Free-form node kind hint (object|map|list|scalar|…). */\n kind?: string;\n /** Accessor path from the root (used by lazy expansion). */\n path?: string;\n /** Verbatim preview for an opaque node with no structured children. */\n raw?: string;\n /** Node can be expanded via loadChildren even with no inline children. */\n expandable?: boolean;\n /** Caller-opaque context (carried through, not rendered by default). */\n metadata?: Record<string, unknown>;\n children?: ObjectGraphNode[];\n};\n\nexport type ObjectGraphProps<T extends ObjectGraphNode = ObjectGraphNode> = {\n roots: T[];\n className?: string;\n empty?: ReactNode;\n showControls?: boolean;\n /** Open nodes shallower than this depth on first render (default 2). */\n defaultOpenDepth?: number;\n /** Override the row label rendering. */\n renderLabel?: (node: T) => ReactNode;\n /**\n * Lazily fetch a node's children the first time an `expandable` node opens.\n * When omitted, only inline `children` are shown.\n */\n loadChildren?: (node: T) => Promise<T[]>;\n};\n\nexport function ObjectGraph<T extends ObjectGraphNode = ObjectGraphNode>({\n roots,\n className,\n empty,\n showControls,\n defaultOpenDepth = 2,\n renderLabel,\n loadChildren,\n}: ObjectGraphProps<T>) {\n return (\n <Tree<T>\n roots={roots}\n getKey={(n) => n.id}\n getChildren={(n) => n.children as T[] | undefined}\n defaultOpen={(_n, depth) => depth < defaultOpenDepth}\n {...(className !== undefined ? { className } : {})}\n {...(empty !== undefined ? { empty } : {})}\n {...(showControls !== undefined ? { showControls } : {})}\n {...(loadChildren ? { loadChildren, hasMoreChildren: (n: T) => n.expandable === true } : {})}\n renderRow={({ node, loading, error }) => (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-2 font-mono text-xs\">\n {renderLabel ? renderLabel(node) : <DefaultObjectLabel node={node} />}\n {loading && <span className=\"shrink-0 text-muted-foreground\">…</span>}\n {error != null && (\n <span className=\"break-all text-red-600\">\n {error instanceof Error ? error.message : String(error)}\n </span>\n )}\n </div>\n )}\n />\n );\n}\n\nfunction DefaultObjectLabel({ node }: { node: ObjectGraphNode }) {\n return (\n <>\n <span className=\"text-muted-foreground\">{node.label}</span>\n {node.type && <span className=\"text-muted-foreground/60\">@{node.type}</span>}\n {node.value != null ? (\n <span className=\"break-all text-foreground\">{String(node.value)}</span>\n ) : node.raw && !node.children ? (\n <span className=\"break-all italic text-muted-foreground/70\">{node.raw}</span>\n ) : null}\n </>\n );\n}\n"],"names":[],"mappings":";;AA+CO,SAAS,YAAyD;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,EACA;AACF,GAAwB;AACtB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,QAAQ,CAAC,MAAM,EAAE;AAAA,MACjB,aAAa,CAAC,MAAM,EAAE;AAAA,MACtB,aAAa,CAAC,IAAI,UAAU,QAAQ;AAAA,MACnC,GAAI,cAAc,SAAY,EAAE,UAAA,IAAc,CAAA;AAAA,MAC9C,GAAI,UAAU,SAAY,EAAE,MAAA,IAAU,CAAA;AAAA,MACtC,GAAI,iBAAiB,SAAY,EAAE,aAAA,IAAiB,CAAA;AAAA,MACpD,GAAI,eAAe,EAAE,cAAc,iBAAiB,CAAC,MAAS,EAAE,eAAe,KAAA,IAAS,CAAA;AAAA,MACzF,WAAW,CAAC,EAAE,MAAM,SAAS,YAC3B,qBAAC,OAAA,EAAI,WAAU,sEACZ,UAAA;AAAA,QAAA,cAAc,YAAY,IAAI,IAAI,oBAAC,sBAAmB,MAAY;AAAA,QAClE,WAAW,oBAAC,QAAA,EAAK,WAAU,kCAAiC,UAAA,KAAC;AAAA,QAC7D,SAAS,QACR,oBAAC,QAAA,EAAK,WAAU,0BACb,UAAA,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAA,CACxD;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAAS,mBAAmB,EAAE,QAAmC;AAC/D,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,KAAK,OAAM;AAAA,IACnD,KAAK,QAAQ,qBAAC,QAAA,EAAK,WAAU,4BAA2B,UAAA;AAAA,MAAA;AAAA,MAAE,KAAK;AAAA,IAAA,GAAK;AAAA,IACpE,KAAK,SAAS,OACb,oBAAC,UAAK,WAAU,6BAA6B,UAAA,OAAO,KAAK,KAAK,EAAA,CAAE,IAC9D,KAAK,OAAO,CAAC,KAAK,WACpB,oBAAC,UAAK,WAAU,6CAA6C,UAAA,KAAK,IAAA,CAAI,IACpE;AAAA,EAAA,GACN;AAEJ;"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const jsonSchemaFormRefs = require("../components/json-schema-form-refs.cjs");
6
+ const utils = require("../lib/utils.cjs");
7
+ const CodeBlock = require("./CodeBlock.cjs");
8
+ const Tree = require("./Tree.cjs");
9
+ const schemaViewerModel = require("./schema-viewer-model.cjs");
10
+ function isDetailOnly(node) {
11
+ var _a;
12
+ const [child] = node.children ?? [];
13
+ return ((_a = node.children) == null ? void 0 : _a.length) === 1 && Boolean(child == null ? void 0 : child.detail);
14
+ }
15
+ function SchemaViewer({
16
+ schema,
17
+ roots: scopedRoots,
18
+ buildTree = schemaViewerModel.buildSchemaTree,
19
+ className,
20
+ empty = /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-3 text-sm text-muted-foreground", children: "This schema has no fields." }),
21
+ showControls,
22
+ toolbarClassName,
23
+ defaultOpenDepth = 1,
24
+ renderDetail
25
+ }) {
26
+ const roots = react.useMemo(
27
+ () => scopedRoots ?? buildTree(jsonSchemaFormRefs.rehydrateRefs(schema)),
28
+ [buildTree, scopedRoots, schema]
29
+ );
30
+ return /* @__PURE__ */ jsxRuntime.jsx(
31
+ Tree.Tree,
32
+ {
33
+ className: utils.cn("text-sm", className),
34
+ roots,
35
+ getKey: (node) => node.key,
36
+ getChildren: (node) => node.children,
37
+ isSecondary: (node) => Boolean(node.detail),
38
+ getSearchText: (node) => node.detail ? "" : `${node.label} ${node.badge ?? ""} ${node.platformType ?? ""} ${node.ascode ?? ""}`,
39
+ defaultOpen: (node, depth) => depth < defaultOpenDepth && !isDetailOnly(node),
40
+ rowClass: (node, selected) => node.detail ? "cursor-default" : selected ? "bg-primary/10 border-l-2 border-primary" : "hover:bg-accent",
41
+ renderRow: ({ node }) => node.detail ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: renderDetail ? renderDetail(node.detail) : /* @__PURE__ */ jsxRuntime.jsx(SchemaFieldMetaPanel, { meta: node.detail }) }) : /* @__PURE__ */ jsxRuntime.jsx(SchemaViewerRow, { node }),
42
+ empty,
43
+ ...showControls !== void 0 ? { showControls } : {},
44
+ ...toolbarClassName !== void 0 ? { toolbarClassName } : {}
45
+ }
46
+ );
47
+ }
48
+ const BADGE_TONE = {
49
+ branch: "bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-200",
50
+ group: "bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-200",
51
+ activity: "bg-emerald-100 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-200",
52
+ clientType: "bg-sky-100 text-sky-700 dark:bg-sky-950/50 dark:text-sky-200",
53
+ clientTypes: "bg-sky-100 text-sky-700 dark:bg-sky-950/50 dark:text-sky-200",
54
+ fields: "bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-200",
55
+ object: "bg-muted text-muted-foreground",
56
+ array: "bg-muted text-muted-foreground",
57
+ string: "bg-muted text-muted-foreground",
58
+ number: "bg-muted text-muted-foreground",
59
+ integer: "bg-muted text-muted-foreground",
60
+ boolean: "bg-muted text-muted-foreground",
61
+ const: "bg-muted text-muted-foreground"
62
+ };
63
+ function SchemaViewerRow({ node }) {
64
+ const tone = node.badge ? BADGE_TONE[node.badge] : void 0;
65
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex w-full min-w-0 items-center gap-2", children: [
66
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate font-mono", children: node.label }),
67
+ node.badge && /* @__PURE__ */ jsxRuntime.jsx(
68
+ "span",
69
+ {
70
+ className: utils.cn(
71
+ "shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium",
72
+ tone ?? "bg-muted text-muted-foreground"
73
+ ),
74
+ children: node.badge
75
+ }
76
+ ),
77
+ node.count !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-[10px] tabular-nums text-muted-foreground", children: node.count }),
78
+ node.platformType && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded bg-indigo-50 px-1.5 py-0.5 text-[10px] text-indigo-700 dark:bg-indigo-950/50 dark:text-indigo-200", children: node.platformType }),
79
+ node.ascode && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "shrink-0 rounded bg-rose-50 px-1.5 py-0.5 text-[10px] text-rose-700 dark:bg-rose-950/50 dark:text-rose-200", children: [
80
+ "code: ",
81
+ node.ascode
82
+ ] }),
83
+ node.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate text-xs text-muted-foreground", children: node.description })
84
+ ] });
85
+ }
86
+ const ENUM_LIMIT = 12;
87
+ const PLATFORM_TYPE_LABEL = ["OI", "PA type"].join("");
88
+ function SchemaFieldMetaPanel({ meta }) {
89
+ var _a;
90
+ const enums = meta.enumValues ?? [];
91
+ const shown = enums.slice(0, ENUM_LIMIT);
92
+ const hidden = enums.length - shown.length;
93
+ const loc = meta.location;
94
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "my-1 space-y-2 rounded-md border border-border bg-muted/30 p-2 text-xs", children: [
95
+ /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5", children: [
96
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { label: PLATFORM_TYPE_LABEL, value: meta.platformType }),
97
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "AsCode", value: meta.ascode }),
98
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Format", value: meta.format }),
99
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Layout", value: meta.layout }),
100
+ /* @__PURE__ */ jsxRuntime.jsx(Row, { label: "Client ref", value: meta.clientRef ? "yes" : void 0 }),
101
+ (_a = meta.annotations) == null ? void 0 : _a.map((annotation) => /* @__PURE__ */ jsxRuntime.jsx(Row, { label: annotation.key, value: annotation.value }, annotation.key))
102
+ ] }),
103
+ meta.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground", children: meta.description }),
104
+ enums.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
105
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-medium text-muted-foreground", children: [
106
+ "Enum (",
107
+ enums.length,
108
+ ")"
109
+ ] }),
110
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "max-h-48 space-y-0.5 overflow-auto", children: shown.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
111
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: entry.value }),
112
+ entry.label && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
113
+ " - ",
114
+ entry.label
115
+ ] })
116
+ ] }, entry.value)) }),
117
+ hidden > 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground", children: [
118
+ "+",
119
+ hidden,
120
+ " more"
121
+ ] })
122
+ ] }),
123
+ meta.query && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
124
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-muted-foreground", children: "Query" }),
125
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { language: "sql", source: meta.query }) })
126
+ ] }),
127
+ loc && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
128
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-muted-foreground", children: "Source location" }),
129
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "break-all font-mono", children: formatLocation(loc.path, loc.startLine, loc.endLine) })
130
+ ] }),
131
+ meta.source && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [
132
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-muted-foreground", children: "Source" }),
133
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { language: "xml", source: meta.source }) })
134
+ ] })
135
+ ] });
136
+ }
137
+ function Row({ label, value }) {
138
+ if (value === void 0 || value === null) return null;
139
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
140
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-muted-foreground", children: label }),
141
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "break-all font-mono", children: value })
142
+ ] });
143
+ }
144
+ function formatLocation(path, startLine, endLine) {
145
+ if (startLine === void 0) return path;
146
+ if (endLine === void 0 || endLine === startLine) return `${path}:${startLine}`;
147
+ return `${path}:${startLine}-${endLine}`;
148
+ }
149
+ exports.SchemaFieldMetaPanel = SchemaFieldMetaPanel;
150
+ exports.SchemaViewer = SchemaViewer;
151
+ exports.SchemaViewerRow = SchemaViewerRow;
152
+ //# sourceMappingURL=SchemaViewer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaViewer.cjs","sources":["../../src/data/SchemaViewer.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { rehydrateRefs } from \"../components/json-schema-form-refs\";\nimport type { JsonSchemaObject } from \"../components/json-schema-form-types\";\nimport { cn } from \"../lib/utils\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { Tree } from \"./Tree\";\nimport {\n buildSchemaTree,\n type SchemaViewerFieldMeta,\n type SchemaViewerNode,\n} from \"./schema-viewer-model\";\n\nexport interface SchemaViewerProps {\n schema: JsonSchemaObject;\n /** Pre-scoped tree roots, for dialogs that want to show a single schema branch. */\n roots?: SchemaViewerNode[];\n /** Custom tree builder. Defaults to buildSchemaTree. */\n buildTree?: (schema: JsonSchemaObject) => SchemaViewerNode[];\n className?: string;\n empty?: ReactNode;\n showControls?: boolean;\n toolbarClassName?: string;\n /** Root depth opened by default. Defaults to 1, matching the platform tree. */\n defaultOpenDepth?: number;\n /** Override the expanded detail panel for annotated fields. */\n renderDetail?: (meta: SchemaViewerFieldMeta) => ReactNode;\n}\n\nfunction isDetailOnly(node: SchemaViewerNode): boolean {\n const [child] = node.children ?? [];\n return node.children?.length === 1 && Boolean(child?.detail);\n}\n\nexport function SchemaViewer({\n schema,\n roots: scopedRoots,\n buildTree = buildSchemaTree,\n className,\n empty = <p className=\"p-3 text-sm text-muted-foreground\">This schema has no fields.</p>,\n showControls,\n toolbarClassName,\n defaultOpenDepth = 1,\n renderDetail,\n}: SchemaViewerProps) {\n const roots = useMemo(\n () => scopedRoots ?? buildTree(rehydrateRefs(schema)),\n [buildTree, scopedRoots, schema],\n );\n\n return (\n <Tree<SchemaViewerNode>\n className={cn(\"text-sm\", className)}\n roots={roots}\n getKey={(node) => node.key}\n getChildren={(node) => node.children}\n isSecondary={(node) => Boolean(node.detail)}\n getSearchText={(node) =>\n node.detail ? \"\" : `${node.label} ${node.badge ?? \"\"} ${node.platformType ?? \"\"} ${node.ascode ?? \"\"}`\n }\n defaultOpen={(node, depth) => depth < defaultOpenDepth && !isDetailOnly(node)}\n rowClass={(node, selected) =>\n node.detail\n ? \"cursor-default\"\n : selected\n ? \"bg-primary/10 border-l-2 border-primary\"\n : \"hover:bg-accent\"\n }\n renderRow={({ node }) =>\n node.detail ? (\n <div className=\"min-w-0 flex-1\">\n {renderDetail ? renderDetail(node.detail) : <SchemaFieldMetaPanel meta={node.detail} />}\n </div>\n ) : (\n <SchemaViewerRow node={node} />\n )\n }\n empty={empty}\n {...(showControls !== undefined ? { showControls } : {})}\n {...(toolbarClassName !== undefined ? { toolbarClassName } : {})}\n />\n );\n}\n\nconst BADGE_TONE: Record<string, string> = {\n branch: \"bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-200\",\n group: \"bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-200\",\n activity: \"bg-emerald-100 text-emerald-700 dark:bg-emerald-950/50 dark:text-emerald-200\",\n clientType: \"bg-sky-100 text-sky-700 dark:bg-sky-950/50 dark:text-sky-200\",\n clientTypes: \"bg-sky-100 text-sky-700 dark:bg-sky-950/50 dark:text-sky-200\",\n fields: \"bg-amber-100 text-amber-700 dark:bg-amber-950/50 dark:text-amber-200\",\n object: \"bg-muted text-muted-foreground\",\n array: \"bg-muted text-muted-foreground\",\n string: \"bg-muted text-muted-foreground\",\n number: \"bg-muted text-muted-foreground\",\n integer: \"bg-muted text-muted-foreground\",\n boolean: \"bg-muted text-muted-foreground\",\n const: \"bg-muted text-muted-foreground\",\n};\n\nexport function SchemaViewerRow({ node }: { node: SchemaViewerNode }) {\n const tone = node.badge ? BADGE_TONE[node.badge] : undefined;\n return (\n <span className=\"flex w-full min-w-0 items-center gap-2\">\n <span className=\"min-w-0 truncate font-mono\">{node.label}</span>\n {node.badge && (\n <span\n className={cn(\n \"shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium\",\n tone ?? \"bg-muted text-muted-foreground\",\n )}\n >\n {node.badge}\n </span>\n )}\n {node.count !== undefined && (\n <span className=\"shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-[10px] tabular-nums text-muted-foreground\">\n {node.count}\n </span>\n )}\n {node.platformType && (\n <span className=\"shrink-0 rounded bg-indigo-50 px-1.5 py-0.5 text-[10px] text-indigo-700 dark:bg-indigo-950/50 dark:text-indigo-200\">\n {node.platformType}\n </span>\n )}\n {node.ascode && (\n <span className=\"shrink-0 rounded bg-rose-50 px-1.5 py-0.5 text-[10px] text-rose-700 dark:bg-rose-950/50 dark:text-rose-200\">\n code: {node.ascode}\n </span>\n )}\n {node.description && (\n <span className=\"min-w-0 truncate text-xs text-muted-foreground\">{node.description}</span>\n )}\n </span>\n );\n}\n\nexport interface SchemaFieldMetaPanelProps {\n meta: SchemaViewerFieldMeta;\n}\n\nconst ENUM_LIMIT = 12;\nconst PLATFORM_TYPE_LABEL = [\"OI\", \"PA type\"].join(\"\");\n\nexport function SchemaFieldMetaPanel({ meta }: SchemaFieldMetaPanelProps) {\n const enums = meta.enumValues ?? [];\n const shown = enums.slice(0, ENUM_LIMIT);\n const hidden = enums.length - shown.length;\n const loc = meta.location;\n\n return (\n <div className=\"my-1 space-y-2 rounded-md border border-border bg-muted/30 p-2 text-xs\">\n <dl className=\"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5\">\n <Row label={PLATFORM_TYPE_LABEL} value={meta.platformType} />\n <Row label=\"AsCode\" value={meta.ascode} />\n <Row label=\"Format\" value={meta.format} />\n <Row label=\"Layout\" value={meta.layout} />\n <Row label=\"Client ref\" value={meta.clientRef ? \"yes\" : undefined} />\n {meta.annotations?.map((annotation) => (\n <Row key={annotation.key} label={annotation.key} value={annotation.value} />\n ))}\n </dl>\n\n {meta.description && <p className=\"text-muted-foreground\">{meta.description}</p>}\n\n {enums.length > 0 && (\n <div className=\"space-y-0.5\">\n <p className=\"font-medium text-muted-foreground\">Enum ({enums.length})</p>\n <ul className=\"max-h-48 space-y-0.5 overflow-auto\">\n {shown.map((entry) => (\n <li key={entry.value}>\n <span className=\"font-mono\">{entry.value}</span>\n {entry.label && <span className=\"text-muted-foreground\"> - {entry.label}</span>}\n </li>\n ))}\n </ul>\n {hidden > 0 && <p className=\"text-muted-foreground\">+{hidden} more</p>}\n </div>\n )}\n\n {meta.query && (\n <div className=\"space-y-0.5\">\n <p className=\"font-medium text-muted-foreground\">Query</p>\n <div className=\"max-h-64 overflow-auto\">\n <CodeBlock language=\"sql\" source={meta.query} />\n </div>\n </div>\n )}\n\n {loc && (\n <div className=\"space-y-0.5\">\n <p className=\"font-medium text-muted-foreground\">Source location</p>\n <p className=\"break-all font-mono\">{formatLocation(loc.path, loc.startLine, loc.endLine)}</p>\n </div>\n )}\n\n {meta.source && (\n <div className=\"space-y-0.5\">\n <p className=\"font-medium text-muted-foreground\">Source</p>\n <div className=\"max-h-64 overflow-auto\">\n <CodeBlock language=\"xml\" source={meta.source} />\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction Row({ label, value }: { label: string; value: ReactNode }): ReactNode {\n if (value === undefined || value === null) return null;\n return (\n <>\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"break-all font-mono\">{value}</dd>\n </>\n );\n}\n\nfunction formatLocation(path: string, startLine?: number, endLine?: number): string {\n if (startLine === undefined) return path;\n if (endLine === undefined || endLine === startLine) return `${path}:${startLine}`;\n return `${path}:${startLine}-${endLine}`;\n}\n"],"names":["buildSchemaTree","jsx","useMemo","rehydrateRefs","Tree","cn","jsxs","CodeBlock","Fragment"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { JsonSchemaObject } from '../components/json-schema-form-types';
3
+ import { SchemaViewerFieldMeta, SchemaViewerNode } from './schema-viewer-model';
4
+ export interface SchemaViewerProps {
5
+ schema: JsonSchemaObject;
6
+ /** Pre-scoped tree roots, for dialogs that want to show a single schema branch. */
7
+ roots?: SchemaViewerNode[];
8
+ /** Custom tree builder. Defaults to buildSchemaTree. */
9
+ buildTree?: (schema: JsonSchemaObject) => SchemaViewerNode[];
10
+ className?: string;
11
+ empty?: ReactNode;
12
+ showControls?: boolean;
13
+ toolbarClassName?: string;
14
+ /** Root depth opened by default. Defaults to 1, matching the platform tree. */
15
+ defaultOpenDepth?: number;
16
+ /** Override the expanded detail panel for annotated fields. */
17
+ renderDetail?: (meta: SchemaViewerFieldMeta) => ReactNode;
18
+ }
19
+ export declare function SchemaViewer({ schema, roots: scopedRoots, buildTree, className, empty, showControls, toolbarClassName, defaultOpenDepth, renderDetail, }: SchemaViewerProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function SchemaViewerRow({ node }: {
21
+ node: SchemaViewerNode;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ export interface SchemaFieldMetaPanelProps {
24
+ meta: SchemaViewerFieldMeta;
25
+ }
26
+ export declare function SchemaFieldMetaPanel({ meta }: SchemaFieldMetaPanelProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=SchemaViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaViewer.d.ts","sourceRoot":"","sources":["../../src/data/SchemaViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAI7E,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mFAAmF;IACnF,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,SAAS,CAAC;CAC3D;AAOD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,KAAK,EAAE,WAAW,EAClB,SAA2B,EAC3B,SAAS,EACT,KAAuF,EACvF,YAAY,EACZ,gBAAgB,EAChB,gBAAoB,EACpB,YAAY,GACb,EAAE,iBAAiB,2CAsCnB;AAkBD,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,2CAmCnE;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,qBAAqB,CAAC;CAC7B;AAKD,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,yBAAyB,2CA8DvE"}