@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
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"part": "chrome"
|
|
8
8
|
},
|
|
9
9
|
"style": {
|
|
10
|
-
"$description": "The `.pc-*` rules of `styles/canvas.css`, keyed on `part` and carried here, plus `.jx-collab-banner` from `styles/shell.css` — the banner rides in this band and the rule rides with it. Three token repairs travel with them,
|
|
10
|
+
"$description": "The `.pc-*` rules of `styles/canvas.css`, keyed on `part` and carried here, plus `.jx-collab-banner` from `styles/shell.css` — the banner rides in this band and the rule rides with it. Three token repairs travel with them, all of one shape: `--spectrum-font-size-75` and `--spectrum-font-size-50` resolved only inside `<sp-theme>` and a document mounts outside it, so every rule reading one would silently have taken its px fallback; they are `--jx-text-md` (12px) and `--jx-text-sm` (11px) here, at the same values. Four rules are DELETED rather than moved because the kit already draws them: `.pc-derive-trigger`'s hand-built 22×20 box and its hover are `jx-action-button` quiet, `.pc-preview-toggle[selected]`'s four Spectrum custom-property overrides are the `emphasized` prop, and `.pc-ctx-manage:hover`'s underline is the only half of that rule worth keeping. The one rule ADDED is `pointer-events: auto` on the band, the pod and the popovers: `.pane-chrome` is `pointer-events: none` and gave it to its direct children through `.pane-chrome > *`, which a document root with `display: contents` is not — so the three surfaces that take the pointer say so themselves, which is also the honest place for it.",
|
|
11
11
|
"display": "contents",
|
|
12
12
|
"& [part=\"band\"]": {
|
|
13
13
|
"$description": "The pane's top band: the bar plus the standing statements that must be readable before the first keystroke. One element so the adapter can MEASURE what the stage has to clear — a banner's height is its wrapped text, which only layout knows.",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"alignItems": "center",
|
|
33
33
|
"minWidth": "0"
|
|
34
34
|
},
|
|
35
|
+
"& [part=\"back\"]": {
|
|
36
|
+
"flexShrink": "0",
|
|
37
|
+
"marginInlineEnd": "var(--jx-space-2)"
|
|
38
|
+
},
|
|
35
39
|
"& [part=\"axis\"]": {
|
|
36
40
|
"display": "flex",
|
|
37
41
|
"alignItems": "center",
|
|
@@ -214,6 +218,54 @@
|
|
|
214
218
|
"part": "spacer"
|
|
215
219
|
},
|
|
216
220
|
"children": [
|
|
221
|
+
{
|
|
222
|
+
"$description": "Back to the workspace home, in a workspace that draws no tab strip (Media, Styles, Publish): the way out of a view opened beside the home — a media file, a comparison, `project.json` as Code — with the destination named, because there is no chip to click and no close button to press. It leads the bar so it sits where the strip's chips would have been. Escape runs the same command (`pane.backToHome`) wherever no text field or code editor owns the key.",
|
|
223
|
+
"tagName": "div",
|
|
224
|
+
"attributes": {
|
|
225
|
+
"part": "back-slot",
|
|
226
|
+
"role": "none"
|
|
227
|
+
},
|
|
228
|
+
"style": {
|
|
229
|
+
"display": "contents"
|
|
230
|
+
},
|
|
231
|
+
"$switch": {
|
|
232
|
+
"$ref": "#/state/backState"
|
|
233
|
+
},
|
|
234
|
+
"cases": {
|
|
235
|
+
"shown": {
|
|
236
|
+
"tagName": "jx-action-button",
|
|
237
|
+
"attributes": {
|
|
238
|
+
"part": "back"
|
|
239
|
+
},
|
|
240
|
+
"$props": {
|
|
241
|
+
"size": "sm",
|
|
242
|
+
"quiet": true,
|
|
243
|
+
"icon": "arrow-left",
|
|
244
|
+
"hint": {
|
|
245
|
+
"$ref": "#/state/backHint"
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"onclick": {
|
|
249
|
+
"$prototype": "Function",
|
|
250
|
+
"body": [
|
|
251
|
+
{
|
|
252
|
+
"operator": "call",
|
|
253
|
+
"target": {
|
|
254
|
+
"$ref": "#/state/goBack"
|
|
255
|
+
},
|
|
256
|
+
"value": []
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
"children": [
|
|
261
|
+
{
|
|
262
|
+
"tagName": "span",
|
|
263
|
+
"textContent": "${state.backLabel}"
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
217
269
|
{
|
|
218
270
|
"tagName": "div",
|
|
219
271
|
"attributes": {
|
|
@@ -236,8 +288,8 @@
|
|
|
236
288
|
"size": "sm",
|
|
237
289
|
"quiet": true,
|
|
238
290
|
"icon": "arrows-clockwise",
|
|
239
|
-
"label": "Show
|
|
240
|
-
"hint": "Show
|
|
291
|
+
"label": "Show code, diff or layout beside",
|
|
292
|
+
"hint": "Show this document's code, diff, layout or another breakpoint beside it",
|
|
241
293
|
"haspopup": "menu"
|
|
242
294
|
},
|
|
243
295
|
"onclick": {
|
|
@@ -525,43 +577,104 @@
|
|
|
525
577
|
{
|
|
526
578
|
"tagName": "div",
|
|
527
579
|
"attributes": {
|
|
528
|
-
"part": "
|
|
529
|
-
"
|
|
580
|
+
"part": "context-slot",
|
|
581
|
+
"role": "none"
|
|
530
582
|
},
|
|
531
|
-
"
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
{
|
|
583
|
+
"style": {
|
|
584
|
+
"display": "contents"
|
|
585
|
+
},
|
|
586
|
+
"$switch": {
|
|
587
|
+
"$ref": "#/state/contextState"
|
|
588
|
+
},
|
|
589
|
+
"cases": {
|
|
590
|
+
"shown": {
|
|
540
591
|
"tagName": "div",
|
|
541
592
|
"attributes": {
|
|
542
|
-
"part": "
|
|
543
|
-
"
|
|
544
|
-
},
|
|
545
|
-
"style": {
|
|
546
|
-
"display": "contents"
|
|
547
|
-
},
|
|
548
|
-
"$switch": {
|
|
549
|
-
"$ref": "#/state/resolvingState"
|
|
593
|
+
"part": "axis",
|
|
594
|
+
"data-axis": "context"
|
|
550
595
|
},
|
|
551
|
-
"
|
|
552
|
-
|
|
596
|
+
"children": [
|
|
597
|
+
{
|
|
598
|
+
"tagName": "span",
|
|
599
|
+
"attributes": {
|
|
600
|
+
"part": "axis-label"
|
|
601
|
+
},
|
|
602
|
+
"textContent": "Context"
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"tagName": "div",
|
|
606
|
+
"attributes": {
|
|
607
|
+
"part": "resolving-slot",
|
|
608
|
+
"role": "none"
|
|
609
|
+
},
|
|
610
|
+
"style": {
|
|
611
|
+
"display": "contents"
|
|
612
|
+
},
|
|
613
|
+
"$switch": {
|
|
614
|
+
"$ref": "#/state/resolvingState"
|
|
615
|
+
},
|
|
616
|
+
"cases": {
|
|
617
|
+
"shown": {
|
|
618
|
+
"tagName": "jx-action-button",
|
|
619
|
+
"attributes": {
|
|
620
|
+
"part": "resolving-trigger"
|
|
621
|
+
},
|
|
622
|
+
"$props": {
|
|
623
|
+
"size": "sm",
|
|
624
|
+
"quiet": true,
|
|
625
|
+
"haspopup": "dialog",
|
|
626
|
+
"expanded": {
|
|
627
|
+
"$ref": "#/state/resolvingOpen"
|
|
628
|
+
},
|
|
629
|
+
"hint": "The values this document is being rendered with"
|
|
630
|
+
},
|
|
631
|
+
"onclick": {
|
|
632
|
+
"$prototype": "Function",
|
|
633
|
+
"body": [
|
|
634
|
+
{
|
|
635
|
+
"operator": "call",
|
|
636
|
+
"target": {
|
|
637
|
+
"$ref": "#/state/openResolving"
|
|
638
|
+
},
|
|
639
|
+
"value": [
|
|
640
|
+
{
|
|
641
|
+
"$ref": "event#/currentTarget"
|
|
642
|
+
}
|
|
643
|
+
]
|
|
644
|
+
}
|
|
645
|
+
]
|
|
646
|
+
},
|
|
647
|
+
"children": [
|
|
648
|
+
{
|
|
649
|
+
"tagName": "span",
|
|
650
|
+
"textContent": "${state.resolvingLabel}"
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"tagName": "jx-icon",
|
|
654
|
+
"attributes": {
|
|
655
|
+
"part": "resolving-trigger-caret"
|
|
656
|
+
},
|
|
657
|
+
"$props": {
|
|
658
|
+
"name": "caret-down"
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
]
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
{
|
|
553
666
|
"tagName": "jx-action-button",
|
|
554
667
|
"attributes": {
|
|
555
|
-
"part": "
|
|
668
|
+
"part": "context-trigger"
|
|
556
669
|
},
|
|
557
670
|
"$props": {
|
|
558
671
|
"size": "sm",
|
|
559
672
|
"quiet": true,
|
|
560
673
|
"haspopup": "dialog",
|
|
561
674
|
"expanded": {
|
|
562
|
-
"$ref": "#/state/
|
|
675
|
+
"$ref": "#/state/contextOpen"
|
|
563
676
|
},
|
|
564
|
-
"hint": "
|
|
677
|
+
"hint": "What this document is being rendered with"
|
|
565
678
|
},
|
|
566
679
|
"onclick": {
|
|
567
680
|
"$prototype": "Function",
|
|
@@ -569,7 +682,7 @@
|
|
|
569
682
|
{
|
|
570
683
|
"operator": "call",
|
|
571
684
|
"target": {
|
|
572
|
-
"$ref": "#/state/
|
|
685
|
+
"$ref": "#/state/openContext"
|
|
573
686
|
},
|
|
574
687
|
"value": [
|
|
575
688
|
{
|
|
@@ -582,12 +695,12 @@
|
|
|
582
695
|
"children": [
|
|
583
696
|
{
|
|
584
697
|
"tagName": "span",
|
|
585
|
-
"textContent": "${state.
|
|
698
|
+
"textContent": "${state.contextSummary}"
|
|
586
699
|
},
|
|
587
700
|
{
|
|
588
701
|
"tagName": "jx-icon",
|
|
589
702
|
"attributes": {
|
|
590
|
-
"part": "
|
|
703
|
+
"part": "context-trigger-caret"
|
|
591
704
|
},
|
|
592
705
|
"$props": {
|
|
593
706
|
"name": "caret-down"
|
|
@@ -595,55 +708,9 @@
|
|
|
595
708
|
}
|
|
596
709
|
]
|
|
597
710
|
}
|
|
598
|
-
}
|
|
599
|
-
},
|
|
600
|
-
{
|
|
601
|
-
"tagName": "jx-action-button",
|
|
602
|
-
"attributes": {
|
|
603
|
-
"part": "context-trigger"
|
|
604
|
-
},
|
|
605
|
-
"$props": {
|
|
606
|
-
"size": "sm",
|
|
607
|
-
"quiet": true,
|
|
608
|
-
"haspopup": "dialog",
|
|
609
|
-
"expanded": {
|
|
610
|
-
"$ref": "#/state/contextOpen"
|
|
611
|
-
},
|
|
612
|
-
"hint": "What this document is being rendered with"
|
|
613
|
-
},
|
|
614
|
-
"onclick": {
|
|
615
|
-
"$prototype": "Function",
|
|
616
|
-
"body": [
|
|
617
|
-
{
|
|
618
|
-
"operator": "call",
|
|
619
|
-
"target": {
|
|
620
|
-
"$ref": "#/state/openContext"
|
|
621
|
-
},
|
|
622
|
-
"value": [
|
|
623
|
-
{
|
|
624
|
-
"$ref": "event#/currentTarget"
|
|
625
|
-
}
|
|
626
|
-
]
|
|
627
|
-
}
|
|
628
|
-
]
|
|
629
|
-
},
|
|
630
|
-
"children": [
|
|
631
|
-
{
|
|
632
|
-
"tagName": "span",
|
|
633
|
-
"textContent": "${state.contextSummary}"
|
|
634
|
-
},
|
|
635
|
-
{
|
|
636
|
-
"tagName": "jx-icon",
|
|
637
|
-
"attributes": {
|
|
638
|
-
"part": "context-trigger-caret"
|
|
639
|
-
},
|
|
640
|
-
"$props": {
|
|
641
|
-
"name": "caret-down"
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
711
|
]
|
|
645
712
|
}
|
|
646
|
-
|
|
713
|
+
}
|
|
647
714
|
},
|
|
648
715
|
{
|
|
649
716
|
"tagName": "div",
|
|
@@ -28,21 +28,17 @@
|
|
|
28
28
|
* @docs studio/interface/tabs
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
|
-
import { close
|
|
31
|
+
import { close, openAt } from "@jxsuite/ui/behaviors/popover";
|
|
32
|
+
import { isString } from "@jxsuite/schema/guards";
|
|
32
33
|
import { reactive } from "../reactivity";
|
|
33
34
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
34
35
|
import { rectOf } from "../utils/geometry";
|
|
35
36
|
import paneContextDoc from "./pane-context.json";
|
|
36
|
-
import type {
|
|
37
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
37
|
+
import type { JxElement } from "@jxsuite/schema/types";
|
|
38
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
39
|
+
import type { ViewportPoint } from "./menu";
|
|
38
40
|
|
|
39
|
-
registerSurface("pane-context", paneContextDoc
|
|
40
|
-
|
|
41
|
-
/** One row of a `jx-select`: the value it writes and the word it prints. */
|
|
42
|
-
export interface PaneContextOption {
|
|
43
|
-
value: string;
|
|
44
|
-
label: string;
|
|
45
|
-
}
|
|
41
|
+
registerSurface("pane-context", paneContextDoc);
|
|
46
42
|
|
|
47
43
|
/**
|
|
48
44
|
* One segment of a radio group — a size, a scheme, a view, a language.
|
|
@@ -74,7 +70,7 @@ export interface PaneContextParam {
|
|
|
74
70
|
name: string;
|
|
75
71
|
label: string;
|
|
76
72
|
value: string;
|
|
77
|
-
options:
|
|
73
|
+
options: SurfaceOption[];
|
|
78
74
|
}
|
|
79
75
|
|
|
80
76
|
/** One component test prop: a field, and the region id the screenshot pipeline addresses it by. */
|
|
@@ -101,6 +97,15 @@ export interface PaneContextView {
|
|
|
101
97
|
/** `full` draws the three axes; `lens` draws the rendering context as a read-only summary. */
|
|
102
98
|
barMode: "full" | "lens";
|
|
103
99
|
presetState: "shown" | "hidden";
|
|
100
|
+
/**
|
|
101
|
+
* The Back control, in a workspace that draws no tab strip (Media, Styles, Publish): shown over a
|
|
102
|
+
* view opened beside the workspace's home, naming where it leads
|
|
103
|
+
* (`workspace/workspace-back.ts`).
|
|
104
|
+
*/
|
|
105
|
+
backState: "shown" | "hidden";
|
|
106
|
+
/** "Back to Media", "Back to Variables". */
|
|
107
|
+
backLabel: string;
|
|
108
|
+
backHint: string;
|
|
104
109
|
bannerState: "shown" | "hidden";
|
|
105
110
|
/** The lens's stated rendering context — "Tablet · français". */
|
|
106
111
|
summary: string;
|
|
@@ -108,10 +113,15 @@ export interface PaneContextView {
|
|
|
108
113
|
editorMode: "static" | "picker";
|
|
109
114
|
editorLabel: string;
|
|
110
115
|
editorValue: string;
|
|
111
|
-
editorOptions:
|
|
116
|
+
editorOptions: SurfaceOption[];
|
|
112
117
|
|
|
113
118
|
viewState: "shown" | "hidden";
|
|
114
119
|
views: PaneContextChoice[];
|
|
120
|
+
/**
|
|
121
|
+
* Whether the Context axis (size, scheme, language, layout) is drawn. Hidden for a tab nothing is
|
|
122
|
+
* rendered under: a workspace home draws its own surface, not the document at a breakpoint.
|
|
123
|
+
*/
|
|
124
|
+
contextState: "shown" | "hidden";
|
|
115
125
|
previewState: "shown" | "hidden";
|
|
116
126
|
previewOn: boolean;
|
|
117
127
|
previewHint: string;
|
|
@@ -143,12 +153,14 @@ export interface PaneContextView {
|
|
|
143
153
|
zoomLabel: string;
|
|
144
154
|
fitState: "shown" | "hidden";
|
|
145
155
|
fitValue: string;
|
|
146
|
-
fitOptions:
|
|
156
|
+
fitOptions: SurfaceOption[];
|
|
147
157
|
}
|
|
148
158
|
|
|
149
159
|
/** What a control can ask the pane to do. Every one of them is a decision the flow owns. */
|
|
150
160
|
export interface PaneContextActions {
|
|
151
161
|
openPresetMenu: (anchor: HTMLElement) => void;
|
|
162
|
+
/** Leave the view for the workspace home (`pane.backToHome`). */
|
|
163
|
+
goBack: () => void;
|
|
152
164
|
chooseEditor: (kind: string) => void;
|
|
153
165
|
chooseView: (view: string) => void;
|
|
154
166
|
togglePreview: () => void;
|
|
@@ -205,8 +217,7 @@ interface PopoverState {
|
|
|
205
217
|
resolvingOpen: boolean;
|
|
206
218
|
}
|
|
207
219
|
|
|
208
|
-
interface PaneContextScope
|
|
209
|
-
extends Record<string, unknown>, PaneContextView, PaneContextActions, PopoverState {
|
|
220
|
+
interface PaneContextScope extends PaneContextView, PaneContextActions, PopoverState {
|
|
210
221
|
/** The two panel doors the document calls, which the mount owns rather than the flow. */
|
|
211
222
|
openContext: (anchor: HTMLElement) => void;
|
|
212
223
|
openResolving: (anchor: HTMLElement) => void;
|
|
@@ -221,6 +232,9 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
|
|
|
221
232
|
scope.zoomRegion = view.zoomRegion;
|
|
222
233
|
scope.barMode = view.barMode;
|
|
223
234
|
scope.presetState = view.presetState;
|
|
235
|
+
scope.backState = view.backState;
|
|
236
|
+
scope.backLabel = view.backLabel;
|
|
237
|
+
scope.backHint = view.backHint;
|
|
224
238
|
scope.bannerState = view.bannerState;
|
|
225
239
|
scope.summary = view.summary;
|
|
226
240
|
scope.editorMode = view.editorMode;
|
|
@@ -228,6 +242,7 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
|
|
|
228
242
|
scope.editorValue = view.editorValue;
|
|
229
243
|
scope.editorOptions = view.editorOptions;
|
|
230
244
|
scope.viewState = view.viewState;
|
|
245
|
+
scope.contextState = view.contextState;
|
|
231
246
|
scope.views = view.views;
|
|
232
247
|
scope.previewState = view.previewState;
|
|
233
248
|
scope.previewOn = view.previewOn;
|
|
@@ -259,9 +274,13 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
|
|
|
259
274
|
/** The projection a pane's chrome starts from — a bar with nothing in it yet. */
|
|
260
275
|
export function emptyPaneContextView(): PaneContextView {
|
|
261
276
|
return {
|
|
277
|
+
backHint: "",
|
|
278
|
+
backLabel: "",
|
|
279
|
+
backState: "hidden",
|
|
262
280
|
bannerState: "hidden",
|
|
263
281
|
barMode: "full",
|
|
264
282
|
contextRegion: "",
|
|
283
|
+
contextState: "shown",
|
|
265
284
|
contextSummary: "Base",
|
|
266
285
|
editorLabel: "",
|
|
267
286
|
editorMode: "static",
|
|
@@ -307,8 +326,8 @@ export function emptyPaneContextView(): PaneContextView {
|
|
|
307
326
|
* undefined at that moment and the two panels would both be filed under the same empty key.
|
|
308
327
|
*/
|
|
309
328
|
function attrOf(def: JxElement | string, name: string): string {
|
|
310
|
-
const value =
|
|
311
|
-
return
|
|
329
|
+
const value = isString(def) ? undefined : def.attributes?.[name];
|
|
330
|
+
return isString(value) ? value : "";
|
|
312
331
|
}
|
|
313
332
|
|
|
314
333
|
/**
|
|
@@ -325,7 +344,7 @@ function attrOf(def: JxElement | string, name: string): string {
|
|
|
325
344
|
* platform against the trigger it was opened from (ui.md §6) and these coordinates are ignored;
|
|
326
345
|
* they stand for the engines that cannot.
|
|
327
346
|
*/
|
|
328
|
-
function placeBelow(anchor: HTMLElement, panel: HTMLElement | null):
|
|
347
|
+
function placeBelow(anchor: HTMLElement, panel: HTMLElement | null): ViewportPoint {
|
|
329
348
|
const box = rectOf(anchor);
|
|
330
349
|
const width = panel ? rectOf(panel).width : 0;
|
|
331
350
|
const right = Math.max(0, box.right - width);
|
|
@@ -352,7 +371,7 @@ export function mountPaneContextSurface(
|
|
|
352
371
|
module finds an invoker from a panel — so two panes mounting this surface under one id would
|
|
353
372
|
hand the second pane's trigger the first pane's panel. */
|
|
354
373
|
const uid = `pane-context-${paneId}`;
|
|
355
|
-
const scope = reactive<PaneContextScope>({
|
|
374
|
+
const scope: PaneContextScope = reactive<PaneContextScope>({
|
|
356
375
|
...emptyPaneContextView(),
|
|
357
376
|
...actions,
|
|
358
377
|
contextOpen: false,
|
|
@@ -369,7 +388,7 @@ export function mountPaneContextSurface(
|
|
|
369
388
|
resolvingPopoverId: `${uid}-resolving`,
|
|
370
389
|
resolvingX: 0,
|
|
371
390
|
resolvingY: 0,
|
|
372
|
-
})
|
|
391
|
+
});
|
|
373
392
|
project(scope, view);
|
|
374
393
|
|
|
375
394
|
const nodes = new Map<string, HTMLElement>();
|
|
@@ -378,7 +397,7 @@ export function mountPaneContextSurface(
|
|
|
378
397
|
|
|
379
398
|
/** The panel a `data-popover` key names, once the document has drawn it. */
|
|
380
399
|
const panelOf = (kind: "context" | "resolving"): PopoverElement | null =>
|
|
381
|
-
|
|
400
|
+
nodes.get(`popover:${kind}`) ?? null;
|
|
382
401
|
|
|
383
402
|
/**
|
|
384
403
|
* Show a panel from its trigger, positioning it before and after the show.
|
|
@@ -391,7 +410,7 @@ export function mountPaneContextSurface(
|
|
|
391
410
|
if (!panel) {
|
|
392
411
|
return;
|
|
393
412
|
}
|
|
394
|
-
const write = (at:
|
|
413
|
+
const write = (at: ViewportPoint): void => {
|
|
395
414
|
if (kind === "context") {
|
|
396
415
|
scope.contextX = at.x;
|
|
397
416
|
scope.contextY = at.y;
|
|
@@ -418,7 +437,7 @@ export function mountPaneContextSurface(
|
|
|
418
437
|
}
|
|
419
438
|
const panel = panelOf(kind);
|
|
420
439
|
if (panel) {
|
|
421
|
-
|
|
440
|
+
close(panel);
|
|
422
441
|
}
|
|
423
442
|
};
|
|
424
443
|
|
|
@@ -454,7 +473,7 @@ export function mountPaneContextSurface(
|
|
|
454
473
|
`hidePopover()` queues its toggle: `canvas.setResolvingOpen { open: false }` has to be
|
|
455
474
|
true of `isResolvingOpen()` on the line after it, not a task later. */
|
|
456
475
|
element.addEventListener("toggle", (event) => {
|
|
457
|
-
const open =
|
|
476
|
+
const open = event.newState === "open";
|
|
458
477
|
if (kind === "context") {
|
|
459
478
|
scope.contextOpen = open;
|
|
460
479
|
} else {
|
|
@@ -483,7 +502,7 @@ export function mountPaneContextSurface(
|
|
|
483
502
|
},
|
|
484
503
|
/* A mount still in flight has nothing in the host to ask about, and answering "no" would make
|
|
485
504
|
the next repaint tear down the mount it is waiting for and start a second one. */
|
|
486
|
-
connected: () => !disposed && (mounted === null ||
|
|
505
|
+
connected: () => !disposed && (mounted === null || mounted.root.parentNode === host),
|
|
487
506
|
dispose() {
|
|
488
507
|
disposed = true;
|
|
489
508
|
hidePanel("context");
|
|
@@ -23,14 +23,15 @@
|
|
|
23
23
|
* @docs studio/interface
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
+
import { isJsonObject, isString } from "@jxsuite/schema/guards";
|
|
26
27
|
import { reactive } from "../reactivity";
|
|
27
28
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
28
29
|
import paneGridDoc from "./pane-grid.json";
|
|
29
|
-
import type {
|
|
30
|
+
import type { JxElement } from "@jxsuite/schema/types";
|
|
30
31
|
import type { JxScope } from "@jxsuite/runtime/types";
|
|
31
32
|
import type { SurfaceHandle } from "../ui/surface";
|
|
32
33
|
|
|
33
|
-
registerSurface("pane-grid", paneGridDoc
|
|
34
|
+
registerSurface("pane-grid", paneGridDoc);
|
|
34
35
|
|
|
35
36
|
/**
|
|
36
37
|
* The `part` a pane's CELL carries.
|
|
@@ -80,7 +81,7 @@ const CELL_PARTS: ReadonlyMap<string, PaneCellPart> = new Map([
|
|
|
80
81
|
* Every field is a finished value. The document asks no question about a pane — not which index it
|
|
81
82
|
* is at, not how many there are — so a projection cannot disagree with what is drawn.
|
|
82
83
|
*/
|
|
83
|
-
export interface PaneGridRow
|
|
84
|
+
export interface PaneGridRow {
|
|
84
85
|
/** The pane id. The repeater's key, and what every action is addressed with. */
|
|
85
86
|
id: string;
|
|
86
87
|
/** `"shown"` for every row but the first. The `$switch` the leading splitter hangs off. */
|
|
@@ -165,7 +166,7 @@ export interface PaneGridSurface {
|
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
/** The scope `pane-grid.json` reads. */
|
|
168
|
-
interface PaneGridScope extends
|
|
169
|
+
interface PaneGridScope extends PaneGridDragState {
|
|
169
170
|
rows: PaneGridRow[];
|
|
170
171
|
/** `jx-split`'s `value`. */
|
|
171
172
|
paneSplit: number;
|
|
@@ -180,8 +181,8 @@ interface PaneGridScope extends Record<string, unknown>, PaneGridDragState {
|
|
|
180
181
|
|
|
181
182
|
/** The `part` a node's definition carries, or `""` for a text node or an unmarked element. */
|
|
182
183
|
function partOf(def: JxElement | string): string {
|
|
183
|
-
const part =
|
|
184
|
-
return
|
|
184
|
+
const part = isString(def) ? undefined : def.attributes?.["part"];
|
|
185
|
+
return isString(part) ? part : "";
|
|
185
186
|
}
|
|
186
187
|
|
|
187
188
|
/**
|
|
@@ -192,8 +193,10 @@ function partOf(def: JxElement | string): string {
|
|
|
192
193
|
* object the projection put in `rows`.
|
|
193
194
|
*/
|
|
194
195
|
function paneOf(state: JxScope | undefined): string {
|
|
195
|
-
const
|
|
196
|
-
|
|
196
|
+
const map = state?.["$map"];
|
|
197
|
+
const row = isJsonObject(map) ? map["item"] : undefined;
|
|
198
|
+
const id = isJsonObject(row) ? row["id"] : undefined;
|
|
199
|
+
return isString(id) ? id : "";
|
|
197
200
|
}
|
|
198
201
|
|
|
199
202
|
/**
|
|
@@ -215,7 +218,7 @@ export function mountPaneGridSurface(
|
|
|
215
218
|
actions: PaneGridActions,
|
|
216
219
|
): PaneGridSurface {
|
|
217
220
|
host.replaceChildren();
|
|
218
|
-
const scope = reactive<PaneGridScope>({
|
|
221
|
+
const scope: PaneGridScope = reactive<PaneGridScope>({
|
|
219
222
|
armed: false,
|
|
220
223
|
edgePane: "",
|
|
221
224
|
move: actions.move,
|
|
@@ -226,7 +229,7 @@ export function mountPaneGridSurface(
|
|
|
226
229
|
splitGap: split.gap,
|
|
227
230
|
splitMax: split.max,
|
|
228
231
|
splitMin: split.min,
|
|
229
|
-
})
|
|
232
|
+
});
|
|
230
233
|
|
|
231
234
|
let mounted: SurfaceHandle | null = null;
|
|
232
235
|
let disposed = false;
|
|
@@ -239,6 +242,8 @@ export function mountPaneGridSurface(
|
|
|
239
242
|
onNodeCreated: (element, _path, def, state) => {
|
|
240
243
|
const cellPart = CELL_PARTS.get(partOf(def));
|
|
241
244
|
if (cellPart) {
|
|
245
|
+
/* SAFETY: `pane-grid.json` declares no text children and no SVG, so every node carrying
|
|
246
|
+
one of the five cell parts is an HTML element the runtime created from a tagName. */
|
|
242
247
|
actions.cellPart(paneOf(state), cellPart, element as HTMLElement);
|
|
243
248
|
}
|
|
244
249
|
},
|
|
@@ -31,10 +31,9 @@ import { effect, effectScope, reactive } from "../reactivity";
|
|
|
31
31
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
32
32
|
import activityDoc from "./panel-activity.json";
|
|
33
33
|
import type { EffectScope } from "@vue/reactivity";
|
|
34
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
35
34
|
import type { SurfaceHandle } from "../ui/surface";
|
|
36
35
|
|
|
37
|
-
registerSurface("panel-activity", activityDoc
|
|
36
|
+
registerSurface("panel-activity", activityDoc);
|
|
38
37
|
|
|
39
38
|
/** One declared phase of an operation, as the surface reads it. */
|
|
40
39
|
export interface ActivityStepView {
|
|
@@ -98,7 +97,7 @@ export interface ActivitySurfaceDeps {
|
|
|
98
97
|
}
|
|
99
98
|
|
|
100
99
|
/** The scope the document reads: the projection, flattened, beside the three callbacks. */
|
|
101
|
-
interface ActivityScope
|
|
100
|
+
interface ActivityScope {
|
|
102
101
|
rows: ActivityRowView[];
|
|
103
102
|
hasRows: boolean;
|
|
104
103
|
hasFinished: boolean;
|
|
@@ -127,7 +126,7 @@ function standingIn(container: HTMLElement): boolean {
|
|
|
127
126
|
return false;
|
|
128
127
|
}
|
|
129
128
|
// Still mounting into this very container: a second call must not start a second mount.
|
|
130
|
-
return _handle === null ? _mount !== null :
|
|
129
|
+
return _handle === null ? _mount !== null : _handle.root.parentNode === container;
|
|
131
130
|
}
|
|
132
131
|
|
|
133
132
|
/**
|
|
@@ -142,7 +141,7 @@ export function mountActivitySurface(container: HTMLElement, deps: ActivitySurfa
|
|
|
142
141
|
}
|
|
143
142
|
disposeActivitySurface();
|
|
144
143
|
_container = container;
|
|
145
|
-
const scope = reactive<ActivityScope>({
|
|
144
|
+
const scope: ActivityScope = reactive<ActivityScope>({
|
|
146
145
|
cancel: deps.cancel,
|
|
147
146
|
clearFinished: deps.clearFinished,
|
|
148
147
|
clearLabel: "",
|
|
@@ -150,7 +149,7 @@ export function mountActivitySurface(container: HTMLElement, deps: ActivitySurfa
|
|
|
150
149
|
hasRows: false,
|
|
151
150
|
rows: [],
|
|
152
151
|
toggleLog: deps.toggleLog,
|
|
153
|
-
})
|
|
152
|
+
});
|
|
154
153
|
_scope = effectScope();
|
|
155
154
|
_scope.run(() => {
|
|
156
155
|
effect(() => {
|
|
@@ -22,10 +22,9 @@
|
|
|
22
22
|
import { reactive } from "../reactivity";
|
|
23
23
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
24
24
|
import dataTreeDoc from "./panel-data.json";
|
|
25
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
26
25
|
import type { SurfaceHandle } from "../ui/surface";
|
|
27
26
|
|
|
28
|
-
registerSurface("panel-data", dataTreeDoc
|
|
27
|
+
registerSurface("panel-data", dataTreeDoc);
|
|
29
28
|
|
|
30
29
|
/**
|
|
31
30
|
* One line of a value tree, as the document reads it.
|
|
@@ -69,7 +68,7 @@ export interface DataTreeActions {
|
|
|
69
68
|
}
|
|
70
69
|
|
|
71
70
|
/** The scope the document reads. */
|
|
72
|
-
interface DataTreeScope extends
|
|
71
|
+
interface DataTreeScope extends DataTreeActions {
|
|
73
72
|
rows: DataTreeRow[];
|
|
74
73
|
}
|
|
75
74
|
|
|
@@ -113,7 +112,7 @@ export function renderDataTreeSurface(
|
|
|
113
112
|
}
|
|
114
113
|
takeDown(host, existing);
|
|
115
114
|
host.textContent = "";
|
|
116
|
-
const scope = reactive({ rows, showMore: actions.showMore })
|
|
115
|
+
const scope: DataTreeScope = reactive<DataTreeScope>({ rows, showMore: actions.showMore });
|
|
117
116
|
const record: Mounted = { disposed: false, handle: null, scope };
|
|
118
117
|
mounts.set(host, record);
|
|
119
118
|
/* No race to arbitrate: a repaint arriving while this is in flight takes the branch above — a
|