@jxsuite/studio 6.1.2 → 8.0.1
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/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-0fj8a4ga.js → color-area-6rbra5dy.js} +2 -2
- package/dist/chunks/{color-field-xch8kx2g.js → color-field-gy56c94g.js} +3 -3
- package/dist/chunks/color-m7r1vk54.js +4 -0
- package/dist/chunks/{color-slider-jxd8v350.js → color-slider-sqqdyf6c.js} +2 -2
- package/dist/chunks/{combobox-p0efwjke.js → combobox-72h32ejk.js} +3 -3
- 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/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-d2wq9ezg.js → grid-view-qg1b5eqx.js} +25 -25
- package/dist/chunks/{icons-pnfz478q.js → icons-63bjtbs7.js} +2 -2
- package/dist/chunks/{iframe-entry-jdcktez8.js → iframe-entry-2zggzajv.js} +4 -4
- package/dist/chunks/{iframe-entry-zap785cw.js → iframe-entry-76j8vwwx.js} +4 -4
- package/dist/chunks/iframe-entry-99nr5zfb.js +5 -0
- package/dist/chunks/{iframe-entry-x0ygf2yr.js → iframe-entry-pkgmcgp0.js} +4 -4
- package/dist/chunks/iframe-host-ssv7kyj0.js +4 -0
- package/dist/chunks/{index-zpjmzqfk.js → index-32eqzv1k.js} +3 -3
- package/dist/chunks/index-f0jn7nnp.js +4 -0
- package/dist/chunks/{javascript-m54mnwp6.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-e74qjyq6.js → listbox-c421cf8c.js} +2 -2
- 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-n6yzswmy.js → menu-bdpzbfvs.js} +2 -2
- package/dist/chunks/{monaco-binding-7gx83x3r.js → monaco-binding-vq1hgnn0.js} +3 -3
- 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/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/source-control-kwktr9y6.js +4 -0
- package/dist/chunks/{split-n2gfpm5m.js → split-c9zfdgxf.js} +2 -2
- 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-2j1cb95x.js → studio-6m380wp7.js} +4 -4
- package/dist/chunks/studio-80jyh1xh.js +4 -0
- package/dist/chunks/studio-83mk4bgg.js +9 -0
- package/dist/chunks/{studio-v0jzqdjm.js → studio-881z1xrx.js} +4 -4
- package/dist/chunks/studio-8m0y2qe7.js +5 -0
- package/dist/chunks/{studio-d81xfh1g.js → studio-8tr6cfrc.js} +4 -4
- 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-dgz8d0c1.js → studio-bbe4c90a.js} +4 -4
- 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-90pq9km1.js → studio-jcnsdaep.js} +4 -4
- package/dist/chunks/studio-jsgf2q5k.js +7 -0
- package/dist/chunks/{studio-0q988f9w.js → studio-k3xxbagr.js} +3 -3
- package/dist/chunks/{studio-5ve6bbep.js → studio-k7evxqh4.js} +4 -4
- 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-485046te.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-1fxkaaea.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-tq0rtfwj.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-a3g98wjr.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-r5qy30vx.js +5 -0
- 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/toast-1gv0h53h.js +4 -0
- package/dist/chunks/{toast-host-ke5z4ng7.js → toast-host-1yg5ar8d.js} +3 -3
- package/dist/chunks/{tooltip-5v8ngwj2.js → tooltip-yypz28gq.js} +3 -3
- package/dist/chunks/{tree-mdq3v5cw.js → tree-9xa4hm7n.js} +2 -2
- 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-nze0k6mv.js → ws-client-bv552sfx.js} +3 -3
- package/dist/iframe-entry.js +20 -16
- package/dist/manifest.json +77 -63
- package/dist/studio.js +103 -104
- package/dist/workers/ts.worker.js +3 -3
- package/package.json +12 -11
- package/src/browse/component-examples.ts +272 -0
- package/src/browse/library-commands.ts +64 -104
- package/src/browse/library-layouts.ts +263 -49
- package/src/browse/library-model.ts +181 -133
- package/src/browse/library-pane.ts +738 -446
- package/src/browse/library-preview.ts +149 -19
- 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 +16 -1
- package/src/canvas/canvas-live-render.ts +222 -30
- package/src/canvas/canvas-origin.ts +37 -12
- package/src/canvas/canvas-page-context.ts +112 -0
- package/src/canvas/canvas-render.ts +113 -107
- package/src/canvas/canvas-utils.ts +57 -12
- package/src/canvas/iframe-drop.ts +107 -0
- package/src/canvas/iframe-entry.ts +24 -12
- package/src/canvas/iframe-host.ts +134 -62
- package/src/canvas/iframe-keys.ts +11 -0
- package/src/canvas/iframe-patch.ts +8 -7
- package/src/canvas/iframe-protocol.ts +24 -5
- package/src/canvas/iframe-render.ts +48 -1
- package/src/canvas/iframe-subtree.ts +5 -2
- package/src/canvas/npm-modules.ts +22 -0
- package/src/canvas/preview-navigate.ts +16 -0
- package/src/canvas/repeater-sources.ts +200 -0
- package/src/canvas/stage-scrollbar.ts +5 -1
- package/src/canvas/surface-registry.ts +6 -0
- package/src/commands/app-commands.ts +16 -6
- package/src/commands/budget.ts +10 -8
- package/src/commands/context.ts +35 -10
- package/src/commands/defaults.ts +69 -45
- package/src/commands/keymap.ts +9 -0
- package/src/commands/levels.ts +11 -5
- package/src/commands/live-context.ts +2 -0
- package/src/commands/registry.ts +10 -1
- package/src/content/collection-match.ts +6 -5
- package/src/content/collection-pages.ts +412 -0
- package/src/content/content-collections.ts +270 -0
- package/src/content/entry-commands.ts +51 -60
- package/src/content/entry-editor.ts +111 -18
- package/src/content/entry-fields.ts +13 -1
- package/src/content/entry-inspector.ts +225 -0
- package/src/content/entry-model.ts +17 -3
- 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/convert-to-component.ts +67 -43
- package/src/editor/file-drop-action.ts +9 -1
- package/src/editor/inline-edit-apply.ts +44 -0
- package/src/editor/inline-edit.ts +10 -0
- package/src/editor/insert-component.ts +91 -0
- package/src/editor/insert-zone-action.ts +13 -4
- package/src/editor/shortcuts.ts +44 -22
- package/src/editor/slash-menu.ts +51 -8
- package/src/files/components.ts +74 -10
- package/src/files/file-ops.ts +15 -5
- package/src/files/files.ts +164 -150
- package/src/files/fs-events.ts +18 -7
- package/src/files/media-meta.ts +95 -1
- 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 +13 -3
- package/src/format/format-host.ts +15 -0
- package/src/github/github-auth.ts +2 -2
- package/src/github/github-publish.ts +4 -3
- package/src/grid/grid-controller.ts +5 -1
- package/src/grid/grid-open.ts +0 -27
- package/src/grid/grid-panel.ts +54 -2
- package/src/grid/grid-reveal.ts +34 -0
- package/src/grid/grid-source.ts +3 -25
- package/src/grid/grid-view.ts +31 -6
- package/src/grid/sources/content-source.ts +75 -7
- package/src/grid/tabulator-tables.d.ts +6 -0
- package/src/hosting/document.ts +2 -2
- package/src/i18n/i18n-commands.ts +2 -1
- 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 +47 -19
- package/src/packages/pull-package-sync.ts +1 -1
- package/src/panels/activity-panel.ts +21 -5
- package/src/panels/ai-chat/chat-markdown.ts +8 -8
- package/src/panels/block-action-bar.ts +11 -11
- package/src/panels/canvas-dnd-bridge.ts +5 -2
- 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 +1 -1
- package/src/panels/data-grid.ts +4 -0
- package/src/panels/dnd.ts +17 -30
- package/src/panels/elements-panel.ts +9 -2
- package/src/panels/empty-state.ts +2 -2
- package/src/panels/formula-workspace.ts +2 -3
- package/src/panels/frontmatter-fields.ts +9 -9
- package/src/panels/git-diff-open.ts +9 -5
- package/src/panels/head-panel.ts +369 -103
- package/src/panels/i18n-panel.ts +11 -10
- package/src/panels/imports-panel.ts +2 -0
- package/src/panels/jump-bar.ts +27 -2
- package/src/panels/layers-panel.ts +36 -30
- package/src/panels/left-panel.ts +22 -8
- package/src/panels/navigator-panels.ts +23 -11
- package/src/panels/pane-context.ts +111 -29
- package/src/panels/pane-grid.ts +6 -6
- package/src/panels/panel-registry.ts +14 -9
- package/src/panels/properties-panel.ts +7 -3
- package/src/panels/right-panel.ts +199 -43
- package/src/panels/seo-modal.ts +41 -108
- package/src/panels/settings-menu.ts +52 -50
- package/src/panels/settings-pane.ts +268 -162
- package/src/panels/signals-panel.ts +3 -4
- package/src/panels/site-model.ts +367 -0
- package/src/panels/site-panel.ts +638 -0
- package/src/panels/style-panel.ts +37 -3
- package/src/panels/stylebook-doc.ts +142 -10
- package/src/panels/stylebook-layers-panel.ts +39 -80
- package/src/panels/stylebook-panel.ts +47 -10
- package/src/panels/styles-panel.ts +327 -0
- package/src/panels/tab-strip.ts +109 -25
- package/src/platform.ts +1 -1
- package/src/platforms/cloud.ts +28 -1
- package/src/platforms/default-platform.ts +4 -4
- package/src/platforms/devserver.ts +51 -25
- package/src/publish/deploy-checklist.ts +12 -7
- package/src/publish/pages-service.ts +38 -14
- package/src/publish/publish-changes.ts +491 -0
- package/src/publish/publish-commands.ts +83 -18
- package/src/publish/publish-ids.ts +49 -0
- 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/services/automation.ts +16 -20
- package/src/services/cf-settings.ts +4 -4
- package/src/services/connection.ts +2 -2
- package/src/services/directory-picker.ts +2 -2
- package/src/services/references.ts +0 -0
- package/src/services/render-critic.ts +21 -2
- package/src/services/settings/definitions.ts +25 -14
- package/src/settings/contributed-section.ts +49 -10
- package/src/settings/css-vars-editor.ts +93 -27
- package/src/settings/developer-panels.ts +43 -0
- package/src/settings/extension-sections.ts +20 -2
- package/src/settings/general-settings.ts +91 -21
- package/src/settings/preferences-dialog.ts +8 -1
- package/src/settings/project-sections.ts +27 -10
- package/src/settings/schema-field-ui.ts +3 -1
- package/src/settings/section-registry.ts +116 -11
- package/src/settings/settings-dialog.ts +192 -0
- package/src/settings/settings-document.ts +182 -162
- package/src/shell.ts +467 -431
- package/src/site-context.ts +64 -10
- package/src/state.ts +28 -9
- package/src/studio.ts +194 -41
- package/src/style/project-styles.ts +34 -0
- 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/variables-focus.ts +61 -0
- package/src/style/variables-view.ts +235 -0
- package/src/surfaces/add-new.json +1482 -0
- package/src/surfaces/add-new.ts +325 -0
- package/src/surfaces/ai-chat.ts +2 -2
- package/src/surfaces/boot-failure.json +4 -3
- package/src/surfaces/bottom-dock.json +1 -1
- package/src/surfaces/canvas-stage.json +30 -19
- package/src/surfaces/canvas-stage.ts +5 -5
- 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 +134 -99
- package/src/surfaces/empty-state.json +1 -1
- package/src/surfaces/entry-editor.json +136 -0
- package/src/surfaces/entry-editor.ts +21 -0
- package/src/surfaces/entry-inspector.json +371 -0
- package/src/surfaces/entry-inspector.ts +143 -0
- package/src/surfaces/inspector-dock.json +162 -14
- package/src/surfaces/inspector-dock.ts +46 -19
- package/src/surfaces/library-pane.json +670 -437
- package/src/surfaces/library-pane.ts +94 -59
- package/src/surfaces/media-browser.json +62 -6
- package/src/surfaces/media-browser.ts +15 -1
- package/src/surfaces/media-field.json +1 -1
- package/src/surfaces/media-library.json +1586 -0
- package/src/surfaces/media-library.ts +282 -0
- package/src/surfaces/media-pick-dialog.json +71 -0
- package/src/surfaces/media-pick-dialog.ts +132 -0
- package/src/surfaces/menu.ts +18 -0
- package/src/surfaces/pane-context.json +144 -77
- package/src/surfaces/pane-context.ts +24 -0
- package/src/surfaces/panel-deploy-checklist.json +12 -6
- package/src/surfaces/panel-deploy-checklist.ts +3 -1
- package/src/surfaces/panel-page.json +72 -2
- package/src/surfaces/panel-page.ts +38 -7
- package/src/surfaces/panel-signals.json +1 -1
- package/src/surfaces/panel-signals.ts +5 -5
- package/src/surfaces/panel-stylebook-layers.json +71 -204
- package/src/surfaces/panel-stylebook-layers.ts +0 -21
- package/src/surfaces/preferences.json +120 -48
- package/src/surfaces/preferences.ts +8 -0
- 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/rail.json +1 -159
- package/src/surfaces/rail.ts +18 -75
- package/src/surfaces/schema-form.json +10 -2
- package/src/surfaces/schema-form.ts +2 -0
- package/src/surfaces/seo.json +1 -1
- package/src/surfaces/settings-contributed.json +5 -5
- package/src/surfaces/settings-contributed.ts +18 -2
- package/src/surfaces/settings-css-vars.json +44 -36
- package/src/surfaces/settings-css-vars.ts +77 -4
- package/src/surfaces/settings-deploy.json +2 -15
- package/src/surfaces/settings-deploy.ts +1 -1
- package/src/surfaces/settings-dialog.json +51 -0
- package/src/surfaces/settings-dialog.ts +169 -0
- package/src/surfaces/settings-overview.json +3 -3
- package/src/surfaces/settings-overview.ts +9 -2
- package/src/surfaces/settings-pane.json +269 -46
- package/src/surfaces/settings-pane.ts +85 -24
- package/src/surfaces/shell.json +2 -1
- 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 +23 -0
- package/src/surfaces/statusbar.ts +39 -15
- 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/welcome.ts +1 -1
- 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/tab.ts +47 -7
- package/src/types.ts +21 -26
- package/src/ui/form-controls.ts +47 -8
- package/src/ui/layers.ts +13 -0
- package/src/ui/media-picker.ts +284 -40
- package/src/ui/regions.ts +7 -6
- package/src/ui/schema-form.ts +259 -27
- package/src/ui/virtual-window.ts +26 -1
- package/src/utils/base64.ts +3 -3
- package/src/utils/edit-display.ts +322 -67
- package/src/utils/local-day.ts +18 -0
- package/src/workspace/pane-derive.ts +4 -4
- package/src/workspace/session.ts +28 -7
- 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 +125 -11
- package/styles/shell-frame.css +30 -7
- package/styles/shell-frame.json +15 -3
- package/dist/chunks/2020-f2gkpy8d.js +0 -4
- package/dist/chunks/adapter-4912g339.js +0 -4
- package/dist/chunks/cf-account-picker-wccaenh6.js +0 -4
- package/dist/chunks/cf-settings-br6105tr.js +0 -4
- package/dist/chunks/color-28ksk2qm.js +0 -4
- package/dist/chunks/components-db68vsn7.js +0 -4
- package/dist/chunks/content-source-1449qesq.js +0 -4
- package/dist/chunks/convert-to-repeater-5h457egj.js +0 -4
- package/dist/chunks/editor-x9jn86a7.js +0 -4
- package/dist/chunks/entry-commands-may24cpt.js +0 -4
- package/dist/chunks/extension-sections-pvr14vxr.js +0 -4
- package/dist/chunks/file-ops-x9v54pcj.js +0 -4
- package/dist/chunks/files-j3knqf0s.js +0 -4
- package/dist/chunks/format-host-tyre2trb.js +0 -4
- package/dist/chunks/fs-events-64ma9htc.js +0 -4
- package/dist/chunks/git-panel-84ps5dex.js +0 -4
- package/dist/chunks/iframe-entry-fvbk89gm.js +0 -5
- package/dist/chunks/iframe-host-ck6vejt5.js +0 -4
- package/dist/chunks/index-b8xw3vy9.js +0 -4
- package/dist/chunks/jsonMode-w15cmrcm.js +0 -13
- package/dist/chunks/jx-validate-at3zn8wa.js +0 -4
- package/dist/chunks/layers-h4xp1pss.js +0 -4
- package/dist/chunks/layers-panel-m5hw1d7g.js +0 -4
- package/dist/chunks/lit-html-8t8t3dnr.js +0 -4
- package/dist/chunks/media-picker-2cweexc5.js +0 -4
- package/dist/chunks/menu-ynw13y0s.js +0 -4
- package/dist/chunks/monaco-buffer-qzxn567r.js +0 -4
- package/dist/chunks/monaco-setup-gxf6656g.js +0 -4
- package/dist/chunks/notify-cj5zbrs2.js +0 -4
- package/dist/chunks/parse-b7ddhr8m.js +0 -4
- package/dist/chunks/platform-3dfws9js.js +0 -4
- package/dist/chunks/popover-jt2gxmzs.js +0 -4
- package/dist/chunks/publish-panel-1gvxbj21.js +0 -4
- package/dist/chunks/quick-search-0dajrwqg.js +0 -4
- package/dist/chunks/references-49qgt404.js +0 -4
- package/dist/chunks/right-panel-jm1bwe53.js +0 -4
- package/dist/chunks/section-registry-6kwc4fky.js +0 -4
- package/dist/chunks/studio-0rt52vpq.js +0 -5
- package/dist/chunks/studio-18vgbhs5.js +0 -5
- package/dist/chunks/studio-24mccdrj.js +0 -5
- package/dist/chunks/studio-2eh507zk.js +0 -9
- package/dist/chunks/studio-2hcbccfv.js +0 -5
- package/dist/chunks/studio-2jbs3rxv.js +0 -5
- package/dist/chunks/studio-4h8k4dw9.js +0 -5
- package/dist/chunks/studio-5f6n18kx.js +0 -5
- package/dist/chunks/studio-5gthpky6.js +0 -5
- package/dist/chunks/studio-6ep3js6b.js +0 -9
- package/dist/chunks/studio-6wkmf3wz.js +0 -9
- package/dist/chunks/studio-841rf3cg.js +0 -5
- package/dist/chunks/studio-8gmwgheg.js +0 -5
- package/dist/chunks/studio-8qm0ep50.js +0 -5
- package/dist/chunks/studio-924p1tm1.js +0 -6
- package/dist/chunks/studio-a3shpz9y.js +0 -5
- package/dist/chunks/studio-amsbaaar.js +0 -6
- package/dist/chunks/studio-at5spjbc.js +0 -7
- package/dist/chunks/studio-b2xv945e.js +0 -5
- package/dist/chunks/studio-bn5nkafw.js +0 -5
- package/dist/chunks/studio-bw6q5xjf.js +0 -9
- package/dist/chunks/studio-c7q0t9x1.js +0 -5
- package/dist/chunks/studio-camnhc96.js +0 -6
- package/dist/chunks/studio-cffqvnzd.js +0 -5
- package/dist/chunks/studio-efvfrsf8.js +0 -5
- package/dist/chunks/studio-er30bpcx.js +0 -5
- package/dist/chunks/studio-ezscgr64.js +0 -5
- package/dist/chunks/studio-ffrrncvz.js +0 -5
- package/dist/chunks/studio-fpphgn8y.js +0 -10
- package/dist/chunks/studio-j1kvhdjk.js +0 -4
- package/dist/chunks/studio-j430n16g.js +0 -7
- package/dist/chunks/studio-jjkg84nj.js +0 -5
- package/dist/chunks/studio-m0q32ars.js +0 -4
- package/dist/chunks/studio-m6bdst11.js +0 -5
- package/dist/chunks/studio-nv2cptd4.js +0 -64
- package/dist/chunks/studio-nwfrc98n.js +0 -5
- package/dist/chunks/studio-p1wgvp7r.js +0 -5
- package/dist/chunks/studio-pag2wncm.js +0 -5
- package/dist/chunks/studio-qvanvzfd.js +0 -5
- package/dist/chunks/studio-qwa64kt7.js +0 -5
- package/dist/chunks/studio-rk1zc4x3.js +0 -928
- package/dist/chunks/studio-se2r3ptc.js +0 -5
- package/dist/chunks/studio-sg2a0dh0.js +0 -5
- package/dist/chunks/studio-tjzjhe68.js +0 -5
- package/dist/chunks/studio-v2w7q8r1.js +0 -7
- package/dist/chunks/studio-v5vjq1h0.js +0 -4
- package/dist/chunks/studio-v8aga3vp.js +0 -14
- package/dist/chunks/studio-vfcdrfmv.js +0 -5
- package/dist/chunks/studio-vmfkgdjf.js +0 -5
- package/dist/chunks/studio-wt1816jj.js +0 -5
- package/dist/chunks/studio-wz73q5kq.js +0 -4
- package/dist/chunks/studio-y04qtxvp.js +0 -7
- package/dist/chunks/studio-y21g8zzg.js +0 -5
- package/dist/chunks/studio-y64hrt8p.js +0 -12
- package/dist/chunks/studio-ynn90f58.js +0 -16
- package/dist/chunks/studio-yxz682sx.js +0 -5
- package/dist/chunks/studio-zp7snvkq.js +0 -5
- package/dist/chunks/studio-zq4z6tm6.js +0 -5
- package/dist/chunks/toast-c9fn075p.js +0 -4
- package/dist/chunks/tsMode-sf49ee9x.js +0 -14
- package/dist/chunks/workspace-jtfahpee.js +0 -4
- package/src/panels/frontmatter-panel.ts +0 -711
- package/src/panels/git-panel.ts +0 -1108
- package/src/surfaces/doc-header.json +0 -776
- package/src/surfaces/doc-header.ts +0 -222
- package/src/surfaces/git-panel.json +0 -1880
- package/src/surfaces/git-panel.ts +0 -264
|
@@ -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",
|
|
@@ -97,6 +97,15 @@ export interface PaneContextView {
|
|
|
97
97
|
/** `full` draws the three axes; `lens` draws the rendering context as a read-only summary. */
|
|
98
98
|
barMode: "full" | "lens";
|
|
99
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;
|
|
100
109
|
bannerState: "shown" | "hidden";
|
|
101
110
|
/** The lens's stated rendering context — "Tablet · français". */
|
|
102
111
|
summary: string;
|
|
@@ -108,6 +117,11 @@ export interface PaneContextView {
|
|
|
108
117
|
|
|
109
118
|
viewState: "shown" | "hidden";
|
|
110
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";
|
|
111
125
|
previewState: "shown" | "hidden";
|
|
112
126
|
previewOn: boolean;
|
|
113
127
|
previewHint: string;
|
|
@@ -145,6 +159,8 @@ export interface PaneContextView {
|
|
|
145
159
|
/** What a control can ask the pane to do. Every one of them is a decision the flow owns. */
|
|
146
160
|
export interface PaneContextActions {
|
|
147
161
|
openPresetMenu: (anchor: HTMLElement) => void;
|
|
162
|
+
/** Leave the view for the workspace home (`pane.backToHome`). */
|
|
163
|
+
goBack: () => void;
|
|
148
164
|
chooseEditor: (kind: string) => void;
|
|
149
165
|
chooseView: (view: string) => void;
|
|
150
166
|
togglePreview: () => void;
|
|
@@ -216,6 +232,9 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
|
|
|
216
232
|
scope.zoomRegion = view.zoomRegion;
|
|
217
233
|
scope.barMode = view.barMode;
|
|
218
234
|
scope.presetState = view.presetState;
|
|
235
|
+
scope.backState = view.backState;
|
|
236
|
+
scope.backLabel = view.backLabel;
|
|
237
|
+
scope.backHint = view.backHint;
|
|
219
238
|
scope.bannerState = view.bannerState;
|
|
220
239
|
scope.summary = view.summary;
|
|
221
240
|
scope.editorMode = view.editorMode;
|
|
@@ -223,6 +242,7 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
|
|
|
223
242
|
scope.editorValue = view.editorValue;
|
|
224
243
|
scope.editorOptions = view.editorOptions;
|
|
225
244
|
scope.viewState = view.viewState;
|
|
245
|
+
scope.contextState = view.contextState;
|
|
226
246
|
scope.views = view.views;
|
|
227
247
|
scope.previewState = view.previewState;
|
|
228
248
|
scope.previewOn = view.previewOn;
|
|
@@ -254,9 +274,13 @@ function project(scope: PaneContextScope, view: PaneContextView): void {
|
|
|
254
274
|
/** The projection a pane's chrome starts from — a bar with nothing in it yet. */
|
|
255
275
|
export function emptyPaneContextView(): PaneContextView {
|
|
256
276
|
return {
|
|
277
|
+
backHint: "",
|
|
278
|
+
backLabel: "",
|
|
279
|
+
backState: "hidden",
|
|
257
280
|
bannerState: "hidden",
|
|
258
281
|
barMode: "full",
|
|
259
282
|
contextRegion: "",
|
|
283
|
+
contextState: "shown",
|
|
260
284
|
contextSummary: "Base",
|
|
261
285
|
editorLabel: "",
|
|
262
286
|
editorMode: "static",
|
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
},
|
|
106
106
|
"& [part=\"step-icon\"]": {
|
|
107
107
|
"flex": "none",
|
|
108
|
-
"
|
|
109
|
-
"
|
|
108
|
+
"--jx-icon-size": "1em",
|
|
109
|
+
"marginBlockEnd": "-0.15em"
|
|
110
110
|
},
|
|
111
111
|
"& [part=\"action\"]": {
|
|
112
112
|
"marginTop": "var(--jx-space-1)"
|
|
@@ -205,12 +205,18 @@
|
|
|
205
205
|
},
|
|
206
206
|
"children": [
|
|
207
207
|
{
|
|
208
|
-
"tagName": "
|
|
208
|
+
"tagName": "jx-icon",
|
|
209
209
|
"attributes": {
|
|
210
|
-
"part": "step-icon"
|
|
211
|
-
"aria-hidden": "true"
|
|
210
|
+
"part": "step-icon"
|
|
212
211
|
},
|
|
213
|
-
"
|
|
212
|
+
"$props": {
|
|
213
|
+
"name": {
|
|
214
|
+
"$ref": "$map/item/icon"
|
|
215
|
+
},
|
|
216
|
+
"label": {
|
|
217
|
+
"$ref": "$map/item/iconLabel"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
214
220
|
},
|
|
215
221
|
{
|
|
216
222
|
"tagName": "span",
|
|
@@ -41,8 +41,10 @@ export interface DeployStepRowView {
|
|
|
41
41
|
id: string;
|
|
42
42
|
/** `done` | `todo` | `unknown`, as `data-state`. `unknown` is not a third kind of "no". */
|
|
43
43
|
state: string;
|
|
44
|
-
/** The
|
|
44
|
+
/** The kit icon the checklist chose for that state (`check`, `warning-circle`, `question`). */
|
|
45
45
|
icon: string;
|
|
46
|
+
/** The state in words, the icon's accessible name: "Done", "To do", "Not checked yet". */
|
|
47
|
+
iconLabel: string;
|
|
46
48
|
/** The label, and — unless the link is forged — the sentence that says what is missing. */
|
|
47
49
|
text: string;
|
|
48
50
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioPanelPage",
|
|
4
|
-
"$description": "The
|
|
4
|
+
"$description": "The Inspector's Page tab (specs/studio.md §6), the former Navigator Page panel: everything the open document says about itself before anybody reads its body — its frontmatter, the layout it is poured into, its title, description, viewport and icon, its OpenGraph card, and the raw `$head` tags no structured control owns. ONE row vocabulary across the first four sections, told apart by `kind`, because a Title, a Layout picker and a schema-driven frontmatter field differ in what they COMMIT rather than in what they look like — and what they commit is `panels/head-panel.ts`'s decision, reached by the row's `key`. Nothing here knows what a `$head` entry is, which of them are managed, what a content collection is or that a page has a layout: the flow hands over sections whose every field is already a string and this draws them. The Custom Tags section is the one different shape — a read-only list plus the form that adds to it — because those rows are markup a reader is being SHOWN rather than a value they are editing.",
|
|
5
5
|
"tagName": "div",
|
|
6
6
|
"attributes": {
|
|
7
7
|
"part": "page"
|
|
8
8
|
},
|
|
9
9
|
"style": {
|
|
10
|
-
"$description": "The eleven `.imports-*` and four `.head-*` rules in `styles/panels.css` plus the row vocabulary the panel used to borrow from `styles/inspector.css` (`.style-row`, `.style-row-label`, `.set-dot`) and `styles/overlays.css` (`.media-picker`, `.media-picker-thumb`). The borrowed ones are TRANSCRIBED rather than shared,
|
|
10
|
+
"$description": "The eleven `.imports-*` and four `.head-*` rules in `styles/panels.css` plus the row vocabulary the panel used to borrow from `styles/inspector.css` (`.style-row`, `.style-row-label`, `.set-dot`) and `styles/overlays.css` (`.media-picker`, `.media-picker-thumb`). The borrowed ones are TRANSCRIBED rather than shared, because a document emits no class, so a class cannot style it, and the lit panels that still draw a `.style-row` go on owning those rules until they convert. Four token repairs travel with them. `--spectrum-font-size-50` resolved only inside `<sp-theme>` and a document is mounted outside it, so every rule that read it would silently have taken its 11px fallback and stopped following the theme; each is `--jx-text-sm` here, and the two bare `10px` literals are `--jx-text-xs`. `.imports-count` read `--text-hint`, a name NO stylesheet in this package defines — an unresolvable custom property makes the whole declaration invalid at computed-value time, so the count has been inheriting its colour rather than taking the one written for it, and it says `--fg-dim`, which is what it was drawing anyway. And `.head-section-body .style-row > sp-textfield` reached INSIDE another component to widen it, which a part cannot do and no longer has to: `[part=\"widget\"]` is the field itself. Two things changed on purpose. THE CLEAR DOT IS A BUTTON — it was a `<span>` with a click handler and no role, so a row's only route to clearing its value could not be reached from the keyboard at all. AND THE ADD FORM IS STATE, not three `ref()` handles read at submit time: a document binding writes only when the scope moves, so the flow states what each field holds and clearing one after a successful add is a real change the runtime carries back.",
|
|
11
11
|
"display": "block",
|
|
12
12
|
"overflowY": "auto",
|
|
13
13
|
"padding": "var(--jx-space-2)",
|
|
@@ -85,6 +85,19 @@
|
|
|
85
85
|
"width": "100%",
|
|
86
86
|
"minWidth": "0"
|
|
87
87
|
},
|
|
88
|
+
"& [part=\"readout\"]": {
|
|
89
|
+
"$description": "A derived value set as text in the field's place, monospaced because a URL is read character by character.",
|
|
90
|
+
"display": "block",
|
|
91
|
+
"padding": "2px 0",
|
|
92
|
+
"overflow": "hidden",
|
|
93
|
+
"textOverflow": "ellipsis",
|
|
94
|
+
"whiteSpace": "nowrap",
|
|
95
|
+
"fontFamily": "var(--font-mono, monospace)",
|
|
96
|
+
"fontSize": "var(--jx-text-sm)"
|
|
97
|
+
},
|
|
98
|
+
"& [part=\"row-action\"]": {
|
|
99
|
+
"alignSelf": "flex-start"
|
|
100
|
+
},
|
|
88
101
|
"& [part=\"note\"]": {
|
|
89
102
|
"$description": "What the row could not find out — the entries of a referenced collection that is empty, or the reason listing it failed. A sentence under the control, in the row's own label size, so it reads as part of the field rather than as an error banner.",
|
|
90
103
|
"margin": "0",
|
|
@@ -501,6 +514,15 @@
|
|
|
501
514
|
]
|
|
502
515
|
}
|
|
503
516
|
},
|
|
517
|
+
"readout": {
|
|
518
|
+
"$description": "A value the document derives rather than stores, such as a page's URL, which is its file's place under `pages/`. Shown, never edited here: an editable URL would be a rename, and a rename is the file tree's.",
|
|
519
|
+
"tagName": "output",
|
|
520
|
+
"attributes": {
|
|
521
|
+
"part": "readout",
|
|
522
|
+
"aria-label": "${$map.item.label}"
|
|
523
|
+
},
|
|
524
|
+
"textContent": "${$map.item.value}"
|
|
525
|
+
},
|
|
504
526
|
"select": {
|
|
505
527
|
"tagName": "jx-select",
|
|
506
528
|
"attributes": {
|
|
@@ -682,6 +704,54 @@
|
|
|
682
704
|
}
|
|
683
705
|
}
|
|
684
706
|
},
|
|
707
|
+
{
|
|
708
|
+
"tagName": "div",
|
|
709
|
+
"attributes": {
|
|
710
|
+
"part": "action-slot",
|
|
711
|
+
"role": "none"
|
|
712
|
+
},
|
|
713
|
+
"style": {
|
|
714
|
+
"display": "contents"
|
|
715
|
+
},
|
|
716
|
+
"$switch": {
|
|
717
|
+
"$ref": "$map/item/hasAction"
|
|
718
|
+
},
|
|
719
|
+
"cases": {
|
|
720
|
+
"true": {
|
|
721
|
+
"$description": "The row's one door elsewhere, named for what it opens: the Layout row's Edit template opens the layout in Design.",
|
|
722
|
+
"tagName": "jx-button",
|
|
723
|
+
"attributes": {
|
|
724
|
+
"part": "row-action"
|
|
725
|
+
},
|
|
726
|
+
"$props": {
|
|
727
|
+
"size": "sm",
|
|
728
|
+
"variant": "secondary"
|
|
729
|
+
},
|
|
730
|
+
"onclick": {
|
|
731
|
+
"$prototype": "Function",
|
|
732
|
+
"body": [
|
|
733
|
+
{
|
|
734
|
+
"operator": "call",
|
|
735
|
+
"target": {
|
|
736
|
+
"$ref": "#/state/runRowAction"
|
|
737
|
+
},
|
|
738
|
+
"value": [
|
|
739
|
+
{
|
|
740
|
+
"$ref": "$map/item/key"
|
|
741
|
+
}
|
|
742
|
+
]
|
|
743
|
+
}
|
|
744
|
+
]
|
|
745
|
+
},
|
|
746
|
+
"children": [
|
|
747
|
+
{
|
|
748
|
+
"tagName": "span",
|
|
749
|
+
"textContent": "${$map.item.action}"
|
|
750
|
+
}
|
|
751
|
+
]
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
},
|
|
685
755
|
{
|
|
686
756
|
"tagName": "div",
|
|
687
757
|
"attributes": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
2
|
/**
|
|
3
|
-
* The
|
|
3
|
+
* The Page panel — the Inspector's Page tab (§6) — as a mounted document.
|
|
4
4
|
*
|
|
5
5
|
* `panels/head-panel.ts` is the flow — what a `$head` entry means, which of them a structured
|
|
6
6
|
* control already owns, what the layout cascade resolves to, which realm a title lives in and what
|
|
@@ -37,10 +37,10 @@ registerSurface("panel-page", pagePanelDoc);
|
|
|
37
37
|
* `$switch` chooses on one: a row that omitted `options` would leave the picker case reading an
|
|
38
38
|
* absent path.
|
|
39
39
|
*
|
|
40
|
-
* {@link PageRow.key} and {@link PageRow.prop} are two fields
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
40
|
+
* {@link PageRow.key} and {@link PageRow.prop} are two fields: `key` is the identity the repeater
|
|
41
|
+
* and every action use, `prop` is the name a reader, a screenshot region and `ui/regions.ts`'s
|
|
42
|
+
* `field:<prop>` grammar see. A collection whose schema declares a `layout` property would
|
|
43
|
+
* otherwise share an identity with the Layout picker.
|
|
44
44
|
*/
|
|
45
45
|
export interface PageRow {
|
|
46
46
|
/** The row's identity: the repeater's key, and the argument every action is given. */
|
|
@@ -49,8 +49,15 @@ export interface PageRow {
|
|
|
49
49
|
prop: string;
|
|
50
50
|
/** The visible label, already carrying the required marker where a schema asks for one. */
|
|
51
51
|
label: string;
|
|
52
|
-
/**
|
|
53
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Which control the row draws. `textarea` is a multiline text field, not a second element;
|
|
54
|
+
* `readout` is no control at all, a value the document derives (a page's URL) shown as text.
|
|
55
|
+
*/
|
|
56
|
+
kind: "text" | "textarea" | "number" | "boolean" | "select" | "media" | "readout";
|
|
57
|
+
/** The row's one button, named for what it opens. Empty draws none. */
|
|
58
|
+
action: string;
|
|
59
|
+
/** Whether {@link PageRow.action} has anything in it; `$switch` is the document's conditional. */
|
|
60
|
+
hasAction: boolean;
|
|
54
61
|
/**
|
|
55
62
|
* Whether the value is set on this document — studio-ui-guidelines.md §4.2's dot, and the row's
|
|
56
63
|
* only clear affordance.
|
|
@@ -139,6 +146,8 @@ export interface PagePanelActions {
|
|
|
139
146
|
browse: (key: string, anchor: EventTarget | null) => void;
|
|
140
147
|
/** Run the `document.openSeo` command — the door to Search appearance. */
|
|
141
148
|
openSeo: () => void;
|
|
149
|
+
/** Press the row's own button ({@link PageRow.action}). */
|
|
150
|
+
runRowAction: (key: string) => void;
|
|
142
151
|
/** Take one custom `$head` entry away. */
|
|
143
152
|
removeEntry: (key: string) => void;
|
|
144
153
|
/** State what the add form's tag picker now holds, before anything is decided about it. */
|
|
@@ -231,6 +240,28 @@ export function renderPagePanelSurface(
|
|
|
231
240
|
the next `afterRender` sees a disconnected handle and remakes the surface through the branch
|
|
232
241
|
above. */
|
|
233
242
|
void mountSurface("panel-page", scope, host).then((handle) => {
|
|
243
|
+
/* Unmounted while in flight (the Inspector's Page tab lost its document in the same turn): the
|
|
244
|
+
record is no longer the host's, so the surface that just landed is taken straight back out. */
|
|
245
|
+
if (mounts.get(host) !== record) {
|
|
246
|
+
handle.dispose();
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
234
249
|
record.handle = handle;
|
|
235
250
|
});
|
|
236
251
|
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Take the panel out of `host`, if it is there — the Inspector's Page tab with no document open.
|
|
255
|
+
* Idempotent: a host with no mount is left as it is.
|
|
256
|
+
*
|
|
257
|
+
* @param {HTMLElement} host The panel's content area.
|
|
258
|
+
*/
|
|
259
|
+
export function unmountPagePanelSurface(host: HTMLElement): void {
|
|
260
|
+
const existing = mounts.get(host);
|
|
261
|
+
if (!existing) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
mounts.delete(host);
|
|
265
|
+
existing.handle?.dispose();
|
|
266
|
+
host.textContent = "";
|
|
267
|
+
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"data-refreshing": "${state.refreshing ? '' : null}"
|
|
9
9
|
},
|
|
10
10
|
"style": {
|
|
11
|
-
"$description": "The `.signal-*`, `.signals-*` and `.data-*` rules of `styles/inspector.css`, carried here and keyed on `part`. A signal row is `part=\"entry\"` rather than `part=\"row\"` because the value tree mounted INSIDE an open one is `surfaces/panel-data.json`, whose lines are `part=\"row\"`; two documents sharing a container may not share a part name. Three token repairs travel with them, all of
|
|
11
|
+
"$description": "The `.signal-*`, `.signals-*` and `.data-*` rules of `styles/inspector.css`, carried here and keyed on `part`. A signal row is `part=\"entry\"` rather than `part=\"row\"` because the value tree mounted INSIDE an open one is `surfaces/panel-data.json`, whose lines are `part=\"row\"`; two documents sharing a container may not share a part name. Three token repairs travel with them, all of one shape: `--spectrum-font-size-50` and the bare `10px` literals resolved only inside `<sp-theme>` and a document is mounted outside it, so every rule that read one would silently have taken its px fallback \u2014 they are `--jx-text-sm` (11px) and `--jx-text-xs` (10px) here, at the same values \u2014 and `--spectrum-corner-radius-75` is `--jx-radius-xs`, also at its own value. ONE rule is repaired rather than moved: `.signal-badge.handler` never matched anything, because `defCategory` has returned `\"function\"` since the handler category was renamed, so a function entry's badge was the only one of five drawn untinted. The tint is keyed on the category the projection actually emits now, and `--handler` is the token it was always written against. And one is DELETED, because the kit already draws it: `.signal-del`'s hand-rolled visibility hiding is `[part=\"delete\"]`'s reveal on `:hover` and on `:focus-within` \u2014 the old rule was `:hover` alone, so tabbing to Delete moved the keyboard onto an invisible control.",
|
|
12
12
|
"display": "flex",
|
|
13
13
|
"flexDirection": "column",
|
|
14
14
|
"minHeight": "0",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* field, and a table field's rows and cells — and inside the innermost one `$map/item` is the cell,
|
|
17
17
|
* so a control genuinely cannot see the entry it belongs to. Each record therefore carries the
|
|
18
18
|
* entry name, the field key and (for a cell) its row and column, which the flow looks straight back
|
|
19
|
-
* up. That is the same answer `surfaces/
|
|
19
|
+
* up. That is the same answer `surfaces/publish-workspace.json` gives for its nested file rows.
|
|
20
20
|
*
|
|
21
21
|
* **Five islands, all through `onNodeCreated`** (specs/studio-ui-guidelines.md §9.4). The
|
|
22
22
|
* expression editor, the statement-card editor and the media picker are lit surfaces of their own
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
* resolved-value tree is a document of its own (`surfaces/panel-data.ts`). The document renders an
|
|
25
25
|
* empty host for each and the flow fills it.
|
|
26
26
|
*
|
|
27
|
-
* **The container is not cleared**,
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
27
|
+
* **The container is not cleared**, because a panel body is a node lit renders into and its comment
|
|
28
|
+
* markers are how lit finds its own content again. So the document is APPENDED, and
|
|
29
|
+
* {@link SignalsSurfaceHandle.attached} is how the panel finds out that the Navigator has since
|
|
30
|
+
* painted another panel over the top of it.
|
|
31
31
|
*
|
|
32
32
|
* @docs studio/logic/data
|
|
33
33
|
*/
|