@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
@@ -39,9 +39,8 @@ import formulaPaletteDoc from "./formula-palette.json";
39
39
 
40
40
  import type { FormulaCatalogEntry } from "../ui/formula-catalog";
41
41
  import type { SurfaceHandle } from "../ui/surface";
42
- import type { JxDocument } from "@jxsuite/schema/types";
43
42
 
44
- registerSurface("formula-palette", formulaPaletteDoc as unknown as JxDocument);
43
+ registerSurface("formula-palette", formulaPaletteDoc);
45
44
 
46
45
  /** The popover slot id, and so the `overlay.popover:formula-palette` region the shots address. */
47
46
  const SLOT = "formula-palette";
@@ -81,7 +80,7 @@ interface GroupProjection {
81
80
  }
82
81
 
83
82
  /** The scope `formula-palette.json` reads, and the six things a gesture asks of this module. */
84
- interface FormulaPaletteScope extends Record<string, unknown> {
83
+ interface FormulaPaletteScope {
85
84
  open: boolean;
86
85
  query: string;
87
86
  groups: GroupProjection[];
@@ -106,7 +105,7 @@ interface FormulaPaletteScope extends Record<string, unknown> {
106
105
  move: (delta: number) => void;
107
106
  activate: () => void;
108
107
  hover: (index: number) => void;
109
- activateRow: (value: unknown) => void;
108
+ activateRow: (value: string) => void;
110
109
  }
111
110
 
112
111
  let _open = false;
@@ -228,7 +227,7 @@ function scope(): FormulaPaletteScope {
228
227
  },
229
228
  open: false,
230
229
  query: "",
231
- }) as FormulaPaletteScope;
230
+ });
232
231
  return _scope;
233
232
  }
234
233
 
@@ -27,13 +27,12 @@
27
27
  import { reactive } from "../reactivity";
28
28
  import { mountSurface, registerSurface } from "../ui/surface";
29
29
  import { overlayRegion, REGION_ATTR } from "../ui/regions";
30
- import { close as closeDialog, showModal } from "@jxsuite/ui/behaviors/dialog";
30
+ import { close, showModal } from "@jxsuite/ui/behaviors/dialog";
31
31
  import { whenReady } from "./dialog";
32
32
  import githubAuthDoc from "./github-auth.json";
33
- import type { SurfaceHandle } from "../ui/surface";
34
- import type { JxDocument } from "@jxsuite/schema/types";
33
+ import type { DialogLayerHandle, SurfaceHandle } from "../ui/surface";
35
34
 
36
- registerSurface("github-auth", githubAuthDoc as unknown as JxDocument);
35
+ registerSurface("github-auth", githubAuthDoc);
37
36
 
