@jxsuite/studio 6.1.1 → 8.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 (785) hide show
  1. package/README.md +5 -5
  2. package/dist/chunks/2020-5wtzce5g.js +4 -0
  3. package/dist/chunks/{action-group-2mqby73c.js → action-group-4aan7g6g.js} +3 -3
  4. package/dist/chunks/adapter-5tphg7xe.js +4 -0
  5. package/dist/chunks/add-new-flow-psym14sn.js +4 -0
  6. package/dist/chunks/cf-account-picker-haqazq5r.js +4 -0
  7. package/dist/chunks/cf-settings-h2wrh6hq.js +4 -0
  8. package/dist/chunks/color-area-6rbra5dy.js +4 -0
  9. package/dist/chunks/color-field-gy56c94g.js +4 -0
  10. package/dist/chunks/color-m7r1vk54.js +4 -0
  11. package/dist/chunks/color-slider-sqqdyf6c.js +4 -0
  12. package/dist/chunks/combobox-72h32ejk.js +4 -0
  13. package/dist/chunks/components-r22xca09.js +4 -0
  14. package/dist/chunks/content-source-mmppmcyg.js +4 -0
  15. package/dist/chunks/convert-to-repeater-he70fc2b.js +4 -0
  16. package/dist/chunks/dialog-c4x05vyx.js +4 -0
  17. package/dist/chunks/editor-ccd9jwsa.js +4 -0
  18. package/dist/chunks/entry-commands-6qxz9e8p.js +4 -0
  19. package/dist/chunks/extension-sections-0egb88dm.js +4 -0
  20. package/dist/chunks/file-ops-qnab36ek.js +4 -0
  21. package/dist/chunks/files-rcn56qvm.js +4 -0
  22. package/dist/chunks/format-host-yxz0kjjs.js +4 -0
  23. package/dist/chunks/fs-events-d1qxq4z4.js +4 -0
  24. package/dist/chunks/grid-open-4z1g062t.js +4 -0
  25. package/dist/chunks/grid-view-qg1b5eqx.js +51 -0
  26. package/dist/chunks/icons-63bjtbs7.js +4 -0
  27. package/dist/chunks/iframe-entry-2zggzajv.js +5 -0
  28. package/dist/chunks/iframe-entry-76j8vwwx.js +5 -0
  29. package/dist/chunks/iframe-entry-99nr5zfb.js +5 -0
  30. package/dist/chunks/iframe-entry-pkgmcgp0.js +5 -0
  31. package/dist/chunks/iframe-host-ssv7kyj0.js +4 -0
  32. package/dist/chunks/{index-2veqmnhr.js → index-32eqzv1k.js} +3 -3
  33. package/dist/chunks/index-f0jn7nnp.js +4 -0
  34. package/dist/chunks/{javascript-8nbvs12s.js → javascript-pjp734q4.js} +3 -3
  35. package/dist/chunks/jsonMode-njkvsa02.js +13 -0
  36. package/dist/chunks/jx-validate-ttasrbh7.js +4 -0
  37. package/dist/chunks/layers-bgyr11tr.js +4 -0
  38. package/dist/chunks/layers-panel-7ez66zeq.js +4 -0
  39. package/dist/chunks/listbox-c421cf8c.js +4 -0
  40. package/dist/chunks/lit-html-v9gh687x.js +4 -0
  41. package/dist/chunks/media-library-sq468wts.js +4 -0
  42. package/dist/chunks/media-picker-shfe59pt.js +4 -0
  43. package/dist/chunks/menu-bdpzbfvs.js +4 -0
  44. package/dist/chunks/monaco-binding-vq1hgnn0.js +4 -0
  45. package/dist/chunks/monaco-buffer-3afgwvbp.js +4 -0
  46. package/dist/chunks/monaco-setup-xrd2cbkp.js +4 -0
  47. package/dist/chunks/notify-kzrjr3fv.js +4 -0
  48. package/dist/chunks/number-field-y62xq0ty.js +4 -0
  49. package/dist/chunks/parse-v77xtwv7.js +4 -0
  50. package/dist/chunks/platform-7v4rtd7m.js +4 -0
  51. package/dist/chunks/popover-b89sfej7.js +4 -0
  52. package/dist/chunks/publish-panel-2z9gw8ee.js +4 -0
  53. package/dist/chunks/publish-quick-qx2455cj.js +4 -0
  54. package/dist/chunks/publish-workspace-wrc1dgwx.js +4 -0
  55. package/dist/chunks/quick-search-n0t0eqxb.js +4 -0
  56. package/dist/chunks/references-9547rg5s.js +4 -0
  57. package/dist/chunks/right-panel-wsgnr9pn.js +4 -0
  58. package/dist/chunks/select-rzds841e.js +4 -0
  59. package/dist/chunks/source-control-kwktr9y6.js +4 -0
  60. package/dist/chunks/split-c9zfdgxf.js +4 -0
  61. package/dist/chunks/studio-03ct6yfv.js +9 -0
  62. package/dist/chunks/studio-07rcfje3.js +5 -0
  63. package/dist/chunks/studio-3e54qh39.js +7 -0
  64. package/dist/chunks/studio-3exxhz5g.js +5 -0
  65. package/dist/chunks/studio-3q40e3rj.js +5 -0
  66. package/dist/chunks/studio-3qeh9t0h.js +6 -0
  67. package/dist/chunks/studio-3qqjeep5.js +6 -0
  68. package/dist/chunks/studio-43sd2mam.js +4 -0
  69. package/dist/chunks/studio-4hp8pkyt.js +5 -0
  70. package/dist/chunks/studio-58xg6j2q.js +9 -0
  71. package/dist/chunks/studio-5g0rprdt.js +7 -0
  72. package/dist/chunks/studio-6m380wp7.js +5 -0
  73. package/dist/chunks/studio-80jyh1xh.js +4 -0
  74. package/dist/chunks/studio-83mk4bgg.js +9 -0
  75. package/dist/chunks/{studio-kggey1jt.js → studio-881z1xrx.js} +4 -4
  76. package/dist/chunks/studio-8m0y2qe7.js +5 -0
  77. package/dist/chunks/studio-8tr6cfrc.js +5 -0
  78. package/dist/chunks/studio-8vcvfs7r.js +6 -0
  79. package/dist/chunks/studio-9tmebf0s.js +5 -0
  80. package/dist/chunks/studio-a2bvaptz.js +5 -0
  81. package/dist/chunks/studio-b7y5mr30.js +5 -0
  82. package/dist/chunks/studio-bavb31r0.js +5 -0
  83. package/dist/chunks/studio-bbe4c90a.js +5 -0
  84. package/dist/chunks/studio-c05wdnt3.js +5 -0
  85. package/dist/chunks/studio-ccv2svc6.js +5 -0
  86. package/dist/chunks/studio-d5grtb9e.js +16 -0
  87. package/dist/chunks/studio-df0baea9.js +5 -0
  88. package/dist/chunks/studio-dgk4dqtx.js +7 -0
  89. package/dist/chunks/studio-e1g64q43.js +5 -0
  90. package/dist/chunks/studio-ed1hp6zf.js +6 -0
  91. package/dist/chunks/studio-ed3xx40h.js +7 -0
  92. package/dist/chunks/studio-f14e1zdj.js +5 -0
  93. package/dist/chunks/studio-fbhxxc5f.js +5 -0
  94. package/dist/chunks/studio-fyh0jc96.js +5 -0
  95. package/dist/chunks/studio-gcxk20n7.js +5 -0
  96. package/dist/chunks/studio-jaaz8ce9.js +5 -0
  97. package/dist/chunks/{studio-8grwxtqk.js → studio-jcnsdaep.js} +4 -4
  98. package/dist/chunks/studio-jsgf2q5k.js +7 -0
  99. package/dist/chunks/{studio-1q1sh2ax.js → studio-k3xxbagr.js} +3 -3
  100. package/dist/chunks/studio-k7evxqh4.js +5 -0
  101. package/dist/chunks/studio-kt3pjkwd.js +5 -0
  102. package/dist/chunks/studio-m8g16bgz.js +5 -0
  103. package/dist/chunks/studio-mn0476ag.js +5 -0
  104. package/dist/chunks/studio-mx1smyq0.js +5 -0
  105. package/dist/chunks/studio-n0c5h6mf.js +5 -0
  106. package/dist/chunks/{studio-rv11kfwa.js → studio-nh6d342n.js} +7 -7
  107. package/dist/chunks/studio-nqxqf8p2.js +4 -0
  108. package/dist/chunks/studio-p4nrkvqr.js +5 -0
  109. package/dist/chunks/{studio-h46vtzk8.js → studio-pbxa5fpc.js} +4 -4
  110. package/dist/chunks/studio-pgmvdv7z.js +7 -0
  111. package/dist/chunks/studio-ph84avkf.js +5 -0
  112. package/dist/chunks/{studio-wszjyh0j.js → studio-q0mvbaq6.js} +4 -4
  113. package/dist/chunks/studio-q0tccd43.js +5 -0
  114. package/dist/chunks/studio-q7rtx6zq.js +14 -0
  115. package/dist/chunks/{studio-pre0skq6.js → studio-qgh13jtz.js} +4 -4
  116. package/dist/chunks/studio-qmn1xc24.js +5 -0
  117. package/dist/chunks/studio-qwdqwkj0.js +5 -0
  118. package/dist/chunks/{studio-t6b6qe31.js → studio-r5qy30vx.js} +4 -4
  119. package/dist/chunks/studio-rj9eamf8.js +5 -0
  120. package/dist/chunks/studio-rptgsk96.js +5 -0
  121. package/dist/chunks/studio-rthyg42z.js +928 -0
  122. package/dist/chunks/studio-s19tp1xr.js +5 -0
  123. package/dist/chunks/studio-s32578pn.js +5 -0
  124. package/dist/chunks/studio-svb7yyve.js +5 -0
  125. package/dist/chunks/studio-syreb644.js +5 -0
  126. package/dist/chunks/studio-tf9jryb1.js +10 -0
  127. package/dist/chunks/studio-tfkznv39.js +5 -0
  128. package/dist/chunks/studio-tft6r105.js +5 -0
  129. package/dist/chunks/studio-txf2kysx.js +5 -0
  130. package/dist/chunks/studio-v8867ddv.js +12 -0
  131. package/dist/chunks/studio-vxq7fcvv.js +5 -0
  132. package/dist/chunks/studio-w4rz9hdk.js +5 -0
  133. package/dist/chunks/studio-wbcjbhy1.js +9 -0
  134. package/dist/chunks/studio-wc649wss.js +5 -0
  135. package/dist/chunks/studio-wys23mxz.js +5 -0
  136. package/dist/chunks/studio-x1x167jh.js +5 -0
  137. package/dist/chunks/studio-x9hsze61.js +5 -0
  138. package/dist/chunks/studio-y0n7yxea.js +9 -0
  139. package/dist/chunks/studio-y3ahhdpx.js +5 -0
  140. package/dist/chunks/studio-z97c48fk.js +5 -0
  141. package/dist/chunks/studio-zat62m0c.js +5 -0
  142. package/dist/chunks/studio-zcd2e7yz.js +5 -0
  143. package/dist/chunks/studio-zz9qe3rw.js +64 -0
  144. package/dist/chunks/swatch-group-ewh24n1f.js +4 -0
  145. package/dist/chunks/tabs-f5cw3tgp.js +4 -0
  146. package/dist/chunks/textfield-wewc8rq2.js +4 -0
  147. package/dist/chunks/toast-1gv0h53h.js +4 -0
  148. package/dist/chunks/toast-host-1yg5ar8d.js +4 -0
  149. package/dist/chunks/{toolbar-2nnzqhrj.js → toolbar-44cm5cta.js} +3 -3
  150. package/dist/chunks/tooltip-yypz28gq.js +4 -0
  151. package/dist/chunks/tree-9xa4hm7n.js +4 -0
  152. package/dist/chunks/tsMode-epyfz1hv.js +14 -0
  153. package/dist/chunks/workspace-dz7nxfhv.js +4 -0
  154. package/dist/chunks/workspace-home-xsd7hkjw.js +4 -0
  155. package/dist/chunks/ws-client-bv552sfx.js +4 -0
  156. package/dist/iframe-entry.js +20 -16
  157. package/dist/manifest.json +77 -63
  158. package/dist/studio.js +106 -107
  159. package/dist/workers/ts.worker.js +3 -3
  160. package/package.json +17 -16
  161. package/src/about/about-modal.ts +4 -3
  162. package/src/account/action-flow.ts +45 -38
  163. package/src/account-status.ts +7 -2
  164. package/src/browse/component-examples.ts +272 -0
  165. package/src/browse/library-commands.ts +64 -104
  166. package/src/browse/library-layouts.ts +270 -53
  167. package/src/browse/library-model.ts +194 -134
  168. package/src/browse/library-pane.ts +748 -440
  169. package/src/browse/library-preview.ts +161 -26
  170. package/src/browse/library-source.ts +308 -41
  171. package/src/browse/preview-root.ts +78 -0
  172. package/src/browse/preview-style.ts +155 -0
  173. package/src/canvas/asset-refs.ts +40 -10
  174. package/src/canvas/asset-resolve.ts +19 -23
  175. package/src/canvas/canvas-helpers.ts +7 -6
  176. package/src/canvas/canvas-live-render.ts +260 -77
  177. package/src/canvas/canvas-origin.ts +37 -12
  178. package/src/canvas/canvas-page-context.ts +112 -0
  179. package/src/canvas/canvas-patcher.ts +30 -30
  180. package/src/canvas/canvas-perf.ts +11 -5
  181. package/src/canvas/canvas-render.ts +175 -148
  182. package/src/canvas/canvas-surface.ts +5 -3
  183. package/src/canvas/canvas-utils.ts +147 -61
  184. package/src/canvas/dialog-path.ts +9 -4
  185. package/src/canvas/dialog-state.ts +1 -2
  186. package/src/canvas/diff-marks.ts +9 -16
  187. package/src/canvas/diff-toolbar.ts +8 -7
  188. package/src/canvas/edit-width-drag.ts +4 -1
  189. package/src/canvas/edit-width.ts +1 -3
  190. package/src/canvas/iframe-channel.ts +27 -13
  191. package/src/canvas/iframe-drop.ts +120 -12
  192. package/src/canvas/iframe-editable-root.ts +29 -16
  193. package/src/canvas/iframe-entry.ts +104 -75
  194. package/src/canvas/iframe-eval.ts +73 -49
  195. package/src/canvas/iframe-host.ts +269 -158
  196. package/src/canvas/iframe-inline-edit.ts +49 -30
  197. package/src/canvas/iframe-insert.ts +5 -4
  198. package/src/canvas/iframe-interaction.ts +30 -25
  199. package/src/canvas/iframe-keys.ts +11 -0
  200. package/src/canvas/iframe-overlay.ts +1 -1
  201. package/src/canvas/iframe-patch.ts +25 -21
  202. package/src/canvas/iframe-position.ts +12 -6
  203. package/src/canvas/iframe-protocol.ts +36 -21
  204. package/src/canvas/iframe-render.ts +84 -35
  205. package/src/canvas/iframe-slash.ts +24 -11
  206. package/src/canvas/iframe-subtree.ts +10 -3
  207. package/src/canvas/npm-modules.ts +22 -0
  208. package/src/canvas/path-mapping.ts +19 -12
  209. package/src/canvas/popover-path.ts +7 -3
  210. package/src/canvas/popover-state.ts +1 -2
  211. package/src/canvas/preview-navigate.ts +16 -0
  212. package/src/canvas/repeater-sources.ts +200 -0
  213. package/src/canvas/serialize-scope.ts +13 -5
  214. package/src/canvas/stage-scrollbar.ts +7 -2
  215. package/src/canvas/surface-registry.ts +27 -3
  216. package/src/collab/collab-commands.ts +7 -2
  217. package/src/collab/collab-session.ts +84 -45
  218. package/src/collab/collab-state.ts +4 -3
  219. package/src/collab/monaco-binding.ts +16 -13
  220. package/src/collab/monaco-cursors.ts +5 -2
  221. package/src/commands/app-commands.ts +16 -6
  222. package/src/commands/budget.ts +13 -11
  223. package/src/commands/command-args.ts +103 -71
  224. package/src/commands/context.ts +55 -28
  225. package/src/commands/defaults.ts +69 -45
  226. package/src/commands/keymap.ts +56 -43
  227. package/src/commands/levels.ts +14 -8
  228. package/src/commands/live-context.ts +9 -7
  229. package/src/commands/reference.ts +2 -1
  230. package/src/commands/registry.ts +22 -11
  231. package/src/commands/run-reported.ts +15 -10
  232. package/src/component-props.ts +46 -30
  233. package/src/content/collection-match.ts +11 -9
  234. package/src/content/collection-pages.ts +412 -0
  235. package/src/content/content-collections.ts +270 -0
  236. package/src/content/draft-state.ts +4 -3
  237. package/src/content/entry-commands.ts +54 -62
  238. package/src/content/entry-editor.ts +137 -32
  239. package/src/content/entry-fields.ts +25 -8
  240. package/src/content/entry-inspector.ts +225 -0
  241. package/src/content/entry-model.ts +38 -15
  242. package/src/content/entry-open.ts +80 -0
  243. package/src/content/entry-summaries.ts +440 -0
  244. package/src/content/file-record-ids.ts +80 -0
  245. package/src/content/file-records.ts +125 -0
  246. package/src/content/page-summaries.ts +129 -0
  247. package/src/content/record-entry.ts +201 -0
  248. package/src/content/writing-banner.ts +177 -0
  249. package/src/create/add-new-commands.ts +185 -0
  250. package/src/create/add-new-flow.ts +1116 -0
  251. package/src/create/add-new.ts +1014 -0
  252. package/src/create/element-name.ts +121 -0
  253. package/src/editor/canvas-context-menu.ts +1 -2
  254. package/src/editor/canvas-slash-bridge.ts +3 -6
  255. package/src/editor/content-slice.ts +16 -14
  256. package/src/editor/context-menu.ts +35 -22
  257. package/src/editor/convert-targets.ts +30 -35
  258. package/src/editor/convert-to-component.ts +78 -48
  259. package/src/editor/convert-to-repeater.ts +34 -22
  260. package/src/editor/editable-tags.ts +17 -2
  261. package/src/editor/file-drop-action.ts +29 -22
  262. package/src/editor/inline-edit-apply.ts +79 -17
  263. package/src/editor/inline-edit.ts +76 -50
  264. package/src/editor/inline-format.ts +59 -56
  265. package/src/editor/inline-link.ts +40 -15
  266. package/src/editor/insert-component.ts +91 -0
  267. package/src/editor/insert-zone-action.ts +14 -5
  268. package/src/editor/merge-tags.ts +58 -19
  269. package/src/editor/repeater-scope.ts +39 -28
  270. package/src/editor/shortcuts.ts +76 -42
  271. package/src/editor/slash-menu.ts +52 -14
  272. package/src/files/asset-versions.ts +4 -4
  273. package/src/files/components.ts +89 -20
  274. package/src/files/elements.ts +5 -6
  275. package/src/files/file-ops.ts +92 -41
  276. package/src/files/files.ts +248 -239
  277. package/src/files/fs-events.ts +18 -7
  278. package/src/files/media-meta.ts +97 -2
  279. package/src/files/media-paths.ts +3 -0
  280. package/src/files/media-types.ts +55 -0
  281. package/src/files/media-upload.ts +209 -52
  282. package/src/files/new-file-name.ts +156 -0
  283. package/src/files/serialize-document.ts +15 -5
  284. package/src/format/constraints.ts +1 -1
  285. package/src/format/convert-file.ts +27 -13
  286. package/src/format/format-choices.ts +2 -1
  287. package/src/format/format-host.ts +91 -50
  288. package/src/github/github-auth-status.ts +27 -3
  289. package/src/github/github-auth.ts +21 -11
  290. package/src/github/github-publish.ts +28 -23
  291. package/src/grid/cell-editors.ts +46 -31
  292. package/src/grid/cell-popovers.ts +5 -3
  293. package/src/grid/edit-buffer.ts +10 -9
  294. package/src/grid/grid-controller.ts +25 -23
  295. package/src/grid/grid-layout.ts +21 -5
  296. package/src/grid/grid-open.ts +3 -33
  297. package/src/grid/grid-panel.ts +65 -6
  298. package/src/grid/grid-reveal.ts +34 -0
  299. package/src/grid/grid-source.ts +9 -31
  300. package/src/grid/grid-view.ts +45 -23
  301. package/src/grid/redirects-grid.ts +14 -5
  302. package/src/grid/redirects.ts +16 -14
  303. package/src/grid/schema-columns.ts +25 -19
  304. package/src/grid/sources/connector-source.ts +47 -20
  305. package/src/grid/sources/content-source.ts +100 -31
  306. package/src/grid/sources/csv-file-source.ts +2 -2
  307. package/src/grid/tabulator-tables.d.ts +61 -34
  308. package/src/hosting/document.ts +2 -2
  309. package/src/hosting/stage.ts +7 -7
  310. package/src/i18n/i18n-commands.ts +3 -3
  311. package/src/media/media-commands.ts +181 -0
  312. package/src/media/media-library-model.ts +232 -0
  313. package/src/media/media-library.ts +1283 -0
  314. package/src/media/media-pane.ts +51 -20
  315. package/src/new-project/add-repo-modal.ts +20 -19
  316. package/src/new-project/import-tab.ts +10 -14
  317. package/src/new-project/location-fields.ts +2 -1
  318. package/src/new-project/new-project-modal.ts +12 -9
  319. package/src/packages/jxsuite-update.ts +4 -3
  320. package/src/packages/pull-package-sync.ts +26 -25
  321. package/src/page-params.ts +97 -68
  322. package/src/panels/activity-panel.ts +38 -14
  323. package/src/panels/ai-chat/attached-context.ts +13 -7
  324. package/src/panels/ai-chat/chat-markdown.ts +8 -8
  325. package/src/panels/ai-chat/chat-view.ts +80 -73
  326. package/src/panels/ai-chat/composer.ts +30 -33
  327. package/src/panels/ai-chat/sessions-view.ts +1 -2
  328. package/src/panels/ai-panel.ts +23 -20
  329. package/src/panels/block-action-bar.ts +57 -46
  330. package/src/panels/bottom-dock.ts +5 -3
  331. package/src/panels/canvas-dnd-bridge.ts +36 -26
  332. package/src/panels/chat-panel.ts +6 -6
  333. package/src/panels/collections-panel.ts +306 -0
  334. package/src/panels/component-preview.ts +35 -13
  335. package/src/panels/data-explorer.ts +63 -26
  336. package/src/panels/data-grid.ts +18 -11
  337. package/src/panels/dnd.ts +115 -138
  338. package/src/panels/editors.ts +52 -21
  339. package/src/panels/elements-panel.ts +19 -5
  340. package/src/panels/empty-state.ts +2 -2
  341. package/src/panels/events-panel.ts +84 -69
  342. package/src/panels/formula-workspace.ts +78 -54
  343. package/src/panels/frontmatter-fields.ts +33 -28
  344. package/src/panels/git-diff-open.ts +10 -6
  345. package/src/panels/head-panel.ts +488 -202
  346. package/src/panels/i18n-panel.ts +20 -12
  347. package/src/panels/imports-panel.ts +25 -47
  348. package/src/panels/jump-bar.ts +75 -31
  349. package/src/panels/layers-panel.ts +130 -101
  350. package/src/panels/left-panel.ts +25 -11
  351. package/src/panels/navigator-panels.ts +23 -11
  352. package/src/panels/pane-context.ts +140 -49
  353. package/src/panels/pane-grid.ts +55 -26
  354. package/src/panels/panel-registry.ts +36 -46
  355. package/src/panels/properties-panel.ts +182 -124
  356. package/src/panels/quick-search.ts +53 -31
  357. package/src/panels/right-panel.ts +201 -45
  358. package/src/panels/seo-modal.ts +54 -125
  359. package/src/panels/settings-menu.ts +63 -61
  360. package/src/panels/settings-pane.ts +268 -162
  361. package/src/panels/signals-panel.ts +156 -135
  362. package/src/panels/site-model.ts +367 -0
  363. package/src/panels/site-panel.ts +638 -0
  364. package/src/panels/statement-editor.ts +230 -140
  365. package/src/panels/style-panel.ts +253 -206
  366. package/src/panels/style-utils.ts +114 -51
  367. package/src/panels/stylebook-doc.ts +195 -60
  368. package/src/panels/stylebook-layers-panel.ts +48 -89
  369. package/src/panels/stylebook-panel.ts +60 -27
  370. package/src/panels/styles-panel.ts +327 -0
  371. package/src/panels/tab-drop.ts +27 -11
  372. package/src/panels/tab-strip.ts +143 -49
  373. package/src/platform-errors.ts +57 -43
  374. package/src/platform.ts +59 -31
  375. package/src/platforms/cloud.ts +373 -176
  376. package/src/platforms/default-platform.ts +14 -8
  377. package/src/platforms/devserver.ts +180 -142
  378. package/src/platforms/read-batcher.ts +16 -8
  379. package/src/project-list.ts +2 -1
  380. package/src/publish/deploy-checklist.ts +20 -9
  381. package/src/publish/pages-service.ts +66 -27
  382. package/src/publish/publish-changes.ts +491 -0
  383. package/src/publish/publish-commands.ts +88 -22
  384. package/src/publish/publish-ids.ts +49 -0
  385. package/src/publish/publish-panel.ts +10 -6
  386. package/src/publish/publish-quick.ts +148 -0
  387. package/src/publish/publish-workspace.ts +926 -0
  388. package/src/publish/source-control.ts +907 -0
  389. package/src/recent-projects.ts +15 -8
  390. package/src/resize-edges.ts +26 -36
  391. package/src/services/a11y-report.ts +26 -19
  392. package/src/services/agent-seed.ts +23 -11
  393. package/src/services/ai-ask.ts +9 -12
  394. package/src/services/ai-command-tools.ts +68 -62
  395. package/src/services/ai-import-tools.ts +80 -67
  396. package/src/services/ai-models.ts +17 -13
  397. package/src/services/ai-project-tools.ts +68 -32
  398. package/src/services/ai-session-store.ts +19 -10
  399. package/src/services/ai-system-prompt.ts +46 -20
  400. package/src/services/ai-tools.ts +71 -27
  401. package/src/services/ai-write-report.ts +20 -12
  402. package/src/services/ai-writes.ts +4 -4
  403. package/src/services/automation.ts +74 -51
  404. package/src/services/cem-export.ts +149 -58
  405. package/src/services/cf-settings.ts +4 -4
  406. package/src/services/clock.ts +6 -1
  407. package/src/services/code-services.ts +37 -31
  408. package/src/services/connection.ts +2 -2
  409. package/src/services/context-manager.ts +14 -10
  410. package/src/services/context-resolver.ts +20 -8
  411. package/src/services/data-service.ts +19 -15
  412. package/src/services/directory-picker.ts +20 -14
  413. package/src/services/document-assistant.ts +39 -19
  414. package/src/services/gated-registry.ts +10 -6
  415. package/src/services/harness/chat-reducer.ts +23 -1
  416. package/src/services/import-client.ts +91 -38
  417. package/src/services/import-seed.ts +8 -2
  418. package/src/services/jx-validate.ts +28 -31
  419. package/src/services/live-preview.ts +0 -0
  420. package/src/services/live-surfaces.ts +6 -3
  421. package/src/services/model-uri.ts +10 -2
  422. package/src/services/module-preloads.ts +12 -8
  423. package/src/services/monaco-buffer.ts +43 -24
  424. package/src/services/monaco-lazy.ts +7 -8
  425. package/src/services/monaco-setup.ts +23 -16
  426. package/src/services/notify.ts +44 -17
  427. package/src/services/popover-report.ts +25 -10
  428. package/src/services/preview-eval.ts +20 -8
  429. package/src/services/profile.ts +13 -6
  430. package/src/services/project-path.ts +13 -10
  431. package/src/services/references.ts +0 -0
  432. package/src/services/render-critic.ts +29 -9
  433. package/src/services/settings/definitions.ts +25 -14
  434. package/src/services/settings/kernel.ts +13 -4
  435. package/src/services/settings/write-queue.ts +9 -9
  436. package/src/services/token-lint.ts +12 -10
  437. package/src/services/tool-executor.ts +17 -5
  438. package/src/services/tool-outcomes.ts +44 -24
  439. package/src/services/trusted-types.ts +24 -7
  440. package/src/settings/contexts-section.ts +11 -8
  441. package/src/settings/contributed-section.ts +128 -70
  442. package/src/settings/css-vars-editor.ts +119 -32
  443. package/src/settings/defs-editor.ts +38 -35
  444. package/src/settings/developer-panels.ts +43 -0
  445. package/src/settings/extension-rows.ts +16 -8
  446. package/src/settings/extension-sections.ts +42 -14
  447. package/src/settings/extensions-section.ts +4 -1
  448. package/src/settings/general-settings.ts +101 -28
  449. package/src/settings/locales-section.ts +20 -12
  450. package/src/settings/preferences-dialog.ts +17 -7
  451. package/src/settings/preferences-keymap.ts +7 -5
  452. package/src/settings/preferences-sections.ts +11 -5
  453. package/src/settings/project-sections.ts +28 -11
  454. package/src/settings/schema-field-ui.ts +12 -1
  455. package/src/settings/section-registry.ts +116 -11
  456. package/src/settings/settings-dialog.ts +192 -0
  457. package/src/settings/settings-document.ts +186 -166
  458. package/src/shell/tree.ts +6 -5
  459. package/src/shell.ts +536 -477
  460. package/src/site-context.ts +101 -32
  461. package/src/state.ts +68 -57
  462. package/src/store.ts +54 -34
  463. package/src/studio.ts +219 -116
  464. package/src/style/live-preview.ts +1 -1
  465. package/src/style/project-styles.ts +40 -7
  466. package/src/style/stylebook-specimens.ts +89 -0
  467. package/src/style/stylebook-target.ts +26 -0
  468. package/src/style/tag-inheritance.ts +105 -0
  469. package/src/style/token-ref.ts +5 -4
  470. package/src/style/variables-focus.ts +61 -0
  471. package/src/style/variables-view.ts +235 -0
  472. package/src/surfaces/about.ts +18 -19
  473. package/src/surfaces/add-new.json +1482 -0
  474. package/src/surfaces/add-new.ts +325 -0
  475. package/src/surfaces/add-repo.ts +17 -19
  476. package/src/surfaces/ai-chat.ts +33 -38
  477. package/src/surfaces/ai-credentials-form.ts +6 -16
  478. package/src/surfaces/ai-managed-connect.ts +3 -4
  479. package/src/surfaces/ai-model-picker.ts +3 -5
  480. package/src/surfaces/block-action-bar.ts +22 -11
  481. package/src/surfaces/boot-failure.json +4 -3
  482. package/src/surfaces/boot-failure.ts +4 -5
  483. package/src/surfaces/bottom-dock.json +1 -1
  484. package/src/surfaces/bottom-dock.ts +9 -18
  485. package/src/surfaces/canvas-stage.json +30 -19
  486. package/src/surfaces/canvas-stage.ts +17 -16
  487. package/src/surfaces/cf-account-picker.ts +17 -18
  488. package/src/surfaces/collections-panel.json +615 -0
  489. package/src/surfaces/collections-panel.ts +168 -0
  490. package/src/surfaces/commandbar.json +241 -96
  491. package/src/surfaces/commandbar.ts +145 -105
  492. package/src/surfaces/convert-repeater.ts +17 -19
  493. package/src/surfaces/data-actions.ts +9 -7
  494. package/src/surfaces/dialog.ts +26 -28
  495. package/src/surfaces/diff-toolbar.ts +9 -7
  496. package/src/surfaces/empty-state.json +1 -1
  497. package/src/surfaces/empty-state.ts +7 -10
  498. package/src/surfaces/entry-editor.json +136 -0
  499. package/src/surfaces/entry-editor.ts +35 -11
  500. package/src/surfaces/entry-inspector.json +371 -0
  501. package/src/surfaces/entry-inspector.ts +143 -0
  502. package/src/surfaces/expression-editor.ts +11 -25
  503. package/src/surfaces/files-panel.ts +27 -14
  504. package/src/surfaces/formula-palette.ts +4 -5
  505. package/src/surfaces/github-auth.ts +16 -20
  506. package/src/surfaces/github-publish.ts +17 -22
  507. package/src/surfaces/grid-cell.ts +30 -31
  508. package/src/surfaces/grid-open.ts +10 -14
  509. package/src/surfaces/grid-panel.ts +13 -9
  510. package/src/surfaces/grid-replace.ts +13 -13
  511. package/src/surfaces/grid-views.ts +15 -18
  512. package/src/surfaces/inspector-dock.json +162 -14
  513. package/src/surfaces/inspector-dock.ts +59 -31
  514. package/src/surfaces/jump-bar.ts +5 -6
  515. package/src/surfaces/jxsuite-update.ts +16 -22
  516. package/src/surfaces/library-pane.json +670 -437
  517. package/src/surfaces/library-pane.ts +111 -77
  518. package/src/surfaces/logic-panel.ts +17 -30
  519. package/src/surfaces/logic-workspace.ts +13 -15
  520. package/src/surfaces/media-browser.json +62 -6
  521. package/src/surfaces/media-browser.ts +26 -11
  522. package/src/surfaces/media-field.json +1 -1
  523. package/src/surfaces/media-field.ts +4 -5
  524. package/src/surfaces/media-library.json +1586 -0
  525. package/src/surfaces/media-library.ts +282 -0
  526. package/src/surfaces/media-pane.ts +8 -7
  527. package/src/surfaces/media-pick-dialog.json +71 -0
  528. package/src/surfaces/media-pick-dialog.ts +132 -0
  529. package/src/surfaces/menu.ts +47 -23
  530. package/src/surfaces/navigator-dock.ts +11 -12
  531. package/src/surfaces/new-project.ts +27 -26
  532. package/src/surfaces/pane-context.json +144 -77
  533. package/src/surfaces/pane-context.ts +44 -25
  534. package/src/surfaces/pane-grid.ts +15 -10
  535. package/src/surfaces/panel-activity.ts +5 -6
  536. package/src/surfaces/panel-data.ts +3 -4
  537. package/src/surfaces/panel-deploy-checklist.json +12 -6
  538. package/src/surfaces/panel-deploy-checklist.ts +8 -7
  539. package/src/surfaces/panel-elements.ts +5 -7
  540. package/src/surfaces/panel-i18n.ts +5 -7
  541. package/src/surfaces/panel-imports.ts +6 -13
  542. package/src/surfaces/panel-outline.ts +25 -19
  543. package/src/surfaces/panel-page.json +72 -2
  544. package/src/surfaces/panel-page.ts +49 -25
  545. package/src/surfaces/panel-problems.ts +5 -7
  546. package/src/surfaces/panel-signals.json +1 -1
  547. package/src/surfaces/panel-signals.ts +25 -39
  548. package/src/surfaces/panel-stylebook-layers.json +71 -204
  549. package/src/surfaces/panel-stylebook-layers.ts +5 -29
  550. package/src/surfaces/preferences.json +120 -48
  551. package/src/surfaces/preferences.ts +29 -11
  552. package/src/surfaces/progress-modal.ts +15 -9
  553. package/src/surfaces/properties-panel.json +1 -1
  554. package/src/surfaces/properties-panel.ts +20 -42
  555. package/src/surfaces/publish-quick.json +428 -0
  556. package/src/surfaces/publish-quick.ts +165 -0
  557. package/src/surfaces/publish-workspace.json +2892 -0
  558. package/src/surfaces/publish-workspace.ts +391 -0
  559. package/src/surfaces/publish.ts +18 -18
  560. package/src/surfaces/push-plan.ts +7 -8
  561. package/src/surfaces/rail.json +1 -159
  562. package/src/surfaces/rail.ts +22 -79
  563. package/src/surfaces/reference-field.ts +11 -15
  564. package/src/surfaces/schema-builder.ts +16 -22
  565. package/src/surfaces/schema-form.json +10 -2
  566. package/src/surfaces/schema-form.ts +17 -25
  567. package/src/surfaces/secret-field.ts +9 -6
  568. package/src/surfaces/seo.json +1 -1
  569. package/src/surfaces/seo.ts +21 -15
  570. package/src/surfaces/settings-contexts.ts +9 -7
  571. package/src/surfaces/settings-contributed.json +5 -5
  572. package/src/surfaces/settings-contributed.ts +32 -12
  573. package/src/surfaces/settings-css-vars.json +44 -36
  574. package/src/surfaces/settings-css-vars.ts +82 -16
  575. package/src/surfaces/settings-defs.json +2 -2
  576. package/src/surfaces/settings-defs.ts +17 -21
  577. package/src/surfaces/settings-deploy.json +2 -15
  578. package/src/surfaces/settings-deploy.ts +9 -16
  579. package/src/surfaces/settings-dialog.json +51 -0
  580. package/src/surfaces/settings-dialog.ts +169 -0
  581. package/src/surfaces/settings-extensions.ts +5 -6
  582. package/src/surfaces/settings-head.ts +33 -39
  583. package/src/surfaces/settings-locales.ts +8 -20
  584. package/src/surfaces/settings-overview.json +3 -3
  585. package/src/surfaces/settings-overview.ts +14 -8
  586. package/src/surfaces/settings-packages.ts +8 -7
  587. package/src/surfaces/settings-pane.json +269 -46
  588. package/src/surfaces/settings-pane.ts +88 -36
  589. package/src/surfaces/settings-rawjson.ts +5 -6
  590. package/src/surfaces/shell.json +2 -1
  591. package/src/surfaces/shell.ts +1 -2
  592. package/src/surfaces/site-panel.json +1029 -0
  593. package/src/surfaces/site-panel.ts +233 -0
  594. package/src/surfaces/slash-menu.json +63 -21
  595. package/src/surfaces/slash-menu.ts +42 -9
  596. package/src/surfaces/statements.ts +13 -18
  597. package/src/surfaces/statusbar.ts +56 -29
  598. package/src/surfaces/style-panel.ts +18 -31
  599. package/src/surfaces/stylebook-chrome.ts +3 -5
  600. package/src/surfaces/styles-panel.json +735 -0
  601. package/src/surfaces/styles-panel.ts +195 -0
  602. package/src/surfaces/styles-variables.json +149 -0
  603. package/src/surfaces/styles-variables.ts +145 -0
  604. package/src/surfaces/tab-strip.json +4 -4
  605. package/src/surfaces/tab-strip.ts +14 -13
  606. package/src/surfaces/target-line.ts +6 -7
  607. package/src/surfaces/welcome.ts +6 -8
  608. package/src/surfaces/writing-banner.json +94 -0
  609. package/src/surfaces/writing-banner.ts +80 -0
  610. package/src/tabs/bare-repeaters.ts +101 -0
  611. package/src/tabs/patch-ops.ts +4 -3
  612. package/src/tabs/project-config.ts +32 -21
  613. package/src/tabs/selection.ts +36 -8
  614. package/src/tabs/tab.ts +99 -48
  615. package/src/tabs/transact.ts +98 -53
  616. package/src/types.ts +53 -43
  617. package/src/ui/ai-credentials-form.ts +10 -13
  618. package/src/ui/ai-model-picker.ts +3 -3
  619. package/src/ui/cf-account-picker.ts +7 -9
  620. package/src/ui/color-selector.ts +9 -5
  621. package/src/ui/dynamic-slot.ts +7 -8
  622. package/src/ui/expression-editor.ts +112 -105
  623. package/src/ui/form-controls.ts +104 -56
  624. package/src/ui/formula-catalog.ts +239 -230
  625. package/src/ui/formula-chips.ts +33 -18
  626. package/src/ui/layers.ts +57 -31
  627. package/src/ui/media-picker.ts +300 -47
  628. package/src/ui/popover-surface.ts +20 -12
  629. package/src/ui/progress-modal.ts +13 -8
  630. package/src/ui/regions.ts +14 -12
  631. package/src/ui/schema-form.ts +372 -97
  632. package/src/ui/surface.ts +71 -8
  633. package/src/ui/timing.ts +9 -0
  634. package/src/ui/value-source.ts +44 -31
  635. package/src/ui/virtual-window.ts +29 -3
  636. package/src/utils/base64.ts +6 -4
  637. package/src/utils/edit-display.ts +366 -111
  638. package/src/utils/element-selectors.ts +3 -2
  639. package/src/utils/google-fonts.ts +15 -14
  640. package/src/utils/inherited-style.ts +18 -20
  641. package/src/utils/link-target.ts +1 -1
  642. package/src/utils/local-day.ts +18 -0
  643. package/src/utils/preview-format.ts +25 -3
  644. package/src/utils/strip-events.ts +49 -22
  645. package/src/utils/studio-utils.ts +29 -14
  646. package/src/view.ts +2 -3
  647. package/src/workspace/pane-derive.ts +14 -16
  648. package/src/workspace/session.ts +81 -50
  649. package/src/workspace/tab-workspace.ts +137 -0
  650. package/src/workspace/workspace-back.ts +189 -0
  651. package/src/workspace/workspace-home.ts +133 -0
  652. package/src/workspace/workspace-ids.ts +129 -0
  653. package/src/workspace/workspace-switch.ts +372 -0
  654. package/src/workspace/workspace.ts +165 -47
  655. package/styles/shell-frame.css +30 -7
  656. package/styles/shell-frame.json +15 -3
  657. package/dist/chunks/2020-va2wwra4.js +0 -4
  658. package/dist/chunks/adapter-f93pafd7.js +0 -4
  659. package/dist/chunks/cf-account-picker-af1h381v.js +0 -4
  660. package/dist/chunks/cf-settings-125tdm0w.js +0 -4
  661. package/dist/chunks/color-area-jqhna8zy.js +0 -4
  662. package/dist/chunks/color-field-embq5ctg.js +0 -4
  663. package/dist/chunks/color-fpezvnkt.js +0 -4
  664. package/dist/chunks/color-slider-1qmw7wqy.js +0 -4
  665. package/dist/chunks/combobox-773hdzyj.js +0 -4
  666. package/dist/chunks/components-ax2f1fnn.js +0 -4
  667. package/dist/chunks/content-source-108aqtk1.js +0 -4
  668. package/dist/chunks/convert-to-repeater-ry5rmppr.js +0 -4
  669. package/dist/chunks/dialog-mtm9fq5t.js +0 -4
  670. package/dist/chunks/editor-pfgdmkb0.js +0 -4
  671. package/dist/chunks/entry-commands-t0k1q0kx.js +0 -4
  672. package/dist/chunks/extension-sections-6mwh2hf8.js +0 -4
  673. package/dist/chunks/file-ops-meej5mqf.js +0 -4
  674. package/dist/chunks/files-44vp8a2s.js +0 -4
  675. package/dist/chunks/format-host-7q1petb9.js +0 -4
  676. package/dist/chunks/fs-events-h2mwnxaz.js +0 -4
  677. package/dist/chunks/git-panel-zngbymvd.js +0 -4
  678. package/dist/chunks/grid-view-sx9vynsp.js +0 -51
  679. package/dist/chunks/icons-p44xhjf0.js +0 -4
  680. package/dist/chunks/iframe-entry-f7mqjwpm.js +0 -5
  681. package/dist/chunks/iframe-entry-haw7jkvz.js +0 -5
  682. package/dist/chunks/iframe-entry-z6qrytv3.js +0 -5
  683. package/dist/chunks/iframe-host-qk3ycq87.js +0 -4
  684. package/dist/chunks/index-wkyfjeqz.js +0 -4
  685. package/dist/chunks/jsonMode-s8kt9dsj.js +0 -13
  686. package/dist/chunks/jx-validate-psgd7vsx.js +0 -4
  687. package/dist/chunks/layers-panel-1kq2jyfk.js +0 -4
  688. package/dist/chunks/layers-xd92fg8d.js +0 -4
  689. package/dist/chunks/listbox-s8fkmnq8.js +0 -4
  690. package/dist/chunks/lit-html-ac4cwwr4.js +0 -4
  691. package/dist/chunks/media-picker-0svzkdyb.js +0 -4
  692. package/dist/chunks/menu-37d07z9m.js +0 -4
  693. package/dist/chunks/menu-5c55ea3d.js +0 -4
  694. package/dist/chunks/monaco-binding-z6r70pdt.js +0 -4
  695. package/dist/chunks/monaco-buffer-fz6gq5y7.js +0 -4
  696. package/dist/chunks/monaco-setup-q4axkgj7.js +0 -4
  697. package/dist/chunks/notify-0xgtn8q1.js +0 -4
  698. package/dist/chunks/number-field-gw7sq8rn.js +0 -4
  699. package/dist/chunks/parse-897fvqah.js +0 -4
  700. package/dist/chunks/platform-v1qctbe6.js +0 -4
  701. package/dist/chunks/popover-8htra4er.js +0 -4
  702. package/dist/chunks/publish-panel-ym1fmgq5.js +0 -4
  703. package/dist/chunks/quick-search-a54e6t5n.js +0 -4
  704. package/dist/chunks/references-gmqp82fs.js +0 -4
  705. package/dist/chunks/right-panel-v7t9awbk.js +0 -4
  706. package/dist/chunks/section-registry-vhyf3zsr.js +0 -4
  707. package/dist/chunks/select-n3v7gwas.js +0 -4
  708. package/dist/chunks/split-pff8f3ze.js +0 -4
  709. package/dist/chunks/studio-0bhx5hz6.js +0 -5
  710. package/dist/chunks/studio-0k1ddnyy.js +0 -6
  711. package/dist/chunks/studio-1b04pd0j.js +0 -64
  712. package/dist/chunks/studio-4dwbj6gb.js +0 -5
  713. package/dist/chunks/studio-4tanh828.js +0 -5
  714. package/dist/chunks/studio-55h4mstj.js +0 -4
  715. package/dist/chunks/studio-5tnvjkz4.js +0 -5
  716. package/dist/chunks/studio-60dqgb0c.js +0 -5
  717. package/dist/chunks/studio-61dp09qg.js +0 -9
  718. package/dist/chunks/studio-63epcrj2.js +0 -5
  719. package/dist/chunks/studio-74k29dy9.js +0 -5
  720. package/dist/chunks/studio-7vg6jcd3.js +0 -5
  721. package/dist/chunks/studio-7zx31knw.js +0 -9
  722. package/dist/chunks/studio-8bxk97km.js +0 -5
  723. package/dist/chunks/studio-933e30n4.js +0 -5
  724. package/dist/chunks/studio-98wnwhbg.js +0 -5
  725. package/dist/chunks/studio-9mccjwjh.js +0 -14
  726. package/dist/chunks/studio-a2ke1e4t.js +0 -5
  727. package/dist/chunks/studio-e3a2a6v3.js +0 -4
  728. package/dist/chunks/studio-e81q1vb9.js +0 -5
  729. package/dist/chunks/studio-epgrmqqm.js +0 -5
  730. package/dist/chunks/studio-ery42sqr.js +0 -4
  731. package/dist/chunks/studio-g1shz58g.js +0 -5
  732. package/dist/chunks/studio-gf0fz03c.js +0 -5
  733. package/dist/chunks/studio-gjtpe62q.js +0 -6
  734. package/dist/chunks/studio-gkskhg7m.js +0 -5
  735. package/dist/chunks/studio-gx4dnjzd.js +0 -5
  736. package/dist/chunks/studio-j03zga3y.js +0 -9
  737. package/dist/chunks/studio-jhpxeckz.js +0 -5
  738. package/dist/chunks/studio-k01r7ykp.js +0 -5
  739. package/dist/chunks/studio-kk7h30ne.js +0 -7
  740. package/dist/chunks/studio-kt1zqney.js +0 -5
  741. package/dist/chunks/studio-m3cwhvye.js +0 -5
  742. package/dist/chunks/studio-mcayt6hz.js +0 -5
  743. package/dist/chunks/studio-myjcghv3.js +0 -5
  744. package/dist/chunks/studio-n8bxwc3y.js +0 -4
  745. package/dist/chunks/studio-ngm8gvpb.js +0 -5
  746. package/dist/chunks/studio-nj5a01jy.js +0 -928
  747. package/dist/chunks/studio-pcgz8heb.js +0 -5
  748. package/dist/chunks/studio-qcsq0t15.js +0 -5
  749. package/dist/chunks/studio-qkstvve9.js +0 -5
  750. package/dist/chunks/studio-qv1pwd3c.js +0 -5
  751. package/dist/chunks/studio-rc6dvxjb.js +0 -7
  752. package/dist/chunks/studio-s8dmmz66.js +0 -5
  753. package/dist/chunks/studio-sp5xzbj4.js +0 -6
  754. package/dist/chunks/studio-szsjbj0g.js +0 -5
  755. package/dist/chunks/studio-t1xzawhr.js +0 -16
  756. package/dist/chunks/studio-tdcprbqb.js +0 -5
  757. package/dist/chunks/studio-vrmcjf9g.js +0 -7
  758. package/dist/chunks/studio-vyc0b4he.js +0 -10
  759. package/dist/chunks/studio-w0cgf6jg.js +0 -5
  760. package/dist/chunks/studio-w3hskzqk.js +0 -5
  761. package/dist/chunks/studio-xgrgcdyh.js +0 -9
  762. package/dist/chunks/studio-xz2yxfcb.js +0 -5
  763. package/dist/chunks/studio-y6n42tgs.js +0 -5
  764. package/dist/chunks/studio-yb560vxr.js +0 -5
  765. package/dist/chunks/studio-yn9f8vtx.js +0 -5
  766. package/dist/chunks/studio-yw05w8f0.js +0 -7
  767. package/dist/chunks/studio-z16sgavc.js +0 -5
  768. package/dist/chunks/studio-zey7zsdw.js +0 -12
  769. package/dist/chunks/studio-zyqn40w4.js +0 -5
  770. package/dist/chunks/swatch-group-8qh9a3bm.js +0 -4
  771. package/dist/chunks/tabs-jwthg40w.js +0 -4
  772. package/dist/chunks/textfield-spy3hc77.js +0 -4
  773. package/dist/chunks/toast-4d35zd64.js +0 -4
  774. package/dist/chunks/toast-host-8sjmfed3.js +0 -4
  775. package/dist/chunks/tooltip-fd6g9xy3.js +0 -4
  776. package/dist/chunks/tree-h19v1jfz.js +0 -4
  777. package/dist/chunks/tsMode-2frah6h1.js +0 -14
  778. package/dist/chunks/workspace-zt81g1ms.js +0 -4
  779. package/dist/chunks/ws-client-n2bh4hkf.js +0 -4
  780. package/src/panels/frontmatter-panel.ts +0 -701
  781. package/src/panels/git-panel.ts +0 -1120
  782. package/src/surfaces/doc-header.json +0 -776
  783. package/src/surfaces/doc-header.ts +0 -231
  784. package/src/surfaces/git-panel.json +0 -1880
  785. package/src/surfaces/git-panel.ts +0 -272
