@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
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
2
|
/**
|
|
3
|
-
* The Outline panel while the pane is showing
|
|
4
|
-
*
|
|
3
|
+
* The Outline panel while the pane is showing a document's Elements view — the element catalogue.
|
|
4
|
+
*
|
|
5
|
+
* A page or a component offers **Elements** in its Editor control, which styles that file's element
|
|
6
|
+
* defaults (`docs/studio/design/stylebook.md`), and the Outline beside it lists the catalogue's
|
|
7
|
+
* tags instead of the document's tree. `project.json` in the Styles workspace has its own
|
|
8
|
+
* Navigator, the Styles panel (`panels/styles-panel.ts`), which lists the project's CSS custom
|
|
9
|
+
* properties too; the variables list this body used to draw beside the Variables view went there
|
|
10
|
+
* with it.
|
|
5
11
|
*
|
|
6
12
|
* **The body is a Jx document** (`surfaces/panel-stylebook-layers.json`, mounted by
|
|
7
13
|
* `surfaces/panel-stylebook-layers.ts`), so this module renders nothing and projects everything.
|
|
8
|
-
* What stays here is what is a DECISION:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
14
|
+
* What stays here is what is a DECISION: which tags the open file has already styled, and what each
|
|
15
|
+
* row is called. The walk itself (how the catalogue's recursive `$sections` flatten into a list,
|
|
16
|
+
* how a child's compound path is spelled, which children are duplicates of each other, and which
|
|
17
|
+
* row the current selection marks) is `stylebook-doc.ts`'s `catalogueRows`, which the Styles
|
|
18
|
+
* panel's Elements section draws from too. The surface reads values.
|
|
12
19
|
*
|
|
13
20
|
* The panel does not own the panel RECORD — `panels/layers-panel.ts` does, because the Outline is
|
|
14
21
|
* one panel with two bodies and only the record can know which the pane is asking for. That module
|
|
@@ -23,16 +30,16 @@ import { activeTab } from "../workspace/workspace";
|
|
|
23
30
|
import { shell } from "../shell";
|
|
24
31
|
import { componentRegistry } from "../files/components";
|
|
25
32
|
import { mountStylebookLayersSurface } from "../surfaces/panel-stylebook-layers";
|
|
33
|
+
import { catalogueRows } from "./stylebook-doc";
|
|
26
34
|
|
|
27
35
|
import type { StylebookEntry } from "./stylebook-panel";
|
|
28
36
|
import type {
|
|
29
37
|
StylebookLayersSurfaceHandle,
|
|
30
38
|
StylebookLayersValues,
|
|
31
39
|
StylebookRowView,
|
|
32
|
-
StylebookVariableView,
|
|
33
40
|
} from "../surfaces/panel-stylebook-layers";
|
|
41
|
+
import { isNonNullObject } from "@jxsuite/schema/guards";
|
|
34
42
|
import type { JxStyle } from "@jxsuite/schema/types";
|
|
35
|
-
import type { ComponentEntry } from "../files/components.js";
|
|
36
43
|
|
|
37
44
|
/** What the panel is drawn from: the catalogue, and what selecting a row does. */
|
|
38
45
|
export interface StylebookLayersCtx {
|
|
@@ -40,9 +47,9 @@ export interface StylebookLayersCtx {
|
|
|
40
47
|
stylebookMeta: { $sections: { label: string; elements: StylebookEntry[] }[] };
|
|
41
48
|
}
|
|
42
49
|
|
|
43
|
-
/** The row's own padding at depth 0, and what each level of nesting adds. */
|
|
44
|
-
const INDENT_BASE = 8;
|
|
45
|
-
const INDENT_STEP = 16;
|
|
50
|
+
/** The row's own padding at depth 0, and what each level of nesting adds (the Outline's too). */
|
|
51
|
+
export const INDENT_BASE = 8;
|
|
52
|
+
export const INDENT_STEP = 16;
|
|
46
53
|
|
|
47
54
|
/**
|
|
48
55
|
* Whether the open file has already written a `& <tag>` block with something in it.
|
|
@@ -50,64 +57,9 @@ const INDENT_STEP = 16;
|
|
|
50
57
|
* @param {JxStyle} rootStyle
|
|
51
58
|
* @param {string} tag
|
|
52
59
|
*/
|
|
53
|
-
function hasTagStyle(rootStyle: JxStyle, tag: string) {
|
|
60
|
+
function hasTagStyle(rootStyle: JxStyle, tag: string): boolean {
|
|
54
61
|
const s = rootStyle[`& ${tag}`];
|
|
55
|
-
return
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* The leaf of the current selection.
|
|
60
|
-
*
|
|
61
|
-
* A selection is a compound path (`"ul li"`) and the catalogue draws one row per TAG, so the row
|
|
62
|
-
* that is marked is the one whose tag is the path's last segment. That is what the tree has always
|
|
63
|
-
* done; it is written down here because "selected" meaning something other than "equal" is exactly
|
|
64
|
-
* the kind of thing a reader assumes is a bug.
|
|
65
|
-
*/
|
|
66
|
-
function selectedLeaf(selection: string | null): string | null {
|
|
67
|
-
if (!selection) {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
return selection.includes(" ") ? (selection.split(" ").pop() ?? null) : selection;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Flatten one catalogue entry and everything under it into rows.
|
|
75
|
-
*
|
|
76
|
-
* Children are deduplicated by tag — a `<ul>` specimen carries two `<li>`s and they are one row,
|
|
77
|
-
* because the row selects a TAG and there is only one `& li` to write.
|
|
78
|
-
*/
|
|
79
|
-
function elementRows(
|
|
80
|
-
entry: StylebookEntry,
|
|
81
|
-
rootStyle: JxStyle,
|
|
82
|
-
leaf: string | null,
|
|
83
|
-
depth: number,
|
|
84
|
-
parentPath: string,
|
|
85
|
-
out: StylebookRowView[],
|
|
86
|
-
): void {
|
|
87
|
-
const { tag } = entry;
|
|
88
|
-
const fullPath = parentPath ? `${parentPath} ${tag}` : tag;
|
|
89
|
-
out.push({
|
|
90
|
-
customized: hasTagStyle(rootStyle, tag),
|
|
91
|
-
indent: `${INDENT_BASE + depth * INDENT_STEP}px`,
|
|
92
|
-
key: fullPath,
|
|
93
|
-
kind: "element",
|
|
94
|
-
label: entry.text || `<${tag}>`,
|
|
95
|
-
selected: tag === leaf,
|
|
96
|
-
tag,
|
|
97
|
-
});
|
|
98
|
-
const children = entry.children
|
|
99
|
-
? [...new Map(entry.children.map((c: StylebookEntry) => [c.tag, c])).values()]
|
|
100
|
-
: [];
|
|
101
|
-
for (const child of children) {
|
|
102
|
-
elementRows(child, rootStyle, leaf, depth + 1, fullPath, out);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/** The custom properties the open file declares, in the order it declares them. */
|
|
107
|
-
function variableRows(rootStyle: JxStyle): StylebookVariableView[] {
|
|
108
|
-
return Object.entries(rootStyle)
|
|
109
|
-
.filter(([k]) => k.startsWith("--"))
|
|
110
|
-
.map(([name, value]) => ({ key: name, name, value: String(value) }));
|
|
62
|
+
return isNonNullObject(s) && Object.keys(s).length > 0;
|
|
111
63
|
}
|
|
112
64
|
|
|
113
65
|
/**
|
|
@@ -121,17 +73,23 @@ function variableRows(rootStyle: JxStyle): StylebookVariableView[] {
|
|
|
121
73
|
*/
|
|
122
74
|
export function stylebookLayersValues(ctx: StylebookLayersCtx): StylebookLayersValues {
|
|
123
75
|
const tab = activeTab.value;
|
|
124
|
-
const rootStyle =
|
|
76
|
+
const rootStyle: JxStyle = tab?.doc.document?.style || {};
|
|
125
77
|
const { selection } = shell.stylebook;
|
|
126
|
-
const leaf = selectedLeaf(selection);
|
|
127
78
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
79
|
+
/* The stylebook's own walk (`stylebook-doc.ts` `catalogueRows`), which the Styles panel's
|
|
80
|
+
Elements section draws from too: the path, the nesting, the deduplication and the leaf mark
|
|
81
|
+
are one decision, and only the dot and the label are this list's. */
|
|
82
|
+
const entries = ctx.stylebookMeta.$sections.flatMap((section) => section.elements);
|
|
83
|
+
const rows: StylebookRowView[] = catalogueRows(entries, selection).map((row) => ({
|
|
84
|
+
customized: hasTagStyle(rootStyle, row.tag),
|
|
85
|
+
indent: `${INDENT_BASE + row.depth * INDENT_STEP}px`,
|
|
86
|
+
key: row.path,
|
|
87
|
+
kind: "element",
|
|
88
|
+
label: row.entry.text || `<${row.tag}>`,
|
|
89
|
+
selected: row.selected,
|
|
90
|
+
tag: row.tag,
|
|
91
|
+
}));
|
|
92
|
+
for (const comp of componentRegistry) {
|
|
135
93
|
rows.push({
|
|
136
94
|
customized: false,
|
|
137
95
|
indent: `${INDENT_BASE}px`,
|
|
@@ -145,13 +103,7 @@ export function stylebookLayersValues(ctx: StylebookLayersCtx): StylebookLayersV
|
|
|
145
103
|
});
|
|
146
104
|
}
|
|
147
105
|
|
|
148
|
-
|
|
149
|
-
return {
|
|
150
|
-
hasVariables: variables.length > 0,
|
|
151
|
-
rows,
|
|
152
|
-
tab: shell.stylebook.tab,
|
|
153
|
-
variables,
|
|
154
|
-
};
|
|
106
|
+
return { rows };
|
|
155
107
|
}
|
|
156
108
|
|
|
157
109
|
/**
|
|
@@ -161,7 +113,12 @@ export function stylebookLayersValues(ctx: StylebookLayersCtx): StylebookLayersV
|
|
|
161
113
|
* one Navigator, so a mount into a DIFFERENT node is the old one being replaced, and holding both
|
|
162
114
|
* would leave the first one's effects running against a scope nobody writes any more.
|
|
163
115
|
*/
|
|
164
|
-
let standing: {
|
|
116
|
+
let standing: {
|
|
117
|
+
/** The latest ctx: the handlers read it, not the one the first mount closed over. */
|
|
118
|
+
ctx: StylebookLayersCtx;
|
|
119
|
+
host: HTMLElement;
|
|
120
|
+
handle: StylebookLayersSurfaceHandle;
|
|
121
|
+
} | null = null;
|
|
165
122
|
|
|
166
123
|
/**
|
|
167
124
|
* Keep the selected row on screen after a repaint.
|
|
@@ -174,7 +131,7 @@ function revealSelectedRow(host: HTMLElement): void {
|
|
|
174
131
|
queueMicrotask(() => {
|
|
175
132
|
host
|
|
176
133
|
.querySelector('[part="row"][aria-current="true"]')
|
|
177
|
-
?.scrollIntoView
|
|
134
|
+
?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
178
135
|
});
|
|
179
136
|
}
|
|
180
137
|
|
|
@@ -201,12 +158,14 @@ export function mountStylebookLayersPanel(ctx: StylebookLayersCtx, host: HTMLEle
|
|
|
201
158
|
}
|
|
202
159
|
const values = stylebookLayersValues(ctx);
|
|
203
160
|
if (standing) {
|
|
161
|
+
standing.ctx = ctx;
|
|
204
162
|
standing.handle.update(values);
|
|
205
163
|
} else {
|
|
206
164
|
standing = {
|
|
165
|
+
ctx,
|
|
207
166
|
handle: mountStylebookLayersSurface(target, values, {
|
|
208
167
|
selectRow: (path) => {
|
|
209
|
-
ctx.selectStylebookTag(path, undefined, { panCanvas: true });
|
|
168
|
+
(standing?.ctx ?? ctx).selectStylebookTag(path, undefined, { panCanvas: true });
|
|
210
169
|
},
|
|
211
170
|
}),
|
|
212
171
|
host: target,
|
|
@@ -218,8 +177,8 @@ export function mountStylebookLayersPanel(ctx: StylebookLayersCtx, host: HTMLEle
|
|
|
218
177
|
/**
|
|
219
178
|
* Take the catalogue down.
|
|
220
179
|
*
|
|
221
|
-
* Called by the Outline's record when the pane is no longer showing
|
|
222
|
-
* document survives its own irrelevance: lit's branch renders into the range it owns inside
|
|
180
|
+
* Called by the Outline's record when the pane is no longer showing an Elements view. Without it
|
|
181
|
+
* the document survives its own irrelevance: lit's branch renders into the range it owns inside
|
|
223
182
|
* `.panel-content` and leaves everything appended after it exactly where it was.
|
|
224
183
|
*/
|
|
225
184
|
export function detachStylebookLayers(): void {
|
|
@@ -24,19 +24,21 @@ import { projectState, updateSession } from "../store";
|
|
|
24
24
|
import { createStylebookChromeSurface } from "../surfaces/stylebook-chrome";
|
|
25
25
|
import type { StylebookChromeSurface } from "../surfaces/stylebook-chrome";
|
|
26
26
|
import type { CanvasSurface } from "../canvas/canvas-surface";
|
|
27
|
-
import { tabOfPane } from "../canvas/canvas-surface";
|
|
27
|
+
import { activeMediaOfPane, tabOfPane } from "../canvas/canvas-surface";
|
|
28
28
|
import { activeTab } from "../workspace/workspace";
|
|
29
29
|
import { shell } from "../shell";
|
|
30
30
|
import { componentRegistry } from "../files/components";
|
|
31
|
-
import { getEffectiveMedia, getEffectiveStyle } from "../site-context";
|
|
31
|
+
import { getEffectiveHead, getEffectiveMedia, getEffectiveStyle } from "../site-context";
|
|
32
32
|
import { parseMediaEntries } from "../utils/canvas-media";
|
|
33
33
|
import { mediaDisplayName } from "./shared";
|
|
34
34
|
import { buildStylebookDoc } from "./stylebook-doc";
|
|
35
35
|
import { PROJECT_STYLES_TITLE } from "../style/project-styles";
|
|
36
|
+
import { loadStylebookSpecimens } from "../style/stylebook-specimens";
|
|
36
37
|
import { mountStylebookCanvas, panToStylebookTag } from "../canvas/iframe-host";
|
|
37
38
|
import stylebookMeta from "../../data/stylebook-meta.json";
|
|
38
39
|
import type { CanvasPanelEntry } from "../canvas/canvas-utils";
|
|
39
|
-
import type { CanvasStageView } from "../surfaces/canvas-stage";
|
|
40
|
+
import type { CanvasStageHandle, CanvasStageView } from "../surfaces/canvas-stage";
|
|
41
|
+
import type { TabUi } from "../tabs/tab";
|
|
40
42
|
|
|
41
43
|
export interface StylebookEntry {
|
|
42
44
|
tag: string;
|
|
@@ -61,7 +63,7 @@ interface StylebookCtx {
|
|
|
61
63
|
surface: CanvasSurface,
|
|
62
64
|
view: CanvasStageView,
|
|
63
65
|
entries: CanvasPanelEntry[],
|
|
64
|
-
) => Promise<
|
|
66
|
+
) => Promise<CanvasStageHandle | null>;
|
|
65
67
|
/** A node the stage drew for a part — here, the empty box the chrome bar stands in. */
|
|
66
68
|
stageHost: (surface: CanvasSurface, part: string) => HTMLElement | null;
|
|
67
69
|
applyTransform: (surface: CanvasSurface) => void;
|
|
@@ -123,11 +125,29 @@ function chromeBar(surface: CanvasSurface): HTMLElement {
|
|
|
123
125
|
* a lit template: the hand-over used to be a `TemplateResult` per artboard, which meant the boards
|
|
124
126
|
* could only be drawn by whoever was already rendering with lit. It is a mount seam instead — the
|
|
125
127
|
* catalogue's bar is a node this module owns, placed in the empty box the stage draws for it, the
|
|
126
|
-
* same way the Compare bar and the
|
|
128
|
+
* same way the Compare bar and the writing banner are.
|
|
127
129
|
*
|
|
128
130
|
* @param {StylebookCtx} ctx
|
|
129
131
|
* @returns {Promise<void>} Settles once the artboards are in the page
|
|
130
132
|
*/
|
|
133
|
+
/**
|
|
134
|
+
* The one breakpoint the specimen sheet is drawn at: the one the Context bar's size switcher names
|
|
135
|
+
* (its `activeMedia`, or the lens a split pane derives), else the base.
|
|
136
|
+
*
|
|
137
|
+
* It drew every declared breakpoint side by side, as Design does for a page, and fitting four
|
|
138
|
+
* artboards into one pane put a 1280px sheet at 24%, where no heading or paragraph can be read; a
|
|
139
|
+
* sheet of type specimens is read, not compared at a glance. One artboard at the breakpoint being
|
|
140
|
+
* styled is what the Styles workspace's board shows (Desktop · Tablet · Phone, one at a time), and
|
|
141
|
+
* it is the breakpoint a style edit lands on, because selecting a specimen writes `activeMedia`.
|
|
142
|
+
*/
|
|
143
|
+
export function stylebookBoards<T extends { name: string }>(
|
|
144
|
+
boards: readonly T[],
|
|
145
|
+
active: string | null,
|
|
146
|
+
): T[] {
|
|
147
|
+
const named = boards.filter((board) => board.name === (active ?? "base"));
|
|
148
|
+
return named.length > 0 ? named : boards.slice(0, 1);
|
|
149
|
+
}
|
|
150
|
+
|
|
131
151
|
export async function renderStylebookMode(
|
|
132
152
|
surface: CanvasSurface,
|
|
133
153
|
ctx: StylebookCtx,
|
|
@@ -141,6 +161,9 @@ export async function renderStylebookMode(
|
|
|
141
161
|
const tab = tabOfPane(surface.paneId);
|
|
142
162
|
const filter = shell.stylebook.filter.toLowerCase();
|
|
143
163
|
const { customizedOnly } = shell.stylebook;
|
|
164
|
+
const generation = surface.renderGeneration;
|
|
165
|
+
const registry = componentRegistry;
|
|
166
|
+
const specimensPending = loadStylebookSpecimens(registry);
|
|
144
167
|
|
|
145
168
|
const effectiveMedia = getEffectiveMedia(tab?.doc.document?.$media);
|
|
146
169
|
const { sizeBreakpoints, baseWidth } = parseMediaEntries(effectiveMedia);
|
|
@@ -151,7 +174,7 @@ export async function renderStylebookMode(
|
|
|
151
174
|
so the field keeps its caret across the stage rebuild a keystroke in it causes. */
|
|
152
175
|
const chromeBarNode = chromeBar(surface);
|
|
153
176
|
|
|
154
|
-
|
|
177
|
+
canvasWrap.style.overflow = "hidden";
|
|
155
178
|
|
|
156
179
|
/** @type {{ name: string; displayName: string; width: number }[]} */
|
|
157
180
|
const allPanelDefs = [];
|
|
@@ -173,7 +196,7 @@ export async function renderStylebookMode(
|
|
|
173
196
|
/** @type {CanvasPanelEntry[]} */
|
|
174
197
|
let panelEntries;
|
|
175
198
|
if (!hasMedia) {
|
|
176
|
-
const hasBaseWidth = effectiveMedia
|
|
199
|
+
const hasBaseWidth = effectiveMedia["--"];
|
|
177
200
|
const label = hasBaseWidth ? `${mediaDisplayName("--")} (${baseWidth}px)` : null;
|
|
178
201
|
panelEntries = [
|
|
179
202
|
ctx.canvasPanelEntry(
|
|
@@ -184,7 +207,7 @@ export async function renderStylebookMode(
|
|
|
184
207
|
),
|
|
185
208
|
];
|
|
186
209
|
} else {
|
|
187
|
-
panelEntries = allPanelDefs.map((def) =>
|
|
210
|
+
panelEntries = stylebookBoards(allPanelDefs, activeMediaOfPane(surface.paneId)).map((def) =>
|
|
188
211
|
ctx.canvasPanelEntry(def.name, `${def.displayName} (${def.width}px)`, false, def.width),
|
|
189
212
|
);
|
|
190
213
|
}
|
|
@@ -219,27 +242,32 @@ export async function renderStylebookMode(
|
|
|
219
242
|
chromeHost.replaceChildren(chromeBarNode);
|
|
220
243
|
}
|
|
221
244
|
|
|
245
|
+
/* What each component card is drawn with (started before the stage was drawn), asked once per
|
|
246
|
+
registry, so only the first paint after the project's components are read waits for it. A
|
|
247
|
+
render that began while it was being asked owns the stage now, and this one stops. */
|
|
248
|
+
const specimens = await specimensPending;
|
|
249
|
+
if (surface.renderGeneration !== generation) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
|
|
222
253
|
// ONE generated doc shared by every panel — per-panel @media differentiation comes from each
|
|
223
254
|
// Iframe's real viewport width, not from a per-panel style flatten.
|
|
224
255
|
const generated = buildStylebookDoc({
|
|
225
|
-
components:
|
|
256
|
+
components: registry,
|
|
257
|
+
specimens,
|
|
226
258
|
customizedOnly: Boolean(customizedOnly),
|
|
227
|
-
|
|
259
|
+
effectiveHead: getEffectiveHead(tab?.doc.document?.$head),
|
|
260
|
+
effectiveMedia,
|
|
228
261
|
effectiveStyle: getEffectiveStyle(tab?.doc.document?.style),
|
|
229
262
|
filter,
|
|
230
|
-
meta: stylebookMeta
|
|
263
|
+
meta: stylebookMeta,
|
|
231
264
|
projectRoot: projectState?.projectRoot ?? null,
|
|
232
265
|
});
|
|
233
266
|
|
|
234
267
|
const { panels } = surface;
|
|
235
268
|
for (const { panel } of panelEntries) {
|
|
236
269
|
panels.push(panel);
|
|
237
|
-
mountStylebookCanvas(
|
|
238
|
-
surface.renderGeneration,
|
|
239
|
-
generated,
|
|
240
|
-
panel.canvas as HTMLElement,
|
|
241
|
-
panel._width,
|
|
242
|
-
);
|
|
270
|
+
mountStylebookCanvas(surface.renderGeneration, generated, panel.canvas, panel._width);
|
|
243
271
|
}
|
|
244
272
|
if (hasMedia) {
|
|
245
273
|
ctx.updateActivePanelHeaders(surface);
|
|
@@ -259,18 +287,23 @@ export async function renderStylebookMode(
|
|
|
259
287
|
* @param {string | null} [media]
|
|
260
288
|
*/
|
|
261
289
|
export function selectStylebookTag(tag: string, media?: string | null, { panCanvas = false } = {}) {
|
|
262
|
-
|
|
290
|
+
const ui: Partial<TabUi> = { activeSelector: tag, rightTab: "style" };
|
|
291
|
+
if (media !== undefined) {
|
|
292
|
+
ui.activeMedia = media;
|
|
293
|
+
}
|
|
294
|
+
// The session is written BEFORE the stylebook selection moves: writing `shell.stylebook.selection`
|
|
295
|
+
// Re-runs the Style panel's effect synchronously, and it should find `activeSelector` and the
|
|
296
|
+
// Breakpoint already in place.
|
|
263
297
|
updateSession(activeTab.value, {
|
|
264
|
-
//
|
|
265
|
-
//
|
|
266
|
-
//
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
...(media !== undefined ? { activeMedia: media } : {}),
|
|
272
|
-
},
|
|
298
|
+
// EMPTY, not the root. A specimen is not a node of the document, so no document path names
|
|
299
|
+
// What is selected; `stylebookTarget` is how the chrome learns the tag. Parking on the root
|
|
300
|
+
// `[[]]` made every reader of the document selection (the command bar, the Inspector header)
|
|
301
|
+
// Name the catalogue's root `div` while `h1` was being edited, and it is what a canvas hit on
|
|
302
|
+
// A specimen already left behind, so the Outline and the canvas now agree.
|
|
303
|
+
selection: [],
|
|
304
|
+
ui,
|
|
273
305
|
});
|
|
306
|
+
shell.stylebook.selection = tag;
|
|
274
307
|
|
|
275
308
|
if (tag && panCanvas) {
|
|
276
309
|
panToStylebookTag(tag);
|