38
37
  export interface GithubAuthSurfaceOptions {
39
38
  /** Where the dialog is mounted — the dialog layer, handed in so this never reaches back. */
@@ -48,16 +47,7 @@ export interface GithubAuthSurfaceOptions {
48
47
  onClosed: () => void;
49
48
  }
50
49
 
51
- export interface GithubAuthSurfaceHandle {
52
- /** The slot in the dialog layer that carries the region. */
53
- host: HTMLElement;
54
- /** Resolves with the `jx-dialog` element once it has rendered and been opened. */
55
- ready: Promise<HTMLElement>;
56
- /** Close the dialog (the platform restores focus) and dispose the document. Idempotent. */
57
- close: () => void;
58
- }
59
-
60
- interface GithubAuthScope extends Record<string, unknown> {
50
+ interface GithubAuthScope {
61
51
  userCode: string;
62
52
  verificationUri: string;
63
53
  cancel: () => void;
@@ -65,7 +55,7 @@ interface GithubAuthScope extends Record<string, unknown> {
65
55
  }
66
56
 
67
57
  /** Put the code up. The handle's `ready` resolves once the dialog is showing. */
68
- export function openGithubAuthSurface(options: GithubAuthSurfaceOptions): GithubAuthSurfaceHandle {
58
+ export function openGithubAuthSurface(options: GithubAuthSurfaceOptions): DialogLayerHandle {
69
59
  const slot = document.createElement("div");
70
60
  /* The layer is `pointer-events: none` so a click passes through it when nothing is up, and every
71
61
  slot in it turns them back on for its own content. `pointer-events` INHERITS, and the top layer
@@ -90,26 +80,32 @@ export function openGithubAuthSurface(options: GithubAuthSurfaceOptions): Github
90
80
  closed = true;
91
81
  options.onClosed();
92
82
  };
83
+ /* Read through a call, not the bare binding: `close()` can run while the mount is awaiting the
84
+ element, and a direct `closed` test after that `await` would be narrowed to the value the test
85
+ before it saw. */
86
+ const isClosed = (): boolean => closed;
93
87
 
94
- const scope = reactive<GithubAuthScope>({
88
+ const scope: GithubAuthScope = reactive<GithubAuthScope>({
95
89
  cancel: () => {
96
90
  options.onCancel();
97
91
  },
98
92
  closed: finish,
99
93
  userCode: options.userCode,
100
94
  verificationUri: options.verificationUri,
101
- }) as GithubAuthScope;
95
+ });
102
96
 
103
97
  let mounted: SurfaceHandle | null = null;
104
98
  const ready = mountSurface("github-auth", scope, slot).then(async (surface) => {
105
99
  mounted = surface;
100
+ /* SAFETY: `github-auth.json`'s root definition is a `jx-dialog` element, so the runtime
101
+ mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
106
102
  const element = surface.root as HTMLElement;
107
- if (closed) {
103
+ if (isClosed()) {
108
104
  surface.dispose();
109
105
  return element;
110
106
  }
111
107
  await whenReady(element);
112
- if (closed) {
108
+ if (isClosed()) {
113
109
  return element;
114
110
  }
115
111
  showModal(element);
@@ -125,7 +121,7 @@ export function openGithubAuthSurface(options: GithubAuthSurfaceOptions): Github
125
121
  const element = mounted?.root;
126
122
  if (element instanceof HTMLElement) {
127
123
  // The platform's close first, so focus goes back where it came from; then the document.
128
- closeDialog(element);
124
+ close(element);
129
125
  }
130
126
  // A mount that has not landed yet is disposed by `ready` when it does — `finish` tells it so.
131
127
  mounted?.dispose();
@@ -22,13 +22,12 @@
22
22
  import { reactive } from "../reactivity";
23
23
  import { mountSurface, registerSurface } from "../ui/surface";
24
24
  import { overlayRegion, REGION_ATTR } from "../ui/regions";
25
- import { close as closeDialog, showModal } from "@jxsuite/ui/behaviors/dialog";
25
+ import { close, showModal } from "@jxsuite/ui/behaviors/dialog";
26
26
  import { whenReady } from "./dialog";
27
27
  import githubPublishDoc from "./github-publish.json";
28
- import type { SurfaceHandle } from "../ui/surface";
29
- import type { JxDocument } from "@jxsuite/schema/types";
28
+ import type { DialogLayerHandle, SurfaceHandle } from "../ui/surface";
30
29
 
31
- registerSurface("github-publish", githubPublishDoc as unknown as JxDocument);
30
+ registerSurface("github-publish", githubPublishDoc);
32
31
 
33
32
  /**
34
33
  * What the dialog collects.
@@ -55,15 +54,7 @@ export interface GithubPublishSurfaceOptions {
55
54
  onClosed: () => void;
56
55
  }
57
56
 
58
- export interface GithubPublishSurfaceHandle {
59
- host: HTMLElement;
60
- /** Resolves with the `jx-dialog` element once it has rendered and been opened. */
61
- ready: Promise<HTMLElement>;
62
- /** Close the dialog (the platform restores focus) and dispose the document. Idempotent. */
63
- close: () => void;
64
- }
65
-
66
- interface GithubPublishScope extends Record<string, unknown> {
57
+ interface GithubPublishScope {
67
58
  name: string;
68
59
  description: string;
69
60
  isPrivate: boolean;
@@ -76,9 +67,7 @@ interface GithubPublishScope extends Record<string, unknown> {
76
67
  }
77
68
 
78
69
  /** Open the dialog. The handle's `ready` resolves once it is showing. */
79
- export function openGithubPublishSurface(
80
- options: GithubPublishSurfaceOptions,
81
- ): GithubPublishSurfaceHandle {
70
+ export function openGithubPublishSurface(options: GithubPublishSurfaceOptions): DialogLayerHandle {
82
71
  const slot = document.createElement("div");
83
72
  /* The layer is `pointer-events: none` so a click passes through it when nothing is up, and every
84
73
  slot in it turns them back on for its own content. */
@@ -100,8 +89,12 @@ export function openGithubPublishSurface(
100
89
  closed = true;
101
90
  options.onClosed();
102
91
  };
92
+ /* Read through a call, not the bare binding: `close()` can run while the mount is awaiting the
93
+ element, and a direct `closed` test after that `await` would be narrowed to the value the test
94
+ before it saw. */
95
+ const isClosed = (): boolean => closed;
103
96
 
104
- const scope = reactive<GithubPublishScope>({
97
+ const scope: GithubPublishScope = reactive<GithubPublishScope>({
105
98
  cancel: () => {
106
99
  options.onCancel();
107
100
  },
@@ -125,13 +118,15 @@ export function openGithubPublishSurface(
125
118
  setPrivate: (value) => {
126
119
  scope.isPrivate = value;
127
120
  },
128
- }) as GithubPublishScope;
121
+ });
129
122
 
130
123
  let mounted: SurfaceHandle | null = null;
131
124
  const ready = mountSurface("github-publish", scope, slot).then(async (surface) => {
132
125
  mounted = surface;
126
+ /* SAFETY: `github-publish.json`'s root definition is a `jx-dialog` element, so the runtime
127
+ mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
133
128
  const element = surface.root as HTMLElement;
134
- if (closed) {
129
+ if (isClosed()) {
135
130
  surface.dispose();
136
131
  return element;
137
132
  }
@@ -140,14 +135,14 @@ export function openGithubPublishSurface(
140
135
  `<dialog>` to open — the body is all there, correctly styled, and never shows. Shared with
141
136
  `openDialogSurface` and `openAboutSurface` rather than reimplemented. */
142
137
  await whenReady(element);
143
- if (closed) {
138
+ if (isClosed()) {
144
139
  return element;
145
140
  }
146
141
  showModal(element);
147
142
  return element;
148
143
  });
149
144
 
150
- const handle: GithubPublishSurfaceHandle = {
145
+ const handle: DialogLayerHandle = {
151
146
  close() {
152
147
  if (closed) {
153
148
  return;
@@ -155,7 +150,7 @@ export function openGithubPublishSurface(
155
150
  const element = mounted?.root;
156
151
  if (element instanceof HTMLElement) {
157
152
  // The platform's close first, so focus goes back where it came from; then the document.
158
- closeDialog(element);
153
+ close(element);
159
154
  }
160
155
  mounted?.dispose();
161
156
  mounted = null;
@@ -15,25 +15,21 @@
15
15
  * @docs studio/editing/grid
16
16
  */
17
17
 
18
+ import { isString } from "@jxsuite/schema/guards";
18
19
  import { reactive } from "../reactivity";
19
20
  import { openPopoverSurface } from "../ui/popover-surface";
20
21
  import { registerSurface } from "../ui/surface";
21
22
  import gridCellDoc from "./grid-cell.json";
22
- import type { JxDocument, JxElement } from "@jxsuite/schema/types";
23
+ import type { JxElement } from "@jxsuite/schema/types";
23
24
  import type { JxPath } from "@jxsuite/runtime/types";
24
- import type { PopoverSurfaceHandle } from "../ui/popover-surface";
25
+ import type { OpenPopoverSurfaceOptions, PopoverSurfaceHandle } from "../ui/popover-surface";
26
+ import type { SurfaceOption } from "../ui/surface";
25
27
 
26
- registerSurface("grid-cell", gridCellDoc as unknown as JxDocument);
28
+ registerSurface("grid-cell", gridCellDoc);
27
29
 
28
30
  /** The slot id, and so the panel's region: `overlay.popover:grid/cell`. */
29
31
  const SLOT = "grid/cell";
30
32
 
31
- /** One row of a relationship column's list. */
32
- export interface GridCellOption {
33
- value: string;
34
- label: string;
35
- }
36
-
37
33
  /** Everything the panel draws. */
38
34
  export interface GridCellView {
39
35
  x: number;
@@ -45,7 +41,7 @@ export interface GridCellView {
45
41
  /** "Entries of “post”", when the column names a target type. */
46
42
  hint: string;
47
43
  hintState: "hidden" | "shown";
48
- options: GridCellOption[];
44
+ options: SurfaceOption[];
49
45
  /** What the list holds; empty when the current value is not one of its rows. */
50
46
  value: string;
51
47
  /** What the free-text field holds: the current value when no row matches it. */
@@ -62,28 +58,26 @@ export interface GridCellSurfaceOptions {
62
58
  dismissed?: () => void;
63
59
  }
64
60
 
65
- export type GridCellSurfaceHandle = PopoverSurfaceHandle;
66
-
67
- interface GridCellScope extends Record<string, unknown>, GridCellView {
61
+ interface GridCellScope extends GridCellView {
68
62
  pick: (value: string) => void;
69
63
  done: () => void;
70
64
  }
71
65
 
72
66
  /** The `part` a node's definition carries, or "" for a text node or an unmarked element. */
73
67
  function partOf(def: JxElement | string): string {
74
- const part = typeof def === "string" ? undefined : def.attributes?.["part"];
75
- return typeof part === "string" ? part : "";
68
+ const part = isString(def) ? undefined : def.attributes?.["part"];
69
+ return isString(part) ? part : "";
76
70
  }
77
71
 
78
72
  /**
79
73
  * Open the cell value picker.
80
74
  *
81
75
  * @param {GridCellSurfaceOptions} options
82
- * @returns {GridCellSurfaceHandle}
76
+ * @returns {PopoverSurfaceHandle}
83
77
  */
84
- export function openGridCellSurface(options: GridCellSurfaceOptions): GridCellSurfaceHandle {
78
+ export function openGridCellSurface(options: GridCellSurfaceOptions): PopoverSurfaceHandle {
85
79
  const { view } = options;
86
- const scope = reactive<GridCellScope>({
80
+ const scope: GridCellScope = reactive<GridCellScope>({
87
81
  custom: view.custom,
88
82
  done: () => {
89
83
  handle.close();
@@ -98,23 +92,28 @@ export function openGridCellSurface(options: GridCellSurfaceOptions): GridCellSu
98
92
  value: view.value,
99
93
  x: view.x,
100
94
  y: view.y,
101
- }) as GridCellScope;
95
+ });
102
96
 
103
- const handle = openPopoverSurface({
97
+ const popover: OpenPopoverSurfaceOptions<GridCellScope> = {
104
98
  anchor: null,
105
99
  name: "grid-cell",
106
100
  scope,
107
101
  slot: SLOT,
108
- ...(options.dismissed ? { onDismissed: options.dismissed } : {}),
109
- ...(options.island
110
- ? {
111
- onNodeCreated: (element: HTMLElement | Text, _path: JxPath, def: JxElement | string) => {
112
- if (partOf(def) === "picker-host" && element instanceof HTMLElement) {
113
- options.island?.(element);
114
- }
115
- },
116
- }
117
- : {}),
118
- });
102
+ };
103
+ if (options.dismissed) {
104
+ popover.onDismissed = options.dismissed;
105
+ }
106
+ if (options.island) {
107
+ popover.onNodeCreated = (
108
+ element: HTMLElement | Text,
109
+ _path: JxPath,
110
+ def: JxElement | string,
111
+ ) => {
112
+ if (partOf(def) === "picker-host" && element instanceof HTMLElement) {
113
+ options.island?.(element);
114
+ }
115
+ };
116
+ }
117
+ const handle = openPopoverSurface(popover);
119
118
  return handle;
120
119
  }
@@ -19,16 +19,9 @@
19
19
  import { reactive } from "../reactivity";
20
20
  import { mountSurface, registerSurface } from "../ui/surface";
21
21
  import gridOpenDoc from "./grid-open.json";
22
- import type { JxDocument } from "@jxsuite/schema/types";
23
- import type { SurfaceHandle } from "../ui/surface";
22
+ import type { SurfaceAction, SurfaceHandle } from "../ui/surface";
24
23
 
25
- registerSurface("grid-open", gridOpenDoc as unknown as JxDocument);
26
-
27
- /** One openable source. The id is opaque here: only the flow knows what it names. */
28
- export interface GridSourceRow {
29
- id: string;
30
- label: string;
31
- }
24
+ registerSurface("grid-open", gridOpenDoc);
32
25
 
33
26
  /** One origin of sources — the project itself, or one connection. */
34
27
  export interface GridSourceGroup {
@@ -36,7 +29,7 @@ export interface GridSourceGroup {
36
29
  key: string;
37
30
  title: string;
38
31
  state: "listed" | "empty";
39
- rows: GridSourceRow[];
32
+ rows: SurfaceAction[];
40
33
  /** Why the group is empty, in a sentence. Empty when it is not. */
41
34
  emptyMessage: string;
42
35
  }
@@ -47,7 +40,7 @@ export interface GridOpenSurfaceHandle {
47
40
  dispose: () => void;
48
41
  }
49
42
 
50
- interface GridOpenScope extends Record<string, unknown> {
43
+ interface GridOpenScope {
51
44
  groups: GridSourceGroup[];
52
45
  open: (id: string) => void;
53
46
  }
@@ -65,16 +58,19 @@ export function mountGridOpenSurface(
65
58
  groups: GridSourceGroup[],
66
59
  open: (id: string) => void,
67
60
  ): GridOpenSurfaceHandle {
68
- const scope = reactive<GridOpenScope>({ groups, open }) as GridOpenScope;
61
+ const scope: GridOpenScope = reactive<GridOpenScope>({ groups, open });
69
62
  let mounted: SurfaceHandle | null = null;
70
63
  let disposed = false;
71
64
  const ready = mountSurface("grid-open", scope, host).then((surface) => {
65
+ /* SAFETY: `grid-open.json`'s root definition is a `div` element, so the runtime mounts an
66
+ HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
67
+ const root = surface.root as HTMLElement;
72
68
  if (disposed) {
73
69
  surface.dispose();
74
- return surface.root as HTMLElement;
70
+ return root;
75
71
  }
76
72
  mounted = surface;
77
- return surface.root as HTMLElement;
73
+ return root;
78
74
  });
79
75
  return {
80
76
  dispose() {
@@ -25,13 +25,14 @@
25
25
  * @docs studio/data/grid
26
26
  */
27
27
 
28
+ import { isString } from "@jxsuite/schema/guards";
28
29
  import { reactive } from "../reactivity";
29
30
  import { mountSurface, registerSurface } from "../ui/surface";
30
31
  import gridPanelDoc from "./grid-panel.json";
31
- import type { JxDocument, JxElement } from "@jxsuite/schema/types";
32
+ import type { JxElement } from "@jxsuite/schema/types";
32
33
  import type { SurfaceHandle } from "../ui/surface";
33
34
 
34
- registerSurface("grid-panel", gridPanelDoc as unknown as JxDocument);
35
+ registerSurface("grid-panel", gridPanelDoc);
35
36
 
36
37
  /** Everything the frame draws, as one value. Every field is already a string or a boolean. */
37
38
  export interface GridPanelView {
@@ -98,7 +99,7 @@ export interface GridPanelSurfaceHandle {
98
99
  }
99
100
 
100
101
  /** The scope the document reads: {@link GridPanelView} plus the actions its controls call. */
101
- interface GridPanelScope extends Record<string, unknown>, GridPanelView, GridPanelActions {}
102
+ interface GridPanelScope extends GridPanelView, GridPanelActions {}
102
103
 
103
104
  /** Write a projection into the scope. */
104
105
  function project(scope: GridPanelScope, view: GridPanelView): void {
@@ -124,8 +125,8 @@ function project(scope: GridPanelScope, view: GridPanelView): void {
124
125
 
125
126
  /** The `part` a node's definition carries, or "" for a text node or an unmarked element. */
126
127
  function partOf(def: JxElement | string): string {
127
- const part = typeof def === "string" ? undefined : def.attributes?.["part"];
128
- return typeof part === "string" ? part : "";
128
+ const part = isString(def) ? undefined : def.attributes?.["part"];
129
+ return isString(part) ? part : "";
129
130
  }
130
131
 
131
132
  /**
@@ -142,7 +143,7 @@ export function mountGridPanelSurface(
142
143
  actions: GridPanelActions,
143
144
  ): GridPanelSurfaceHandle {
144
145
  host.replaceChildren();
145
- const scope = reactive<GridPanelScope>({
146
+ const scope: GridPanelScope = reactive<GridPanelScope>({
146
147
  addRow: actions.addRow,
147
148
  canDelete: false,
148
149
  canInsert: false,
@@ -172,7 +173,7 @@ export function mountGridPanelSurface(
172
173
  setFilter: actions.setFilter,
173
174
  view: "grid",
174
175
  viewLabel: "View",
175
- }) as GridPanelScope;
176
+ });
176
177
  project(scope, view);
177
178
 
178
179
  let mounted: SurfaceHandle | null = null;
@@ -186,12 +187,15 @@ export function mountGridPanelSurface(
186
187
  }
187
188
  },
188
189
  }).then((surface) => {
190
+ /* SAFETY: `grid-panel.json`'s root definition is a `div` element, so the runtime mounts an
191
+ HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
192
+ const root = surface.root as HTMLElement;
189
193
  if (disposed) {
190
194
  surface.dispose();
191
- return surface.root as HTMLElement;
195
+ return root;
192
196
  }
193
197
  mounted = surface;
194
- return surface.root as HTMLElement;
198
+ return root;
195
199
  });
196
200
 
197
201
  return {
@@ -15,10 +15,9 @@ import { reactive } from "../reactivity";
15
15
  import { openPopoverSurface } from "../ui/popover-surface";
16
16
  import { registerSurface } from "../ui/surface";
17
17
  import gridReplaceDoc from "./grid-replace.json";
18
- import type { JxDocument } from "@jxsuite/schema/types";
19
- import type { PopoverSurfaceHandle } from "../ui/popover-surface";
18
+ import type { OpenPopoverSurfaceOptions, PopoverSurfaceHandle } from "../ui/popover-surface";
20
19
 
21
- registerSurface("grid-replace", gridReplaceDoc as unknown as JxDocument);
20
+ registerSurface("grid-replace", gridReplaceDoc);
22
21
 
23
22
  /** The slot id, and so the panel's region: `overlay.popover:grid/replace`. */
24
23
  const SLOT = "grid/replace";
@@ -31,9 +30,7 @@ export interface GridReplaceActions {
31
30
  dismissed?: () => void;
32
31
  }
33
32
 
34
- export type GridReplaceSurfaceHandle = PopoverSurfaceHandle;
35
-
36
- interface GridReplaceScope extends Record<string, unknown> {
33
+ interface GridReplaceScope {
37
34
  x: number;
38
35
  y: number;
39
36
  find: string;
@@ -50,14 +47,14 @@ interface GridReplaceScope extends Record<string, unknown> {
50
47
  * @param {{ x: number; y: number }} at - Where it opens, in viewport pixels
51
48
  * @param {GridReplaceActions} actions - What each press does
52
49
  * @param {HTMLElement | null} anchor - The toolbar button it hangs from
53
- * @returns {GridReplaceSurfaceHandle}
50
+ * @returns {PopoverSurfaceHandle}
54
51
  */
55
52
  export function openGridReplaceSurface(
56
53
  at: { x: number; y: number },
57
54
  actions: GridReplaceActions,
58
55
  anchor: HTMLElement | null,
59
- ): GridReplaceSurfaceHandle {
60
- const scope = reactive<GridReplaceScope>({
56
+ ): PopoverSurfaceHandle {
57
+ const scope: GridReplaceScope = reactive<GridReplaceScope>({
61
58
  cancel: () => {
62
59
  handle.close();
63
60
  actions.dismissed?.();
@@ -75,15 +72,18 @@ export function openGridReplaceSurface(
75
72
  },
76
73
  x: at.x,
77
74
  y: at.y,
78
- }) as GridReplaceScope;
75
+ });
79
76
 
80
- const handle = openPopoverSurface({
77
+ const popover: OpenPopoverSurfaceOptions<GridReplaceScope> = {
81
78
  anchor,
82
79
  name: "grid-replace",
83
80
  scope,
84
81
  slot: SLOT,
85
- ...(actions.dismissed ? { onDismissed: actions.dismissed } : {}),
86
- });
82
+ };
83
+ if (actions.dismissed) {
84
+ popover.onDismissed = actions.dismissed;
85
+ }
86
+ const handle = openPopoverSurface(popover);
87
87
 
88
88
  return handle;
89
89
  }
@@ -20,10 +20,10 @@ import { reactive } from "../reactivity";
20
20
  import { openPopoverSurface } from "../ui/popover-surface";
21
21
  import { registerSurface } from "../ui/surface";
22
22
  import gridViewsDoc from "./grid-views.json";
23
- import type { JxDocument } from "@jxsuite/schema/types";
24
- import type { PopoverSurfaceHandle } from "../ui/popover-surface";
23
+ import type { OpenPopoverSurfaceOptions, PopoverSurfaceHandle } from "../ui/popover-surface";
24
+ import type { SurfaceOption } from "../ui/surface";
25
25
 
26
- registerSurface("grid-views", gridViewsDoc as unknown as JxDocument);
26
+ registerSurface("grid-views", gridViewsDoc);
27
27
 
28
28
  /** The slot id, and so the panel's region: `overlay.popover:grid/views`. */
29
29
  const SLOT = "grid/views";
@@ -41,12 +41,6 @@ export interface GridSavedViewRow {
41
41
  deleteLabel: string;
42
42
  }
43
43
 
44
- /** A closed list of choices, in the shape the kit's select reads. */
45
- export interface GridSelectOption {
46
- value: string;
47
- label: string;
48
- }
49
-
50
44
  /** One column's visibility. */
51
45
  export interface GridColumnToggle {
52
46
  field: string;
@@ -65,9 +59,9 @@ export interface GridViewsView {
65
59
  saveLabel: string;
66
60
  columns: GridColumnToggle[];
67
61
  /** Every column, plus the "Source order" row that clears the sort. */
68
- fieldOptions: GridSelectOption[];
69
- dirOptions: GridSelectOption[];
70
- groupOptions: GridSelectOption[];
62
+ fieldOptions: SurfaceOption[];
63
+ dirOptions: SurfaceOption[];
64
+ groupOptions: SurfaceOption[];
71
65
  sortField: string;
72
66
  sortDir: string;
73
67
  /** There is no sort to redirect, so the direction control is off rather than lying. */
@@ -93,7 +87,7 @@ export interface GridViewsSurfaceHandle extends PopoverSurfaceHandle {
93
87
  update: (view: GridViewsView) => void;
94
88
  }
95
89
 
96
- interface GridViewsScope extends Record<string, unknown>, GridViewsView, GridViewsActions {}
90
+ interface GridViewsScope extends GridViewsView, GridViewsActions {}
97
91
 
98
92
  /** Write a projection into the scope. */
99
93
  function project(scope: GridViewsScope, view: GridViewsView): void {
@@ -125,7 +119,7 @@ export function openGridViewsSurface(
125
119
  actions: GridViewsActions,
126
120
  anchor: HTMLElement | null,
127
121
  ): GridViewsSurfaceHandle {
128
- const scope = reactive<GridViewsScope>({
122
+ const scope: GridViewsScope = reactive<GridViewsScope>({
129
123
  applyView: actions.applyView,
130
124
  columns: [],
131
125
  deleteView: actions.deleteView,
@@ -147,16 +141,19 @@ export function openGridViewsSurface(
147
141
  viewsState: "empty",
148
142
  x: 0,
149
143
  y: 0,
150
- }) as GridViewsScope;
144
+ });
151
145
  project(scope, view);
152
146
 
153
- const handle = openPopoverSurface({
147
+ const popover: OpenPopoverSurfaceOptions<GridViewsScope> = {
154
148
  anchor,
155
149
  name: "grid-views",
156
150
  scope,
157
151
  slot: SLOT,
158
- ...(actions.dismissed ? { onDismissed: actions.dismissed } : {}),
159
- });
152
+ };
153
+ if (actions.dismissed) {
154
+ popover.onDismissed = actions.dismissed;
155
+ }
156
+ const handle = openPopoverSurface(popover);
160
157
 
161
158
  return {
162
159
  close: handle.close,