@tai42/studio-sdk 16.0.0 → 17.0.0

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 (486) hide show
  1. package/dist/components/code-block.js +1 -1
  2. package/dist/components/code-block.js.map +1 -1
  3. package/dist/components/confirm-dialog.js +1 -1
  4. package/dist/components/confirm-dialog.js.map +1 -1
  5. package/dist/components/copy-field.js +1 -1
  6. package/dist/components/copy-field.js.map +1 -1
  7. package/dist/components/date-range-picker.d.ts.map +1 -1
  8. package/dist/components/date-range-picker.js.map +1 -1
  9. package/dist/components/dialog.d.ts.map +1 -1
  10. package/dist/components/dialog.js.map +1 -1
  11. package/dist/components/dirty-guard.d.ts.map +1 -1
  12. package/dist/components/dirty-guard.js +1 -1
  13. package/dist/components/dirty-guard.js.map +1 -1
  14. package/dist/components/explorer-body.d.ts +49 -0
  15. package/dist/components/explorer-body.d.ts.map +1 -0
  16. package/dist/components/explorer-body.js +67 -0
  17. package/dist/components/explorer-body.js.map +1 -0
  18. package/dist/components/explorer-page-size.d.ts +4 -0
  19. package/dist/components/explorer-page-size.d.ts.map +1 -0
  20. package/dist/components/explorer-page-size.js +36 -0
  21. package/dist/components/explorer-page-size.js.map +1 -0
  22. package/dist/components/explorer-tag-filter.d.ts +17 -0
  23. package/dist/components/explorer-tag-filter.d.ts.map +1 -0
  24. package/dist/components/explorer-tag-filter.js +29 -0
  25. package/dist/components/explorer-tag-filter.js.map +1 -0
  26. package/dist/components/explorer-tags.d.ts +22 -0
  27. package/dist/components/explorer-tags.d.ts.map +1 -0
  28. package/dist/components/explorer-tags.js +51 -0
  29. package/dist/components/explorer-tags.js.map +1 -0
  30. package/dist/components/explorer-view.d.ts +3 -17
  31. package/dist/components/explorer-view.d.ts.map +1 -1
  32. package/dist/components/explorer-view.js +53 -170
  33. package/dist/components/explorer-view.js.map +1 -1
  34. package/dist/components/extension-combo-builder.d.ts +1 -6
  35. package/dist/components/extension-combo-builder.d.ts.map +1 -1
  36. package/dist/components/extension-combo-builder.js +4 -79
  37. package/dist/components/extension-combo-builder.js.map +1 -1
  38. package/dist/components/extension-combo-parts.d.ts +44 -0
  39. package/dist/components/extension-combo-parts.d.ts.map +1 -0
  40. package/dist/components/extension-combo-parts.js +52 -0
  41. package/dist/components/extension-combo-parts.js.map +1 -0
  42. package/dist/components/field.d.ts +8 -0
  43. package/dist/components/field.d.ts.map +1 -1
  44. package/dist/components/field.js +0 -8
  45. package/dist/components/field.js.map +1 -1
  46. package/dist/components/fleet-report.d.ts +1 -1
  47. package/dist/components/fleet-report.d.ts.map +1 -1
  48. package/dist/components/fleet-report.js +51 -37
  49. package/dist/components/fleet-report.js.map +1 -1
  50. package/dist/components/folder-nav.d.ts.map +1 -1
  51. package/dist/components/folder-nav.js +1 -1
  52. package/dist/components/folder-nav.js.map +1 -1
  53. package/dist/components/form-dialog.d.ts.map +1 -1
  54. package/dist/components/form-dialog.js +1 -1
  55. package/dist/components/form-dialog.js.map +1 -1
  56. package/dist/components/icons/chrome-marks.d.ts +50 -0
  57. package/dist/components/icons/chrome-marks.d.ts.map +1 -0
  58. package/dist/components/icons/chrome-marks.js +51 -0
  59. package/dist/components/icons/chrome-marks.js.map +1 -0
  60. package/dist/components/icons/icon-frame.d.ts +29 -0
  61. package/dist/components/icons/icon-frame.d.ts.map +1 -0
  62. package/dist/components/icons/icon-frame.js +19 -0
  63. package/dist/components/icons/icon-frame.js.map +1 -0
  64. package/dist/components/icons/index.d.ts +40 -0
  65. package/dist/components/icons/index.d.ts.map +1 -0
  66. package/dist/components/icons/index.js +39 -0
  67. package/dist/components/icons/index.js.map +1 -0
  68. package/dist/components/icons/nav-map.d.ts +14 -0
  69. package/dist/components/icons/nav-map.d.ts.map +1 -0
  70. package/dist/components/icons/nav-map.js +28 -0
  71. package/dist/components/icons/nav-map.js.map +1 -0
  72. package/dist/components/icons/nav-marks.d.ts +44 -0
  73. package/dist/components/icons/nav-marks.d.ts.map +1 -0
  74. package/dist/components/icons/nav-marks.js +45 -0
  75. package/dist/components/icons/nav-marks.js.map +1 -0
  76. package/dist/components/icons/status-marks.d.ts +21 -0
  77. package/dist/components/icons/status-marks.d.ts.map +1 -0
  78. package/dist/components/icons/status-marks.js +22 -0
  79. package/dist/components/icons/status-marks.js.map +1 -0
  80. package/dist/components/icons/theme-marks.d.ts +9 -0
  81. package/dist/components/icons/theme-marks.d.ts.map +1 -0
  82. package/dist/components/icons/theme-marks.js +10 -0
  83. package/dist/components/icons/theme-marks.js.map +1 -0
  84. package/dist/components/inputs.js.map +1 -1
  85. package/dist/components/json-diff.d.ts.map +1 -1
  86. package/dist/components/json-diff.js +1 -3
  87. package/dist/components/json-diff.js.map +1 -1
  88. package/dist/components/json-tree-context.d.ts +13 -0
  89. package/dist/components/json-tree-context.d.ts.map +1 -0
  90. package/dist/components/json-tree-context.js +15 -0
  91. package/dist/components/json-tree-context.js.map +1 -0
  92. package/dist/components/json-tree-model.d.ts +56 -0
  93. package/dist/components/json-tree-model.d.ts.map +1 -0
  94. package/dist/components/json-tree-model.js +125 -0
  95. package/dist/components/json-tree-model.js.map +1 -0
  96. package/dist/components/json-tree-nodes.d.ts +35 -0
  97. package/dist/components/json-tree-nodes.d.ts.map +1 -0
  98. package/dist/components/json-tree-nodes.js +113 -0
  99. package/dist/components/json-tree-nodes.js.map +1 -0
  100. package/dist/components/json-tree.d.ts +20 -0
  101. package/dist/components/json-tree.d.ts.map +1 -1
  102. package/dist/components/json-tree.js +7 -315
  103. package/dist/components/json-tree.js.map +1 -1
  104. package/dist/components/json-value-format.d.ts +20 -0
  105. package/dist/components/json-value-format.d.ts.map +1 -0
  106. package/dist/components/json-value-format.js +63 -0
  107. package/dist/components/json-value-format.js.map +1 -0
  108. package/dist/components/markdown-blocks.d.ts +38 -0
  109. package/dist/components/markdown-blocks.d.ts.map +1 -0
  110. package/dist/components/markdown-blocks.js +168 -0
  111. package/dist/components/markdown-blocks.js.map +1 -0
  112. package/dist/components/markdown-inline.d.ts +24 -0
  113. package/dist/components/markdown-inline.d.ts.map +1 -0
  114. package/dist/components/markdown-inline.js +257 -0
  115. package/dist/components/markdown-inline.js.map +1 -0
  116. package/dist/components/markdown.d.ts +3 -52
  117. package/dist/components/markdown.d.ts.map +1 -1
  118. package/dist/components/markdown.js +4 -376
  119. package/dist/components/markdown.js.map +1 -1
  120. package/dist/components/observer-registry.d.ts +38 -0
  121. package/dist/components/observer-registry.d.ts.map +1 -0
  122. package/dist/components/observer-registry.js +131 -0
  123. package/dist/components/observer-registry.js.map +1 -0
  124. package/dist/components/overflow-measure.d.ts +38 -0
  125. package/dist/components/overflow-measure.d.ts.map +1 -0
  126. package/dist/components/overflow-measure.js +54 -0
  127. package/dist/components/overflow-measure.js.map +1 -0
  128. package/dist/components/page-fill.d.ts.map +1 -1
  129. package/dist/components/page-fill.js.map +1 -1
  130. package/dist/components/prose-regions.d.ts +81 -0
  131. package/dist/components/prose-regions.d.ts.map +1 -0
  132. package/dist/components/prose-regions.js +128 -0
  133. package/dist/components/prose-regions.js.map +1 -0
  134. package/dist/components/radio-group.d.ts.map +1 -1
  135. package/dist/components/radio-group.js.map +1 -1
  136. package/dist/components/scroll-region.d.ts +24 -0
  137. package/dist/components/scroll-region.d.ts.map +1 -1
  138. package/dist/components/scroll-region.js +3 -322
  139. package/dist/components/scroll-region.js.map +1 -1
  140. package/dist/components/tab-stop-parse.d.ts +53 -0
  141. package/dist/components/tab-stop-parse.d.ts.map +1 -0
  142. package/dist/components/tab-stop-parse.js +202 -0
  143. package/dist/components/tab-stop-parse.js.map +1 -0
  144. package/dist/components/table.d.ts +1 -1
  145. package/dist/components/table.d.ts.map +1 -1
  146. package/dist/components/tags.d.ts.map +1 -1
  147. package/dist/components/tags.js +1 -1
  148. package/dist/components/tags.js.map +1 -1
  149. package/dist/components/templated-text-field.d.ts +1 -1
  150. package/dist/components/templated-text-field.d.ts.map +1 -1
  151. package/dist/components/templated-text-field.js +10 -174
  152. package/dist/components/templated-text-field.js.map +1 -1
  153. package/dist/components/templated-text-kwargs-editor.d.ts +24 -0
  154. package/dist/components/templated-text-kwargs-editor.d.ts.map +1 -0
  155. package/dist/components/templated-text-kwargs-editor.js +48 -0
  156. package/dist/components/templated-text-kwargs-editor.js.map +1 -0
  157. package/dist/components/templated-text-kwargs.d.ts +37 -0
  158. package/dist/components/templated-text-kwargs.d.ts.map +1 -0
  159. package/dist/components/templated-text-kwargs.js +66 -0
  160. package/dist/components/templated-text-kwargs.js.map +1 -0
  161. package/dist/components/templated-text-source.d.ts +33 -0
  162. package/dist/components/templated-text-source.d.ts.map +1 -0
  163. package/dist/components/templated-text-source.js +53 -0
  164. package/dist/components/templated-text-source.js.map +1 -0
  165. package/dist/components/tool-picker-parts.d.ts +39 -0
  166. package/dist/components/tool-picker-parts.d.ts.map +1 -0
  167. package/dist/components/tool-picker-parts.js +87 -0
  168. package/dist/components/tool-picker-parts.js.map +1 -0
  169. package/dist/components/tool-picker.d.ts +1 -2
  170. package/dist/components/tool-picker.d.ts.map +1 -1
  171. package/dist/components/tool-picker.js +4 -66
  172. package/dist/components/tool-picker.js.map +1 -1
  173. package/dist/components/version-history-panel.d.ts.map +1 -1
  174. package/dist/components/version-history-panel.js +7 -34
  175. package/dist/components/version-history-panel.js.map +1 -1
  176. package/dist/components/version-history-rows.d.ts +48 -0
  177. package/dist/components/version-history-rows.d.ts.map +1 -0
  178. package/dist/components/version-history-rows.js +51 -0
  179. package/dist/components/version-history-rows.js.map +1 -0
  180. package/dist/components/view-toggle.d.ts.map +1 -1
  181. package/dist/components/view-toggle.js.map +1 -1
  182. package/dist/element-slot.d.ts +11 -0
  183. package/dist/element-slot.d.ts.map +1 -1
  184. package/dist/element-slot.js +0 -11
  185. package/dist/element-slot.js.map +1 -1
  186. package/dist/guards.d.ts +6 -0
  187. package/dist/guards.d.ts.map +1 -0
  188. package/dist/guards.js +8 -0
  189. package/dist/guards.js.map +1 -0
  190. package/dist/hooks/interactions-connection.d.ts +43 -0
  191. package/dist/hooks/interactions-connection.d.ts.map +1 -0
  192. package/dist/hooks/interactions-connection.js +171 -0
  193. package/dist/hooks/interactions-connection.js.map +1 -0
  194. package/dist/hooks/interactions-stream.d.ts +80 -0
  195. package/dist/hooks/interactions-stream.d.ts.map +1 -0
  196. package/dist/hooks/interactions-stream.js +233 -0
  197. package/dist/hooks/interactions-stream.js.map +1 -0
  198. package/dist/hooks/useApi.d.ts +2259 -2189
  199. package/dist/hooks/useApi.d.ts.map +1 -1
  200. package/dist/hooks/useApi.js +0 -11
  201. package/dist/hooks/useApi.js.map +1 -1
  202. package/dist/hooks/useAuth.d.ts +6 -0
  203. package/dist/hooks/useAuth.d.ts.map +1 -1
  204. package/dist/hooks/useAuth.js +0 -6
  205. package/dist/hooks/useAuth.js.map +1 -1
  206. package/dist/hooks/useCapabilities.d.ts +18 -2
  207. package/dist/hooks/useCapabilities.d.ts.map +1 -1
  208. package/dist/hooks/useCapabilities.js +1 -17
  209. package/dist/hooks/useCapabilities.js.map +1 -1
  210. package/dist/hooks/useSse.d.ts +34 -6
  211. package/dist/hooks/useSse.d.ts.map +1 -1
  212. package/dist/hooks/useSse.js +27 -471
  213. package/dist/hooks/useSse.js.map +1 -1
  214. package/dist/hooks/useSystemKinds.d.ts +1 -1
  215. package/dist/hooks/useSystemKinds.d.ts.map +1 -1
  216. package/dist/hooks/useSystemKinds.js +0 -18
  217. package/dist/hooks/useSystemKinds.js.map +1 -1
  218. package/dist/hooks/useTheme.d.ts +15 -0
  219. package/dist/hooks/useTheme.d.ts.map +1 -1
  220. package/dist/hooks/useTheme.js +0 -15
  221. package/dist/hooks/useTheme.js.map +1 -1
  222. package/dist/hooks/useToolDisplayNames.d.ts +0 -14
  223. package/dist/hooks/useToolDisplayNames.d.ts.map +1 -1
  224. package/dist/hooks/useToolDisplayNames.js +0 -14
  225. package/dist/hooks/useToolDisplayNames.js.map +1 -1
  226. package/dist/host.d.ts +3 -3
  227. package/dist/host.d.ts.map +1 -1
  228. package/dist/host.js +2 -9
  229. package/dist/host.js.map +1 -1
  230. package/dist/index.d.ts +103 -103
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +49 -62
  233. package/dist/index.js.map +1 -1
  234. package/dist/navigation/app-link.d.ts +25 -0
  235. package/dist/navigation/app-link.d.ts.map +1 -0
  236. package/dist/navigation/app-link.js +33 -0
  237. package/dist/navigation/app-link.js.map +1 -0
  238. package/dist/navigation/context.d.ts +3 -20
  239. package/dist/navigation/context.d.ts.map +1 -1
  240. package/dist/navigation/context.js +7 -267
  241. package/dist/navigation/context.js.map +1 -1
  242. package/dist/navigation/entry-state.d.ts +23 -0
  243. package/dist/navigation/entry-state.d.ts.map +1 -0
  244. package/dist/navigation/entry-state.js +39 -0
  245. package/dist/navigation/entry-state.js.map +1 -0
  246. package/dist/navigation/guard-registry.d.ts +30 -0
  247. package/dist/navigation/guard-registry.d.ts.map +1 -0
  248. package/dist/navigation/guard-registry.js +46 -0
  249. package/dist/navigation/guard-registry.js.map +1 -0
  250. package/dist/navigation/guarded-navigation.d.ts +24 -0
  251. package/dist/navigation/guarded-navigation.d.ts.map +1 -0
  252. package/dist/navigation/guarded-navigation.js +102 -0
  253. package/dist/navigation/guarded-navigation.js.map +1 -0
  254. package/dist/navigation/index.d.ts +5 -4
  255. package/dist/navigation/index.d.ts.map +1 -1
  256. package/dist/navigation/index.js +2 -1
  257. package/dist/navigation/index.js.map +1 -1
  258. package/dist/navigation/types.d.ts +8 -11
  259. package/dist/navigation/types.d.ts.map +1 -1
  260. package/dist/navigation/use-back-forward-guard.d.ts +12 -0
  261. package/dist/navigation/use-back-forward-guard.d.ts.map +1 -0
  262. package/dist/navigation/use-back-forward-guard.js +75 -0
  263. package/dist/navigation/use-back-forward-guard.js.map +1 -0
  264. package/dist/navigation/use-search-commit.d.ts.map +1 -1
  265. package/dist/navigation/use-search-commit.js.map +1 -1
  266. package/dist/plugin/host-state.d.ts.map +1 -1
  267. package/dist/plugin/host-state.js.map +1 -1
  268. package/dist/plugin/registry.d.ts +6 -15
  269. package/dist/plugin/registry.d.ts.map +1 -1
  270. package/dist/plugin/registry.js +83 -75
  271. package/dist/plugin/registry.js.map +1 -1
  272. package/dist/schema-editor/SchemaEditor.d.ts.map +1 -1
  273. package/dist/schema-editor/SchemaEditor.js.map +1 -1
  274. package/dist/schema-editor/index.d.ts +3 -3
  275. package/dist/schema-editor/index.d.ts.map +1 -1
  276. package/dist/schema-editor/index.js +1 -6
  277. package/dist/schema-editor/index.js.map +1 -1
  278. package/dist/schema-form/SecretRefField.d.ts +18 -3
  279. package/dist/schema-form/SecretRefField.d.ts.map +1 -1
  280. package/dist/schema-form/SecretRefField.js +21 -26
  281. package/dist/schema-form/SecretRefField.js.map +1 -1
  282. package/dist/schema-form/classify.d.ts +1 -113
  283. package/dist/schema-form/classify.d.ts.map +1 -1
  284. package/dist/schema-form/classify.js +174 -246
  285. package/dist/schema-form/classify.js.map +1 -1
  286. package/dist/schema-form/context.d.ts +6 -0
  287. package/dist/schema-form/context.d.ts.map +1 -1
  288. package/dist/schema-form/context.js +0 -6
  289. package/dist/schema-form/context.js.map +1 -1
  290. package/dist/schema-form/default-value.d.ts.map +1 -1
  291. package/dist/schema-form/default-value.js +42 -19
  292. package/dist/schema-form/default-value.js.map +1 -1
  293. package/dist/schema-form/enum-field.d.ts +1 -1
  294. package/dist/schema-form/enum-field.d.ts.map +1 -1
  295. package/dist/schema-form/field-group.d.ts +6 -0
  296. package/dist/schema-form/field-group.d.ts.map +1 -1
  297. package/dist/schema-form/field-group.js +0 -6
  298. package/dist/schema-form/field-group.js.map +1 -1
  299. package/dist/schema-form/field-model.d.ts +121 -0
  300. package/dist/schema-form/field-model.d.ts.map +1 -0
  301. package/dist/schema-form/field-model.js +2 -0
  302. package/dist/schema-form/field-model.js.map +1 -0
  303. package/dist/schema-form/field-node.d.ts.map +1 -1
  304. package/dist/schema-form/field-node.js +25 -14
  305. package/dist/schema-form/field-node.js.map +1 -1
  306. package/dist/schema-form/index.d.ts +8 -8
  307. package/dist/schema-form/index.d.ts.map +1 -1
  308. package/dist/schema-form/index.js +3 -34
  309. package/dist/schema-form/index.js.map +1 -1
  310. package/dist/schema-form/json-field.d.ts +19 -0
  311. package/dist/schema-form/json-field.d.ts.map +1 -1
  312. package/dist/schema-form/json-field.js +0 -19
  313. package/dist/schema-form/json-field.js.map +1 -1
  314. package/dist/schema-form/media-field.d.ts +1 -1
  315. package/dist/schema-form/media-field.d.ts.map +1 -1
  316. package/dist/schema-form/media-field.js +49 -30
  317. package/dist/schema-form/media-field.js.map +1 -1
  318. package/dist/schema-form/record-field.d.ts +12 -0
  319. package/dist/schema-form/record-field.d.ts.map +1 -1
  320. package/dist/schema-form/record-field.js +1 -13
  321. package/dist/schema-form/record-field.js.map +1 -1
  322. package/dist/schema-form/string-annotations.d.ts +20 -0
  323. package/dist/schema-form/string-annotations.d.ts.map +1 -0
  324. package/dist/schema-form/string-annotations.js +105 -0
  325. package/dist/schema-form/string-annotations.js.map +1 -0
  326. package/dist/schema-form/string-field.d.ts +1 -1
  327. package/dist/schema-form/string-field.d.ts.map +1 -1
  328. package/dist/schema-form/string-field.js +1 -1
  329. package/dist/schema-form/string-field.js.map +1 -1
  330. package/dist/schema-form/union-field.d.ts +1 -1
  331. package/dist/schema-form/union-field.d.ts.map +1 -1
  332. package/dist/schema-form/union-field.js.map +1 -1
  333. package/dist/schema-form/union.d.ts +8 -1
  334. package/dist/schema-form/union.d.ts.map +1 -1
  335. package/dist/schema-form/union.js +0 -7
  336. package/dist/schema-form/union.js.map +1 -1
  337. package/dist/schema-form/validate.d.ts.map +1 -1
  338. package/dist/schema-form/validate.js +126 -105
  339. package/dist/schema-form/validate.js.map +1 -1
  340. package/dist/state-binding/AdapterMapping.d.ts.map +1 -1
  341. package/dist/state-binding/AdapterMapping.js +0 -0
  342. package/dist/state-binding/AdapterMapping.js.map +1 -1
  343. package/dist/state-binding/BindingJqField.d.ts.map +1 -1
  344. package/dist/state-binding/BindingJqField.js +2 -2
  345. package/dist/state-binding/BindingJqField.js.map +1 -1
  346. package/dist/state-binding/InputInjectionRow.d.ts.map +1 -1
  347. package/dist/state-binding/InputInjectionRow.js +3 -3
  348. package/dist/state-binding/InputInjectionRow.js.map +1 -1
  349. package/dist/state-binding/StateAttachRow.d.ts.map +1 -1
  350. package/dist/state-binding/StateAttachRow.js +57 -41
  351. package/dist/state-binding/StateAttachRow.js.map +1 -1
  352. package/dist/state-binding/StateBindingSection.d.ts.map +1 -1
  353. package/dist/state-binding/StateBindingSection.js.map +1 -1
  354. package/dist/state-binding/SubjectScopeFields.d.ts.map +1 -1
  355. package/dist/state-binding/SubjectScopeFields.js.map +1 -1
  356. package/dist/state-binding/UpdateRow.d.ts.map +1 -1
  357. package/dist/state-binding/UpdateRow.js +2 -2
  358. package/dist/state-binding/UpdateRow.js.map +1 -1
  359. package/dist/state-binding/adapter-mapping-row.d.ts +17 -0
  360. package/dist/state-binding/adapter-mapping-row.d.ts.map +1 -0
  361. package/dist/state-binding/adapter-mapping-row.js +87 -0
  362. package/dist/state-binding/adapter-mapping-row.js.map +1 -0
  363. package/dist/state-binding/index.d.ts +21 -21
  364. package/dist/state-binding/index.d.ts.map +1 -1
  365. package/dist/state-binding/index.js +9 -15
  366. package/dist/state-binding/index.js.map +1 -1
  367. package/dist/state-binding/templated-text-catalog.d.ts.map +1 -1
  368. package/dist/state-binding/templated-text-catalog.js.map +1 -1
  369. package/dist/state-binding/types.d.ts +2 -2
  370. package/dist/state-binding/types.d.ts.map +1 -1
  371. package/dist/structured-output/StructuredOutput.d.ts.map +1 -1
  372. package/dist/structured-output/StructuredOutput.js +1 -3
  373. package/dist/structured-output/StructuredOutput.js.map +1 -1
  374. package/package.json +2 -2
  375. package/src/components/code-block.tsx +1 -1
  376. package/src/components/confirm-dialog.tsx +1 -1
  377. package/src/components/copy-field.tsx +1 -1
  378. package/src/components/date-range-picker.tsx +1 -1
  379. package/src/components/dialog.tsx +1 -1
  380. package/src/components/dirty-guard.tsx +3 -3
  381. package/src/components/explorer-body.tsx +239 -0
  382. package/src/components/explorer-page-size.ts +39 -0
  383. package/src/components/explorer-tag-filter.tsx +80 -0
  384. package/src/components/explorer-tags.ts +64 -0
  385. package/src/components/explorer-view.tsx +115 -367
  386. package/src/components/extension-combo-builder.tsx +35 -153
  387. package/src/components/extension-combo-parts.tsx +236 -0
  388. package/src/components/field.tsx +1 -1
  389. package/src/components/fleet-report.tsx +98 -55
  390. package/src/components/folder-nav.tsx +2 -2
  391. package/src/components/form-dialog.tsx +2 -2
  392. package/src/components/icons/chrome-marks.tsx +195 -0
  393. package/src/components/icons/icon-frame.tsx +50 -0
  394. package/src/components/icons/index.ts +84 -0
  395. package/src/components/icons/nav-map.ts +55 -0
  396. package/src/components/icons/nav-marks.tsx +205 -0
  397. package/src/components/icons/status-marks.tsx +46 -0
  398. package/src/components/icons/theme-marks.tsx +33 -0
  399. package/src/components/inputs.tsx +1 -1
  400. package/src/components/json-diff.tsx +1 -4
  401. package/src/components/json-tree-context.ts +26 -0
  402. package/src/components/json-tree-model.ts +139 -0
  403. package/src/components/json-tree-nodes.tsx +224 -0
  404. package/src/components/json-tree.tsx +15 -434
  405. package/src/components/json-value-format.ts +64 -0
  406. package/src/components/markdown-blocks.ts +198 -0
  407. package/src/components/markdown-inline.tsx +365 -0
  408. package/src/components/markdown.tsx +6 -472
  409. package/src/components/observer-registry.ts +139 -0
  410. package/src/components/overflow-measure.ts +69 -0
  411. package/src/components/page-fill.tsx +1 -1
  412. package/src/components/prose-regions.ts +153 -0
  413. package/src/components/radio-group.tsx +1 -1
  414. package/src/components/scroll-region.tsx +22 -361
  415. package/src/components/tab-stop-parse.ts +217 -0
  416. package/src/components/table.tsx +1 -1
  417. package/src/components/tags.tsx +2 -2
  418. package/src/components/templated-text-field.tsx +39 -332
  419. package/src/components/templated-text-kwargs-editor.tsx +147 -0
  420. package/src/components/templated-text-kwargs.ts +92 -0
  421. package/src/components/templated-text-source.tsx +226 -0
  422. package/src/components/tool-picker-parts.tsx +184 -0
  423. package/src/components/tool-picker.tsx +22 -114
  424. package/src/components/version-history-panel.tsx +39 -143
  425. package/src/components/version-history-rows.tsx +220 -0
  426. package/src/components/view-toggle.tsx +1 -1
  427. package/src/element-slot.ts +1 -1
  428. package/src/guards.ts +7 -0
  429. package/src/hooks/interactions-connection.ts +227 -0
  430. package/src/hooks/interactions-stream.ts +274 -0
  431. package/src/hooks/useApi.ts +1 -1
  432. package/src/hooks/useAuth.ts +1 -1
  433. package/src/hooks/useCapabilities.ts +3 -3
  434. package/src/hooks/useSse.ts +51 -478
  435. package/src/hooks/useSystemKinds.tsx +2 -2
  436. package/src/hooks/useTheme.ts +1 -1
  437. package/src/hooks/useToolDisplayNames.tsx +2 -2
  438. package/src/host.ts +7 -7
  439. package/src/index.ts +292 -292
  440. package/src/navigation/app-link.tsx +70 -0
  441. package/src/navigation/context.tsx +12 -331
  442. package/src/navigation/entry-state.ts +42 -0
  443. package/src/navigation/guard-registry.ts +65 -0
  444. package/src/navigation/guarded-navigation.ts +147 -0
  445. package/src/navigation/index.ts +14 -14
  446. package/src/navigation/types.ts +8 -11
  447. package/src/navigation/use-back-forward-guard.ts +90 -0
  448. package/src/navigation/use-search-commit.ts +1 -1
  449. package/src/plugin/host-state.ts +1 -1
  450. package/src/plugin/registry.ts +111 -90
  451. package/src/schema-editor/SchemaEditor.tsx +1 -1
  452. package/src/schema-editor/index.ts +3 -3
  453. package/src/schema-form/SecretRefField.tsx +122 -72
  454. package/src/schema-form/classify.ts +245 -396
  455. package/src/schema-form/context.ts +1 -1
  456. package/src/schema-form/default-value.ts +48 -17
  457. package/src/schema-form/enum-field.tsx +1 -1
  458. package/src/schema-form/field-group.tsx +1 -1
  459. package/src/schema-form/field-model.ts +133 -0
  460. package/src/schema-form/field-node.tsx +95 -39
  461. package/src/schema-form/index.ts +10 -10
  462. package/src/schema-form/json-field.tsx +1 -1
  463. package/src/schema-form/media-field.tsx +136 -67
  464. package/src/schema-form/record-field.tsx +2 -2
  465. package/src/schema-form/string-annotations.ts +111 -0
  466. package/src/schema-form/string-field.tsx +2 -2
  467. package/src/schema-form/union-field.tsx +3 -2
  468. package/src/schema-form/union.ts +1 -1
  469. package/src/schema-form/validate.ts +185 -104
  470. package/src/state-binding/AdapterMapping.tsx +0 -0
  471. package/src/state-binding/BindingJqField.tsx +3 -3
  472. package/src/state-binding/InputInjectionRow.tsx +4 -4
  473. package/src/state-binding/StateAttachRow.tsx +229 -154
  474. package/src/state-binding/StateBindingSection.tsx +1 -1
  475. package/src/state-binding/SubjectScopeFields.tsx +1 -1
  476. package/src/state-binding/UpdateRow.tsx +3 -3
  477. package/src/state-binding/adapter-mapping-row.tsx +232 -0
  478. package/src/state-binding/index.ts +43 -43
  479. package/src/state-binding/templated-text-catalog.ts +0 -1
  480. package/src/state-binding/types.ts +2 -2
  481. package/src/structured-output/StructuredOutput.tsx +1 -4
  482. package/dist/components/icons.d.ts +0 -160
  483. package/dist/components/icons.d.ts.map +0 -1
  484. package/dist/components/icons.js +0 -160
  485. package/dist/components/icons.js.map +0 -1
  486. package/src/components/icons.tsx +0 -586
