@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,29 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioSettingsCssVars",
|
|
4
|
-
"$description": "
|
|
4
|
+
"$description": "The Styles workspace's Variables view, its editor (studio.md §7.1): the project's design tokens, grouped by what they name, each editable in place and each able to carry a different value in any rendering context the project declares. The view's own frame (`surfaces/styles-variables.json`) draws the heading and mounts this document into its `editor` island. The adapter (`surfaces/settings-css-vars.ts`) hands in the groups already grouped, each token already resolved — its swatch colour, the chip it wears when its value follows another token, the override rows it has, the contexts it could still be given one in and whether it is the token the Outline pointed at — and the document draws them. Nothing here reads `project.json` and nothing here decides what a token IS: `style/project-styles.ts` owns the vocabulary and `settings/css-vars-editor.ts` owns the writes. A context is DEFINED in Project Settings › Contexts and only overridden here, which is why the one thing the colour group says when no scheme exists is where to go and say it.",
|
|
5
5
|
"tagName": "section",
|
|
6
6
|
"attributes": {
|
|
7
7
|
"part": "cssvars"
|
|
8
8
|
},
|
|
9
9
|
"style": {
|
|
10
|
-
"$description": "This section's whole look, keyed on `part`. Six of the rules it used to borrow are gone rather than moved: `.settings-section` never had a rule anywhere (it was on the orphan ledger), and `.css-var-swatch input[type=\"color\"]` plus the two chip spans are drawn here now because the lit helper that emitted them is drawn here now. Every `--spectrum-font-size-*` reference is re-pointed at the kit's scale: a document is mounted in the pane rather than inside `<sp-theme>`, so each of those would have silently taken its hard-coded fallback.",
|
|
10
|
+
"$description": "This section's whole look, keyed on `part`. Six of the rules it used to borrow are gone rather than moved: `.settings-section` never had a rule anywhere (it was on the orphan ledger), and `.css-var-swatch input[type=\"color\"]` plus the two chip spans are drawn here now because the lit helper that emitted them is drawn here now. Every `--spectrum-font-size-*` reference is re-pointed at the kit's scale: a document is mounted in the pane rather than inside `<sp-theme>`, so each of those would have silently taken its hard-coded fallback. Two part names are this document's own on purpose: the colour well is `well` and a font token's specimen is `font-preview`, because `swatch` and `preview` are parts INSIDE `jx-select` (its options' colour chip and its closed-state value), and this section draws a `jx-select` per token. The kit is light DOM, so `& [part=\"preview\"]` reached the Add override picker's own value and gave it this sheet's 108px indent, bottom padding and 13px type: a 36px control under a 20px field. The name column is a fixed width (`--name-col`) so every value field in a group starts at the same x, and the override list indents to that same column rather than to a literal that guessed it.",
|
|
11
|
+
"--name-col": "12rem",
|
|
11
12
|
"display": "block",
|
|
12
|
-
"& [part=\"title\"]": {
|
|
13
|
-
"margin": "0 0 16px",
|
|
14
|
-
"fontSize": "16px",
|
|
15
|
-
"fontWeight": "600",
|
|
16
|
-
"color": "var(--fg)"
|
|
17
|
-
},
|
|
18
13
|
"& [part=\"section-error\"]": {
|
|
19
14
|
"$description": "A write that failed, said under the section title rather than pinned to a control. This section saves on change and the predecessor dropped every rejection on the floor, so a read-only file made each edit look as though it had been taken and then quietly forgotten. It is `section-error` rather than `error` because every text field and select in the section draws a permanent `[part=\"error\"]` of its own in this same light-DOM tree, and a rule on that name would give their refusal sentences this margin and size too.",
|
|
20
15
|
"margin": "0 0 12px",
|
|
21
16
|
"fontSize": "var(--jx-text-md)",
|
|
22
17
|
"color": "var(--danger)"
|
|
23
18
|
},
|
|
24
|
-
"& [part=\"group\"]": {
|
|
19
|
+
"& [part=\"token-group\"]": {
|
|
25
20
|
"marginBottom": "24px"
|
|
26
21
|
},
|
|
22
|
+
"& [part=\"token\"][aria-current=\"true\"]": {
|
|
23
|
+
"$description": "The token the Outline pointed the view at: a tinted band with the accent edge the Outline's own selected row wears, so the two say the same thing about one property.",
|
|
24
|
+
"borderRadius": "var(--radius)",
|
|
25
|
+
"background": "var(--accent-20)",
|
|
26
|
+
"boxShadow": "inset 2px 0 0 var(--accent)"
|
|
27
|
+
},
|
|
27
28
|
"& [part=\"group-title\"]": {
|
|
28
29
|
"margin": "0 0 8px",
|
|
29
30
|
"fontSize": "13px",
|
|
@@ -39,14 +40,18 @@
|
|
|
39
40
|
"padding": "4px 0"
|
|
40
41
|
},
|
|
41
42
|
"& [part=\"name\"]": {
|
|
43
|
+
"$description": "A fixed column, not a minimum: with `minWidth` the value field started wherever its name ended, so a long name pushed its field out of line with every field above it. A name longer than the column is cut with an ellipsis and carries its whole self in `title`.",
|
|
44
|
+
"flex": "0 0 var(--name-col)",
|
|
45
|
+
"overflow": "hidden",
|
|
46
|
+
"textOverflow": "ellipsis",
|
|
47
|
+
"whiteSpace": "nowrap",
|
|
42
48
|
"fontSize": "var(--jx-text-md)",
|
|
43
|
-
"color": "var(--fg-dim)"
|
|
44
|
-
"minWidth": "100px"
|
|
49
|
+
"color": "var(--fg-dim)"
|
|
45
50
|
},
|
|
46
51
|
"& [part=\"swatch-slot\"], & [part=\"chip-slot\"]": {
|
|
47
52
|
"display": "contents"
|
|
48
53
|
},
|
|
49
|
-
"& [part=\"
|
|
54
|
+
"& [part=\"well\"]": {
|
|
50
55
|
"$description": "The colour well. Its background is the value the token RESOLVES to, so an alias token is a colour rather than a blank square, and the native input over it is transparent — the well is what the reader sees and the input is only what they operate.",
|
|
51
56
|
"position": "relative",
|
|
52
57
|
"width": "24px",
|
|
@@ -66,15 +71,14 @@
|
|
|
66
71
|
"cursor": "pointer"
|
|
67
72
|
},
|
|
68
73
|
"& [part=\"value\"]": {
|
|
69
|
-
"flex": "1",
|
|
74
|
+
"flex": "0 1 16rem",
|
|
70
75
|
"minWidth": "0"
|
|
71
76
|
},
|
|
72
77
|
"& [data-group=\"color\"] [part=\"value\"]": {
|
|
73
|
-
"
|
|
78
|
+
"flexBasis": "10rem"
|
|
74
79
|
},
|
|
75
80
|
"& [data-group=\"size\"] [part=\"value\"]": {
|
|
76
|
-
"
|
|
77
|
-
"maxWidth": "120px"
|
|
81
|
+
"flexBasis": "8rem"
|
|
78
82
|
},
|
|
79
83
|
"& [part=\"chip\"]": {
|
|
80
84
|
"$description": "A value that is exactly `var(--token)` is a reference, and raw text is the one rendering that hides both which token and what it currently is. The chip says both. It is a span, not a button: it states, it does not navigate. Same border, same size and same radius as the provenance chips in the Inspector, because \"this value comes from somewhere else\" is the same sentence in both places.",
|
|
@@ -103,16 +107,20 @@
|
|
|
103
107
|
"overflow": "hidden",
|
|
104
108
|
"textOverflow": "ellipsis"
|
|
105
109
|
},
|
|
106
|
-
"& [part=\"preview\"]": {
|
|
107
|
-
"$description": "A font token is the one kind whose value cannot be read: `'Georgia', serif` is a name for a shape, so the shape is drawn. Indented to the value column, because it belongs to the field above it rather than to the section.",
|
|
108
|
-
"padding": "4px 0 12px
|
|
110
|
+
"& [part=\"font-preview\"]": {
|
|
111
|
+
"$description": "A font token is the one kind whose value cannot be read: `'Georgia', serif` is a name for a shape, so the shape is drawn. Indented to the value column (the name column and the gap after it), because it belongs to the field above it rather than to the section.",
|
|
112
|
+
"padding": "4px 0 12px calc(var(--name-col) + 8px)",
|
|
109
113
|
"fontSize": "13px",
|
|
110
114
|
"color": "var(--fg-dim)"
|
|
111
115
|
},
|
|
112
116
|
"& [part=\"overrides\"]": {
|
|
113
|
-
"
|
|
117
|
+
"$description": "Indented to the value column: past the name column and its gap, and in the colour group past the well too, so an override value sits under the base value it overrides.",
|
|
118
|
+
"paddingLeft": "calc(var(--name-col) + 8px)",
|
|
114
119
|
"marginBottom": "8px"
|
|
115
120
|
},
|
|
121
|
+
"& [data-group=\"color\"] [part=\"overrides\"]": {
|
|
122
|
+
"paddingLeft": "calc(var(--name-col) + 40px)"
|
|
123
|
+
},
|
|
116
124
|
"& [part=\"override\"]": {
|
|
117
125
|
"display": "flex",
|
|
118
126
|
"alignItems": "center",
|
|
@@ -138,6 +146,11 @@
|
|
|
138
146
|
"alignItems": "center",
|
|
139
147
|
"padding": "2px 0"
|
|
140
148
|
},
|
|
149
|
+
"& [part=\"add-picker\"]": {
|
|
150
|
+
"$description": "As compact as the fields beside it: sized to its own label rather than stretched, since it is a verb on the list above it and not a value of its own.",
|
|
151
|
+
"flex": "none",
|
|
152
|
+
"width": "auto"
|
|
153
|
+
},
|
|
141
154
|
"& [part=\"add\"]": {
|
|
142
155
|
"display": "flex",
|
|
143
156
|
"alignItems": "center",
|
|
@@ -162,13 +175,6 @@
|
|
|
162
175
|
}
|
|
163
176
|
},
|
|
164
177
|
"children": [
|
|
165
|
-
{
|
|
166
|
-
"tagName": "h3",
|
|
167
|
-
"attributes": {
|
|
168
|
-
"part": "title"
|
|
169
|
-
},
|
|
170
|
-
"textContent": "CSS Variables"
|
|
171
|
-
},
|
|
172
178
|
{
|
|
173
179
|
"tagName": "div",
|
|
174
180
|
"attributes": {
|
|
@@ -200,12 +206,12 @@
|
|
|
200
206
|
"map": {
|
|
201
207
|
"tagName": "div",
|
|
202
208
|
"attributes": {
|
|
203
|
-
"part": "group",
|
|
209
|
+
"part": "token-group",
|
|
204
210
|
"data-group": "${$map.item.id}"
|
|
205
211
|
},
|
|
206
212
|
"children": [
|
|
207
213
|
{
|
|
208
|
-
"tagName": "
|
|
214
|
+
"tagName": "h3",
|
|
209
215
|
"attributes": {
|
|
210
216
|
"part": "group-title"
|
|
211
217
|
},
|
|
@@ -223,7 +229,8 @@
|
|
|
223
229
|
"tagName": "div",
|
|
224
230
|
"attributes": {
|
|
225
231
|
"part": "token",
|
|
226
|
-
"data-token": "${$map.item.name}"
|
|
232
|
+
"data-token": "${$map.item.name}",
|
|
233
|
+
"aria-current": "${$map.item.current ? 'true' : null}"
|
|
227
234
|
},
|
|
228
235
|
"children": [
|
|
229
236
|
{
|
|
@@ -245,7 +252,7 @@
|
|
|
245
252
|
"swatch": {
|
|
246
253
|
"tagName": "div",
|
|
247
254
|
"attributes": {
|
|
248
|
-
"part": "
|
|
255
|
+
"part": "well"
|
|
249
256
|
},
|
|
250
257
|
"style": {
|
|
251
258
|
"background": {
|
|
@@ -290,7 +297,8 @@
|
|
|
290
297
|
{
|
|
291
298
|
"tagName": "span",
|
|
292
299
|
"attributes": {
|
|
293
|
-
"part": "name"
|
|
300
|
+
"part": "name",
|
|
301
|
+
"title": "${$map.item.label}"
|
|
294
302
|
},
|
|
295
303
|
"textContent": "${$map.item.label}"
|
|
296
304
|
},
|
|
@@ -433,7 +441,7 @@
|
|
|
433
441
|
"font": {
|
|
434
442
|
"tagName": "div",
|
|
435
443
|
"attributes": {
|
|
436
|
-
"part": "preview"
|
|
444
|
+
"part": "font-preview"
|
|
437
445
|
},
|
|
438
446
|
"style": {
|
|
439
447
|
"fontFamily": {
|
|
@@ -498,7 +506,7 @@
|
|
|
498
506
|
"swatch": {
|
|
499
507
|
"tagName": "div",
|
|
500
508
|
"attributes": {
|
|
501
|
-
"part": "
|
|
509
|
+
"part": "well"
|
|
502
510
|
},
|
|
503
511
|
"style": {
|
|
504
512
|
"background": {
|
|
@@ -788,7 +796,7 @@
|
|
|
788
796
|
"children": [
|
|
789
797
|
{
|
|
790
798
|
"tagName": "span",
|
|
791
|
-
"textContent": "No
|
|
799
|
+
"textContent": "No color scheme is defined yet, so these tokens have one value each."
|
|
792
800
|
},
|
|
793
801
|
{
|
|
794
802
|
"tagName": "jx-action-button",
|
|
@@ -797,7 +805,7 @@
|
|
|
797
805
|
},
|
|
798
806
|
"$props": {
|
|
799
807
|
"size": "sm",
|
|
800
|
-
"hint": "Define a
|
|
808
|
+
"hint": "Define a color scheme in Project Settings › Contexts"
|
|
801
809
|
},
|
|
802
810
|
"onclick": {
|
|
803
811
|
"$ref": "#/state/manageContexts"
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
2
|
/**
|
|
3
|
-
* The CSS Variables
|
|
3
|
+
* The CSS Variables editor, as a mounted document: the body of the Styles workspace's Variables
|
|
4
|
+
* view (`surfaces/styles-variables.json` is its frame). The file keeps the `settings-` name it had
|
|
5
|
+
* while the editor was a Project Settings section.
|
|
4
6
|
*
|
|
5
7
|
* `settings/css-vars-editor.ts` is the flow — it reads the project's root style block, decides what
|
|
6
8
|
* an edit writes and pushes the result at every live canvas — and this is the surface it draws
|
|
@@ -19,26 +21,19 @@
|
|
|
19
21
|
* inventing one to be photographed is what the screenshot policy forbids. It is the one place a
|
|
20
22
|
* document reaches past the kit, and it reaches for a platform element rather than a Spectrum one.
|
|
21
23
|
*
|
|
22
|
-
* **Keyed by host, not by module.**
|
|
23
|
-
* two containers may be showing this section at once; a single module-level mount would take the
|
|
24
|
+
* **Keyed by host, not by module.** The Variables view is a pane document and a pane can be split,
|
|
25
|
+
* so two containers may be showing this section at once; a single module-level mount would take the
|
|
24
26
|
* first one's surface away from it the moment the second drew.
|
|
25
27
|
*
|
|
26
|
-
* @docs studio/
|
|
28
|
+
* @docs studio/design/tokens
|
|
27
29
|
*/
|
|
28
30
|
|
|
29
31
|
import { reactive } from "../reactivity";
|
|
30
32
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
31
33
|
import cssVarsDoc from "./settings-css-vars.json";
|
|
32
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
33
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
34
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
34
35
|
|
|
35
|
-
registerSurface("settings-css-vars", cssVarsDoc
|
|
36
|
-
|
|
37
|
-
/** One row of the add-an-override picker. */
|
|
38
|
-
export interface OverrideChoice {
|
|
39
|
-
value: string;
|
|
40
|
-
label: string;
|
|
41
|
-
}
|
|
36
|
+
registerSurface("settings-css-vars", cssVarsDoc);
|
|
42
37
|
|
|
43
38
|
/** One of a token's per-context values. */
|
|
44
39
|
export interface OverrideRowView {
|
|
@@ -67,6 +62,8 @@ export interface OverrideRowView {
|
|
|
67
62
|
export interface TokenRowView {
|
|
68
63
|
/** The custom property. The row's key, and every handler's first argument. */
|
|
69
64
|
name: string;
|
|
65
|
+
/** Whether this is the token the Outline pointed the view at. Drawn as `aria-current`. */
|
|
66
|
+
current: boolean;
|
|
70
67
|
label: string;
|
|
71
68
|
value: string;
|
|
72
69
|
removeLabel: string;
|
|
@@ -91,7 +88,7 @@ export interface TokenRowView {
|
|
|
91
88
|
overrides: OverrideRowView[];
|
|
92
89
|
/** Whether the add-an-override picker is offered. */
|
|
93
90
|
addState: "none" | "shown";
|
|
94
|
-
addOptions:
|
|
91
|
+
addOptions: SurfaceOption[];
|
|
95
92
|
/** What the picker currently reads. Always `""` in practice — see {@link renderCssVarsSurface}. */
|
|
96
93
|
addPick: string;
|
|
97
94
|
addLabel: string;
|
|
@@ -141,7 +138,7 @@ interface CssVarsFlags {
|
|
|
141
138
|
hasError: boolean;
|
|
142
139
|
}
|
|
143
140
|
|
|
144
|
-
interface CssVarsScope extends
|
|
141
|
+
interface CssVarsScope extends CssVarsView, CssVarsActions, CssVarsFlags {}
|
|
145
142
|
|
|
146
143
|
interface Mounted {
|
|
147
144
|
scope: CssVarsScope;
|
|
@@ -186,7 +183,7 @@ export function renderCssVarsSurface(
|
|
|
186
183
|
}
|
|
187
184
|
existing?.handle?.dispose();
|
|
188
185
|
host.textContent = "";
|
|
189
|
-
const scope = reactive({ ...derive(view), ...actions })
|
|
186
|
+
const scope: CssVarsScope = reactive<CssVarsScope>({ ...derive(view), ...actions });
|
|
190
187
|
const record: Mounted = { handle: null, scope };
|
|
191
188
|
mounts.set(host, record);
|
|
192
189
|
/* No race to arbitrate: a redraw arriving while this is in flight takes the branch above — a
|
|
@@ -197,3 +194,72 @@ export function renderCssVarsSurface(
|
|
|
197
194
|
record.handle = handle;
|
|
198
195
|
});
|
|
199
196
|
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Bring one token's row on screen and put the keyboard on its value.
|
|
200
|
+
*
|
|
201
|
+
* The adapter's half of pointing the editor at a token: the flow marks the row through the scope
|
|
202
|
+
* (`current`), and only the surface knows where the row it draws is. It waits a turn, because the
|
|
203
|
+
* mark is a scope write and the row it marks is drawn by the binding that write schedules, and it
|
|
204
|
+
* searches the mounted root as it stands then, so a section redrawn since the call is the one
|
|
205
|
+
* searched. A host with no surface, or a name with no row, moves nothing.
|
|
206
|
+
*
|
|
207
|
+
* @param {HTMLElement} host The section container the editor was rendered into.
|
|
208
|
+
* @param {string} name A custom property, `--accent`.
|
|
209
|
+
*/
|
|
210
|
+
export function revealCssVarsToken(host: HTMLElement, name: string): void {
|
|
211
|
+
const record = mounts.get(host);
|
|
212
|
+
if (!record) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
setTimeout(() => {
|
|
216
|
+
const root = record.handle?.root;
|
|
217
|
+
if (!(root instanceof HTMLElement) || !root.isConnected) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const row = [...root.querySelectorAll<HTMLElement>('[part="token"]')].find(
|
|
221
|
+
(candidate) => candidate.dataset["token"] === name,
|
|
222
|
+
);
|
|
223
|
+
if (!row) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
row.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
227
|
+
// The NATIVE input: the kit's text field does not delegate focus from its host.
|
|
228
|
+
row.querySelector<HTMLElement>('[part="value"] input')?.focus();
|
|
229
|
+
}, 0);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Bring one group's heading on screen, and with `add` put the keyboard on its Add row's name field.
|
|
234
|
+
*
|
|
235
|
+
* The Styles panel's group headings and its "Add variable" land here. It waits a turn for the
|
|
236
|
+
* reason {@link revealCssVarsToken} does. A host with no surface, or a group the section does not
|
|
237
|
+
* draw (an empty Other), moves nothing.
|
|
238
|
+
*
|
|
239
|
+
* @param {HTMLElement} host The section container the editor was rendered into.
|
|
240
|
+
* @param {string} group A token group id: `color`, `font`, `size` or `other`.
|
|
241
|
+
* @param {boolean} add Whether to focus the group's Add row.
|
|
242
|
+
*/
|
|
243
|
+
export function revealCssVarsGroup(host: HTMLElement, group: string, add: boolean): void {
|
|
244
|
+
const record = mounts.get(host);
|
|
245
|
+
if (!record) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
setTimeout(() => {
|
|
249
|
+
const root = record.handle?.root;
|
|
250
|
+
if (!(root instanceof HTMLElement) || !root.isConnected) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const section = [...root.querySelectorAll<HTMLElement>("[data-group]")].find(
|
|
254
|
+
(candidate) => candidate.dataset["group"] === group,
|
|
255
|
+
);
|
|
256
|
+
if (!section) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
section.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
260
|
+
if (add) {
|
|
261
|
+
// The NATIVE input, for the reason `revealCssVarsToken` gives.
|
|
262
|
+
section.querySelector<HTMLElement>('[part="add-name"] input')?.focus();
|
|
263
|
+
}
|
|
264
|
+
}, 0);
|
|
265
|
+
}
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
{
|
|
159
159
|
"$prototype": "Array",
|
|
160
160
|
"items": {
|
|
161
|
-
"$ref": "#/state/
|
|
161
|
+
"$ref": "#/state/defs"
|
|
162
162
|
},
|
|
163
163
|
"key": {
|
|
164
164
|
"$ref": "$map/item/name"
|
|
@@ -406,7 +406,7 @@
|
|
|
406
406
|
{
|
|
407
407
|
"operator": "call",
|
|
408
408
|
"target": {
|
|
409
|
-
"$ref": "#/state/
|
|
409
|
+
"$ref": "#/state/removeSelected"
|
|
410
410
|
},
|
|
411
411
|
"value": []
|
|
412
412
|
}
|
|
@@ -26,19 +26,12 @@ import { reactive } from "../reactivity";
|
|
|
26
26
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
27
27
|
import defsDoc from "./settings-defs.json";
|
|
28
28
|
|
|
29
|
-
import type {
|
|
30
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
29
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
31
30
|
|
|
32
|
-
registerSurface("settings-defs", defsDoc
|
|
33
|
-
|
|
34
|
-
/** One row of a picker: a field type, a format, or a reference target. */
|
|
35
|
-
export interface DefsChoice {
|
|
36
|
-
value: string;
|
|
37
|
-
label: string;
|
|
38
|
-
}
|
|
31
|
+
registerSurface("settings-defs", defsDoc);
|
|
39
32
|
|
|
40
33
|
/** One data shape in the left column. */
|
|
41
|
-
export interface
|
|
34
|
+
export interface DefsEntryView {
|
|
42
35
|
name: string;
|
|
43
36
|
selected: boolean;
|
|
44
37
|
}
|
|
@@ -87,7 +80,7 @@ export interface DefsFieldView {
|
|
|
87
80
|
|
|
88
81
|
/** Everything the document draws, as one value. */
|
|
89
82
|
export interface DefsView {
|
|
90
|
-
|
|
83
|
+
defs: DefsEntryView[];
|
|
91
84
|
/** Whether the left column is offering the new-shape button or the form. */
|
|
92
85
|
newState: "closed" | "open";
|
|
93
86
|
newName: string;
|
|
@@ -95,10 +88,10 @@ export interface DefsView {
|
|
|
95
88
|
editorState: "empty" | "editing";
|
|
96
89
|
selected: string;
|
|
97
90
|
fields: DefsFieldView[];
|
|
98
|
-
typeOptions:
|
|
99
|
-
formatOptions:
|
|
91
|
+
typeOptions: SurfaceOption[];
|
|
92
|
+
formatOptions: SurfaceOption[];
|
|
100
93
|
/** The content types a reference field can point at. */
|
|
101
|
-
targets:
|
|
94
|
+
targets: SurfaceOption[];
|
|
102
95
|
addState: "closed" | "open";
|
|
103
96
|
addName: string;
|
|
104
97
|
addType: string;
|
|
@@ -114,7 +107,7 @@ export interface DefsActions {
|
|
|
114
107
|
editNew: (value: string) => void;
|
|
115
108
|
createNew: () => void;
|
|
116
109
|
cancelNew: () => void;
|
|
117
|
-
|
|
110
|
+
removeSelected: () => void;
|
|
118
111
|
renameField: (key: string, value: string) => void;
|
|
119
112
|
setType: (key: string, value: string) => void;
|
|
120
113
|
setFormat: (key: string, value: string) => void;
|
|
@@ -149,7 +142,7 @@ export interface DefsSurfaceHandle {
|
|
|
149
142
|
dispose: () => void;
|
|
150
143
|
}
|
|
151
144
|
|
|
152
|
-
interface DefsScope extends
|
|
145
|
+
interface DefsScope extends DefsView, DefsActions {}
|
|
153
146
|
|
|
154
147
|
/** The view a freshly mounted surface starts on: no shapes, and nothing chosen. */
|
|
155
148
|
function emptyView(): DefsView {
|
|
@@ -160,13 +153,13 @@ function emptyView(): DefsView {
|
|
|
160
153
|
addRequired: false,
|
|
161
154
|
addState: "closed",
|
|
162
155
|
addType: "string",
|
|
156
|
+
defs: [],
|
|
163
157
|
editorState: "empty",
|
|
164
158
|
fields: [],
|
|
165
159
|
formatOptions: [],
|
|
166
160
|
newName: "",
|
|
167
161
|
newState: "closed",
|
|
168
162
|
selected: "",
|
|
169
|
-
shapes: [],
|
|
170
163
|
targets: [],
|
|
171
164
|
typeOptions: [],
|
|
172
165
|
};
|
|
@@ -181,17 +174,20 @@ function emptyView(): DefsView {
|
|
|
181
174
|
*/
|
|
182
175
|
export function mountDefsSurface(host: HTMLElement, actions: DefsActions): DefsSurfaceHandle {
|
|
183
176
|
host.textContent = "";
|
|
184
|
-
const scope = reactive<DefsScope>({ ...emptyView(), ...actions })
|
|
177
|
+
const scope: DefsScope = reactive<DefsScope>({ ...emptyView(), ...actions });
|
|
185
178
|
|
|
186
179
|
let mounted: SurfaceHandle | null = null;
|
|
187
180
|
let disposed = false;
|
|
188
181
|
const ready = mountSurface("settings-defs", scope, host).then((surface) => {
|
|
182
|
+
/* SAFETY: `settings-defs.json`'s root definition carries `tagName: "section"`, so the runtime
|
|
183
|
+
mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
184
|
+
const root = surface.root as HTMLElement;
|
|
189
185
|
if (disposed) {
|
|
190
186
|
surface.dispose();
|
|
191
|
-
return
|
|
187
|
+
return root;
|
|
192
188
|
}
|
|
193
189
|
mounted = surface;
|
|
194
|
-
return
|
|
190
|
+
return root;
|
|
195
191
|
});
|
|
196
192
|
|
|
197
193
|
return {
|
|
@@ -218,13 +214,13 @@ export function mountDefsSurface(host: HTMLElement, actions: DefsActions): DefsS
|
|
|
218
214
|
scope.addRequired = view.addRequired;
|
|
219
215
|
scope.addState = view.addState;
|
|
220
216
|
scope.addType = view.addType;
|
|
217
|
+
scope.defs = view.defs;
|
|
221
218
|
scope.editorState = view.editorState;
|
|
222
219
|
scope.fields = view.fields;
|
|
223
220
|
scope.formatOptions = view.formatOptions;
|
|
224
221
|
scope.newName = view.newName;
|
|
225
222
|
scope.newState = view.newState;
|
|
226
223
|
scope.selected = view.selected;
|
|
227
|
-
scope.shapes = view.shapes;
|
|
228
224
|
scope.targets = view.targets;
|
|
229
225
|
scope.typeOptions = view.typeOptions;
|
|
230
226
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioSettingsDeploy",
|
|
4
|
-
"$description": "
|
|
4
|
+
"$description": "Publish › Hosting's build adapter (studio.md §22.8), which was Project Settings › Deploy: one row over `build.adapter`, and the sentence a failed write leaves behind. It draws no heading of its own: Hosting's \"How it is built\" section heads it, and a second title inside that card would name the same thing twice. The adapter (`surfaces/settings-deploy.ts`) hands in the chosen adapter, the enumeration it is chosen from and whatever the last write had to say; the document draws them and hands the change straight back. Nothing here reads `project.json`: a section that re-read the config while drawing would be a second opinion about a file one module already owns.",
|
|
5
5
|
"tagName": "section",
|
|
6
6
|
"attributes": {
|
|
7
7
|
"part": "deploy"
|
|
@@ -11,12 +11,6 @@
|
|
|
11
11
|
"display": "block",
|
|
12
12
|
"fontFamily": "var(--jx-font-sans)",
|
|
13
13
|
"color": "var(--fg)",
|
|
14
|
-
"& [part=\"title\"]": {
|
|
15
|
-
"margin": "0 0 16px",
|
|
16
|
-
"fontSize": "16px",
|
|
17
|
-
"fontWeight": "600",
|
|
18
|
-
"color": "var(--fg)"
|
|
19
|
-
},
|
|
20
14
|
"& [part=\"section-error\"]": {
|
|
21
15
|
"$description": "A write that failed, said under the section title rather than pinned to the picker: settings save on change, so a silent rejection would read as \"my edit just vanished\", and what failed was the whole file rather than the value. Its size read `--spectrum-font-size-75` with a 12px fallback, which resolved only inside `<sp-theme>` — a document is mounted in the settings pane, where that name is not in scope and the fallback is all it would ever have taken — so the size is the kit's scale and the colour is the studio layer's. It is `section-error` rather than `error` because the adapter picker is a `jx-select`, which draws a permanent `[part=\"error\"]` of its own in this same light-DOM tree: a rule on that name would give the picker's own refusal sentence this 16px margin too.",
|
|
22
16
|
"margin": "0 0 16px",
|
|
@@ -29,13 +23,6 @@
|
|
|
29
23
|
}
|
|
30
24
|
},
|
|
31
25
|
"children": [
|
|
32
|
-
{
|
|
33
|
-
"tagName": "h3",
|
|
34
|
-
"attributes": {
|
|
35
|
-
"part": "title"
|
|
36
|
-
},
|
|
37
|
-
"textContent": "Deploy"
|
|
38
|
-
},
|
|
39
26
|
{
|
|
40
27
|
"tagName": "div",
|
|
41
28
|
"attributes": {
|
|
@@ -67,7 +54,7 @@
|
|
|
67
54
|
},
|
|
68
55
|
"$props": {
|
|
69
56
|
"span": true,
|
|
70
|
-
"label": "
|
|
57
|
+
"label": "Build adapter",
|
|
71
58
|
"description": "What the site is built for. Static writes plain files; the others emit a server entry for that runtime."
|
|
72
59
|
},
|
|
73
60
|
"children": [
|
|
@@ -13,29 +13,22 @@
|
|
|
13
13
|
* the old adapter back — `live()` did this for the lit template, and a binding that never moved
|
|
14
14
|
* would otherwise leave the picker claiming a platform the file does not name.
|
|
15
15
|
*
|
|
16
|
-
* @docs studio/
|
|
16
|
+
* @docs studio/publish/other-hosts
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import { reactive } from "../reactivity";
|
|
20
20
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
21
21
|
import deployDoc from "./settings-deploy.json";
|
|
22
|
-
import type {
|
|
23
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
22
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
24
23
|
|
|
25
|
-
registerSurface("settings-deploy", deployDoc
|
|
26
|
-
|
|
27
|
-
/** One row of the adapter picker. */
|
|
28
|
-
export interface DeployChoice {
|
|
29
|
-
value: string;
|
|
30
|
-
label: string;
|
|
31
|
-
}
|
|
24
|
+
registerSurface("settings-deploy", deployDoc);
|
|
32
25
|
|
|
33
26
|
/** What the section says the surface should be showing right now. */
|
|
34
27
|
export interface DeployValues {
|
|
35
28
|
/** The adapter the project is built with. */
|
|
36
29
|
adapter: string;
|
|
37
30
|
/** Every adapter it may be. */
|
|
38
|
-
adapters:
|
|
31
|
+
adapters: SurfaceOption[];
|
|
39
32
|
/** What the last write failed with, or `""`. */
|
|
40
33
|
error: string;
|
|
41
34
|
}
|
|
@@ -58,9 +51,9 @@ export interface DeploySurfaceHandle {
|
|
|
58
51
|
* The scope the document reads. `hasError` is derived here: `$switch` is a document's only
|
|
59
52
|
* conditional.
|
|
60
53
|
*/
|
|
61
|
-
interface DeployScope
|
|
54
|
+
interface DeployScope {
|
|
62
55
|
adapter: string;
|
|
63
|
-
adapters:
|
|
56
|
+
adapters: SurfaceOption[];
|
|
64
57
|
error: string;
|
|
65
58
|
hasError: boolean;
|
|
66
59
|
setAdapter: (value: string) => void;
|
|
@@ -91,13 +84,13 @@ export function mountDeploySurface(
|
|
|
91
84
|
values: DeployValues,
|
|
92
85
|
actions: DeployActions,
|
|
93
86
|
): DeploySurfaceHandle {
|
|
94
|
-
const scope = reactive<DeployScope>({
|
|
87
|
+
const scope: DeployScope = reactive<DeployScope>({
|
|
95
88
|
adapter: "",
|
|
96
89
|
adapters: [],
|
|
97
90
|
error: "",
|
|
98
91
|
hasError: false,
|
|
99
92
|
setAdapter: actions.setAdapter,
|
|
100
|
-
})
|
|
93
|
+
});
|
|
101
94
|
project(scope, values);
|
|
102
95
|
|
|
103
96
|
container.replaceChildren();
|
|
@@ -125,7 +118,7 @@ export function mountDeploySurface(
|
|
|
125
118
|
!disposed &&
|
|
126
119
|
(mounted === null
|
|
127
120
|
? container.childNodes.length === 0
|
|
128
|
-
:
|
|
121
|
+
: mounted.root.parentNode === container),
|
|
129
122
|
dispose() {
|
|
130
123
|
disposed = true;
|
|
131
124
|
mounted?.dispose();
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
|
+
"$id": "StudioSettingsDialog",
|
|
4
|
+
"$description": "Project Settings (§17.1): a `jx-dialog` whose body is the settings editor's two columns, the grouped section list and the section body. The dialog owns modality, Escape and focus restoration, and its one footer answer is Close: every section writes as it is edited, so there is nothing to confirm or cancel. The body is an ISLAND: this document draws the slot and nothing in it, and `settings/settings-dialog.ts` mounts `settings-pane.json` there through `onNodeCreated` (studio-ui-guidelines.md §9.4).",
|
|
5
|
+
"tagName": "jx-dialog",
|
|
6
|
+
"$props": {
|
|
7
|
+
"headline": "Project settings",
|
|
8
|
+
"confirmLabel": "",
|
|
9
|
+
"cancelLabel": "Close",
|
|
10
|
+
"size": "xl"
|
|
11
|
+
},
|
|
12
|
+
"attributes": {
|
|
13
|
+
"part": "settings"
|
|
14
|
+
},
|
|
15
|
+
"oncancel": {
|
|
16
|
+
"$prototype": "Function",
|
|
17
|
+
"body": [
|
|
18
|
+
{
|
|
19
|
+
"operator": "call",
|
|
20
|
+
"target": {
|
|
21
|
+
"$ref": "#/state/closed"
|
|
22
|
+
},
|
|
23
|
+
"value": []
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"onclose": {
|
|
28
|
+
"$prototype": "Function",
|
|
29
|
+
"body": [
|
|
30
|
+
{
|
|
31
|
+
"operator": "call",
|
|
32
|
+
"target": {
|
|
33
|
+
"$ref": "#/state/closed"
|
|
34
|
+
},
|
|
35
|
+
"value": []
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"children": [
|
|
40
|
+
{
|
|
41
|
+
"tagName": "div",
|
|
42
|
+
"attributes": {
|
|
43
|
+
"part": "pane-slot"
|
|
44
|
+
},
|
|
45
|
+
"style": {
|
|
46
|
+
"$description": "The editor's box is its own (`settings-pane.json`); the slot only gives it the dialog body's width.",
|
|
47
|
+
"minWidth": "0"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|