@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
|
@@ -47,6 +47,8 @@ import { attachJumpBarHost, mountJumpBar, unmountJumpBar } from "../panels/jump-
|
|
|
47
47
|
import { shell } from "../shell";
|
|
48
48
|
import { effect, effectScope, reactive } from "../reactivity";
|
|
49
49
|
import { activeTab } from "../workspace/workspace";
|
|
50
|
+
import { PROJECT_STYLES_VIEW } from "../style/project-styles";
|
|
51
|
+
import { stylebookTarget } from "../style/stylebook-target";
|
|
50
52
|
import { activeRegistry } from "../commands/active-registry";
|
|
51
53
|
import { runReported } from "../commands/run-reported";
|
|
52
54
|
import { deployStatusItem } from "../publish/deploy-checklist";
|
|
@@ -54,12 +56,12 @@ import { collabState } from "../collab/collab-state";
|
|
|
54
56
|
import { problemCount, problems } from "../services/notify";
|
|
55
57
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
56
58
|
import statusbarDoc from "./statusbar.json";
|
|
59
|
+
import type { CommandArgValues } from "../commands/command-args";
|
|
57
60
|
import type { CommandRegistry } from "../commands/registry";
|
|
58
61
|
import type { EffectScope } from "@vue/reactivity";
|
|
59
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
60
62
|
import type { SurfaceHandle } from "../ui/surface";
|
|
61
63
|
|
|
62
|
-
registerSurface("statusbar", statusbarDoc
|
|
64
|
+
registerSurface("statusbar", statusbarDoc);
|
|
63
65
|
|
|
64
66
|
let _scope: EffectScope | null = null;
|
|
65
67
|
|
|
@@ -72,7 +74,7 @@ interface StatusItem {
|
|
|
72
74
|
label: string;
|
|
73
75
|
/** Extra context for the tooltip. The command's own title and chord are added to it. */
|
|
74
76
|
title?: string;
|
|
75
|
-
args?:
|
|
77
|
+
args?: CommandArgValues;
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
/** One item as the surface reads it: a button that runs a command through `run`, or a readout. */
|
|
@@ -85,7 +87,7 @@ interface ProjectedItem {
|
|
|
85
87
|
disabled: boolean;
|
|
86
88
|
/** For a button: what `run` runs. */
|
|
87
89
|
command: string | null;
|
|
88
|
-
args:
|
|
90
|
+
args: CommandArgValues | undefined;
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
interface ProjectedField {
|
|
@@ -147,9 +149,10 @@ function projectField(
|
|
|
147
149
|
items: readonly (StatusItem | null)[],
|
|
148
150
|
): ProjectedField | null {
|
|
149
151
|
const region = `statusbar/${id}`;
|
|
150
|
-
const live = items
|
|
151
|
-
|
|
152
|
-
|
|
152
|
+
const live = items.flatMap((item) => {
|
|
153
|
+
const projected = item === null ? null : projectItem(registry, region, item);
|
|
154
|
+
return projected === null ? [] : [projected];
|
|
155
|
+
});
|
|
153
156
|
if (live.length === 0) {
|
|
154
157
|
return null;
|
|
155
158
|
}
|
|
@@ -163,6 +166,14 @@ export function aheadBehindLabel(ahead: number, behind: number): string {
|
|
|
163
166
|
return `${ahead > 0 ? ` ↑${ahead}` : ""}${behind > 0 ? ` ↓${behind}` : ""}`;
|
|
164
167
|
}
|
|
165
168
|
|
|
169
|
+
/** "No changes", "1 changed file", "3 changed files": what the branch item's tooltip states. */
|
|
170
|
+
export function changedFilesLabel(count: number): string {
|
|
171
|
+
if (count === 0) {
|
|
172
|
+
return "No changes";
|
|
173
|
+
}
|
|
174
|
+
return count === 1 ? "1 changed file" : `${count} changed files`;
|
|
175
|
+
}
|
|
176
|
+
|
|
166
177
|
function projectField_(registry: CommandRegistry | null): ProjectedField | null {
|
|
167
178
|
const project = projectState;
|
|
168
179
|
const { status } = shell.git;
|
|
@@ -182,11 +193,16 @@ function projectField_(registry: CommandRegistry | null): ProjectedField | null
|
|
|
182
193
|
— and adjacent duplicate chrome is what the chrome budget (studio-ui-guidelines.md §12.2)
|
|
183
194
|
forbids. `tests/statusbar.test.ts` pins the pairing from both ends, so deleting the
|
|
184
195
|
checklist's repo step fails there rather than quietly taking the state off the bar. */
|
|
196
|
+
/* `publish.open { tab: "review" }` rather than the bare workspace setter: the setter's title
|
|
197
|
+
is "Switch Workspace", which says nothing about where a branch item goes, and the Publish
|
|
198
|
+
workspace remembers its last sub-tab, so a click from a count of changes could land on
|
|
199
|
+
Hosting. Review changes is the tab that count is a count of. */
|
|
185
200
|
status?.isRepo === true && status.branch
|
|
186
201
|
? {
|
|
187
|
-
|
|
202
|
+
args: { tab: "review" },
|
|
203
|
+
command: "publish.open",
|
|
188
204
|
label: `⑂ ${status.branch}${aheadBehindLabel(status.ahead, status.behind)}`,
|
|
189
|
-
title: `${status.files.length}
|
|
205
|
+
title: `${changedFilesLabel(status.files.length)} on ${status.branch}`,
|
|
190
206
|
}
|
|
191
207
|
: null,
|
|
192
208
|
// Where the project stands with shipping — ambient state, so it belongs beside the branch and
|
|
@@ -202,7 +218,7 @@ function projectField_(registry: CommandRegistry | null): ProjectedField | null
|
|
|
202
218
|
args: { tab: "problems" },
|
|
203
219
|
command: "view.setBottomTab",
|
|
204
220
|
label: `⚠ ${count}`,
|
|
205
|
-
title: `${count}
|
|
221
|
+
title: count === 1 ? "1 problem" : `${count} problems`,
|
|
206
222
|
}
|
|
207
223
|
: null,
|
|
208
224
|
/* `collab.showStatus` — "what is happening in this document?" — because that is the question a
|
|
@@ -232,28 +248,36 @@ function projectField_(registry: CommandRegistry | null): ProjectedField | null
|
|
|
232
248
|
* states it permanently, with its ancestors, one field to the left.
|
|
233
249
|
*/
|
|
234
250
|
function selectionField(registry: CommandRegistry | null): ProjectedField | null {
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
251
|
+
const tab = activeTab.value;
|
|
252
|
+
/* The Stylebook's selection is what the Style panel is editing, and it is a selection OF the
|
|
253
|
+
Stylebook canvas, so it is the field's content exactly while the focused tab draws that canvas,
|
|
254
|
+
and never elsewhere. It outlives a workspace switch (coming back to Styles finds `h1` still
|
|
255
|
+
picked), but a Content page or the Publish home is not editing `h1`, and the field used to say
|
|
256
|
+
it was there. The Style panel gates on the same mode (`panels/style-panel.ts`).
|
|
257
|
+
|
|
258
|
+
It also wins over the document selection here, because in that mode the document selection is
|
|
259
|
+
not the author's: picking a tag clears it (`selectStylebookTag`), so the "a single selection
|
|
260
|
+
prints nothing" rule below hid the rule being edited in the one place it applied. The command
|
|
261
|
+
bar and the Inspector header ask the same question through `stylebookTarget`. */
|
|
262
|
+
if (tab?.session.ui.canvasMode === PROJECT_STYLES_VIEW) {
|
|
263
|
+
const target = stylebookTarget(tab);
|
|
264
|
+
return target
|
|
240
265
|
? projectField(registry, "selection", [
|
|
241
266
|
{
|
|
242
267
|
command: null,
|
|
243
|
-
label:
|
|
244
|
-
title:
|
|
268
|
+
label: target.replaceAll(" ", " › "),
|
|
269
|
+
title: "The style rule being edited",
|
|
245
270
|
},
|
|
246
271
|
])
|
|
247
272
|
: null;
|
|
248
273
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
return shell.stylebook.selection
|
|
274
|
+
const paths = tab?.session.selection ?? [];
|
|
275
|
+
return paths.length > 1
|
|
252
276
|
? projectField(registry, "selection", [
|
|
253
277
|
{
|
|
254
278
|
command: null,
|
|
255
|
-
label:
|
|
256
|
-
title:
|
|
279
|
+
label: `${paths.length} selected`,
|
|
280
|
+
title: `${paths.length} elements are selected; the trail names the primary`,
|
|
257
281
|
},
|
|
258
282
|
])
|
|
259
283
|
: null;
|
|
@@ -266,7 +290,7 @@ function present(fields: readonly (ProjectedField | null)[]): ProjectedField[] {
|
|
|
266
290
|
return fields.filter((field): field is ProjectedField => field !== null);
|
|
267
291
|
}
|
|
268
292
|
|
|
269
|
-
interface StatusbarScope
|
|
293
|
+
interface StatusbarScope {
|
|
270
294
|
/** The fields before the DOCUMENT slot: PROJECT. */
|
|
271
295
|
leading: ProjectedField[];
|
|
272
296
|
/** Whether the DOCUMENT slot has a trail to show. */
|
|
@@ -282,7 +306,7 @@ let _handle: SurfaceHandle | null = null;
|
|
|
282
306
|
|
|
283
307
|
/** The reactive scope the surface reads, made once. */
|
|
284
308
|
function state(): StatusbarScope {
|
|
285
|
-
_state ??= reactive({
|
|
309
|
+
_state ??= reactive<StatusbarScope>({
|
|
286
310
|
hasDocument: false,
|
|
287
311
|
leading: [],
|
|
288
312
|
run: (key: string) => {
|
|
@@ -291,11 +315,11 @@ function state(): StatusbarScope {
|
|
|
291
315
|
.find((i) => i.key === key);
|
|
292
316
|
const registry = activeRegistry();
|
|
293
317
|
if (item?.command && registry) {
|
|
294
|
-
void runReported(registry, item.command, item.args
|
|
318
|
+
void runReported(registry, item.command, item.args, "Status Bar");
|
|
295
319
|
}
|
|
296
320
|
},
|
|
297
321
|
trailing: [],
|
|
298
|
-
})
|
|
322
|
+
});
|
|
299
323
|
return _state;
|
|
300
324
|
}
|
|
301
325
|
|
|
@@ -306,17 +330,19 @@ function state(): StatusbarScope {
|
|
|
306
330
|
* is the same hand-over the pane grid gives the tab strip and the context bar.
|
|
307
331
|
*/
|
|
308
332
|
function ensureMounted(): void {
|
|
309
|
-
|
|
333
|
+
// The host is captured, so the mount callback below reads the element this call checked.
|
|
334
|
+
const host = statusbarEl;
|
|
335
|
+
if (_mount || !host) {
|
|
310
336
|
return;
|
|
311
337
|
}
|
|
312
|
-
const mount = mountSurface("statusbar", state(),
|
|
338
|
+
const mount = mountSurface("statusbar", state(), host);
|
|
313
339
|
_mount = mount;
|
|
314
340
|
void mount.then((handle) => {
|
|
315
341
|
if (_mount !== mount) {
|
|
316
342
|
return;
|
|
317
343
|
}
|
|
318
344
|
_handle = handle;
|
|
319
|
-
attachJumpBarHost(
|
|
345
|
+
attachJumpBarHost(host.querySelector<HTMLElement>('[part="trail"]'));
|
|
320
346
|
});
|
|
321
347
|
}
|
|
322
348
|
|
|
@@ -349,6 +375,7 @@ export function mountStatusbar(): void {
|
|
|
349
375
|
// Reading it here is what repaints the bar from a skeleton into the real thing.
|
|
350
376
|
void activeRegistry();
|
|
351
377
|
void shell.stylebook.selection;
|
|
378
|
+
void activeTab.value?.session.ui.canvasMode;
|
|
352
379
|
void shell.git.status;
|
|
353
380
|
void problems.length;
|
|
354
381
|
const tab = activeTab.value;
|
|
@@ -22,13 +22,15 @@
|
|
|
22
22
|
* @docs studio/design/style-inspector
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
+
import { isString } from "@jxsuite/schema/guards";
|
|
25
26
|
import { reactive } from "../reactivity";
|
|
26
27
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
27
28
|
import stylePanelDoc from "./style-panel.json";
|
|
28
|
-
import type {
|
|
29
|
+
import type { JxElement } from "@jxsuite/schema/types";
|
|
29
30
|
import type { SurfaceHandle } from "../ui/surface";
|
|
31
|
+
import type { ColorTokenView } from "../ui/color-selector";
|
|
30
32
|
|
|
31
|
-
registerSurface("style-panel", stylePanelDoc
|
|
33
|
+
registerSurface("style-panel", stylePanelDoc);
|
|
32
34
|
|
|
33
35
|
// ─── The projection ──────────────────────────────────────────────────────────
|
|
34
36
|
|
|
@@ -58,19 +60,6 @@ export type StyleRowKind =
|
|
|
58
60
|
/** How the provenance chip is drawn: not at all, as a control, or as a statement. */
|
|
59
61
|
export type StyleChipControl = "none" | "button" | "text";
|
|
60
62
|
|
|
61
|
-
/**
|
|
62
|
-
* One colour the project has named, as the row's palette draws it.
|
|
63
|
-
*
|
|
64
|
-
* `value` is the reference and `color` is the literal behind it, and they are two fields because
|
|
65
|
-
* they are two things: choosing a swatch commits `var(--color-accent)`, while the chip is only how
|
|
66
|
-
* that reads on screen. `label` is what a reader hears — a swatch is never named by its hex.
|
|
67
|
-
*/
|
|
68
|
-
export interface StyleTokenView extends Record<string, unknown> {
|
|
69
|
-
value: string;
|
|
70
|
-
color: string;
|
|
71
|
-
label: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
63
|
/**
|
|
75
64
|
* One keyword a `keywords` row lists under its field.
|
|
76
65
|
*
|
|
@@ -78,7 +67,7 @@ export interface StyleTokenView extends Record<string, unknown> {
|
|
|
78
67
|
* — and the two stay separate because the field holds the value: a combobox row's label is a
|
|
79
68
|
* courtesy, never a second spelling the reader could end up with.
|
|
80
69
|
*/
|
|
81
|
-
export interface StyleOptionView
|
|
70
|
+
export interface StyleOptionView {
|
|
82
71
|
value: string;
|
|
83
72
|
label: string;
|
|
84
73
|
/** A muted note at the end of the row — a font token's own name beside its display name. */
|
|
@@ -97,7 +86,7 @@ export interface StyleOptionView extends Record<string, unknown> {
|
|
|
97
86
|
}
|
|
98
87
|
|
|
99
88
|
/** One value of a button-group row. */
|
|
100
|
-
export interface StyleButtonView
|
|
89
|
+
export interface StyleButtonView {
|
|
101
90
|
/** The owning row's key — a nested `$map` shadows `$map.item`, so the row carries it here. */
|
|
102
91
|
row: string;
|
|
103
92
|
/** The CSS value this button commits, and the button's identity in the repeater. */
|
|
@@ -130,7 +119,7 @@ export interface StyleButtonView extends Record<string, unknown> {
|
|
|
130
119
|
* `prop` is the name a reader, the region grammar and the inspector see. The two are different on
|
|
131
120
|
* purpose: one coordinate's `color` and another's are two rows with one name.
|
|
132
121
|
*/
|
|
133
|
-
export interface StyleRowView
|
|
122
|
+
export interface StyleRowView {
|
|
134
123
|
key: string;
|
|
135
124
|
prop: string;
|
|
136
125
|
label: string;
|
|
@@ -177,7 +166,7 @@ export interface StyleRowView extends Record<string, unknown> {
|
|
|
177
166
|
choicesHint: string;
|
|
178
167
|
buttons: StyleButtonView[];
|
|
179
168
|
/** The palette a colour row offers inside its picker, and whether it has one to offer. */
|
|
180
|
-
tokens:
|
|
169
|
+
tokens: ColorTokenView[];
|
|
181
170
|
hasTokens: boolean;
|
|
182
171
|
overflowSelected: boolean;
|
|
183
172
|
expanded: boolean;
|
|
@@ -190,7 +179,7 @@ export interface StyleRowView extends Record<string, unknown> {
|
|
|
190
179
|
}
|
|
191
180
|
|
|
192
181
|
/** One accordion section. */
|
|
193
|
-
export interface StyleSectionView
|
|
182
|
+
export interface StyleSectionView {
|
|
194
183
|
key: string;
|
|
195
184
|
label: string;
|
|
196
185
|
open: boolean;
|
|
@@ -236,14 +225,14 @@ export interface StylePanelActions {
|
|
|
236
225
|
/** The provenance chip, a custom pair's remove and a nested rule's remove are one verb. */
|
|
237
226
|
chipClick: (key: string) => void;
|
|
238
227
|
/** Open the Value Source picker under the chip that was pressed. */
|
|
239
|
-
pickSource: (key: string, anchor:
|
|
228
|
+
pickSource: (key: string, anchor: EventTarget | null) => void;
|
|
240
229
|
/** Open the row's list of offerable values under the button that was pressed. */
|
|
241
|
-
pickChoice: (key: string, anchor:
|
|
230
|
+
pickChoice: (key: string, anchor: EventTarget | null) => void;
|
|
242
231
|
pressButton: (key: string, value: string) => void;
|
|
243
232
|
toggleShorthand: (key: string) => void;
|
|
244
233
|
renameCustom: (key: string, name: string) => void;
|
|
245
234
|
/** Enter in the add-a-property field. Given the field too, because it is emptied on success. */
|
|
246
|
-
addCustom: (key: string, field:
|
|
235
|
+
addCustom: (key: string, field: EventTarget | null) => void;
|
|
247
236
|
openNested: (key: string) => void;
|
|
248
237
|
addNested: () => void;
|
|
249
238
|
}
|
|
@@ -264,12 +253,12 @@ export interface StylePanelSurface {
|
|
|
264
253
|
}
|
|
265
254
|
|
|
266
255
|
/** The scope the document reads: the view plus the actions, flat. */
|
|
267
|
-
interface StylePanelScope extends
|
|
256
|
+
interface StylePanelScope extends StylePanelView, StylePanelActions {}
|
|
268
257
|
|
|
269
258
|
/** A node definition's `part`, as written in the document. */
|
|
270
259
|
function partOf(def: JxElement | string): string {
|
|
271
|
-
const part =
|
|
272
|
-
return
|
|
260
|
+
const part = isString(def) ? undefined : def.attributes?.["part"];
|
|
261
|
+
return isString(part) ? part : "";
|
|
273
262
|
}
|
|
274
263
|
|
|
275
264
|
/** Write a whole view into the scope. Assignment only — the mount is never rebuilt for a repaint. */
|
|
@@ -300,7 +289,7 @@ export function mountStylePanelSurface(
|
|
|
300
289
|
actions: StylePanelActions,
|
|
301
290
|
hosts: StyleHostSink,
|
|
302
291
|
): StylePanelSurface {
|
|
303
|
-
const scope = reactive<StylePanelScope>({
|
|
292
|
+
const scope: StylePanelScope = reactive<StylePanelScope>({
|
|
304
293
|
...actions,
|
|
305
294
|
emptyActionLabel: "",
|
|
306
295
|
emptyMessage: "",
|
|
@@ -308,7 +297,7 @@ export function mountStylePanelSurface(
|
|
|
308
297
|
hasEmptyAction: false,
|
|
309
298
|
sections: [],
|
|
310
299
|
view: "empty",
|
|
311
|
-
})
|
|
300
|
+
});
|
|
312
301
|
project(scope, view);
|
|
313
302
|
|
|
314
303
|
host.replaceChildren();
|
|
@@ -334,9 +323,7 @@ export function mountStylePanelSurface(
|
|
|
334
323
|
dock that redrew took the tab's root away without telling anyone. */
|
|
335
324
|
connected: () =>
|
|
336
325
|
!disposed &&
|
|
337
|
-
(mounted === null
|
|
338
|
-
? host.childNodes.length === 0
|
|
339
|
-
: (mounted.root as Node).parentNode === host),
|
|
326
|
+
(mounted === null ? host.childNodes.length === 0 : mounted.root.parentNode === host),
|
|
340
327
|
dispose() {
|
|
341
328
|
disposed = true;
|
|
342
329
|
hosts.target(null);
|
|
@@ -29,10 +29,9 @@
|
|
|
29
29
|
import { reactive } from "../reactivity";
|
|
30
30
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
31
31
|
import chromeDoc from "./stylebook-chrome.json";
|
|
32
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
33
32
|
import type { SurfaceHandle } from "../ui/surface";
|
|
34
33
|
|
|
35
|
-
registerSurface("stylebook-chrome", chromeDoc
|
|
34
|
+
registerSurface("stylebook-chrome", chromeDoc);
|
|
36
35
|
|
|
37
36
|
/** What the bar says right now. Every field is the panel's own wording, never a value it derives. */
|
|
38
37
|
export interface StylebookChromeView {
|
|
@@ -64,8 +63,7 @@ export interface StylebookChromeSurface {
|
|
|
64
63
|
update: (view: StylebookChromeView) => void;
|
|
65
64
|
}
|
|
66
65
|
|
|
67
|
-
interface StylebookChromeScope
|
|
68
|
-
extends Record<string, unknown>, StylebookChromeView, StylebookChromeActions {}
|
|
66
|
+
interface StylebookChromeScope extends StylebookChromeView, StylebookChromeActions {}
|
|
69
67
|
|
|
70
68
|
/**
|
|
71
69
|
* Create the bar's surface, mounted into a host of its own.
|
|
@@ -84,7 +82,7 @@ export function createStylebookChromeSurface(
|
|
|
84
82
|
): StylebookChromeSurface {
|
|
85
83
|
const host = document.createElement("div");
|
|
86
84
|
host.style.display = "contents";
|
|
87
|
-
const scope = reactive({ ...view, ...actions })
|
|
85
|
+
const scope: StylebookChromeScope = reactive<StylebookChromeScope>({ ...view, ...actions });
|
|
88
86
|
|
|
89
87
|
/** `null` while a mount is in flight — which is a standing surface, not a missing one. */
|
|
90
88
|
let handle: SurfaceHandle | null = null;
|