@@ -0,0 +1,113 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { COPIED_LABEL, COPIED_RESET_MS } from '../hooks/useClipboardCopy';
4
+ import { CheckIcon, CopyIcon } from './icons';
5
+ import { useJsonTreeContext } from './json-tree-context';
6
+ import { childPath, containerCount, containerSummary, isContainer, sliceEntries, } from './json-tree-model';
7
+ import { primitiveClass, primitiveText } from './json-value-format';
8
+ /** A copy control's resting face; whichever is exposed is also its accessible name. */
9
+ export const COPY_LABEL = 'Copy';
10
+ /**
11
+ * One nesting level's indent: the child block insets and draws its own guide
12
+ * rail. The depth is expressed by the DOM nesting, so each level repeats this
13
+ * single step rather than computing an absolute offset.
14
+ */
15
+ const childrenStyle = {
16
+ paddingLeft: 'var(--tai-space-4)',
17
+ marginLeft: 'var(--tai-space-1)',
18
+ borderLeft: '1px solid var(--tai-color-decor)',
19
+ };
20
+ /** A `<summary>` is a click target; browsers do not style it as one by default. */
21
+ const summaryStyle = {
22
+ display: 'flex',
23
+ alignItems: 'center',
24
+ gap: 'var(--tai-space-2)',
25
+ cursor: 'pointer',
26
+ };
27
+ /** The copy control sits at the far end of a disclosure's row. */
28
+ const nodeCopyStyle = { marginLeft: 'auto' };
29
+ /**
30
+ * The per-node copy button's geometry: borrows `tai-icon-btn` for the focus ring,
31
+ * muted ink and hover, then shrinks to the code rhythm so the row stays dense.
32
+ */
33
+ const nodeCopyButtonStyle = {
34
+ width: 'auto',
35
+ height: 'auto',
36
+ padding: 'var(--tai-space-1)',
37
+ };
38
+ const showMoreStyle = { marginTop: 'var(--tai-space-1)' };
39
+ /**
40
+ * A copy control that writes its value to the clipboard and shows a transient
41
+ * confirmed state. The write itself lives on the tree context, so a refusal is
42
+ * reported ONCE — as the tree's shared alert — rather than inline at each of the
43
+ * many buttons a large payload carries.
44
+ */
45
+ export function CopyButton({ value, label, variant }) {
46
+ const { copy } = useJsonTreeContext();
47
+ const [copied, setCopied] = useState(false);
48
+ const resetTimer = useRef(null);
49
+ // The write is async, so a copy can be in flight when the button unmounts (a dialog
50
+ // holding the tree closes on the same click); checked before the resolution sets state.
51
+ const mounted = useRef(true);
52
+ useEffect(() => {
53
+ mounted.current = true;
54
+ return () => {
55
+ mounted.current = false;
56
+ if (resetTimer.current !== null)
57
+ clearTimeout(resetTimer.current);
58
+ };
59
+ }, []);
60
+ const handleClick = (event) => {
61
+ // Inside a `<summary>` a click both toggles the disclosure natively and reaches
62
+ // the summary's own toggle handler; neither should fire for a copy.
63
+ event.preventDefault();
64
+ event.stopPropagation();
65
+ void copy(value).then((ok) => {
66
+ if (!ok || !mounted.current)
67
+ return;
68
+ setCopied(true);
69
+ if (resetTimer.current !== null)
70
+ clearTimeout(resetTimer.current);
71
+ resetTimer.current = setTimeout(() => {
72
+ if (mounted.current)
73
+ setCopied(false);
74
+ }, COPIED_RESET_MS);
75
+ });
76
+ };
77
+ if (variant === 'text') {
78
+ return (_jsxs("button", { type: "button", className: "tai-btn tai-btn-ghost", onClick: handleClick, children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), copied ? COPIED_LABEL : label] }));
79
+ }
80
+ return (_jsx("button", { type: "button", className: "tai-icon-btn", style: { ...nodeCopyStyle, ...nodeCopyButtonStyle }, "aria-label": copied ? COPIED_LABEL : label, onClick: handleClick, children: copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}) }));
81
+ }
82
+ /**
83
+ * The visible slice of a container's children, plus a "show more" control while
84
+ * any remain. Rendered ONLY when the node is open, so a collapsed container costs
85
+ * nothing and the page count follows how far the reader has opened it.
86
+ */
87
+ function NodeChildren({ value, count, depth, path, }) {
88
+ const { pageSize } = useJsonTreeContext();
89
+ const [visible, setVisible] = useState(pageSize);
90
+ const shownCount = Math.min(visible, count);
91
+ const shown = sliceEntries(value, shownCount);
92
+ const remaining = count - shownCount;
93
+ return (_jsxs("div", { style: childrenStyle, children: [shown.map(([childName, childValue]) => (_jsx(JsonNode, { name: childName, value: childValue, depth: depth + 1, path: childPath(path, childName) }, childName))), remaining > 0 ? (_jsxs("button", { type: "button", className: "tai-btn tai-btn-ghost", style: showMoreStyle, onClick: () => {
94
+ setVisible((current) => current + pageSize);
95
+ }, children: ["Show ", String(Math.min(remaining, pageSize)), " more"] })) : null] }));
96
+ }
97
+ export function JsonNode({ name, value, depth, path }) {
98
+ const { isOpen, setOpen } = useJsonTreeContext();
99
+ if (isContainer(value)) {
100
+ const count = containerCount(value);
101
+ const open = isOpen(path, depth);
102
+ const summary = containerSummary(value, count);
103
+ const handleToggle = (event) => {
104
+ // The disclosure is state-driven: cancel the browser's own toggle so the two
105
+ // never diverge, then record the reader's intent.
106
+ event.preventDefault();
107
+ setOpen(path, !open);
108
+ };
109
+ return (_jsxs("details", { open: open, children: [_jsxs("summary", { style: summaryStyle, onClick: handleToggle, children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: "tai-muted", children: summary }), depth > 0 ? (_jsx(CopyButton, { value: value, variant: "icon", label: name !== undefined ? `Copy ${name}` : COPY_LABEL })) : null] }), open ? _jsx(NodeChildren, { value: value, count: count, depth: depth, path: path }) : null] }));
110
+ }
111
+ return (_jsxs("div", { children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: primitiveClass(value), children: primitiveText(value) })] }));
112
+ }
113
+ //# sourceMappingURL=json-tree-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-tree-nodes.js","sourceRoot":"","sources":["../../src/components/json-tree-nodes.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,23 @@
1
+ /**
2
+ * `JsonTree` — a collapsible viewer for arbitrary JSON on the design system's
3
+ * terminal ground (`tai-code-block`). Objects and arrays are native
4
+ * `<details>`/`<summary>` disclosures; primitives render inline, tinted by their
5
+ * `tai-syntax-*` type class. All values render as React TEXT children, so markup in
6
+ * a payload is escaped — never an HTML sink.
7
+ *
8
+ * It mounts against guaranteed-large payloads (a trace span's whole input/output),
9
+ * so it is BOUNDED by construction:
10
+ *
11
+ * - Nodes deeper than {@link AUTO_EXPAND_DEPTH} start COLLAPSED, and a collapsed node
12
+ * renders no children. `defaultExpanded` overrides per call site.
13
+ * - Expand-all opens breadth-first only until {@link AUTO_EXPAND_NODE_BUDGET} nodes
14
+ * render and never past {@link MAX_AUTO_DEPTH}; a node beyond either opens on click.
15
+ * - A container over {@link PAGE_SIZE} children renders one page plus a "show more".
16
+ * - Copy-whole and copy-node write JSON to the clipboard; a refused write shows an alert.
17
+ *
18
+ * The scrolling pane IS the scrolling box, carrying the region attributes itself
19
+ * rather than nesting a `ScrollRegion` that would add a second scroller.
20
+ */
1
21
  import type { ReactElement } from 'react';