@@ -7,7 +7,7 @@
7
7
  "part": "chrome"
8
8
  },
9
9
  "style": {
10
- "$description": "The `.pc-*` rules of `styles/canvas.css`, keyed on `part` and carried here, plus `.jx-collab-banner` from `styles/shell.css` — the banner rides in this band and the rule rides with it. Three token repairs travel with them, the shape `surfaces/git-panel.json` describes: `--spectrum-font-size-75` and `--spectrum-font-size-50` resolved only inside `<sp-theme>` and a document mounts outside it, so every rule reading one would silently have taken its px fallback; they are `--jx-text-md` (12px) and `--jx-text-sm` (11px) here, at the same values. Four rules are DELETED rather than moved because the kit already draws them: `.pc-derive-trigger`'s hand-built 22×20 box and its hover are `jx-action-button` quiet, `.pc-preview-toggle[selected]`'s four Spectrum custom-property overrides are the `emphasized` prop, and `.pc-ctx-manage:hover`'s underline is the only half of that rule worth keeping. The one rule ADDED is `pointer-events: auto` on the band, the pod and the popovers: `.pane-chrome` is `pointer-events: none` and gave it to its direct children through `.pane-chrome > *`, which a document root with `display: contents` is not — so the three surfaces that take the pointer say so themselves, which is also the honest place for it.",
10
+ "$description": "The `.pc-*` rules of `styles/canvas.css`, keyed on `part` and carried here, plus `.jx-collab-banner` from `styles/shell.css` — the banner rides in this band and the rule rides with it. Three token repairs travel with them, all of one shape: `--spectrum-font-size-75` and `--spectrum-font-size-50` resolved only inside `<sp-theme>` and a document mounts outside it, so every rule reading one would silently have taken its px fallback; they are `--jx-text-md` (12px) and `--jx-text-sm` (11px) here, at the same values. Four rules are DELETED rather than moved because the kit already draws them: `.pc-derive-trigger`'s hand-built 22×20 box and its hover are `jx-action-button` quiet, `.pc-preview-toggle[selected]`'s four Spectrum custom-property overrides are the `emphasized` prop, and `.pc-ctx-manage:hover`'s underline is the only half of that rule worth keeping. The one rule ADDED is `pointer-events: auto` on the band, the pod and the popovers: `.pane-chrome` is `pointer-events: none` and gave it to its direct children through `.pane-chrome > *`, which a document root with `display: contents` is not — so the three surfaces that take the pointer say so themselves, which is also the honest place for it.",
11
11
  "display": "contents",
12
12
  "& [part=\"band\"]": {
13
13
  "$description": "The pane's top band: the bar plus the standing statements that must be readable before the first keystroke. One element so the adapter can MEASURE what the stage has to clear — a banner's height is its wrapped text, which only layout knows.",
@@ -32,6 +32,10 @@
32
32
  "alignItems": "center",
33
33
  "minWidth": "0"
34
34
  },
35
+ "& [part=\"back\"]": {
36
+ "flexShrink": "0",
37
+ "marginInlineEnd": "var(--jx-space-2)"
38
+ },
35
39
  "& [part=\"axis\"]": {
36
40
  "display": "flex",
37
41
  "alignItems": "center",
@@ -214,6 +218,54 @@
214
218
  "part": "spacer"
215
219
  },
216
220
  "children": [
221
+ {
222
+ "$description": "Back to the workspace home, in a workspace that draws no tab strip (Media, Styles, Publish): the way out of a view opened beside the home — a media file, a comparison, `project.json` as Code — with the destination named, because there is no chip to click and no close button to press. It leads the bar so it sits where the strip's chips would have been. Escape runs the same command (`pane.backToHome`) wherever no text field or code editor owns the key.",
223
+ "tagName": "div",
224
+ "attributes": {
225
+ "part": "back-slot",
226
+ "role": "none"
227
+ },
228
+ "style": {
229
+ "display": "contents"
230
+ },
231
+ "$switch": {
232
+ "$ref": "#/state/backState"
233
+ },
234
+ "cases": {
235
+ "shown": {
236
+ "tagName": "jx-action-button",
237
+ "attributes": {
238
+ "part": "back"
239
+ },
240
+ "$props": {
241
+ "size": "sm",
242
+ "quiet": true,
243
+ "icon": "arrow-left",
244
+ "hint": {
245
+ "$ref": "#/state/backHint"
246
+ }
247
+ },
248
+ "onclick": {
249
+ "$prototype": "Function",
250
+ "body": [
251
+ {
252
+ "operator": "call",
253
+ "target": {
254
+ "$ref": "#/state/goBack"
255
+ },
256
+ "value": []
257
+ }
258
+ ]
259
+ },
260
+ "children": [
261
+ {
262
+ "tagName": "span",
263
+ "textContent": "${state.backLabel}"
264
+ }
265
+ ]
266
+ }
267
+ }
268
+ },
217
269
  {
218
270
  "tagName": "div",
219
271
  "attributes": {
@@ -236,8 +288,8 @@
236
288
  "size": "sm",
237
289
  "quiet": true,
238
290
  "icon": "arrows-clockwise",
239
- "label": "Show something beside this pane",
240
- "hint": "Show something beside this pane",
291
+ "label": "Show code, diff or layout beside",
292
+ "hint": "Show this document's code, diff, layout or another breakpoint beside it",
241
293
  "haspopup": "menu"
242
294
  },
243
295
  "onclick": {
@@ -525,43 +577,104 @@
525
577
  {
526
578
  "tagName": "div",
527
579
  "attributes": {
528
- "part": "axis",
529
- "data-axis": "context"
580
+ "part": "context-slot",
581
+ "role": "none"
530
582
  },
531
- "children": [
532
- {
533
- "tagName": "span",
534
- "attributes": {
535
- "part": "axis-label"
536
- },
537
- "textContent": "Context"
538
- },
539
- {
583
+ "style": {
584
+ "display": "contents"
585
+ },
586
+ "$switch": {
587
+ "$ref": "#/state/contextState"
588
+ },
589
+ "cases": {
590
+ "shown": {
540
591
  "tagName": "div",
541
592
  "attributes": {
542
- "part": "resolving-slot",
543
- "role": "none"
544
- },
545
- "style": {
546
- "display": "contents"
547
- },
548
- "$switch": {
549
- "$ref": "#/state/resolvingState"
593
+ "part": "axis",
594
+ "data-axis": "context"
550
595
  },
551
- "cases": {
552
- "shown": {
596
+ "children": [
597
+ {
598
+ "tagName": "span",
599
+ "attributes": {
600
+ "part": "axis-label"
601
+ },
602
+ "textContent": "Context"
603
+ },
604
+ {
605
+ "tagName": "div",
606
+ "attributes": {
607
+ "part": "resolving-slot",
608
+ "role": "none"
609
+ },
610
+ "style": {
611
+ "display": "contents"
612
+ },
613
+ "$switch": {
614
+ "$ref": "#/state/resolvingState"
615
+ },
616
+ "cases": {
617
+ "shown": {
618
+ "tagName": "jx-action-button",
619
+ "attributes": {
620
+ "part": "resolving-trigger"
621
+ },
622
+ "$props": {
623
+ "size": "sm",
624
+ "quiet": true,
625
+ "haspopup": "dialog",
626
+ "expanded": {
627
+ "$ref": "#/state/resolvingOpen"
628
+ },
629
+ "hint": "The values this document is being rendered with"
630
+ },
631
+ "onclick": {
632
+ "$prototype": "Function",
633
+ "body": [
634
+ {
635
+ "operator": "call",
636
+ "target": {
637
+ "$ref": "#/state/openResolving"
638
+ },
639
+ "value": [
640
+ {
641
+ "$ref": "event#/currentTarget"
642
+ }
643
+ ]
644
+ }
645
+ ]
646
+ },
647
+ "children": [
648
+ {
649
+ "tagName": "span",
650
+ "textContent": "${state.resolvingLabel}"
651
+ },
652
+ {
653
+ "tagName": "jx-icon",
654
+ "attributes": {
655
+ "part": "resolving-trigger-caret"
656
+ },
657
+ "$props": {
658
+ "name": "caret-down"
659
+ }
660
+ }
661
+ ]
662
+ }
663
+ }
664
+ },
665
+ {
553
666
  "tagName": "jx-action-button",
554
667
  "attributes": {
555
- "part": "resolving-trigger"
668
+ "part": "context-trigger"
556
669
  },
557
670
  "$props": {
558
671
  "size": "sm",
559
672
  "quiet": true,
560
673
  "haspopup": "dialog",
561
674
  "expanded": {
562
- "$ref": "#/state/resolvingOpen"
675
+ "$ref": "#/state/contextOpen"
563
676
  },
564
- "hint": "The values this document is being rendered with"
677
+ "hint": "What this document is being rendered with"
565
678
  },
566
679
  "onclick": {
567
680
  "$prototype": "Function",
@@ -569,7 +682,7 @@
569
682
  {
570
683
  "operator": "call",
571
684
  "target": {
572
- "$ref": "#/state/openResolving"
685
+ "$ref": "#/state/openContext"
573
686
  },
574
687
  "value": [
575
688
  {
@@ -582,12 +695,12 @@
582
695
  "children": [
583
696
  {
584
697
  "tagName": "span",
585
- "textContent": "${state.resolvingLabel}"
698
+ "textContent": "${state.contextSummary}"
586
699
  },
587
700
  {
588
701
  "tagName": "jx-icon",
589
702
  "attributes": {
590
- "part": "resolving-trigger-caret"
703
+ "part": "context-trigger-caret"
591
704
  },
592
705
  "$props": {
593
706
  "name": "caret-down"
@@ -595,55 +708,9 @@
595
708
  }
596
709
  ]
597
710
  }
598
- }
599
- },
600
- {
601
- "tagName": "jx-action-button",
602
- "attributes": {
603
- "part": "context-trigger"
604
- },
605
- "$props": {
606
- "size": "sm",
607
- "quiet": true,
608
- "haspopup": "dialog",
609
- "expanded": {
610
- "$ref": "#/state/contextOpen"
611
- },
612
- "hint": "What this document is being rendered with"
613
- },
614
- "onclick": {
615
- "$prototype": "Function",
616
- "body": [
617
- {
618
- "operator": "call",
619
- "target": {
620
- "$ref": "#/state/openContext"
621
- },
622
- "value": [
623
- {
624
- "$ref": "event#/currentTarget"
625
- }
626
- ]
627
- }
628
- ]
629
- },
630
- "children": [
631
- {
632
- "tagName": "span",
633
- "textContent": "${state.contextSummary}"
634
- },
635
- {
636
- "tagName": "jx-icon",
637
- "attributes": {
638
- "part": "context-trigger-caret"
639
- },
640
- "$props": {
641
- "name": "caret-down"
642
- }
643
- }
644
711
  ]
645
712
  }
646
- ]
713
+ }
647
714
  },
648
715
  {
649
716
  "tagName": "div",
@@ -28,21 +28,17 @@
28
28
  * @docs studio/interface/tabs
29
29
  */
30
30
 
31
- import { close as closePopover, openAt } from "@jxsuite/ui/behaviors/popover";
31
+ import { close, openAt } from "@jxsuite/ui/behaviors/popover";
32
+ import { isString } from "@jxsuite/schema/guards";
32
33
  import { reactive } from "../reactivity";
33
34
  import { mountSurface, registerSurface } from "../ui/surface";
34
35
  import { rectOf } from "../utils/geometry";
35
36
  import paneContextDoc from "./pane-context.json";
36
- import type { JxDocument, JxElement } from "@jxsuite/schema/types";
37
- import type { SurfaceHandle } from "../ui/surface";
37
+ import type { JxElement } from "@jxsuite/schema/types";
38
+ import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
39
+ import type { ViewportPoint } from "./menu";
38
40
 
39
- registerSurface("pane-context", paneContextDoc as unknown as JxDocument);
40
-
41
- /** One row of a `jx-select`: the value it writes and the word it prints. */
42
- export interface PaneContextOption {
43
- value: string;
44
- label: string;
45
- }
41
+ registerSurface("pane-context", paneContextDoc);
46
42
 
47
43
  /**
48
44
  * One segment of a radio group — a size, a scheme, a view, a language.
@@ -74,7 +70,7 @@ export interface PaneContextParam {
74
70
  name: string;
75
71
  label: string;
76
72
  value: string;
77
- options: PaneContextOption[];
73
+ options: SurfaceOption[];
78
74
  }
79
75
 
80
76
  /** One component test prop: a field, and the region id the screenshot pipeline addresses it by. */
@@ -101,6 +97,15 @@ export interface PaneContextView {
101
97
  /** `full` draws the three axes; `lens` draws the rendering context as a read-only summary. */
102
98
  barMode: "full" | "lens";
103
99
  presetState: "shown" | "hidden";
100
+ /**
101
+ * The Back control, in a workspace that draws no tab strip (Media, Styles, Publish): shown over a
102
+ * view opened beside the workspace's home, naming where it leads
103
+ * (`workspace/workspace-back.ts`).
104
+ */
105
+ backState: "shown" | "hidden";
106
+ /** "Back to Media", "Back to Variables". */
107
+ backLabel: string;
108
+ backHint: string;
104
109
  bannerState: "shown" | "hidden";
105
110
  /** The lens's stated rendering context — "Tablet · français". */
106
111
  summary: string;
@@ -108,10 +113,15 @@ export interface PaneContextView {
108
113
  editorMode: "static" | "picker";
109
114
  editorLabel: string;
110
115
  editorValue: string;
111
- editorOptions: PaneContextOption[];
116
+ editorOptions: SurfaceOption[];
112
117
 
113
118
  viewState: "shown" | "hidden";
114
119
  views: PaneContextChoice[];
120
+ /**
121
+ * Whether the Context axis (size, scheme, language, layout) is drawn. Hidden for a tab nothing is
122
+ * rendered under: a workspace home draws its own surface, not the document at a breakpoint.
123
+ */
124
+ contextState: "shown" | "hidden";
115
125
  previewState: "shown" | "hidden";
116
126
  previewOn: boolean;
117
127
  previewHint: string;
@@ -143,12 +153,14 @@ export interface PaneContextView {
143
153
  zoomLabel: string;
144
154
  fitState: "shown" | "hidden";
145
155
  fitValue: string;
146
- fitOptions: PaneContextOption[];
156
+ fitOptions: SurfaceOption[];
147
157
  }
148
158
 
149
159
  /** What a control can ask the pane to do. Every one of them is a decision the flow owns. */
150
160
  export interface PaneContextActions {
151
161
  openPresetMenu: (anchor: HTMLElement) => void;
162
+ /** Leave the view for the workspace home (`pane.backToHome`). */
163
+ goBack: () => void;
152
164
  chooseEditor: (kind: string) => void;
153
165
  chooseView: (view: string) => void;
154
166
  togglePreview: () => void;
@@ -205,8 +217,7 @@ interface PopoverState {
205
217
  resolvingOpen: boolean;
206
218
  }
207
219
 
208
- interface PaneContextScope
209
- extends Record<string, unknown>, PaneContextView, PaneContextActions, PopoverState {
220
+ interface PaneContextScope extends PaneContextView, PaneContextActions, PopoverState {
210
221
  /** The two panel doors the document calls, which the mount owns rather than the flow. */
211
222
  openContext: (anchor: HTMLElement) => void;
212
223
  openResolving: (anchor: HTMLElement) => void;
@@ -221,6 +232,9 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
221
232
  scope.zoomRegion = view.zoomRegion;
222
233
  scope.barMode = view.barMode;
223
234
  scope.presetState = view.presetState;
235
+ scope.backState = view.backState;
236
+ scope.backLabel = view.backLabel;
237
+ scope.backHint = view.backHint;
224
238
  scope.bannerState = view.bannerState;
225
239
  scope.summary = view.summary;
226
240
  scope.editorMode = view.editorMode;
@@ -228,6 +242,7 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
228
242
  scope.editorValue = view.editorValue;
229
243
  scope.editorOptions = view.editorOptions;
230
244
  scope.viewState = view.viewState;
245
+ scope.contextState = view.contextState;
231
246
  scope.views = view.views;
232
247
  scope.previewState = view.previewState;
233
248
  scope.previewOn = view.previewOn;
@@ -259,9 +274,13 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
259
274
  /** The projection a pane's chrome starts from — a bar with nothing in it yet. */
260
275
  export function emptyPaneContextView(): PaneContextView {
261
276
  return {
277
+ backHint: "",
278
+ backLabel: "",
279
+ backState: "hidden",
262
280
  bannerState: "hidden",
263
281
  barMode: "full",
264
282
  contextRegion: "",
283
+ contextState: "shown",
265
284
  contextSummary: "Base",
266
285
  editorLabel: "",
267
286
  editorMode: "static",
@@ -307,8 +326,8 @@ export function emptyPaneContextView(): PaneContextView {
307
326
  * undefined at that moment and the two panels would both be filed under the same empty key.
308
327
  */
309
328
  function attrOf(def: JxElement | string, name: string): string {
310
- const value = typeof def === "string" ? undefined : def.attributes?.[name];
311
- return typeof value === "string" ? value : "";
329
+ const value = isString(def) ? undefined : def.attributes?.[name];
330
+ return isString(value) ? value : "";
312
331
  }
313
332
 
314
333
  /**
@@ -325,7 +344,7 @@ function attrOf(def: JxElement | string, name: string): string {
325
344
  * platform against the trigger it was opened from (ui.md §6) and these coordinates are ignored;
326
345
  * they stand for the engines that cannot.
327
346
  */
328
- function placeBelow(anchor: HTMLElement, panel: HTMLElement | null): { x: number; y: number } {
347
+ function placeBelow(anchor: HTMLElement, panel: HTMLElement | null): ViewportPoint {
329
348
  const box = rectOf(anchor);
330
349
  const width = panel ? rectOf(panel).width : 0;
331
350
  const right = Math.max(0, box.right - width);
@@ -352,7 +371,7 @@ export function mountPaneContextSurface(
352
371
  module finds an invoker from a panel — so two panes mounting this surface under one id would
353
372
  hand the second pane's trigger the first pane's panel. */
354
373
  const uid = `pane-context-${paneId}`;
355
- const scope = reactive<PaneContextScope>({
374
+ const scope: PaneContextScope = reactive<PaneContextScope>({
356
375
  ...emptyPaneContextView(),
357
376
  ...actions,
358
377
  contextOpen: false,
@@ -369,7 +388,7 @@ export function mountPaneContextSurface(
369
388
  resolvingPopoverId: `${uid}-resolving`,
370
389
  resolvingX: 0,
371
390
  resolvingY: 0,
372
- }) as PaneContextScope;
391
+ });
373
392
  project(scope, view);
374
393
 
375
394
  const nodes = new Map<string, HTMLElement>();
@@ -378,7 +397,7 @@ export function mountPaneContextSurface(
378
397
 
379
398
  /** The panel a `data-popover` key names, once the document has drawn it. */
380
399
  const panelOf = (kind: "context" | "resolving"): PopoverElement | null =>
381
- (nodes.get(`popover:${kind}`) as PopoverElement | undefined) ?? null;
400
+ nodes.get(`popover:${kind}`) ?? null;
382
401
 
383
402
  /**
384
403
  * Show a panel from its trigger, positioning it before and after the show.
@@ -391,7 +410,7 @@ export function mountPaneContextSurface(
391
410
  if (!panel) {
392
411
  return;
393
412
  }
394
- const write = (at: { x: number; y: number }): void => {
413
+ const write = (at: ViewportPoint): void => {
395
414
  if (kind === "context") {
396
415
  scope.contextX = at.x;
397
416
  scope.contextY = at.y;
@@ -418,7 +437,7 @@ export function mountPaneContextSurface(
418
437
  }
419
438
  const panel = panelOf(kind);
420
439
  if (panel) {
421
- closePopover(panel);
440
+ close(panel);
422
441
  }
423
442
  };
424
443
 
@@ -454,7 +473,7 @@ export function mountPaneContextSurface(
454
473
  `hidePopover()` queues its toggle: `canvas.setResolvingOpen { open: false }` has to be
455
474
  true of `isResolvingOpen()` on the line after it, not a task later. */
456
475
  element.addEventListener("toggle", (event) => {
457
- const open = (event as Event & { newState?: string }).newState === "open";
476
+ const open = event.newState === "open";
458
477
  if (kind === "context") {
459
478
  scope.contextOpen = open;
460
479
  } else {
@@ -483,7 +502,7 @@ export function mountPaneContextSurface(
483
502
  },
484
503
  /* A mount still in flight has nothing in the host to ask about, and answering "no" would make
485
504
  the next repaint tear down the mount it is waiting for and start a second one. */
486
- connected: () => !disposed && (mounted === null || (mounted.root as Node).parentNode === host),
505
+ connected: () => !disposed && (mounted === null || mounted.root.parentNode === host),
487
506
  dispose() {
488
507
  disposed = true;
489
508
  hidePanel("context");
@@ -23,14 +23,15 @@
23
23
  * @docs studio/interface
24
24
  */
25
25
 
26
+ import { isJsonObject, isString } from "@jxsuite/schema/guards";
26
27
  import { reactive } from "../reactivity";
27
28
  import { mountSurface, registerSurface } from "../ui/surface";
28
29
  import paneGridDoc from "./pane-grid.json";
29
- import type { JxDocument, JxElement } from "@jxsuite/schema/types";
30
+ import type { JxElement } from "@jxsuite/schema/types";
30
31
  import type { JxScope } from "@jxsuite/runtime/types";
31
32
  import type { SurfaceHandle } from "../ui/surface";
32
33
 
33
- registerSurface("pane-grid", paneGridDoc as unknown as JxDocument);
34
+ registerSurface("pane-grid", paneGridDoc);
34
35
 
35
36
  /**
36
37
  * The `part` a pane's CELL carries.
@@ -80,7 +81,7 @@ const CELL_PARTS: ReadonlyMap<string, PaneCellPart> = new Map([
80
81
  * Every field is a finished value. The document asks no question about a pane — not which index it
81
82
  * is at, not how many there are — so a projection cannot disagree with what is drawn.
82
83
  */
83
- export interface PaneGridRow extends Record<string, unknown> {
84
+ export interface PaneGridRow {
84
85
  /** The pane id. The repeater's key, and what every action is addressed with. */
85
86
  id: string;
86
87
  /** `"shown"` for every row but the first. The `$switch` the leading splitter hangs off. */
@@ -165,7 +166,7 @@ export interface PaneGridSurface {
165
166
  }
166
167
 
167
168
  /** The scope `pane-grid.json` reads. */
168
- interface PaneGridScope extends Record<string, unknown>, PaneGridDragState {
169
+ interface PaneGridScope extends PaneGridDragState {
169
170
  rows: PaneGridRow[];
170
171
  /** `jx-split`'s `value`. */
171
172
  paneSplit: number;
@@ -180,8 +181,8 @@ interface PaneGridScope extends Record<string, unknown>, PaneGridDragState {
180
181
 
181
182
  /** The `part` a node's definition carries, or `""` for a text node or an unmarked element. */
182
183
  function partOf(def: JxElement | string): string {
183
- const part = typeof def === "string" ? undefined : def.attributes?.["part"];
184
- return typeof part === "string" ? part : "";
184
+ const part = isString(def) ? undefined : def.attributes?.["part"];
185
+ return isString(part) ? part : "";
185
186
  }
186
187
 
187
188
  /**
@@ -192,8 +193,10 @@ function partOf(def: JxElement | string): string {
192
193
  * object the projection put in `rows`.
193
194
  */
194
195
  function paneOf(state: JxScope | undefined): string {
195
- const row = (state?.["$map"] as { item?: { id?: unknown } } | undefined)?.item;
196
- return typeof row?.id === "string" ? row.id : "";
196
+ const map = state?.["$map"];
197
+ const row = isJsonObject(map) ? map["item"] : undefined;
198
+ const id = isJsonObject(row) ? row["id"] : undefined;
199
+ return isString(id) ? id : "";
197
200
  }
198
201
 
199
202
  /**
@@ -215,7 +218,7 @@ export function mountPaneGridSurface(
215
218
  actions: PaneGridActions,
216
219
  ): PaneGridSurface {
217
220
  host.replaceChildren();
218
- const scope = reactive<PaneGridScope>({
221
+ const scope: PaneGridScope = reactive<PaneGridScope>({
219
222
  armed: false,
220
223
  edgePane: "",
221
224
  move: actions.move,
@@ -226,7 +229,7 @@ export function mountPaneGridSurface(
226
229
  splitGap: split.gap,
227
230
  splitMax: split.max,
228
231
  splitMin: split.min,
229
- }) as PaneGridScope;
232
+ });
230
233
 
231
234
  let mounted: SurfaceHandle | null = null;
232
235
  let disposed = false;
@@ -239,6 +242,8 @@ export function mountPaneGridSurface(
239
242
  onNodeCreated: (element, _path, def, state) => {
240
243
  const cellPart = CELL_PARTS.get(partOf(def));
241
244
  if (cellPart) {
245
+ /* SAFETY: `pane-grid.json` declares no text children and no SVG, so every node carrying
246
+ one of the five cell parts is an HTML element the runtime created from a tagName. */
242
247
  actions.cellPart(paneOf(state), cellPart, element as HTMLElement);
243
248
  }
244
249
  },
@@ -31,10 +31,9 @@ import { effect, effectScope, reactive } from "../reactivity";
31
31
  import { mountSurface, registerSurface } from "../ui/surface";
32
32
  import activityDoc from "./panel-activity.json";
33
33
  import type { EffectScope } from "@vue/reactivity";
34
- import type { JxDocument } from "@jxsuite/schema/types";
35
34
  import type { SurfaceHandle } from "../ui/surface";
36
35
 
37
- registerSurface("panel-activity", activityDoc as unknown as JxDocument);
36
+ registerSurface("panel-activity", activityDoc);
38
37
 
39
38
  /** One declared phase of an operation, as the surface reads it. */
40
39
  export interface ActivityStepView {
@@ -98,7 +97,7 @@ export interface ActivitySurfaceDeps {
98
97
  }
99
98
 
100
99
  /** The scope the document reads: the projection, flattened, beside the three callbacks. */
101
- interface ActivityScope extends Record<string, unknown> {
100
+ interface ActivityScope {
102
101
  rows: ActivityRowView[];
103
102
  hasRows: boolean;
104
103
  hasFinished: boolean;
@@ -127,7 +126,7 @@ function standingIn(container: HTMLElement): boolean {
127
126
  return false;
128
127
  }
129
128
  // Still mounting into this very container: a second call must not start a second mount.
130
- return _handle === null ? _mount !== null : (_handle.root as Node).parentNode === container;
129
+ return _handle === null ? _mount !== null : _handle.root.parentNode === container;
131
130
  }
132
131
 
133
132
  /**
@@ -142,7 +141,7 @@ export function mountActivitySurface(container: HTMLElement, deps: ActivitySurfa
142
141
  }
143
142
  disposeActivitySurface();
144
143
  _container = container;
145
- const scope = reactive<ActivityScope>({
144
+ const scope: ActivityScope = reactive<ActivityScope>({
146
145
  cancel: deps.cancel,
147
146
  clearFinished: deps.clearFinished,
148
147
  clearLabel: "",
@@ -150,7 +149,7 @@ export function mountActivitySurface(container: HTMLElement, deps: ActivitySurfa
150
149
  hasRows: false,
151
150
  rows: [],
152
151
  toggleLog: deps.toggleLog,
153
- }) as ActivityScope;
152
+ });
154
153
  _scope = effectScope();
155
154
  _scope.run(() => {
156
155
  effect(() => {
@@ -22,10 +22,9 @@
22
22
  import { reactive } from "../reactivity";
23
23
  import { mountSurface, registerSurface } from "../ui/surface";
24
24
  import dataTreeDoc from "./panel-data.json";
25
- import type { JxDocument } from "@jxsuite/schema/types";
26
25
  import type { SurfaceHandle } from "../ui/surface";
27
26
 
28
- registerSurface("panel-data", dataTreeDoc as unknown as JxDocument);
27
+ registerSurface("panel-data", dataTreeDoc);
29
28
 
30
29
  /**
31
30
  * One line of a value tree, as the document reads it.
@@ -69,7 +68,7 @@ export interface DataTreeActions {
69
68
  }
70
69
 
71
70
  /** The scope the document reads. */
72
- interface DataTreeScope extends Record<string, unknown>, DataTreeActions {
71
+ interface DataTreeScope extends DataTreeActions {
73
72
  rows: DataTreeRow[];
74
73
  }
75
74
 
@@ -113,7 +112,7 @@ export function renderDataTreeSurface(
113
112
  }
114
113
  takeDown(host, existing);
115
114
  host.textContent = "";
116
- const scope = reactive({ rows, showMore: actions.showMore }) as DataTreeScope;
115
+ const scope: DataTreeScope = reactive<DataTreeScope>({ rows, showMore: actions.showMore });
117
116
  const record: Mounted = { disposed: false, handle: null, scope };
118
117
  mounts.set(host, record);
119
118
  /* No race to arbitrate: a repaint arriving while this is in flight takes the branch above — a