@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.
- package/README.md +5 -5
- package/dist/chunks/2020-5wtzce5g.js +4 -0
- package/dist/chunks/{action-group-2mqby73c.js → action-group-4aan7g6g.js} +3 -3
- package/dist/chunks/adapter-5tphg7xe.js +4 -0
- package/dist/chunks/add-new-flow-psym14sn.js +4 -0
- package/dist/chunks/cf-account-picker-haqazq5r.js +4 -0
- package/dist/chunks/cf-settings-h2wrh6hq.js +4 -0
- package/dist/chunks/color-area-6rbra5dy.js +4 -0
- package/dist/chunks/color-field-gy56c94g.js +4 -0
- package/dist/chunks/color-m7r1vk54.js +4 -0
- package/dist/chunks/color-slider-sqqdyf6c.js +4 -0
- package/dist/chunks/combobox-72h32ejk.js +4 -0
- package/dist/chunks/components-r22xca09.js +4 -0
- package/dist/chunks/content-source-mmppmcyg.js +4 -0
- package/dist/chunks/convert-to-repeater-he70fc2b.js +4 -0
- package/dist/chunks/dialog-c4x05vyx.js +4 -0
- package/dist/chunks/editor-ccd9jwsa.js +4 -0
- package/dist/chunks/entry-commands-6qxz9e8p.js +4 -0
- package/dist/chunks/extension-sections-0egb88dm.js +4 -0
- package/dist/chunks/file-ops-qnab36ek.js +4 -0
- package/dist/chunks/files-rcn56qvm.js +4 -0
- package/dist/chunks/format-host-yxz0kjjs.js +4 -0
- package/dist/chunks/fs-events-d1qxq4z4.js +4 -0
- package/dist/chunks/grid-open-4z1g062t.js +4 -0
- package/dist/chunks/grid-view-qg1b5eqx.js +51 -0
- package/dist/chunks/icons-63bjtbs7.js +4 -0
- package/dist/chunks/iframe-entry-2zggzajv.js +5 -0
- package/dist/chunks/iframe-entry-76j8vwwx.js +5 -0
- package/dist/chunks/iframe-entry-99nr5zfb.js +5 -0
- package/dist/chunks/iframe-entry-pkgmcgp0.js +5 -0
- package/dist/chunks/iframe-host-ssv7kyj0.js +4 -0
- package/dist/chunks/{index-2veqmnhr.js → index-32eqzv1k.js} +3 -3
- package/dist/chunks/index-f0jn7nnp.js +4 -0
- package/dist/chunks/{javascript-8nbvs12s.js → javascript-pjp734q4.js} +3 -3
- package/dist/chunks/jsonMode-njkvsa02.js +13 -0
- package/dist/chunks/jx-validate-ttasrbh7.js +4 -0
- package/dist/chunks/layers-bgyr11tr.js +4 -0
- package/dist/chunks/layers-panel-7ez66zeq.js +4 -0
- package/dist/chunks/listbox-c421cf8c.js +4 -0
- package/dist/chunks/lit-html-v9gh687x.js +4 -0
- package/dist/chunks/media-library-sq468wts.js +4 -0
- package/dist/chunks/media-picker-shfe59pt.js +4 -0
- package/dist/chunks/menu-bdpzbfvs.js +4 -0
- package/dist/chunks/monaco-binding-vq1hgnn0.js +4 -0
- package/dist/chunks/monaco-buffer-3afgwvbp.js +4 -0
- package/dist/chunks/monaco-setup-xrd2cbkp.js +4 -0
- package/dist/chunks/notify-kzrjr3fv.js +4 -0
- package/dist/chunks/number-field-y62xq0ty.js +4 -0
- package/dist/chunks/parse-v77xtwv7.js +4 -0
- package/dist/chunks/platform-7v4rtd7m.js +4 -0
- package/dist/chunks/popover-b89sfej7.js +4 -0
- package/dist/chunks/publish-panel-2z9gw8ee.js +4 -0
- package/dist/chunks/publish-quick-qx2455cj.js +4 -0
- package/dist/chunks/publish-workspace-wrc1dgwx.js +4 -0
- package/dist/chunks/quick-search-n0t0eqxb.js +4 -0
- package/dist/chunks/references-9547rg5s.js +4 -0
- package/dist/chunks/right-panel-wsgnr9pn.js +4 -0
- package/dist/chunks/select-rzds841e.js +4 -0
- package/dist/chunks/source-control-kwktr9y6.js +4 -0
- package/dist/chunks/split-c9zfdgxf.js +4 -0
- package/dist/chunks/studio-03ct6yfv.js +9 -0
- package/dist/chunks/studio-07rcfje3.js +5 -0
- package/dist/chunks/studio-3e54qh39.js +7 -0
- package/dist/chunks/studio-3exxhz5g.js +5 -0
- package/dist/chunks/studio-3q40e3rj.js +5 -0
- package/dist/chunks/studio-3qeh9t0h.js +6 -0
- package/dist/chunks/studio-3qqjeep5.js +6 -0
- package/dist/chunks/studio-43sd2mam.js +4 -0
- package/dist/chunks/studio-4hp8pkyt.js +5 -0
- package/dist/chunks/studio-58xg6j2q.js +9 -0
- package/dist/chunks/studio-5g0rprdt.js +7 -0
- package/dist/chunks/studio-6m380wp7.js +5 -0
- package/dist/chunks/studio-80jyh1xh.js +4 -0
- package/dist/chunks/studio-83mk4bgg.js +9 -0
- package/dist/chunks/{studio-kggey1jt.js → studio-881z1xrx.js} +4 -4
- package/dist/chunks/studio-8m0y2qe7.js +5 -0
- package/dist/chunks/studio-8tr6cfrc.js +5 -0
- package/dist/chunks/studio-8vcvfs7r.js +6 -0
- package/dist/chunks/studio-9tmebf0s.js +5 -0
- package/dist/chunks/studio-a2bvaptz.js +5 -0
- package/dist/chunks/studio-b7y5mr30.js +5 -0
- package/dist/chunks/studio-bavb31r0.js +5 -0
- package/dist/chunks/studio-bbe4c90a.js +5 -0
- package/dist/chunks/studio-c05wdnt3.js +5 -0
- package/dist/chunks/studio-ccv2svc6.js +5 -0
- package/dist/chunks/studio-d5grtb9e.js +16 -0
- package/dist/chunks/studio-df0baea9.js +5 -0
- package/dist/chunks/studio-dgk4dqtx.js +7 -0
- package/dist/chunks/studio-e1g64q43.js +5 -0
- package/dist/chunks/studio-ed1hp6zf.js +6 -0
- package/dist/chunks/studio-ed3xx40h.js +7 -0
- package/dist/chunks/studio-f14e1zdj.js +5 -0
- package/dist/chunks/studio-fbhxxc5f.js +5 -0
- package/dist/chunks/studio-fyh0jc96.js +5 -0
- package/dist/chunks/studio-gcxk20n7.js +5 -0
- package/dist/chunks/studio-jaaz8ce9.js +5 -0
- package/dist/chunks/{studio-8grwxtqk.js → studio-jcnsdaep.js} +4 -4
- package/dist/chunks/studio-jsgf2q5k.js +7 -0
- package/dist/chunks/{studio-1q1sh2ax.js → studio-k3xxbagr.js} +3 -3
- package/dist/chunks/studio-k7evxqh4.js +5 -0
- package/dist/chunks/studio-kt3pjkwd.js +5 -0
- package/dist/chunks/studio-m8g16bgz.js +5 -0
- package/dist/chunks/studio-mn0476ag.js +5 -0
- package/dist/chunks/studio-mx1smyq0.js +5 -0
- package/dist/chunks/studio-n0c5h6mf.js +5 -0
- package/dist/chunks/{studio-rv11kfwa.js → studio-nh6d342n.js} +7 -7
- package/dist/chunks/studio-nqxqf8p2.js +4 -0
- package/dist/chunks/studio-p4nrkvqr.js +5 -0
- package/dist/chunks/{studio-h46vtzk8.js → studio-pbxa5fpc.js} +4 -4
- package/dist/chunks/studio-pgmvdv7z.js +7 -0
- package/dist/chunks/studio-ph84avkf.js +5 -0
- package/dist/chunks/{studio-wszjyh0j.js → studio-q0mvbaq6.js} +4 -4
- package/dist/chunks/studio-q0tccd43.js +5 -0
- package/dist/chunks/studio-q7rtx6zq.js +14 -0
- package/dist/chunks/{studio-pre0skq6.js → studio-qgh13jtz.js} +4 -4
- package/dist/chunks/studio-qmn1xc24.js +5 -0
- package/dist/chunks/studio-qwdqwkj0.js +5 -0
- package/dist/chunks/{studio-t6b6qe31.js → studio-r5qy30vx.js} +4 -4
- package/dist/chunks/studio-rj9eamf8.js +5 -0
- package/dist/chunks/studio-rptgsk96.js +5 -0
- package/dist/chunks/studio-rthyg42z.js +928 -0
- package/dist/chunks/studio-s19tp1xr.js +5 -0
- package/dist/chunks/studio-s32578pn.js +5 -0
- package/dist/chunks/studio-svb7yyve.js +5 -0
- package/dist/chunks/studio-syreb644.js +5 -0
- package/dist/chunks/studio-tf9jryb1.js +10 -0
- package/dist/chunks/studio-tfkznv39.js +5 -0
- package/dist/chunks/studio-tft6r105.js +5 -0
- package/dist/chunks/studio-txf2kysx.js +5 -0
- package/dist/chunks/studio-v8867ddv.js +12 -0
- package/dist/chunks/studio-vxq7fcvv.js +5 -0
- package/dist/chunks/studio-w4rz9hdk.js +5 -0
- package/dist/chunks/studio-wbcjbhy1.js +9 -0
- package/dist/chunks/studio-wc649wss.js +5 -0
- package/dist/chunks/studio-wys23mxz.js +5 -0
- package/dist/chunks/studio-x1x167jh.js +5 -0
- package/dist/chunks/studio-x9hsze61.js +5 -0
- package/dist/chunks/studio-y0n7yxea.js +9 -0
- package/dist/chunks/studio-y3ahhdpx.js +5 -0
- package/dist/chunks/studio-z97c48fk.js +5 -0
- package/dist/chunks/studio-zat62m0c.js +5 -0
- package/dist/chunks/studio-zcd2e7yz.js +5 -0
- package/dist/chunks/studio-zz9qe3rw.js +64 -0
- package/dist/chunks/swatch-group-ewh24n1f.js +4 -0
- package/dist/chunks/tabs-f5cw3tgp.js +4 -0
- package/dist/chunks/textfield-wewc8rq2.js +4 -0
- package/dist/chunks/toast-1gv0h53h.js +4 -0
- package/dist/chunks/toast-host-1yg5ar8d.js +4 -0
- package/dist/chunks/{toolbar-2nnzqhrj.js → toolbar-44cm5cta.js} +3 -3
- package/dist/chunks/tooltip-yypz28gq.js +4 -0
- package/dist/chunks/tree-9xa4hm7n.js +4 -0
- package/dist/chunks/tsMode-epyfz1hv.js +14 -0
- package/dist/chunks/workspace-dz7nxfhv.js +4 -0
- package/dist/chunks/workspace-home-xsd7hkjw.js +4 -0
- package/dist/chunks/ws-client-bv552sfx.js +4 -0
- package/dist/iframe-entry.js +20 -16
- package/dist/manifest.json +77 -63
- package/dist/studio.js +106 -107
- package/dist/workers/ts.worker.js +3 -3
- package/package.json +17 -16
- package/src/about/about-modal.ts +4 -3
- package/src/account/action-flow.ts +45 -38
- package/src/account-status.ts +7 -2
- package/src/browse/component-examples.ts +272 -0
- package/src/browse/library-commands.ts +64 -104
- package/src/browse/library-layouts.ts +270 -53
- package/src/browse/library-model.ts +194 -134
- package/src/browse/library-pane.ts +748 -440
- package/src/browse/library-preview.ts +161 -26
- package/src/browse/library-source.ts +308 -41
- package/src/browse/preview-root.ts +78 -0
- package/src/browse/preview-style.ts +155 -0
- package/src/canvas/asset-refs.ts +40 -10
- package/src/canvas/asset-resolve.ts +19 -23
- package/src/canvas/canvas-helpers.ts +7 -6
- package/src/canvas/canvas-live-render.ts +260 -77
- package/src/canvas/canvas-origin.ts +37 -12
- package/src/canvas/canvas-page-context.ts +112 -0
- package/src/canvas/canvas-patcher.ts +30 -30
- package/src/canvas/canvas-perf.ts +11 -5
- package/src/canvas/canvas-render.ts +175 -148
- package/src/canvas/canvas-surface.ts +5 -3
- package/src/canvas/canvas-utils.ts +147 -61
- package/src/canvas/dialog-path.ts +9 -4
- package/src/canvas/dialog-state.ts +1 -2
- package/src/canvas/diff-marks.ts +9 -16
- package/src/canvas/diff-toolbar.ts +8 -7
- package/src/canvas/edit-width-drag.ts +4 -1
- package/src/canvas/edit-width.ts +1 -3
- package/src/canvas/iframe-channel.ts +27 -13
- package/src/canvas/iframe-drop.ts +120 -12
- package/src/canvas/iframe-editable-root.ts +29 -16
- package/src/canvas/iframe-entry.ts +104 -75
- package/src/canvas/iframe-eval.ts +73 -49
- package/src/canvas/iframe-host.ts +269 -158
- package/src/canvas/iframe-inline-edit.ts +49 -30
- package/src/canvas/iframe-insert.ts +5 -4
- package/src/canvas/iframe-interaction.ts +30 -25
- package/src/canvas/iframe-keys.ts +11 -0
- package/src/canvas/iframe-overlay.ts +1 -1
- package/src/canvas/iframe-patch.ts +25 -21
- package/src/canvas/iframe-position.ts +12 -6
- package/src/canvas/iframe-protocol.ts +36 -21
- package/src/canvas/iframe-render.ts +84 -35
- package/src/canvas/iframe-slash.ts +24 -11
- package/src/canvas/iframe-subtree.ts +10 -3
- package/src/canvas/npm-modules.ts +22 -0
- package/src/canvas/path-mapping.ts +19 -12
- package/src/canvas/popover-path.ts +7 -3
- package/src/canvas/popover-state.ts +1 -2
- package/src/canvas/preview-navigate.ts +16 -0
- package/src/canvas/repeater-sources.ts +200 -0
- package/src/canvas/serialize-scope.ts +13 -5
- package/src/canvas/stage-scrollbar.ts +7 -2
- package/src/canvas/surface-registry.ts +27 -3
- package/src/collab/collab-commands.ts +7 -2
- package/src/collab/collab-session.ts +84 -45
- package/src/collab/collab-state.ts +4 -3
- package/src/collab/monaco-binding.ts +16 -13
- package/src/collab/monaco-cursors.ts +5 -2
- package/src/commands/app-commands.ts +16 -6
- package/src/commands/budget.ts +13 -11
- package/src/commands/command-args.ts +103 -71
- package/src/commands/context.ts +55 -28
- package/src/commands/defaults.ts +69 -45
- package/src/commands/keymap.ts +56 -43
- package/src/commands/levels.ts +14 -8
- package/src/commands/live-context.ts +9 -7
- package/src/commands/reference.ts +2 -1
- package/src/commands/registry.ts +22 -11
- package/src/commands/run-reported.ts +15 -10
- package/src/component-props.ts +46 -30
- package/src/content/collection-match.ts +11 -9
- package/src/content/collection-pages.ts +412 -0
- package/src/content/content-collections.ts +270 -0
- package/src/content/draft-state.ts +4 -3
- package/src/content/entry-commands.ts +54 -62
- package/src/content/entry-editor.ts +137 -32
- package/src/content/entry-fields.ts +25 -8
- package/src/content/entry-inspector.ts +225 -0
- package/src/content/entry-model.ts +38 -15
- package/src/content/entry-open.ts +80 -0
- package/src/content/entry-summaries.ts +440 -0
- package/src/content/file-record-ids.ts +80 -0
- package/src/content/file-records.ts +125 -0
- package/src/content/page-summaries.ts +129 -0
- package/src/content/record-entry.ts +201 -0
- package/src/content/writing-banner.ts +177 -0
- package/src/create/add-new-commands.ts +185 -0
- package/src/create/add-new-flow.ts +1116 -0
- package/src/create/add-new.ts +1014 -0
- package/src/create/element-name.ts +121 -0
- package/src/editor/canvas-context-menu.ts +1 -2
- package/src/editor/canvas-slash-bridge.ts +3 -6
- package/src/editor/content-slice.ts +16 -14
- package/src/editor/context-menu.ts +35 -22
- package/src/editor/convert-targets.ts +30 -35
- package/src/editor/convert-to-component.ts +78 -48
- package/src/editor/convert-to-repeater.ts +34 -22
- package/src/editor/editable-tags.ts +17 -2
- package/src/editor/file-drop-action.ts +29 -22
- package/src/editor/inline-edit-apply.ts +79 -17
- package/src/editor/inline-edit.ts +76 -50
- package/src/editor/inline-format.ts +59 -56
- package/src/editor/inline-link.ts +40 -15
- package/src/editor/insert-component.ts +91 -0
- package/src/editor/insert-zone-action.ts +14 -5
- package/src/editor/merge-tags.ts +58 -19
- package/src/editor/repeater-scope.ts +39 -28
- package/src/editor/shortcuts.ts +76 -42
- package/src/editor/slash-menu.ts +52 -14
- package/src/files/asset-versions.ts +4 -4
- package/src/files/components.ts +89 -20
- package/src/files/elements.ts +5 -6
- package/src/files/file-ops.ts +92 -41
- package/src/files/files.ts +248 -239
- package/src/files/fs-events.ts +18 -7
- package/src/files/media-meta.ts +97 -2
- package/src/files/media-paths.ts +3 -0
- package/src/files/media-types.ts +55 -0
- package/src/files/media-upload.ts +209 -52
- package/src/files/new-file-name.ts +156 -0
- package/src/files/serialize-document.ts +15 -5
- package/src/format/constraints.ts +1 -1
- package/src/format/convert-file.ts +27 -13
- package/src/format/format-choices.ts +2 -1
- package/src/format/format-host.ts +91 -50
- package/src/github/github-auth-status.ts +27 -3
- package/src/github/github-auth.ts +21 -11
- package/src/github/github-publish.ts +28 -23
- package/src/grid/cell-editors.ts +46 -31
- package/src/grid/cell-popovers.ts +5 -3
- package/src/grid/edit-buffer.ts +10 -9
- package/src/grid/grid-controller.ts +25 -23
- package/src/grid/grid-layout.ts +21 -5
- package/src/grid/grid-open.ts +3 -33
- package/src/grid/grid-panel.ts +65 -6
- package/src/grid/grid-reveal.ts +34 -0
- package/src/grid/grid-source.ts +9 -31
- package/src/grid/grid-view.ts +45 -23
- package/src/grid/redirects-grid.ts +14 -5
- package/src/grid/redirects.ts +16 -14
- package/src/grid/schema-columns.ts +25 -19
- package/src/grid/sources/connector-source.ts +47 -20
- package/src/grid/sources/content-source.ts +100 -31
- package/src/grid/sources/csv-file-source.ts +2 -2
- package/src/grid/tabulator-tables.d.ts +61 -34
- package/src/hosting/document.ts +2 -2
- package/src/hosting/stage.ts +7 -7
- package/src/i18n/i18n-commands.ts +3 -3
- package/src/media/media-commands.ts +181 -0
- package/src/media/media-library-model.ts +232 -0
- package/src/media/media-library.ts +1283 -0
- package/src/media/media-pane.ts +51 -20
- package/src/new-project/add-repo-modal.ts +20 -19
- package/src/new-project/import-tab.ts +10 -14
- package/src/new-project/location-fields.ts +2 -1
- package/src/new-project/new-project-modal.ts +12 -9
- package/src/packages/jxsuite-update.ts +4 -3
- package/src/packages/pull-package-sync.ts +26 -25
- package/src/page-params.ts +97 -68
- package/src/panels/activity-panel.ts +38 -14
- package/src/panels/ai-chat/attached-context.ts +13 -7
- package/src/panels/ai-chat/chat-markdown.ts +8 -8
- package/src/panels/ai-chat/chat-view.ts +80 -73
- package/src/panels/ai-chat/composer.ts +30 -33
- package/src/panels/ai-chat/sessions-view.ts +1 -2
- package/src/panels/ai-panel.ts +23 -20
- package/src/panels/block-action-bar.ts +57 -46
- package/src/panels/bottom-dock.ts +5 -3
- package/src/panels/canvas-dnd-bridge.ts +36 -26
- package/src/panels/chat-panel.ts +6 -6
- package/src/panels/collections-panel.ts +306 -0
- package/src/panels/component-preview.ts +35 -13
- package/src/panels/data-explorer.ts +63 -26
- package/src/panels/data-grid.ts +18 -11
- package/src/panels/dnd.ts +115 -138
- package/src/panels/editors.ts +52 -21
- package/src/panels/elements-panel.ts +19 -5
- package/src/panels/empty-state.ts +2 -2
- package/src/panels/events-panel.ts +84 -69
- package/src/panels/formula-workspace.ts +78 -54
- package/src/panels/frontmatter-fields.ts +33 -28
- package/src/panels/git-diff-open.ts +10 -6
- package/src/panels/head-panel.ts +488 -202
- package/src/panels/i18n-panel.ts +20 -12
- package/src/panels/imports-panel.ts +25 -47
- package/src/panels/jump-bar.ts +75 -31
- package/src/panels/layers-panel.ts +130 -101
- package/src/panels/left-panel.ts +25 -11
- package/src/panels/navigator-panels.ts +23 -11
- package/src/panels/pane-context.ts +140 -49
- package/src/panels/pane-grid.ts +55 -26
- package/src/panels/panel-registry.ts +36 -46
- package/src/panels/properties-panel.ts +182 -124
- package/src/panels/quick-search.ts +53 -31
- package/src/panels/right-panel.ts +201 -45
- package/src/panels/seo-modal.ts +54 -125
- package/src/panels/settings-menu.ts +63 -61
- package/src/panels/settings-pane.ts +268 -162
- package/src/panels/signals-panel.ts +156 -135
- package/src/panels/site-model.ts +367 -0
- package/src/panels/site-panel.ts +638 -0
- package/src/panels/statement-editor.ts +230 -140
- package/src/panels/style-panel.ts +253 -206
- package/src/panels/style-utils.ts +114 -51
- package/src/panels/stylebook-doc.ts +195 -60
- package/src/panels/stylebook-layers-panel.ts +48 -89
- package/src/panels/stylebook-panel.ts +60 -27
- package/src/panels/styles-panel.ts +327 -0
- package/src/panels/tab-drop.ts +27 -11
- package/src/panels/tab-strip.ts +143 -49
- package/src/platform-errors.ts +57 -43
- package/src/platform.ts +59 -31
- package/src/platforms/cloud.ts +373 -176
- package/src/platforms/default-platform.ts +14 -8
- package/src/platforms/devserver.ts +180 -142
- package/src/platforms/read-batcher.ts +16 -8
- package/src/project-list.ts +2 -1
- package/src/publish/deploy-checklist.ts +20 -9
- package/src/publish/pages-service.ts +66 -27
- package/src/publish/publish-changes.ts +491 -0
- package/src/publish/publish-commands.ts +88 -22
- package/src/publish/publish-ids.ts +49 -0
- package/src/publish/publish-panel.ts +10 -6
- package/src/publish/publish-quick.ts +148 -0
- package/src/publish/publish-workspace.ts +926 -0
- package/src/publish/source-control.ts +907 -0
- package/src/recent-projects.ts +15 -8
- package/src/resize-edges.ts +26 -36
- package/src/services/a11y-report.ts +26 -19
- package/src/services/agent-seed.ts +23 -11
- package/src/services/ai-ask.ts +9 -12
- package/src/services/ai-command-tools.ts +68 -62
- package/src/services/ai-import-tools.ts +80 -67
- package/src/services/ai-models.ts +17 -13
- package/src/services/ai-project-tools.ts +68 -32
- package/src/services/ai-session-store.ts +19 -10
- package/src/services/ai-system-prompt.ts +46 -20
- package/src/services/ai-tools.ts +71 -27
- package/src/services/ai-write-report.ts +20 -12
- package/src/services/ai-writes.ts +4 -4
- package/src/services/automation.ts +74 -51
- package/src/services/cem-export.ts +149 -58
- package/src/services/cf-settings.ts +4 -4
- package/src/services/clock.ts +6 -1
- package/src/services/code-services.ts +37 -31
- package/src/services/connection.ts +2 -2
- package/src/services/context-manager.ts +14 -10
- package/src/services/context-resolver.ts +20 -8
- package/src/services/data-service.ts +19 -15
- package/src/services/directory-picker.ts +20 -14
- package/src/services/document-assistant.ts +39 -19
- package/src/services/gated-registry.ts +10 -6
- package/src/services/harness/chat-reducer.ts +23 -1
- package/src/services/import-client.ts +91 -38
- package/src/services/import-seed.ts +8 -2
- package/src/services/jx-validate.ts +28 -31
- package/src/services/live-preview.ts +0 -0
- package/src/services/live-surfaces.ts +6 -3
- package/src/services/model-uri.ts +10 -2
- package/src/services/module-preloads.ts +12 -8
- package/src/services/monaco-buffer.ts +43 -24
- package/src/services/monaco-lazy.ts +7 -8
- package/src/services/monaco-setup.ts +23 -16
- package/src/services/notify.ts +44 -17
- package/src/services/popover-report.ts +25 -10
- package/src/services/preview-eval.ts +20 -8
- package/src/services/profile.ts +13 -6
- package/src/services/project-path.ts +13 -10
- package/src/services/references.ts +0 -0
- package/src/services/render-critic.ts +29 -9
- package/src/services/settings/definitions.ts +25 -14
- package/src/services/settings/kernel.ts +13 -4
- package/src/services/settings/write-queue.ts +9 -9
- package/src/services/token-lint.ts +12 -10
- package/src/services/tool-executor.ts +17 -5
- package/src/services/tool-outcomes.ts +44 -24
- package/src/services/trusted-types.ts +24 -7
- package/src/settings/contexts-section.ts +11 -8
- package/src/settings/contributed-section.ts +128 -70
- package/src/settings/css-vars-editor.ts +119 -32
- package/src/settings/defs-editor.ts +38 -35
- package/src/settings/developer-panels.ts +43 -0
- package/src/settings/extension-rows.ts +16 -8
- package/src/settings/extension-sections.ts +42 -14
- package/src/settings/extensions-section.ts +4 -1
- package/src/settings/general-settings.ts +101 -28
- package/src/settings/locales-section.ts +20 -12
- package/src/settings/preferences-dialog.ts +17 -7
- package/src/settings/preferences-keymap.ts +7 -5
- package/src/settings/preferences-sections.ts +11 -5
- package/src/settings/project-sections.ts +28 -11
- package/src/settings/schema-field-ui.ts +12 -1
- package/src/settings/section-registry.ts +116 -11
- package/src/settings/settings-dialog.ts +192 -0
- package/src/settings/settings-document.ts +186 -166
- package/src/shell/tree.ts +6 -5
- package/src/shell.ts +536 -477
- package/src/site-context.ts +101 -32
- package/src/state.ts +68 -57
- package/src/store.ts +54 -34
- package/src/studio.ts +219 -116
- package/src/style/live-preview.ts +1 -1
- package/src/style/project-styles.ts +40 -7
- package/src/style/stylebook-specimens.ts +89 -0
- package/src/style/stylebook-target.ts +26 -0
- package/src/style/tag-inheritance.ts +105 -0
- package/src/style/token-ref.ts +5 -4
- package/src/style/variables-focus.ts +61 -0
- package/src/style/variables-view.ts +235 -0
- package/src/surfaces/about.ts +18 -19
- package/src/surfaces/add-new.json +1482 -0
- package/src/surfaces/add-new.ts +325 -0
- package/src/surfaces/add-repo.ts +17 -19
- package/src/surfaces/ai-chat.ts +33 -38
- package/src/surfaces/ai-credentials-form.ts +6 -16
- package/src/surfaces/ai-managed-connect.ts +3 -4
- package/src/surfaces/ai-model-picker.ts +3 -5
- package/src/surfaces/block-action-bar.ts +22 -11
- package/src/surfaces/boot-failure.json +4 -3
- package/src/surfaces/boot-failure.ts +4 -5
- package/src/surfaces/bottom-dock.json +1 -1
- package/src/surfaces/bottom-dock.ts +9 -18
- package/src/surfaces/canvas-stage.json +30 -19
- package/src/surfaces/canvas-stage.ts +17 -16
- package/src/surfaces/cf-account-picker.ts +17 -18
- package/src/surfaces/collections-panel.json +615 -0
- package/src/surfaces/collections-panel.ts +168 -0
- package/src/surfaces/commandbar.json +241 -96
- package/src/surfaces/commandbar.ts +145 -105
- package/src/surfaces/convert-repeater.ts +17 -19
- package/src/surfaces/data-actions.ts +9 -7
- package/src/surfaces/dialog.ts +26 -28
- package/src/surfaces/diff-toolbar.ts +9 -7
- package/src/surfaces/empty-state.json +1 -1
- package/src/surfaces/empty-state.ts +7 -10
- package/src/surfaces/entry-editor.json +136 -0
- package/src/surfaces/entry-editor.ts +35 -11
- package/src/surfaces/entry-inspector.json +371 -0
- package/src/surfaces/entry-inspector.ts +143 -0
- package/src/surfaces/expression-editor.ts +11 -25
- package/src/surfaces/files-panel.ts +27 -14
- package/src/surfaces/formula-palette.ts +4 -5
- package/src/surfaces/github-auth.ts +16 -20
- package/src/surfaces/github-publish.ts +17 -22
- package/src/surfaces/grid-cell.ts +30 -31
- package/src/surfaces/grid-open.ts +10 -14
- package/src/surfaces/grid-panel.ts +13 -9
- package/src/surfaces/grid-replace.ts +13 -13
- package/src/surfaces/grid-views.ts +15 -18
- package/src/surfaces/inspector-dock.json +162 -14
- package/src/surfaces/inspector-dock.ts +59 -31
- package/src/surfaces/jump-bar.ts +5 -6
- package/src/surfaces/jxsuite-update.ts +16 -22
- package/src/surfaces/library-pane.json +670 -437
- package/src/surfaces/library-pane.ts +111 -77
- package/src/surfaces/logic-panel.ts +17 -30
- package/src/surfaces/logic-workspace.ts +13 -15
- package/src/surfaces/media-browser.json +62 -6
- package/src/surfaces/media-browser.ts +26 -11
- package/src/surfaces/media-field.json +1 -1
- package/src/surfaces/media-field.ts +4 -5
- package/src/surfaces/media-library.json +1586 -0
- package/src/surfaces/media-library.ts +282 -0
- package/src/surfaces/media-pane.ts +8 -7
- package/src/surfaces/media-pick-dialog.json +71 -0
- package/src/surfaces/media-pick-dialog.ts +132 -0
- package/src/surfaces/menu.ts +47 -23
- package/src/surfaces/navigator-dock.ts +11 -12
- package/src/surfaces/new-project.ts +27 -26
- package/src/surfaces/pane-context.json +144 -77
- package/src/surfaces/pane-context.ts +44 -25
- package/src/surfaces/pane-grid.ts +15 -10
- package/src/surfaces/panel-activity.ts +5 -6
- package/src/surfaces/panel-data.ts +3 -4
- package/src/surfaces/panel-deploy-checklist.json +12 -6
- package/src/surfaces/panel-deploy-checklist.ts +8 -7
- package/src/surfaces/panel-elements.ts +5 -7
- package/src/surfaces/panel-i18n.ts +5 -7
- package/src/surfaces/panel-imports.ts +6 -13
- package/src/surfaces/panel-outline.ts +25 -19
- package/src/surfaces/panel-page.json +72 -2
- package/src/surfaces/panel-page.ts +49 -25
- package/src/surfaces/panel-problems.ts +5 -7
- package/src/surfaces/panel-signals.json +1 -1
- package/src/surfaces/panel-signals.ts +25 -39
- package/src/surfaces/panel-stylebook-layers.json +71 -204
- package/src/surfaces/panel-stylebook-layers.ts +5 -29
- package/src/surfaces/preferences.json +120 -48
- package/src/surfaces/preferences.ts +29 -11
- package/src/surfaces/progress-modal.ts +15 -9
- package/src/surfaces/properties-panel.json +1 -1
- package/src/surfaces/properties-panel.ts +20 -42
- package/src/surfaces/publish-quick.json +428 -0
- package/src/surfaces/publish-quick.ts +165 -0
- package/src/surfaces/publish-workspace.json +2892 -0
- package/src/surfaces/publish-workspace.ts +391 -0
- package/src/surfaces/publish.ts +18 -18
- package/src/surfaces/push-plan.ts +7 -8
- package/src/surfaces/rail.json +1 -159
- package/src/surfaces/rail.ts +22 -79
- package/src/surfaces/reference-field.ts +11 -15
- package/src/surfaces/schema-builder.ts +16 -22
- package/src/surfaces/schema-form.json +10 -2
- package/src/surfaces/schema-form.ts +17 -25
- package/src/surfaces/secret-field.ts +9 -6
- package/src/surfaces/seo.json +1 -1
- package/src/surfaces/seo.ts +21 -15
- package/src/surfaces/settings-contexts.ts +9 -7
- package/src/surfaces/settings-contributed.json +5 -5
- package/src/surfaces/settings-contributed.ts +32 -12
- package/src/surfaces/settings-css-vars.json +44 -36
- package/src/surfaces/settings-css-vars.ts +82 -16
- package/src/surfaces/settings-defs.json +2 -2
- package/src/surfaces/settings-defs.ts +17 -21
- package/src/surfaces/settings-deploy.json +2 -15
- package/src/surfaces/settings-deploy.ts +9 -16
- package/src/surfaces/settings-dialog.json +51 -0
- package/src/surfaces/settings-dialog.ts +169 -0
- package/src/surfaces/settings-extensions.ts +5 -6
- package/src/surfaces/settings-head.ts +33 -39
- package/src/surfaces/settings-locales.ts +8 -20
- package/src/surfaces/settings-overview.json +3 -3
- package/src/surfaces/settings-overview.ts +14 -8
- package/src/surfaces/settings-packages.ts +8 -7
- package/src/surfaces/settings-pane.json +269 -46
- package/src/surfaces/settings-pane.ts +88 -36
- package/src/surfaces/settings-rawjson.ts +5 -6
- package/src/surfaces/shell.json +2 -1
- package/src/surfaces/shell.ts +1 -2
- package/src/surfaces/site-panel.json +1029 -0
- package/src/surfaces/site-panel.ts +233 -0
- package/src/surfaces/slash-menu.json +63 -21
- package/src/surfaces/slash-menu.ts +42 -9
- package/src/surfaces/statements.ts +13 -18
- package/src/surfaces/statusbar.ts +56 -29
- package/src/surfaces/style-panel.ts +18 -31
- package/src/surfaces/stylebook-chrome.ts +3 -5
- package/src/surfaces/styles-panel.json +735 -0
- package/src/surfaces/styles-panel.ts +195 -0
- package/src/surfaces/styles-variables.json +149 -0
- package/src/surfaces/styles-variables.ts +145 -0
- package/src/surfaces/tab-strip.json +4 -4
- package/src/surfaces/tab-strip.ts +14 -13
- package/src/surfaces/target-line.ts +6 -7
- package/src/surfaces/welcome.ts +6 -8
- package/src/surfaces/writing-banner.json +94 -0
- package/src/surfaces/writing-banner.ts +80 -0
- package/src/tabs/bare-repeaters.ts +101 -0
- package/src/tabs/patch-ops.ts +4 -3
- package/src/tabs/project-config.ts +32 -21
- package/src/tabs/selection.ts +36 -8
- package/src/tabs/tab.ts +99 -48
- package/src/tabs/transact.ts +98 -53
- package/src/types.ts +53 -43
- package/src/ui/ai-credentials-form.ts +10 -13
- package/src/ui/ai-model-picker.ts +3 -3
- package/src/ui/cf-account-picker.ts +7 -9
- package/src/ui/color-selector.ts +9 -5
- package/src/ui/dynamic-slot.ts +7 -8
- package/src/ui/expression-editor.ts +112 -105
- package/src/ui/form-controls.ts +104 -56
- package/src/ui/formula-catalog.ts +239 -230
- package/src/ui/formula-chips.ts +33 -18
- package/src/ui/layers.ts +57 -31
- package/src/ui/media-picker.ts +300 -47
- package/src/ui/popover-surface.ts +20 -12
- package/src/ui/progress-modal.ts +13 -8
- package/src/ui/regions.ts +14 -12
- package/src/ui/schema-form.ts +372 -97
- package/src/ui/surface.ts +71 -8
- package/src/ui/timing.ts +9 -0
- package/src/ui/value-source.ts +44 -31
- package/src/ui/virtual-window.ts +29 -3
- package/src/utils/base64.ts +6 -4
- package/src/utils/edit-display.ts +366 -111
- package/src/utils/element-selectors.ts +3 -2
- package/src/utils/google-fonts.ts +15 -14
- package/src/utils/inherited-style.ts +18 -20
- package/src/utils/link-target.ts +1 -1
- package/src/utils/local-day.ts +18 -0
- package/src/utils/preview-format.ts +25 -3
- package/src/utils/strip-events.ts +49 -22
- package/src/utils/studio-utils.ts +29 -14
- package/src/view.ts +2 -3
- package/src/workspace/pane-derive.ts +14 -16
- package/src/workspace/session.ts +81 -50
- package/src/workspace/tab-workspace.ts +137 -0
- package/src/workspace/workspace-back.ts +189 -0
- package/src/workspace/workspace-home.ts +133 -0
- package/src/workspace/workspace-ids.ts +129 -0
- package/src/workspace/workspace-switch.ts +372 -0
- package/src/workspace/workspace.ts +165 -47
- package/styles/shell-frame.css +30 -7
- package/styles/shell-frame.json +15 -3
- package/dist/chunks/2020-va2wwra4.js +0 -4
- package/dist/chunks/adapter-f93pafd7.js +0 -4
- package/dist/chunks/cf-account-picker-af1h381v.js +0 -4
- package/dist/chunks/cf-settings-125tdm0w.js +0 -4
- package/dist/chunks/color-area-jqhna8zy.js +0 -4
- package/dist/chunks/color-field-embq5ctg.js +0 -4
- package/dist/chunks/color-fpezvnkt.js +0 -4
- package/dist/chunks/color-slider-1qmw7wqy.js +0 -4
- package/dist/chunks/combobox-773hdzyj.js +0 -4
- package/dist/chunks/components-ax2f1fnn.js +0 -4
- package/dist/chunks/content-source-108aqtk1.js +0 -4
- package/dist/chunks/convert-to-repeater-ry5rmppr.js +0 -4
- package/dist/chunks/dialog-mtm9fq5t.js +0 -4
- package/dist/chunks/editor-pfgdmkb0.js +0 -4
- package/dist/chunks/entry-commands-t0k1q0kx.js +0 -4
- package/dist/chunks/extension-sections-6mwh2hf8.js +0 -4
- package/dist/chunks/file-ops-meej5mqf.js +0 -4
- package/dist/chunks/files-44vp8a2s.js +0 -4
- package/dist/chunks/format-host-7q1petb9.js +0 -4
- package/dist/chunks/fs-events-h2mwnxaz.js +0 -4
- package/dist/chunks/git-panel-zngbymvd.js +0 -4
- package/dist/chunks/grid-view-sx9vynsp.js +0 -51
- package/dist/chunks/icons-p44xhjf0.js +0 -4
- package/dist/chunks/iframe-entry-f7mqjwpm.js +0 -5
- package/dist/chunks/iframe-entry-haw7jkvz.js +0 -5
- package/dist/chunks/iframe-entry-z6qrytv3.js +0 -5
- package/dist/chunks/iframe-host-qk3ycq87.js +0 -4
- package/dist/chunks/index-wkyfjeqz.js +0 -4
- package/dist/chunks/jsonMode-s8kt9dsj.js +0 -13
- package/dist/chunks/jx-validate-psgd7vsx.js +0 -4
- package/dist/chunks/layers-panel-1kq2jyfk.js +0 -4
- package/dist/chunks/layers-xd92fg8d.js +0 -4
- package/dist/chunks/listbox-s8fkmnq8.js +0 -4
- package/dist/chunks/lit-html-ac4cwwr4.js +0 -4
- package/dist/chunks/media-picker-0svzkdyb.js +0 -4
- package/dist/chunks/menu-37d07z9m.js +0 -4
- package/dist/chunks/menu-5c55ea3d.js +0 -4
- package/dist/chunks/monaco-binding-z6r70pdt.js +0 -4
- package/dist/chunks/monaco-buffer-fz6gq5y7.js +0 -4
- package/dist/chunks/monaco-setup-q4axkgj7.js +0 -4
- package/dist/chunks/notify-0xgtn8q1.js +0 -4
- package/dist/chunks/number-field-gw7sq8rn.js +0 -4
- package/dist/chunks/parse-897fvqah.js +0 -4
- package/dist/chunks/platform-v1qctbe6.js +0 -4
- package/dist/chunks/popover-8htra4er.js +0 -4
- package/dist/chunks/publish-panel-ym1fmgq5.js +0 -4
- package/dist/chunks/quick-search-a54e6t5n.js +0 -4
- package/dist/chunks/references-gmqp82fs.js +0 -4
- package/dist/chunks/right-panel-v7t9awbk.js +0 -4
- package/dist/chunks/section-registry-vhyf3zsr.js +0 -4
- package/dist/chunks/select-n3v7gwas.js +0 -4
- package/dist/chunks/split-pff8f3ze.js +0 -4
- package/dist/chunks/studio-0bhx5hz6.js +0 -5
- package/dist/chunks/studio-0k1ddnyy.js +0 -6
- package/dist/chunks/studio-1b04pd0j.js +0 -64
- package/dist/chunks/studio-4dwbj6gb.js +0 -5
- package/dist/chunks/studio-4tanh828.js +0 -5
- package/dist/chunks/studio-55h4mstj.js +0 -4
- package/dist/chunks/studio-5tnvjkz4.js +0 -5
- package/dist/chunks/studio-60dqgb0c.js +0 -5
- package/dist/chunks/studio-61dp09qg.js +0 -9
- package/dist/chunks/studio-63epcrj2.js +0 -5
- package/dist/chunks/studio-74k29dy9.js +0 -5
- package/dist/chunks/studio-7vg6jcd3.js +0 -5
- package/dist/chunks/studio-7zx31knw.js +0 -9
- package/dist/chunks/studio-8bxk97km.js +0 -5
- package/dist/chunks/studio-933e30n4.js +0 -5
- package/dist/chunks/studio-98wnwhbg.js +0 -5
- package/dist/chunks/studio-9mccjwjh.js +0 -14
- package/dist/chunks/studio-a2ke1e4t.js +0 -5
- package/dist/chunks/studio-e3a2a6v3.js +0 -4
- package/dist/chunks/studio-e81q1vb9.js +0 -5
- package/dist/chunks/studio-epgrmqqm.js +0 -5
- package/dist/chunks/studio-ery42sqr.js +0 -4
- package/dist/chunks/studio-g1shz58g.js +0 -5
- package/dist/chunks/studio-gf0fz03c.js +0 -5
- package/dist/chunks/studio-gjtpe62q.js +0 -6
- package/dist/chunks/studio-gkskhg7m.js +0 -5
- package/dist/chunks/studio-gx4dnjzd.js +0 -5
- package/dist/chunks/studio-j03zga3y.js +0 -9
- package/dist/chunks/studio-jhpxeckz.js +0 -5
- package/dist/chunks/studio-k01r7ykp.js +0 -5
- package/dist/chunks/studio-kk7h30ne.js +0 -7
- package/dist/chunks/studio-kt1zqney.js +0 -5
- package/dist/chunks/studio-m3cwhvye.js +0 -5
- package/dist/chunks/studio-mcayt6hz.js +0 -5
- package/dist/chunks/studio-myjcghv3.js +0 -5
- package/dist/chunks/studio-n8bxwc3y.js +0 -4
- package/dist/chunks/studio-ngm8gvpb.js +0 -5
- package/dist/chunks/studio-nj5a01jy.js +0 -928
- package/dist/chunks/studio-pcgz8heb.js +0 -5
- package/dist/chunks/studio-qcsq0t15.js +0 -5
- package/dist/chunks/studio-qkstvve9.js +0 -5
- package/dist/chunks/studio-qv1pwd3c.js +0 -5
- package/dist/chunks/studio-rc6dvxjb.js +0 -7
- package/dist/chunks/studio-s8dmmz66.js +0 -5
- package/dist/chunks/studio-sp5xzbj4.js +0 -6
- package/dist/chunks/studio-szsjbj0g.js +0 -5
- package/dist/chunks/studio-t1xzawhr.js +0 -16
- package/dist/chunks/studio-tdcprbqb.js +0 -5
- package/dist/chunks/studio-vrmcjf9g.js +0 -7
- package/dist/chunks/studio-vyc0b4he.js +0 -10
- package/dist/chunks/studio-w0cgf6jg.js +0 -5
- package/dist/chunks/studio-w3hskzqk.js +0 -5
- package/dist/chunks/studio-xgrgcdyh.js +0 -9
- package/dist/chunks/studio-xz2yxfcb.js +0 -5
- package/dist/chunks/studio-y6n42tgs.js +0 -5
- package/dist/chunks/studio-yb560vxr.js +0 -5
- package/dist/chunks/studio-yn9f8vtx.js +0 -5
- package/dist/chunks/studio-yw05w8f0.js +0 -7
- package/dist/chunks/studio-z16sgavc.js +0 -5
- package/dist/chunks/studio-zey7zsdw.js +0 -12
- package/dist/chunks/studio-zyqn40w4.js +0 -5
- package/dist/chunks/swatch-group-8qh9a3bm.js +0 -4
- package/dist/chunks/tabs-jwthg40w.js +0 -4
- package/dist/chunks/textfield-spy3hc77.js +0 -4
- package/dist/chunks/toast-4d35zd64.js +0 -4
- package/dist/chunks/toast-host-8sjmfed3.js +0 -4
- package/dist/chunks/tooltip-fd6g9xy3.js +0 -4
- package/dist/chunks/tree-h19v1jfz.js +0 -4
- package/dist/chunks/tsMode-2frah6h1.js +0 -14
- package/dist/chunks/workspace-zt81g1ms.js +0 -4
- package/dist/chunks/ws-client-n2bh4hkf.js +0 -4
- package/src/panels/frontmatter-panel.ts +0 -701
- package/src/panels/git-panel.ts +0 -1120
- package/src/surfaces/doc-header.json +0 -776
- package/src/surfaces/doc-header.ts +0 -231
- package/src/surfaces/git-panel.json +0 -1880
- package/src/surfaces/git-panel.ts +0 -272
package/src/surfaces/dialog.ts
CHANGED
|
@@ -25,27 +25,12 @@
|
|
|
25
25
|
import { reactive } from "../reactivity";
|
|
26
26
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
27
27
|
import { overlayRegion, REGION_ATTR } from "../ui/regions";
|
|
28
|
-
import { close
|
|
28
|
+
import { close, showModal } from "@jxsuite/ui/behaviors/dialog";
|
|
29
29
|
import { selectValue } from "@jxsuite/ui/behaviors/textfield";
|
|
30
30
|
import dialogDoc from "./dialog.json";
|
|
31
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
32
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
31
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
33
32
|
|
|
34
|
-
registerSurface("dialog", dialogDoc
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* One option of a prompt's choice.
|
|
38
|
-
*
|
|
39
|
-
* There is no `selected` here, and its absence is the contract rather than an omission: `jx-select`
|
|
40
|
-
* is a native `<select>`, and the reader's first pick sets an option's dirtiness flag, after which
|
|
41
|
-
* the `selected` content attribute stops moving selectedness (`ui.md` §5.1). A projection that
|
|
42
|
-
* marked a row would be right until the first pick and wrong after it. The chosen row is named by
|
|
43
|
-
* `chosen`, once, beside the list.
|
|
44
|
-
*/
|
|
45
|
-
export interface DialogChoiceOption {
|
|
46
|
-
value: string;
|
|
47
|
-
label: string;
|
|
48
|
-
}
|
|
33
|
+
registerSurface("dialog", dialogDoc);
|
|
49
34
|
|
|
50
35
|
/** What a flow hands the surface. Everything is a projection; the flow keeps the state machine. */
|
|
51
36
|
export interface DialogSurfaceOptions {
|
|
@@ -61,8 +46,15 @@ export interface DialogSurfaceOptions {
|
|
|
61
46
|
message?: string;
|
|
62
47
|
/** Render a richer body into the document's island, once the element is ready. */
|
|
63
48
|
island?: (host: HTMLElement) => void;
|
|
64
|
-
/**
|
|
65
|
-
|
|
49
|
+
/**
|
|
50
|
+
* A `jx-select` above the field, and which of its rows is chosen. The rows carry no `selected`,
|
|
51
|
+
* and that absence is the contract rather than an omission: `jx-select` is a native `<select>`,
|
|
52
|
+
* and the reader's first pick sets an option's dirtiness flag, after which the `selected` content
|
|
53
|
+
* attribute stops moving selectedness (`ui.md` §5.1). A projection that marked a row would be
|
|
54
|
+
* right until the first pick and wrong after it. The chosen row is named by `chosen`, once,
|
|
55
|
+
* beside the list.
|
|
56
|
+
*/
|
|
57
|
+
choice?: { label: string; options: SurfaceOption[]; chosen: string };
|
|
66
58
|
/** The prompt's field. */
|
|
67
59
|
field?: {
|
|
68
60
|
value: string;
|
|
@@ -104,7 +96,7 @@ export interface DialogSurfacePatch {
|
|
|
104
96
|
placeholder?: string;
|
|
105
97
|
invalid?: boolean;
|
|
106
98
|
error?: string;
|
|
107
|
-
options?:
|
|
99
|
+
options?: SurfaceOption[];
|
|
108
100
|
chosen?: string;
|
|
109
101
|
}
|
|
110
102
|
|
|
@@ -118,7 +110,7 @@ export interface DialogSurfaceHandle {
|
|
|
118
110
|
close: () => void;
|
|
119
111
|
}
|
|
120
112
|
|
|
121
|
-
interface DialogScope
|
|
113
|
+
interface DialogScope {
|
|
122
114
|
headline: string;
|
|
123
115
|
confirmLabel: string;
|
|
124
116
|
secondaryLabel: string;
|
|
@@ -129,7 +121,7 @@ interface DialogScope extends Record<string, unknown> {
|
|
|
129
121
|
hasMessage: boolean;
|
|
130
122
|
hasChoice: boolean;
|
|
131
123
|
choiceLabel: string;
|
|
132
|
-
options:
|
|
124
|
+
options: SurfaceOption[];
|
|
133
125
|
hasField: boolean;
|
|
134
126
|
multiline: boolean;
|
|
135
127
|
rows: string;
|
|
@@ -195,7 +187,7 @@ export function openDialogSurface(options: DialogSurfaceOptions): DialogSurfaceH
|
|
|
195
187
|
slot.setAttribute(REGION_ATTR, overlayRegion("dialog", options.region));
|
|
196
188
|
options.layer.append(slot);
|
|
197
189
|
|
|
198
|
-
const scope = reactive<DialogScope>({
|
|
190
|
+
const scope: DialogScope = reactive<DialogScope>({
|
|
199
191
|
cancel: () => {
|
|
200
192
|
options.onCancel();
|
|
201
193
|
},
|
|
@@ -236,10 +228,14 @@ export function openDialogSurface(options: DialogSurfaceOptions): DialogSurfaceH
|
|
|
236
228
|
secondaryLabel: options.secondaryLabel ?? "",
|
|
237
229
|
size: options.size ?? "sm",
|
|
238
230
|
value: options.field?.value ?? "",
|
|
239
|
-
})
|
|
231
|
+
});
|
|
240
232
|
|
|
241
233
|
let handle: SurfaceHandle | null = null;
|
|
242
234
|
let closed = false;
|
|
235
|
+
/* Read through a call, not the bare binding: `close()` can run while the mount is awaiting the
|
|
236
|
+
element, and a direct `closed` test after that `await` would be narrowed to the value the test
|
|
237
|
+
before it saw. */
|
|
238
|
+
const isClosed = (): boolean => closed;
|
|
243
239
|
/* Closing while the element is still rendering must not leave `ready` waiting on a `jx-ready`
|
|
244
240
|
a disposed element will never send, so the wait races against the close. */
|
|
245
241
|
let abort: () => void = () => {};
|
|
@@ -248,14 +244,16 @@ export function openDialogSurface(options: DialogSurfaceOptions): DialogSurfaceH
|
|
|
248
244
|
});
|
|
249
245
|
const mounted = mountSurface("dialog", scope, slot);
|
|
250
246
|
const ready = mounted.then(async (surface) => {
|
|
247
|
+
/* SAFETY: `dialog.json`'s root definition is a `jx-dialog` element, so the runtime
|
|
248
|
+
mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
251
249
|
const element = surface.root as HTMLElement;
|
|
252
|
-
if (
|
|
250
|
+
if (isClosed()) {
|
|
253
251
|
surface.dispose();
|
|
254
252
|
return element;
|
|
255
253
|
}
|
|
256
254
|
handle = surface;
|
|
257
255
|
await Promise.race([whenReady(element), aborted]);
|
|
258
|
-
if (
|
|
256
|
+
if (isClosed()) {
|
|
259
257
|
return element;
|
|
260
258
|
}
|
|
261
259
|
options.island?.(element.querySelector<HTMLElement>('[part="island"]') ?? element);
|
|
@@ -284,7 +282,7 @@ export function openDialogSurface(options: DialogSurfaceOptions): DialogSurfaceH
|
|
|
284
282
|
const element = handle?.root;
|
|
285
283
|
if (element instanceof HTMLElement) {
|
|
286
284
|
// The platform's close first, so focus goes back where it was; then the document goes.
|
|
287
|
-
|
|
285
|
+
close(element);
|
|
288
286
|
}
|
|
289
287
|
// A mount that has not landed yet is disposed by `ready` when it does.
|
|
290
288
|
handle?.dispose();
|
|
@@ -18,10 +18,9 @@
|
|
|
18
18
|
import { reactive } from "../reactivity";
|
|
19
19
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
20
20
|
import diffToolbarDoc from "./diff-toolbar.json";
|
|
21
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
22
21
|
import type { SurfaceHandle } from "../ui/surface";
|
|
23
22
|
|
|
24
|
-
registerSurface("diff-toolbar", diffToolbarDoc
|
|
23
|
+
registerSurface("diff-toolbar", diffToolbarDoc);
|
|
25
24
|
|
|
26
25
|
/** Everything the bar draws, as one value. Every field is already a string or a boolean. */
|
|
27
26
|
export interface DiffToolbarView {
|
|
@@ -66,7 +65,7 @@ export interface DiffToolbarSurfaceHandle {
|
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
/** The scope the document reads: {@link DiffToolbarView} plus the actions its controls call. */
|
|
69
|
-
interface DiffToolbarScope extends
|
|
68
|
+
interface DiffToolbarScope extends DiffToolbarView, DiffToolbarActions {}
|
|
70
69
|
|
|
71
70
|
/** Write a projection into the scope. */
|
|
72
71
|
function project(scope: DiffToolbarScope, view: DiffToolbarView): void {
|
|
@@ -98,7 +97,7 @@ export function mountDiffToolbarSurface(
|
|
|
98
97
|
actions: DiffToolbarActions,
|
|
99
98
|
): DiffToolbarSurfaceHandle {
|
|
100
99
|
host.replaceChildren();
|
|
101
|
-
const scope = reactive<DiffToolbarScope>({
|
|
100
|
+
const scope: DiffToolbarScope = reactive<DiffToolbarScope>({
|
|
102
101
|
codeChecked: "false",
|
|
103
102
|
countLabel: "",
|
|
104
103
|
degraded: "hidden",
|
|
@@ -113,18 +112,21 @@ export function mountDiffToolbarSurface(
|
|
|
113
112
|
stepper: "hidden",
|
|
114
113
|
viewMode: "choice",
|
|
115
114
|
visualChecked: "true",
|
|
116
|
-
})
|
|
115
|
+
});
|
|
117
116
|
project(scope, view);
|
|
118
117
|
|
|
119
118
|
let mounted: SurfaceHandle | null = null;
|
|
120
119
|
let disposed = false;
|
|
121
120
|
const ready = mountSurface("diff-toolbar", scope, host).then((surface) => {
|
|
121
|
+
/* SAFETY: `diff-toolbar.json`'s root definition is a `div` element, so the runtime mounts an
|
|
122
|
+
HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
123
|
+
const root = surface.root as HTMLElement;
|
|
122
124
|
if (disposed) {
|
|
123
125
|
surface.dispose();
|
|
124
|
-
return
|
|
126
|
+
return root;
|
|
125
127
|
}
|
|
126
128
|
mounted = surface;
|
|
127
|
-
return
|
|
129
|
+
return root;
|
|
128
130
|
});
|
|
129
131
|
|
|
130
132
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioEmptyState",
|
|
4
|
-
"$description": "The one empty-state pattern (studio-ui-guidelines.md §11), as the document every region draws it from. Nine surfaces had already copied it into their own JSON — `
|
|
4
|
+
"$description": "The one empty-state pattern (studio-ui-guidelines.md §11), as the document every region draws it from. Nine surfaces had already copied it into their own JSON — the Source Control panel's (since folded into `publish-workspace.json`), `logic-panel.json`, `panel-outline.json` and the rest each carry a `[part=\"empty\"]` block written from the same rules — because `panels/empty-state.ts` is a lit template a document cannot call. This is the copy those were waiting for: the region that has NO document of its own hands its box to this one instead of rendering the helper, so a shell with three surfaces still lit and eight converted has one empty state rather than two. The copy rules stay where they are stated, in `panels/empty-state.ts`'s header: one sentence saying what the region is FOR, the action that fills it, and one shared verb across equivalent surfaces. Nothing here decides any of them — the adapter is handed a message, an optional second sentence and a list of buttons, and this draws exactly that.",
|
|
5
5
|
"tagName": "div",
|
|
6
6
|
"attributes": {
|
|
7
7
|
"part": "empty",
|
|
@@ -28,13 +28,12 @@ import { reactive } from "../reactivity";
|
|
|
28
28
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
29
29
|
import emptyStateDoc from "./empty-state.json";
|
|
30
30
|
import type { EmptyStateSpec } from "../panels/empty-state";
|
|
31
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
32
31
|
import type { SurfaceHandle } from "../ui/surface";
|
|
33
32
|
|
|
34
|
-
registerSurface("empty-state", emptyStateDoc
|
|
33
|
+
registerSurface("empty-state", emptyStateDoc);
|
|
35
34
|
|
|
36
35
|
/** One button, as the document draws it: a key, a word, and whether it can act. */
|
|
37
|
-
interface EmptyStateActionRow
|
|
36
|
+
interface EmptyStateActionRow {
|
|
38
37
|
/** The repeater's key and what a press is addressed with — this action's slot in the list. */
|
|
39
38
|
id: string;
|
|
40
39
|
label: string;
|
|
@@ -44,10 +43,8 @@ interface EmptyStateActionRow extends Record<string, unknown> {
|
|
|
44
43
|
/**
|
|
45
44
|
* What the document draws, with every branch already decided.
|
|
46
45
|
*
|
|
47
|
-
* Named apart from the scope
|
|
48
|
-
*
|
|
49
|
-
* and drops every named property — so the projection below would have type-checked against
|
|
50
|
-
* anything.
|
|
46
|
+
* Named apart from the scope, which adds the one callback, so the projection below is checked
|
|
47
|
+
* against exactly the fields the document draws.
|
|
51
48
|
*/
|
|
52
49
|
interface EmptyStateView {
|
|
53
50
|
message: string;
|
|
@@ -59,7 +56,7 @@ interface EmptyStateView {
|
|
|
59
56
|
}
|
|
60
57
|
|
|
61
58
|
/** The scope `empty-state.json` reads. Every field is a value; the document asks no question. */
|
|
62
|
-
interface EmptyStateScope extends
|
|
59
|
+
interface EmptyStateScope extends EmptyStateView {
|
|
63
60
|
runAction: (id: string) => void;
|
|
64
61
|
}
|
|
65
62
|
|
|
@@ -89,12 +86,12 @@ export function createEmptyStateSurface(spec: EmptyStateSpec): EmptyStateSurface
|
|
|
89
86
|
|
|
90
87
|
/** The handlers, held apart from the scope so `runAction` never has to be reassigned. */
|
|
91
88
|
let handlers: (() => void)[] = [];
|
|
92
|
-
const scope = reactive<EmptyStateScope>({
|
|
89
|
+
const scope: EmptyStateScope = reactive<EmptyStateScope>({
|
|
93
90
|
...project(spec),
|
|
94
91
|
runAction: (id: string) => {
|
|
95
92
|
handlers[Number(id)]?.();
|
|
96
93
|
},
|
|
97
|
-
})
|
|
94
|
+
});
|
|
98
95
|
handlers = handlersOf(spec);
|
|
99
96
|
|
|
100
97
|
let mounted: SurfaceHandle | null = null;
|
|
@@ -56,6 +56,13 @@
|
|
|
56
56
|
"color": "var(--fg-dim)",
|
|
57
57
|
"fontSize": "var(--jx-text-md)",
|
|
58
58
|
"lineHeight": "1.5"
|
|
59
|
+
},
|
|
60
|
+
"& [part=\"record-nav\"]": {
|
|
61
|
+
"display": "flex",
|
|
62
|
+
"alignItems": "center",
|
|
63
|
+
"gap": "var(--jx-space-2)",
|
|
64
|
+
"color": "var(--fg-dim)",
|
|
65
|
+
"fontSize": "var(--jx-text-sm)"
|
|
59
66
|
}
|
|
60
67
|
},
|
|
61
68
|
"children": [
|
|
@@ -102,6 +109,135 @@
|
|
|
102
109
|
},
|
|
103
110
|
"textContent": "${state.collection}"
|
|
104
111
|
},
|
|
112
|
+
{
|
|
113
|
+
"tagName": "div",
|
|
114
|
+
"attributes": {
|
|
115
|
+
"part": "record-slot",
|
|
116
|
+
"role": "none"
|
|
117
|
+
},
|
|
118
|
+
"style": {
|
|
119
|
+
"display": "contents"
|
|
120
|
+
},
|
|
121
|
+
"$switch": {
|
|
122
|
+
"$ref": "#/state/recordNav"
|
|
123
|
+
},
|
|
124
|
+
"cases": {
|
|
125
|
+
"shown": {
|
|
126
|
+
"$description": "A record of a file-backed collection (a CSV row): which row of the file this is, the rows either side of it, and the grid that shows them all. A file entry has no neighbours to step to, so it draws none of this.",
|
|
127
|
+
"tagName": "div",
|
|
128
|
+
"attributes": {
|
|
129
|
+
"part": "record-nav",
|
|
130
|
+
"role": "group",
|
|
131
|
+
"aria-label": "Records"
|
|
132
|
+
},
|
|
133
|
+
"children": [
|
|
134
|
+
{
|
|
135
|
+
"tagName": "jx-action-button",
|
|
136
|
+
"attributes": {
|
|
137
|
+
"part": "previous"
|
|
138
|
+
},
|
|
139
|
+
"$props": {
|
|
140
|
+
"size": "sm",
|
|
141
|
+
"quiet": true,
|
|
142
|
+
"label": "Previous record",
|
|
143
|
+
"hint": "Previous record",
|
|
144
|
+
"disabled": {
|
|
145
|
+
"$ref": "#/state/previousDisabled"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"onclick": {
|
|
149
|
+
"$prototype": "Function",
|
|
150
|
+
"body": [
|
|
151
|
+
{
|
|
152
|
+
"operator": "call",
|
|
153
|
+
"target": {
|
|
154
|
+
"$ref": "#/state/showPrevious"
|
|
155
|
+
},
|
|
156
|
+
"value": []
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"children": [
|
|
161
|
+
{
|
|
162
|
+
"tagName": "span",
|
|
163
|
+
"textContent": "‹ Previous"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"tagName": "span",
|
|
169
|
+
"attributes": {
|
|
170
|
+
"part": "place"
|
|
171
|
+
},
|
|
172
|
+
"textContent": "${state.place}"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"tagName": "jx-action-button",
|
|
176
|
+
"attributes": {
|
|
177
|
+
"part": "next"
|
|
178
|
+
},
|
|
179
|
+
"$props": {
|
|
180
|
+
"size": "sm",
|
|
181
|
+
"quiet": true,
|
|
182
|
+
"label": "Next record",
|
|
183
|
+
"hint": "Next record",
|
|
184
|
+
"disabled": {
|
|
185
|
+
"$ref": "#/state/nextDisabled"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"onclick": {
|
|
189
|
+
"$prototype": "Function",
|
|
190
|
+
"body": [
|
|
191
|
+
{
|
|
192
|
+
"operator": "call",
|
|
193
|
+
"target": {
|
|
194
|
+
"$ref": "#/state/showNext"
|
|
195
|
+
},
|
|
196
|
+
"value": []
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"children": [
|
|
201
|
+
{
|
|
202
|
+
"tagName": "span",
|
|
203
|
+
"textContent": "Next ›"
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"tagName": "jx-action-button",
|
|
209
|
+
"attributes": {
|
|
210
|
+
"part": "grid"
|
|
211
|
+
},
|
|
212
|
+
"$props": {
|
|
213
|
+
"size": "sm",
|
|
214
|
+
"quiet": true,
|
|
215
|
+
"label": "Edit in grid",
|
|
216
|
+
"hint": "Every record of the file, as a table"
|
|
217
|
+
},
|
|
218
|
+
"onclick": {
|
|
219
|
+
"$prototype": "Function",
|
|
220
|
+
"body": [
|
|
221
|
+
{
|
|
222
|
+
"operator": "call",
|
|
223
|
+
"target": {
|
|
224
|
+
"$ref": "#/state/openGrid"
|
|
225
|
+
},
|
|
226
|
+
"value": []
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
"children": [
|
|
231
|
+
{
|
|
232
|
+
"tagName": "span",
|
|
233
|
+
"textContent": "Edit in grid"
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
},
|
|
105
241
|
{
|
|
106
242
|
"tagName": "div",
|
|
107
243
|
"attributes": {
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
* @docs studio/projects/content-types
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
import { isString } from "@jxsuite/schema/guards";
|
|
30
31
|
import { reactive } from "../reactivity";
|
|
31
32
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
32
33
|
import entryEditorDoc from "./entry-editor.json";
|
|
33
|
-
import type {
|
|
34
|
+
import type { JxElement } from "@jxsuite/schema/types";
|
|
34
35
|
import type { SurfaceHandle } from "../ui/surface";
|
|
35
36
|
|
|
36
|
-
registerSurface("entry-editor", entryEditorDoc
|
|
37
|
+
registerSurface("entry-editor", entryEditorDoc);
|
|
37
38
|
|
|
38
39
|
/** Everything the document draws, as one value. */
|
|
39
40
|
export interface EntryEditorView {
|
|
@@ -63,6 +64,12 @@ export interface EntryEditorView {
|
|
|
63
64
|
note: string;
|
|
64
65
|
/** The `empty` stage's first sentence, naming the document it is about. */
|
|
65
66
|
emptyLine: string;
|
|
67
|
+
/** Whether the entry is a record of a file (a CSV row), which draws its place and its neighbours. */
|
|
68
|
+
recordNav: "hidden" | "shown";
|
|
69
|
+
/** Its place among the file's records: "3 of 11". */
|
|
70
|
+
place: string;
|
|
71
|
+
previousDisabled: boolean;
|
|
72
|
+
nextDisabled: boolean;
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
/** What the reader can do here. Both are decisions the editor owns. */
|
|
@@ -71,6 +78,10 @@ export interface EntryEditorActions {
|
|
|
71
78
|
setDraft: (draft: boolean) => void;
|
|
72
79
|
/** Open Project Settings › Content types — the door out of the `empty` stage. */
|
|
73
80
|
openContentTypes: () => void;
|
|
81
|
+
/** A record: show the file's previous record, its next one, or the whole file in its grid. */
|
|
82
|
+
showPrevious: () => void;
|
|
83
|
+
showNext: () => void;
|
|
84
|
+
openGrid: () => void;
|
|
74
85
|
}
|
|
75
86
|
|
|
76
87
|
/** The node the document renders empty for somebody else to fill. */
|
|
@@ -89,7 +100,7 @@ export interface EntryEditorSurfaceHandle {
|
|
|
89
100
|
}
|
|
90
101
|
|
|
91
102
|
/** The scope the document reads: the view plus the actions, flat. */
|
|
92
|
-
interface EntryEditorScope extends
|
|
103
|
+
interface EntryEditorScope extends EntryEditorView, EntryEditorActions {}
|
|
93
104
|
|
|
94
105
|
/** Write a whole view into the scope. Assignment only — the mount is never rebuilt for a repaint. */
|
|
95
106
|
function project(scope: EntryEditorScope, view: EntryEditorView): void {
|
|
@@ -104,13 +115,16 @@ function project(scope: EntryEditorScope, view: EntryEditorView): void {
|
|
|
104
115
|
scope.noteState = view.noteState;
|
|
105
116
|
scope.note = view.note;
|
|
106
117
|
scope.emptyLine = view.emptyLine;
|
|
118
|
+
scope.recordNav = view.recordNav;
|
|
119
|
+
scope.place = view.place;
|
|
120
|
+
scope.previousDisabled = view.previousDisabled;
|
|
121
|
+
scope.nextDisabled = view.nextDisabled;
|
|
107
122
|
}
|
|
108
123
|
|
|
109
124
|
/** The `part` a node was authored with, or `""` — the only thing this adapter asks about a node. */
|
|
110
|
-
function partOf(def:
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
return typeof part === "string" ? part : "";
|
|
125
|
+
function partOf(def: JxElement | string): string {
|
|
126
|
+
const part = isString(def) ? undefined : def.attributes?.["part"];
|
|
127
|
+
return isString(part) ? part : "";
|
|
114
128
|
}
|
|
115
129
|
|
|
116
130
|
/**
|
|
@@ -133,7 +147,7 @@ export function mountEntryEditorSurface(
|
|
|
133
147
|
islands: EntryEditorIslands,
|
|
134
148
|
): EntryEditorSurfaceHandle {
|
|
135
149
|
host.replaceChildren();
|
|
136
|
-
const scope = reactive<EntryEditorScope>({
|
|
150
|
+
const scope: EntryEditorScope = reactive<EntryEditorScope>({
|
|
137
151
|
collection: "",
|
|
138
152
|
draft: false,
|
|
139
153
|
draftAxis: "hidden",
|
|
@@ -141,13 +155,20 @@ export function mountEntryEditorSurface(
|
|
|
141
155
|
emptyLine: "",
|
|
142
156
|
fieldsRegion: "",
|
|
143
157
|
name: "",
|
|
158
|
+
nextDisabled: true,
|
|
144
159
|
note: "",
|
|
145
160
|
noteState: "hidden",
|
|
146
161
|
openContentTypes: actions.openContentTypes,
|
|
162
|
+
openGrid: actions.openGrid,
|
|
163
|
+
place: "",
|
|
164
|
+
previousDisabled: true,
|
|
165
|
+
recordNav: "hidden",
|
|
147
166
|
region: "",
|
|
148
167
|
setDraft: actions.setDraft,
|
|
168
|
+
showNext: actions.showNext,
|
|
169
|
+
showPrevious: actions.showPrevious,
|
|
149
170
|
stage: "empty",
|
|
150
|
-
})
|
|
171
|
+
});
|
|
151
172
|
project(scope, view);
|
|
152
173
|
|
|
153
174
|
let mounted: SurfaceHandle | null = null;
|
|
@@ -163,12 +184,15 @@ export function mountEntryEditorSurface(
|
|
|
163
184
|
}
|
|
164
185
|
},
|
|
165
186
|
}).then((surface) => {
|
|
187
|
+
/* SAFETY: `entry-editor.json`'s root definition is a `div` element, so the runtime mounts an
|
|
188
|
+
HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
189
|
+
const root = surface.root as HTMLElement;
|
|
166
190
|
if (disposed) {
|
|
167
191
|
surface.dispose();
|
|
168
|
-
return
|
|
192
|
+
return root;
|
|
169
193
|
}
|
|
170
194
|
mounted = surface;
|
|
171
|
-
return
|
|
195
|
+
return root;
|
|
172
196
|
});
|
|
173
197
|
|
|
174
198
|
return {
|