2
22
  export interface JsonTreeProps {
3
23
  readonly data: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"json-tree.d.ts","sourceRoot":"","sources":["../../src/components/json-tree.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAgD,YAAY,EAAE,MAAM,OAAO,CAAC;AAMxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA2aD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,YAAY,CA2FtF"}
1
+ {"version":3,"file":"json-tree.d.ts","sourceRoot":"","sources":["../../src/components/json-tree.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAkB1C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,YAAY,CA2FtF"}
@@ -1,322 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * `JsonTree` — a collapsible viewer for arbitrary JSON on the design system's
4
- * terminal ground (`tai-code-block`). Objects and arrays are native
5
- * `<details>`/`<summary>` disclosures; primitives render inline, tinted by their
6
- * `tai-syntax-*` type class. All values render as React TEXT children, so markup in
7
- * a payload is escaped — never an HTML sink.
8
- *
9
- * It mounts against guaranteed-large payloads (a trace span's whole input/output),
10
- * so it is BOUNDED by construction:
11
- *
12
- * - Nodes deeper than {@link AUTO_EXPAND_DEPTH} start COLLAPSED, and a collapsed node
13
- * renders no children. `defaultExpanded` overrides per call site.
14
- * - Expand-all opens breadth-first only until {@link AUTO_EXPAND_NODE_BUDGET} nodes
15
- * render and never past {@link MAX_AUTO_DEPTH}; a node beyond either opens on click.
16
- * - A container over {@link PAGE_SIZE} children renders one page plus a "show more".
17
- * - Copy-whole and copy-node write JSON to the clipboard; a refused write shows an alert.
18
- *
19
- * The scrolling pane IS the scrolling box, carrying the region attributes itself
20
- * rather than nesting a `ScrollRegion` that would add a second scroller.
21
- */
22
- import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from 'react';
23
- import { CheckIcon, CopyIcon, XCircleIcon } from './icons';
2
+ import { useCallback, useMemo, useState } from 'react';
3
+ import { useClipboardCopy } from '../hooks/useClipboardCopy';
4
+ import { XCircleIcon } from './icons';
5
+ import { JsonTreeContext } from './json-tree-context';
6
+ import { computeOpen, expandedOpenPaths, initialBaseline, isContainer, PAGE_SIZE, } from './json-tree-model';
7
+ import { COPY_LABEL, CopyButton, JsonNode } from './json-tree-nodes';
8
+ import { copyFailed, NO_CLIPBOARD, serializeForCopy } from './json-value-format';
24
9
  import { useOverflowRegion } from './scroll-region';
25
- import { COPIED_LABEL, COPIED_RESET_MS, useClipboardCopy } from '../hooks/useClipboardCopy';
26
10
  /** The region's name when the caller supplies none. */
27
11
  const DEFAULT_LABEL = 'JSON';
28
- /** The deepest level opened by the guarded default; deeper nodes start collapsed. */
29
- const AUTO_EXPAND_DEPTH = 1;
30
- /**
31
- * The deepest level EXPAND-ALL reaches. Past it a node opens only on an explicit
32
- * click, so the one action that opens the whole tree still cannot force an
33
- * unbounded-depth payload into the DOM in a single stroke.
34
- */
35
- const MAX_AUTO_DEPTH = 6;
36
- /** Children rendered per page; the rest wait behind a "show more" control. */
37
- const PAGE_SIZE = 100;
38
- /**
39
- * The most rendered nodes EXPAND-ALL may auto-open in one stroke. The depth cap and
40
- * the per-page limit each bound ONE dimension, but a payload that is wide AND deep
41
- * multiplies them — auto-opening every node up to the cap would lay out on the order
42
- * of PAGE_SIZE^depth nodes and freeze the tab. Expand-all instead opens containers
43
- * breadth-first only until this budget is spent; a node past it stays collapsed and
44
- * opens on an explicit click, so a huge payload opens a bounded, usable subset.
45
- */
46
- const AUTO_EXPAND_NODE_BUDGET = 1500;
47
- /** A copy control's resting face; whichever is exposed is also its accessible name. */
48
- const COPY_LABEL = 'Copy';
49
- /** Shown when the browser offers no clipboard at all (any non-secure context). */
50
- const NO_CLIPBOARD = 'This browser will not write to the clipboard here. Select the value and copy it by hand.';
51
- /** Shown when the write, or the value's serialization, is offered and refused. */
52
- function copyFailed(reason) {
53
- const detail = reason instanceof Error ? reason.message : String(reason);
54
- return `Copy failed: ${detail}.`;
55
- }
56
- function isRecord(value) {
57
- return typeof value === 'object' && value !== null && !Array.isArray(value);
58
- }
59
- /** Whether a value is a disclosure (object or array) rather than a leaf. */
60
- function isContainer(value) {
61
- return Array.isArray(value) || isRecord(value);
62
- }
63
- function primitiveText(value) {
64
- if (value === null)
65
- return 'null';
66
- switch (typeof value) {
67
- case 'undefined':
68
- return 'undefined';
69
- case 'string':
70
- return `"${value}"`;
71
- case 'number':
72
- case 'bigint':
73
- case 'boolean':
74
- return String(value);
75
- case 'symbol':
76
- return value.toString();
77
- case 'function':
78
- return '[Function]';
79
- default:
80
- return '[object]';
81
- }
82
- }
83
- /**
84
- * `JSON.stringify` is TYPED to always return `string`, but a value it cannot
85
- * represent (a function, a bare `undefined`) yields `undefined` at runtime. This
86
- * boundary admits the absence the standard-library overload denies, so the guard
87
- * below is a real check rather than a cast around one.
88
- */
89
- function stringifyJson(value) {
90
- return JSON.stringify(value, null, 2);
91
- }
92
- /**
93
- * The value's pretty JSON for the clipboard. A value JSON cannot represent (a
94
- * function, a bare `undefined`) has no JSON, so its readable form is copied
95
- * rather than an empty string. A value JSON REFUSES (a `bigint`) throws here, and
96
- * the caller renders that as the same visible alert a blocked write is.
97
- */
98
- function serializeForCopy(value) {
99
- return stringifyJson(value) ?? String(value);
100
- }
101
- /**
102
- * A child's identity for the open-state map. Each segment is percent-encoded, so a
103
- * key that itself contains the separator cannot collide with a different path.
104
- */
105
- function childPath(parent, name) {
106
- const segment = encodeURIComponent(name);
107
- return parent === '' ? segment : `${parent}/${segment}`;
108
- }
109
- function initialBaseline(defaultExpanded) {
110
- if (defaultExpanded === true)
111
- return 'expanded';
112
- if (defaultExpanded === false)
113
- return 'collapsed';
114
- return 'depth';
115
- }
116
- /**
117
- * The set of paths EXPAND-ALL auto-opens: a breadth-first sweep that opens each
118
- * container in turn — spending its visible child count against a shared node budget
119
- * and enqueuing that page's own container children — skipping any node whose page
120
- * would overspend {@link AUTO_EXPAND_NODE_BUDGET} or that sits past {@link MAX_AUTO_DEPTH}.
121
- * Only a bounded window of a huge payload is materialized, so this stays cheap even
122
- * when the data is enormous; the paths it omits stay collapsed and open on a click.
123
- */
124
- function expandedOpenPaths(root) {
125
- const open = new Set();
126
- if (!isContainer(root))
127
- return open;
128
- let budget = AUTO_EXPAND_NODE_BUDGET;
129
- const queue = [
130
- { value: root, path: '', depth: 0 },
131
- ];
132
- while (queue.length > 0) {
133
- const node = queue.shift();
134
- if (node === undefined)
135
- break;
136
- if (node.depth >= MAX_AUTO_DEPTH)
137
- continue;
138
- const shown = Math.min(PAGE_SIZE, containerCount(node.value));
139
- // Skip when the budget can't seat a whole page (a later, smaller node may still fit).
140
- if (shown > budget)
141
- continue;
142
- budget -= shown;
143
- open.add(node.path);
144
- for (const [name, childValue] of sliceEntries(node.value, shown)) {
145
- if (isContainer(childValue)) {
146
- queue.push({ value: childValue, path: childPath(node.path, name), depth: node.depth + 1 });
147
- }
148
- }
149
- }
150
- return open;
151
- }
152
- /**
153
- * Whether a node is open, from the baseline and the reader's own toggles. An
154
- * explicit toggle always wins; otherwise the baseline decides — the depth-guarded
155
- * default opens through {@link AUTO_EXPAND_DEPTH}, expand-all opens the budgeted
156
- * breadth-first set, collapse-all opens nothing.
157
- */
158
- function computeOpen(baseline, overrides, expandedPaths, path, depth) {
159
- const override = overrides.get(path);
160
- if (override !== undefined)
161
- return override;
162
- if (baseline === 'expanded')
163
- return expandedPaths?.has(path) ?? false;
164
- if (baseline === 'collapsed')
165
- return false;
166
- return depth <= AUTO_EXPAND_DEPTH;
167
- }
168
- const JsonTreeContext = createContext(null);
169
- /** The shared tree state; a subcomponent outside a `JsonTree` is a wiring error. */
170
- function useJsonTreeContext() {
171
- const context = useContext(JsonTreeContext);
172
- if (context === null) {
173
- throw new Error('JsonTree subcomponents must be rendered inside a JsonTree.');
174
- }
175
- return context;
176
- }
177
- /**
178
- * One nesting level's indent: the child block insets and draws its own guide
179
- * rail. The depth is expressed by the DOM nesting, so each level repeats this
180
- * single step rather than computing an absolute offset.
181
- */
182
- const childrenStyle = {
183
- paddingLeft: 'var(--tai-space-4)',
184
- marginLeft: 'var(--tai-space-1)',
185
- borderLeft: '1px solid var(--tai-color-decor)',
186
- };
187
- /** A `<summary>` is a click target; browsers do not style it as one by default. */
188
- const summaryStyle = {
189
- display: 'flex',
190
- alignItems: 'center',
191
- gap: 'var(--tai-space-2)',
192
- cursor: 'pointer',
193
- };
194
- /** The copy control sits at the far end of a disclosure's row. */
195
- const nodeCopyStyle = { marginLeft: 'auto' };
196
- /**
197
- * The per-node copy button's geometry: borrows `tai-icon-btn` for the focus ring,
198
- * muted ink and hover, then shrinks to the code rhythm so the row stays dense.
199
- */
200
- const nodeCopyButtonStyle = {
201
- width: 'auto',
202
- height: 'auto',
203
- padding: 'var(--tai-space-1)',
204
- };
205
- const showMoreStyle = { marginTop: 'var(--tai-space-1)' };
206
- /** The syntax class for a primitive's type; anything outside JSON reads as muted. */
207
- function primitiveClass(value) {
208
- if (typeof value === 'string')
209
- return 'tai-syntax-string';
210
- if (typeof value === 'number' || typeof value === 'bigint')
211
- return 'tai-syntax-number';
212
- if (typeof value === 'boolean')
213
- return 'tai-syntax-bool';
214
- if (value === null || value === undefined)
215
- return 'tai-syntax-null';
216
- return 'tai-muted';
217
- }
218
- /**
219
- * A copy control that writes its value to the clipboard and shows a transient
220
- * confirmed state. The write itself lives on the tree context, so a refusal is
221
- * reported ONCE — as the tree's shared alert — rather than inline at each of the
222
- * many buttons a large payload carries.
223
- */
224
- function CopyButton({ value, label, variant }) {
225
- const { copy } = useJsonTreeContext();
226
- const [copied, setCopied] = useState(false);
227
- const resetTimer = useRef(null);
228
- // The write is async, so a copy can be in flight when the button unmounts (a dialog
229
- // holding the tree closes on the same click); checked before the resolution sets state.
230
- const mounted = useRef(true);
231
- useEffect(() => {
232
- mounted.current = true;
233
- return () => {
234
- mounted.current = false;
235
- if (resetTimer.current !== null)
236
- clearTimeout(resetTimer.current);
237
- };
238
- }, []);
239
- const handleClick = (event) => {
240
- // Inside a `<summary>` a click both toggles the disclosure natively and reaches
241
- // the summary's own toggle handler; neither should fire for a copy.
242
- event.preventDefault();
243
- event.stopPropagation();
244
- void copy(value).then((ok) => {
245
- if (!ok || !mounted.current)
246
- return;
247
- setCopied(true);
248
- if (resetTimer.current !== null)
249
- clearTimeout(resetTimer.current);
250
- resetTimer.current = setTimeout(() => {
251
- if (mounted.current)
252
- setCopied(false);
253
- }, COPIED_RESET_MS);
254
- });
255
- };
256
- if (variant === 'text') {
257
- return (_jsxs("button", { type: "button", className: "tai-btn tai-btn-ghost", onClick: handleClick, children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), copied ? COPIED_LABEL : label] }));
258
- }
259
- return (_jsx("button", { type: "button", className: "tai-icon-btn", style: { ...nodeCopyStyle, ...nodeCopyButtonStyle }, "aria-label": copied ? COPIED_LABEL : label, onClick: handleClick, children: copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}) }));
260
- }
261
- /** A container's child count, without materializing its entries. */
262
- function containerCount(value) {
263
- if (Array.isArray(value))
264
- return value.length;
265
- if (isRecord(value))
266
- return Object.keys(value).length;
267
- throw new Error('containerCount expects an array or a record.');
268
- }
269
- /**
270
- * The first `end` entries of a container, arrays keyed by index and objects by
271
- * key. Only the visible window is materialized, so a million-element array's
272
- * children never all exist at once.
273
- */
274
- function sliceEntries(value, end) {
275
- if (Array.isArray(value)) {
276
- return value.slice(0, end).map((item, index) => [String(index), item]);
277
- }
278
- // Slice the keys before reading values, so only the visible window is materialized.
279
- if (isRecord(value))
280
- return Object.keys(value)
281
- .slice(0, end)
282
- .map((key) => [key, value[key]]);
283
- throw new Error('sliceEntries expects an array or a record.');
284
- }
285
- /** One container's summary text: its kind and its child count. */
286
- function containerSummary(value, count) {
287
- return Array.isArray(value) ? `Array(${String(count)})` : `Object(${String(count)})`;
288
- }
289
- /**
290
- * The visible slice of a container's children, plus a "show more" control while
291
- * any remain. Rendered ONLY when the node is open, so a collapsed container costs
292
- * nothing and the page count follows how far the reader has opened it.
293
- */
294
- function NodeChildren({ value, count, depth, path, }) {
295
- const { pageSize } = useJsonTreeContext();
296
- const [visible, setVisible] = useState(pageSize);
297
- const shownCount = Math.min(visible, count);
298
- const shown = sliceEntries(value, shownCount);
299
- const remaining = count - shownCount;
300
- return (_jsxs("div", { style: childrenStyle, children: [shown.map(([childName, childValue]) => (_jsx(JsonNode, { name: childName, value: childValue, depth: depth + 1, path: childPath(path, childName) }, childName))), remaining > 0 ? (_jsxs("button", { type: "button", className: "tai-btn tai-btn-ghost", style: showMoreStyle, onClick: () => {
301
- setVisible((current) => current + pageSize);
302
- }, children: ["Show ", String(Math.min(remaining, pageSize)), " more"] })) : null] }));
303
- }
304
- function JsonNode({ name, value, depth, path }) {
305
- const { isOpen, setOpen } = useJsonTreeContext();
306
- if (isContainer(value)) {
307
- const count = containerCount(value);
308
- const open = isOpen(path, depth);
309
- const summary = containerSummary(value, count);
310
- const handleToggle = (event) => {
311
- // The disclosure is state-driven: cancel the browser's own toggle so the two
312
- // never diverge, then record the reader's intent.
313
- event.preventDefault();
314
- setOpen(path, !open);
315
- };
316
- return (_jsxs("details", { open: open, children: [_jsxs("summary", { style: summaryStyle, onClick: handleToggle, children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: "tai-muted", children: summary }), depth > 0 ? (_jsx(CopyButton, { value: value, variant: "icon", label: name !== undefined ? `Copy ${name}` : COPY_LABEL })) : null] }), open ? _jsx(NodeChildren, { value: value, count: count, depth: depth, path: path }) : null] }));
317
- }
318
- return (_jsxs("div", { children: [name !== undefined ? _jsxs("span", { className: "tai-syntax-key", children: [name, ": "] }) : null, _jsx("span", { className: primitiveClass(value), children: primitiveText(value) })] }));
319
- }
320
12
  export function JsonTree({ data, defaultExpanded, label }) {
321
13
  const [baseline, setBaseline] = useState(() => initialBaseline(defaultExpanded));
322
14
  const [overrides, setOverrides] = useState(() => new Map());
@@ -1 +1 @@
1
- {"version":3,"file":"json-tree.js","sourceRoot":"","sources":["../../src/components/json-tree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-tree.js","sourceRoot":"","sources":["../../src/components/json-tree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Formatting a JSON value for display and for the clipboard: the inline primitive
3
+ * text and its syntax class, the clipboard serialization, and the copy-failure
4
+ * messages.
5
+ */
6
+ /** Shown when the browser offers no clipboard at all (any non-secure context). */
7
+ export declare const NO_CLIPBOARD = "This browser will not write to the clipboard here. Select the value and copy it by hand.";
8
+ /** Shown when the write, or the value's serialization, is offered and refused. */
9
+ export declare function copyFailed(reason: unknown): string;
10
+ export declare function primitiveText(value: unknown): string;
11
+ /** The syntax class for a primitive's type; anything outside JSON reads as muted. */
12
+ export declare function primitiveClass(value: unknown): string;
13
+ /**
14
+ * The value's pretty JSON for the clipboard. A value JSON cannot represent (a
15
+ * function, a bare `undefined`) has no JSON, so its readable form is copied
16
+ * rather than an empty string. A value JSON REFUSES (a `bigint`) throws here, and
17
+ * the caller renders that as the same visible alert a blocked write is.
18
+ */
19
+ export declare function serializeForCopy(value: unknown): string;
20
+ //# sourceMappingURL=json-value-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-value-format.d.ts","sourceRoot":"","sources":["../../src/components/json-value-format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kFAAkF;AAClF,eAAO,MAAM,YAAY,6FACmE,CAAC;AAE7F,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBpD;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMrD;AAYD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Formatting a JSON value for display and for the clipboard: the inline primitive
3
+ * text and its syntax class, the clipboard serialization, and the copy-failure
4
+ * messages.
5
+ */
6
+ /** Shown when the browser offers no clipboard at all (any non-secure context). */
7
+ export const NO_CLIPBOARD = 'This browser will not write to the clipboard here. Select the value and copy it by hand.';
8
+ /** Shown when the write, or the value's serialization, is offered and refused. */
9
+ export function copyFailed(reason) {
10
+ const detail = reason instanceof Error ? reason.message : String(reason);
11
+ return `Copy failed: ${detail}.`;
12
+ }
13
+ export function primitiveText(value) {
14
+ if (value === null)
15
+ return 'null';
16
+ switch (typeof value) {
17
+ case 'undefined':
18
+ return 'undefined';
19
+ case 'string':
20
+ return `"${value}"`;
21
+ case 'number':
22
+ case 'bigint':
23
+ case 'boolean':
24
+ return String(value);
25
+ case 'symbol':
26
+ return value.toString();
27
+ case 'function':
28
+ return '[Function]';
29
+ default:
30
+ return '[object]';
31
+ }
32
+ }
33
+ /** The syntax class for a primitive's type; anything outside JSON reads as muted. */
34
+ export function primitiveClass(value) {
35
+ if (typeof value === 'string')
36
+ return 'tai-syntax-string';
37
+ if (typeof value === 'number' || typeof value === 'bigint')
38
+ return 'tai-syntax-number';
39
+ if (typeof value === 'boolean')
40
+ return 'tai-syntax-bool';
41
+ if (value === null || value === undefined)
42
+ return 'tai-syntax-null';
43
+ return 'tai-muted';
44
+ }
45
+ /**
46
+ * `JSON.stringify` is TYPED to always return `string`, but a value it cannot
47
+ * represent (a function, a bare `undefined`) yields `undefined` at runtime. This
48
+ * boundary admits the absence the standard-library overload denies, so the guard
49
+ * below is a real check rather than a cast around one.
50
+ */
51
+ function stringifyJson(value) {
52
+ return JSON.stringify(value, null, 2);
53
+ }
54
+ /**
55
+ * The value's pretty JSON for the clipboard. A value JSON cannot represent (a
56
+ * function, a bare `undefined`) has no JSON, so its readable form is copied
57
+ * rather than an empty string. A value JSON REFUSES (a `bigint`) throws here, and
58
+ * the caller renders that as the same visible alert a blocked write is.
59
+ */
60
+ export function serializeForCopy(value) {
61
+ return stringifyJson(value) ?? String(value);
62
+ }
63
+ //# sourceMappingURL=json-value-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-value-format.js","sourceRoot":"","sources":["../../src/components/json-value-format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,YAAY,GACvB,0FAA0F,CAAC;AAE7F,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,MAAM,MAAM,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,gBAAgB,MAAM,GAAG,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,GAAG,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,UAAU;YACb,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC;IACvF,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,iBAAiB,CAAC;IACzD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,iBAAiB,CAAC;IACpE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The block grammar for `Markdown`: folds markdown source into an ordered list of
3
+ * blocks. Pure and total — any string parses, and text that matches no block
4
+ * construct becomes a paragraph rather than being discarded.
5
+ */
6
+ /** The heading levels ATX syntax can express, `#` through `######`. */
7
+ export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
8
+ /** A parsed block. Inline markup inside `text` is resolved at render time. */
9
+ export type MarkdownBlock = {
10
+ readonly type: 'heading';
11
+ readonly level: HeadingLevel;
12
+ readonly text: string;
13
+ } | {
14
+ readonly type: 'paragraph';
15
+ readonly text: string;
16
+ } | {
17
+ readonly type: 'code';
18
+ readonly language: string | undefined;
19
+ readonly code: string;
20
+ } | {
21
+ readonly type: 'list';
22
+ readonly ordered: boolean;
23
+ readonly items: readonly string[];
24
+ /** The first item's number on an ordered list, so the render can offset `<ol start>`. */
25
+ readonly start?: number;
26
+ } | {
27
+ readonly type: 'blockquote';
28
+ readonly children: readonly MarkdownBlock[];
29
+ } | {
30
+ readonly type: 'thematicBreak';
31
+ };
32
+ /**
33
+ * Folds markdown source into an ordered list of blocks. Pure and total: any
34
+ * string parses, and text that matches no block construct becomes a paragraph
35
+ * rather than being discarded.
36
+ */
37
+ export declare function parseMarkdown(markdown: string): MarkdownBlock[];
38
+ //# sourceMappingURL=markdown-blocks.d.ts.map