@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
|
@@ -25,10 +25,9 @@
|
|
|
25
25
|
import { reactive } from "../reactivity";
|
|
26
26
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
27
27
|
import problemsDoc from "./panel-problems.json";
|
|
28
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
29
28
|
import type { SurfaceHandle } from "../ui/surface";
|
|
30
29
|
|
|
31
|
-
registerSurface("panel-problems", problemsDoc
|
|
30
|
+
registerSurface("panel-problems", problemsDoc);
|
|
32
31
|
|
|
33
32
|
/** One problem, as the document draws it. Every field is a value: no records, no closures. */
|
|
34
33
|
export interface ProblemRowView {
|
|
@@ -87,7 +86,7 @@ export interface ProblemsSurfaceHandle {
|
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
/** The scope the document reads: the projection, and the four things a row can ask for. */
|
|
90
|
-
interface ProblemsScope
|
|
89
|
+
interface ProblemsScope {
|
|
91
90
|
hasProblems: boolean;
|
|
92
91
|
clearLabel: string;
|
|
93
92
|
groups: ProblemGroupView[];
|
|
@@ -117,7 +116,7 @@ export function mountProblemsSurface(
|
|
|
117
116
|
values: ProblemsValues,
|
|
118
117
|
actions: ProblemsActions,
|
|
119
118
|
): ProblemsSurfaceHandle {
|
|
120
|
-
const scope = reactive<ProblemsScope>({
|
|
119
|
+
const scope: ProblemsScope = reactive<ProblemsScope>({
|
|
121
120
|
clearAll: actions.clearAll,
|
|
122
121
|
clearLabel: "",
|
|
123
122
|
dismissRow: actions.dismissRow,
|
|
@@ -125,7 +124,7 @@ export function mountProblemsSurface(
|
|
|
125
124
|
hasProblems: false,
|
|
126
125
|
openPath: actions.openPath,
|
|
127
126
|
runAction: actions.runAction,
|
|
128
|
-
})
|
|
127
|
+
});
|
|
129
128
|
project(scope, values);
|
|
130
129
|
|
|
131
130
|
let mounted: SurfaceHandle | null = null;
|
|
@@ -143,8 +142,7 @@ export function mountProblemsSurface(
|
|
|
143
142
|
answer is simply whether this handle is still wanted. Once mounted, the question is whether
|
|
144
143
|
the root is still where it was put: a dock that repainted with another tab selected, or one
|
|
145
144
|
that collapsed, had the panel body emptied out from under it. */
|
|
146
|
-
connected: () =>
|
|
147
|
-
!disposed && (mounted === null || (mounted.root as Node).parentNode === container),
|
|
145
|
+
connected: () => !disposed && (mounted === null || mounted.root.parentNode === container),
|
|
148
146
|
dispose() {
|
|
149
147
|
disposed = true;
|
|
150
148
|
mounted?.dispose();
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"data-refreshing": "${state.refreshing ? '' : null}"
|
|
9
9
|
},
|
|
10
10
|
"style": {
|
|
11
|
-
"$description": "The `.signal-*`, `.signals-*` and `.data-*` rules of `styles/inspector.css`, carried here and keyed on `part`. A signal row is `part=\"entry\"` rather than `part=\"row\"` because the value tree mounted INSIDE an open one is `surfaces/panel-data.json`, whose lines are `part=\"row\"`; two documents sharing a container may not share a part name. Three token repairs travel with them, all of
|
|
11
|
+
"$description": "The `.signal-*`, `.signals-*` and `.data-*` rules of `styles/inspector.css`, carried here and keyed on `part`. A signal row is `part=\"entry\"` rather than `part=\"row\"` because the value tree mounted INSIDE an open one is `surfaces/panel-data.json`, whose lines are `part=\"row\"`; two documents sharing a container may not share a part name. Three token repairs travel with them, all of one shape: `--spectrum-font-size-50` and the bare `10px` literals resolved only inside `<sp-theme>` and a document is mounted outside it, so every rule that read one would silently have taken its px fallback \u2014 they are `--jx-text-sm` (11px) and `--jx-text-xs` (10px) here, at the same values \u2014 and `--spectrum-corner-radius-75` is `--jx-radius-xs`, also at its own value. ONE rule is repaired rather than moved: `.signal-badge.handler` never matched anything, because `defCategory` has returned `\"function\"` since the handler category was renamed, so a function entry's badge was the only one of five drawn untinted. The tint is keyed on the category the projection actually emits now, and `--handler` is the token it was always written against. And one is DELETED, because the kit already draws it: `.signal-del`'s hand-rolled visibility hiding is `[part=\"delete\"]`'s reveal on `:hover` and on `:focus-within` \u2014 the old rule was `:hover` alone, so tabbing to Delete moved the keyboard onto an invisible control.",
|
|
12
12
|
"display": "flex",
|
|
13
13
|
"flexDirection": "column",
|
|
14
14
|
"minHeight": "0",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* field, and a table field's rows and cells — and inside the innermost one `$map/item` is the cell,
|
|
17
17
|
* so a control genuinely cannot see the entry it belongs to. Each record therefore carries the
|
|
18
18
|
* entry name, the field key and (for a cell) its row and column, which the flow looks straight back
|
|
19
|
-
* up. That is the same answer `surfaces/
|
|
19
|
+
* up. That is the same answer `surfaces/publish-workspace.json` gives for its nested file rows.
|
|
20
20
|
*
|
|
21
21
|
* **Five islands, all through `onNodeCreated`** (specs/studio-ui-guidelines.md §9.4). The
|
|
22
22
|
* expression editor, the statement-card editor and the media picker are lit surfaces of their own
|
|
@@ -24,35 +24,23 @@
|
|
|
24
24
|
* resolved-value tree is a document of its own (`surfaces/panel-data.ts`). The document renders an
|
|
25
25
|
* empty host for each and the flow fills it.
|
|
26
26
|
*
|
|
27
|
-
* **The container is not cleared**,
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
27
|
+
* **The container is not cleared**, because a panel body is a node lit renders into and its comment
|
|
28
|
+
* markers are how lit finds its own content again. So the document is APPENDED, and
|
|
29
|
+
* {@link SignalsSurfaceHandle.attached} is how the panel finds out that the Navigator has since
|
|
30
|
+
* painted another panel over the top of it.
|
|
31
31
|
*
|
|
32
32
|
* @docs studio/logic/data
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
+
import { isJsonObject, isString } from "@jxsuite/schema/guards";
|
|
35
36
|
import { reactive } from "../reactivity";
|
|
36
37
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
37
38
|
import signalsDoc from "./panel-signals.json";
|
|
38
|
-
import type {
|
|
39
|
+
import type { JsonObject, JxElement } from "@jxsuite/schema/types";
|
|
39
40
|
import type { JxScope } from "@jxsuite/runtime/types";
|
|
40
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
41
|
+
import type { SurfaceHandle, SurfaceOption, SurfaceOptionGroup } from "../ui/surface";
|
|
41
42
|
|
|
42
|
-
registerSurface("panel-signals", signalsDoc
|
|
43
|
-
|
|
44
|
-
/** One row of a picker, as `jx-select` reads it. */
|
|
45
|
-
export interface SignalOption {
|
|
46
|
-
value: string;
|
|
47
|
-
label: string;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** A named run of picker rows. `jx-select` draws both halves of a group's delimiter. */
|
|
51
|
-
export interface SignalOptionGroup {
|
|
52
|
-
id: string;
|
|
53
|
-
label: string;
|
|
54
|
-
rows: SignalOption[];
|
|
55
|
-
}
|
|
43
|
+
registerSurface("panel-signals", signalsDoc);
|
|
56
44
|
|
|
57
45
|
/** One chip of the basic parameter editor. */
|
|
58
46
|
export interface SignalChipView {
|
|
@@ -158,7 +146,7 @@ export interface SignalFieldView {
|
|
|
158
146
|
error: string;
|
|
159
147
|
hasError: boolean;
|
|
160
148
|
checked: boolean;
|
|
161
|
-
options:
|
|
149
|
+
options: SurfaceOption[];
|
|
162
150
|
/** Which island this host is for — `expression`, `statements`, `media` or `schema`. */
|
|
163
151
|
slot: string;
|
|
164
152
|
chips: SignalChipView[];
|
|
@@ -209,8 +197,8 @@ export interface SignalsView {
|
|
|
209
197
|
listState: "listed" | "empty";
|
|
210
198
|
emptyMessage: string;
|
|
211
199
|
categories: SignalCategoryView[];
|
|
212
|
-
addOptions:
|
|
213
|
-
addGroups:
|
|
200
|
+
addOptions: SurfaceOption[];
|
|
201
|
+
addGroups: SurfaceOptionGroup[];
|
|
214
202
|
/** What the add picker holds. Always `""` at rest — see {@link SignalsActions.addSignal}. */
|
|
215
203
|
addValue: string;
|
|
216
204
|
}
|
|
@@ -262,7 +250,7 @@ export interface SignalsSurfaceHandle {
|
|
|
262
250
|
dispose: () => void;
|
|
263
251
|
}
|
|
264
252
|
|
|
265
|
-
interface SignalsScope extends
|
|
253
|
+
interface SignalsScope extends SignalsView, SignalsActions {}
|
|
266
254
|
|
|
267
255
|
/** One island's host, and what it is a host for. */
|
|
268
256
|
interface IslandRecord {
|
|
@@ -272,23 +260,22 @@ interface IslandRecord {
|
|
|
272
260
|
}
|
|
273
261
|
|
|
274
262
|
/** The `part` a node was authored with, or `""` — the only thing this adapter asks about a node. */
|
|
275
|
-
function partOf(def:
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
return typeof part === "string" ? part : "";
|
|
263
|
+
function partOf(def: JxElement | string): string {
|
|
264
|
+
const part = isString(def) ? undefined : def.attributes?.["part"];
|
|
265
|
+
return isString(part) ? part : "";
|
|
279
266
|
}
|
|
280
267
|
|
|
281
268
|
/** The `$map` item a node was rendered inside, if it was rendered inside one. */
|
|
282
|
-
function mapItem(state: JxScope | undefined):
|
|
283
|
-
const map = state?.["$map"]
|
|
284
|
-
const item = map
|
|
285
|
-
return item
|
|
269
|
+
function mapItem(state: JxScope | undefined): JsonObject | null {
|
|
270
|
+
const map = state?.["$map"];
|
|
271
|
+
const item = isJsonObject(map) ? map["item"] : undefined;
|
|
272
|
+
return isJsonObject(item) ? item : null;
|
|
286
273
|
}
|
|
287
274
|
|
|
288
275
|
/** A string field off a `$map` item, or `""`. */
|
|
289
|
-
function itemString(item:
|
|
276
|
+
function itemString(item: JsonObject | null, field: string): string {
|
|
290
277
|
const value = item?.[field];
|
|
291
|
-
return
|
|
278
|
+
return isString(value) ? value : "";
|
|
292
279
|
}
|
|
293
280
|
|
|
294
281
|
/** The scope's starting shape, before the first projection lands on it. */
|
|
@@ -332,7 +319,7 @@ export function mountSignalsSurface(
|
|
|
332
319
|
actions: SignalsActions,
|
|
333
320
|
paint: SignalIslandPainter,
|
|
334
321
|
): SignalsSurfaceHandle {
|
|
335
|
-
const scope = reactive<SignalsScope>({
|
|
322
|
+
const scope: SignalsScope = reactive<SignalsScope>({
|
|
336
323
|
...emptyView(),
|
|
337
324
|
...actions,
|
|
338
325
|
/* The picker never rests on what was picked. A controlled input is authoritative only while
|
|
@@ -346,7 +333,7 @@ export function mountSignalsSurface(
|
|
|
346
333
|
actions.addSignal(type);
|
|
347
334
|
scope.addValue = "";
|
|
348
335
|
},
|
|
349
|
-
})
|
|
336
|
+
});
|
|
350
337
|
project(scope, view);
|
|
351
338
|
|
|
352
339
|
/**
|
|
@@ -424,8 +411,7 @@ export function mountSignalsSurface(
|
|
|
424
411
|
whether this handle is still wanted — answering no would start a second mount racing the
|
|
425
412
|
first. Once mounted, the question is whether the root is still where it was put: a Navigator
|
|
426
413
|
that painted another panel cleared this document out from under it. */
|
|
427
|
-
attached: () =>
|
|
428
|
-
!disposed && (mounted === null || (mounted.root as Node).parentNode === container),
|
|
414
|
+
attached: () => !disposed && (mounted === null || mounted.root.parentNode === container),
|
|
429
415
|
dispose() {
|
|
430
416
|
disposed = true;
|
|
431
417
|
mounted?.dispose();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioPanelStylebookLayers",
|
|
4
|
-
"$description": "The Outline panel while the pane is showing
|
|
4
|
+
"$description": "The Outline panel while the pane is showing a document's Elements view: the element catalogue as a list of selectable tags. The adapter hands in one flat projection per row — its badge, its name, how deep it sits, whether the open file has already styled it and whether it is the selected one — so nothing here walks the catalogue tree, reads the component registry or knows what a `& tag` style key is. A row asks the host to select the compound path it was given, by that path. The project's CSS custom properties are not listed here: `project.json` in the Styles workspace has its own Navigator, the Styles panel (`styles-panel.json`), which lists them.",
|
|
5
5
|
"tagName": "div",
|
|
6
6
|
"attributes": {
|
|
7
7
|
"part": "stylebook-layers"
|
|
@@ -72,9 +72,6 @@
|
|
|
72
72
|
"fontSize": "9px",
|
|
73
73
|
"textAlign": "center"
|
|
74
74
|
},
|
|
75
|
-
"& [part=\"badge\"][data-kind=\"variable\"]": {
|
|
76
|
-
"fontFamily": "var(--font-mono)"
|
|
77
|
-
},
|
|
78
75
|
"& [part=\"label\"]": {
|
|
79
76
|
"flex": "1",
|
|
80
77
|
"minWidth": "24px",
|
|
@@ -86,34 +83,6 @@
|
|
|
86
83
|
"$description": "The file has already styled this tag. The kit's neutral disc in the accent, which is the one thing about it that was ever this surface's own.",
|
|
87
84
|
"background": "var(--accent)"
|
|
88
85
|
},
|
|
89
|
-
"& [part=\"value\"]": {
|
|
90
|
-
"maxWidth": "80px",
|
|
91
|
-
"overflow": "hidden",
|
|
92
|
-
"color": "var(--fg-dim)",
|
|
93
|
-
"fontSize": "var(--jx-text-sm)",
|
|
94
|
-
"textOverflow": "ellipsis",
|
|
95
|
-
"whiteSpace": "nowrap"
|
|
96
|
-
},
|
|
97
|
-
"& [part=\"empty\"]": {
|
|
98
|
-
"$description": "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (studio-ui-guidelines.md §11): one sentence saying what the region is for, then where its content comes from.",
|
|
99
|
-
"display": "flex",
|
|
100
|
-
"flexDirection": "column",
|
|
101
|
-
"alignItems": "center",
|
|
102
|
-
"gap": "var(--jx-space-3)",
|
|
103
|
-
"padding": "var(--jx-space-5)",
|
|
104
|
-
"textAlign": "center",
|
|
105
|
-
"color": "var(--fg-dim)",
|
|
106
|
-
"fontSize": "var(--jx-text-md)"
|
|
107
|
-
},
|
|
108
|
-
"& [part=\"empty-message\"], & [part=\"empty-detail\"]": {
|
|
109
|
-
"margin": "0",
|
|
110
|
-
"maxWidth": "28ch",
|
|
111
|
-
"lineHeight": "1.5"
|
|
112
|
-
},
|
|
113
|
-
"& [part=\"empty-detail\"]": {
|
|
114
|
-
"fontSize": "var(--jx-text-sm)",
|
|
115
|
-
"opacity": "0.8"
|
|
116
|
-
},
|
|
117
86
|
"@(forced-colors: active)": {
|
|
118
87
|
"& [part=\"row\"][aria-current=\"true\"]": {
|
|
119
88
|
"$description": "The selected row, redrawn. Every author colour is replaced by one from the user's palette in forced colours, so the accent wash behind the row collapses into the page and the left edge is the only marker left.",
|
|
@@ -125,193 +94,91 @@
|
|
|
125
94
|
{
|
|
126
95
|
"tagName": "div",
|
|
127
96
|
"attributes": {
|
|
128
|
-
"part": "
|
|
129
|
-
"
|
|
97
|
+
"part": "list",
|
|
98
|
+
"data-tab": "elements"
|
|
130
99
|
},
|
|
131
|
-
"
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"tagName": "div",
|
|
140
|
-
"attributes": {
|
|
141
|
-
"part": "list",
|
|
142
|
-
"data-tab": "elements"
|
|
100
|
+
"children": [
|
|
101
|
+
{
|
|
102
|
+
"$prototype": "Array",
|
|
103
|
+
"items": {
|
|
104
|
+
"$ref": "#/state/rows"
|
|
105
|
+
},
|
|
106
|
+
"key": {
|
|
107
|
+
"$ref": "$map/item/key"
|
|
143
108
|
},
|
|
144
|
-
"
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
"
|
|
148
|
-
|
|
109
|
+
"map": {
|
|
110
|
+
"tagName": "button",
|
|
111
|
+
"attributes": {
|
|
112
|
+
"part": "row",
|
|
113
|
+
"type": "button",
|
|
114
|
+
"data-path": "${$map.item.key}",
|
|
115
|
+
"data-kind": "${$map.item.kind}",
|
|
116
|
+
"aria-current": "${$map.item.selected ? 'true' : null}"
|
|
117
|
+
},
|
|
118
|
+
"style": {
|
|
119
|
+
"--row-indent": {
|
|
120
|
+
"$ref": "$map/item/indent"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"onclick": {
|
|
124
|
+
"$prototype": "Function",
|
|
125
|
+
"body": [
|
|
126
|
+
{
|
|
127
|
+
"operator": "call",
|
|
128
|
+
"target": {
|
|
129
|
+
"$ref": "#/state/selectRow"
|
|
130
|
+
},
|
|
131
|
+
"value": [
|
|
132
|
+
{
|
|
133
|
+
"$ref": "$map/item/key"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
"children": [
|
|
140
|
+
{
|
|
141
|
+
"tagName": "span",
|
|
142
|
+
"attributes": {
|
|
143
|
+
"part": "badge",
|
|
144
|
+
"data-kind": "${$map.item.kind}"
|
|
145
|
+
},
|
|
146
|
+
"textContent": "${$map.item.tag}"
|
|
149
147
|
},
|
|
150
|
-
|
|
151
|
-
"
|
|
148
|
+
{
|
|
149
|
+
"tagName": "span",
|
|
150
|
+
"attributes": {
|
|
151
|
+
"part": "label"
|
|
152
|
+
},
|
|
153
|
+
"textContent": "${$map.item.label}"
|
|
152
154
|
},
|
|
153
|
-
|
|
154
|
-
"tagName": "
|
|
155
|
+
{
|
|
156
|
+
"tagName": "span",
|
|
155
157
|
"attributes": {
|
|
156
|
-
"part": "
|
|
157
|
-
"
|
|
158
|
-
"data-path": "${$map.item.key}",
|
|
159
|
-
"data-kind": "${$map.item.kind}",
|
|
160
|
-
"aria-current": "${$map.item.selected ? 'true' : null}"
|
|
158
|
+
"part": "dot-slot",
|
|
159
|
+
"role": "none"
|
|
161
160
|
},
|
|
162
161
|
"style": {
|
|
163
|
-
"
|
|
164
|
-
"$ref": "$map/item/indent"
|
|
165
|
-
}
|
|
162
|
+
"display": "contents"
|
|
166
163
|
},
|
|
167
|
-
"
|
|
168
|
-
"$
|
|
169
|
-
"body": [
|
|
170
|
-
{
|
|
171
|
-
"operator": "call",
|
|
172
|
-
"target": {
|
|
173
|
-
"$ref": "#/state/selectRow"
|
|
174
|
-
},
|
|
175
|
-
"value": [
|
|
176
|
-
{
|
|
177
|
-
"$ref": "$map/item/key"
|
|
178
|
-
}
|
|
179
|
-
]
|
|
180
|
-
}
|
|
181
|
-
]
|
|
164
|
+
"$switch": {
|
|
165
|
+
"$ref": "$map/item/customized"
|
|
182
166
|
},
|
|
183
|
-
"
|
|
184
|
-
{
|
|
185
|
-
"tagName": "
|
|
186
|
-
"attributes": {
|
|
187
|
-
"part": "badge",
|
|
188
|
-
"data-kind": "${$map.item.kind}"
|
|
189
|
-
},
|
|
190
|
-
"textContent": "${$map.item.tag}"
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
"tagName": "span",
|
|
194
|
-
"attributes": {
|
|
195
|
-
"part": "label"
|
|
196
|
-
},
|
|
197
|
-
"textContent": "${$map.item.label}"
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
"tagName": "span",
|
|
167
|
+
"cases": {
|
|
168
|
+
"true": {
|
|
169
|
+
"tagName": "jx-dot",
|
|
201
170
|
"attributes": {
|
|
202
|
-
"part": "dot
|
|
203
|
-
"role": "
|
|
204
|
-
|
|
205
|
-
"style": {
|
|
206
|
-
"display": "contents"
|
|
207
|
-
},
|
|
208
|
-
"$switch": {
|
|
209
|
-
"$ref": "$map/item/customized"
|
|
210
|
-
},
|
|
211
|
-
"cases": {
|
|
212
|
-
"true": {
|
|
213
|
-
"tagName": "jx-dot",
|
|
214
|
-
"attributes": {
|
|
215
|
-
"part": "dot",
|
|
216
|
-
"role": "img",
|
|
217
|
-
"aria-label": "Styled in this file"
|
|
218
|
-
}
|
|
219
|
-
}
|
|
171
|
+
"part": "dot",
|
|
172
|
+
"role": "img",
|
|
173
|
+
"aria-label": "Styled in this file"
|
|
220
174
|
}
|
|
221
175
|
}
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
]
|
|
226
|
-
},
|
|
227
|
-
"variables": {
|
|
228
|
-
"tagName": "div",
|
|
229
|
-
"attributes": {
|
|
230
|
-
"part": "variables-slot",
|
|
231
|
-
"role": "none"
|
|
232
|
-
},
|
|
233
|
-
"style": {
|
|
234
|
-
"display": "contents"
|
|
235
|
-
},
|
|
236
|
-
"$switch": {
|
|
237
|
-
"$ref": "#/state/hasVariables"
|
|
238
|
-
},
|
|
239
|
-
"cases": {
|
|
240
|
-
"true": {
|
|
241
|
-
"tagName": "ul",
|
|
242
|
-
"attributes": {
|
|
243
|
-
"part": "list",
|
|
244
|
-
"data-tab": "variables"
|
|
245
|
-
},
|
|
246
|
-
"children": [
|
|
247
|
-
{
|
|
248
|
-
"$prototype": "Array",
|
|
249
|
-
"items": {
|
|
250
|
-
"$ref": "#/state/variables"
|
|
251
|
-
},
|
|
252
|
-
"key": {
|
|
253
|
-
"$ref": "$map/item/key"
|
|
254
|
-
},
|
|
255
|
-
"map": {
|
|
256
|
-
"tagName": "li",
|
|
257
|
-
"attributes": {
|
|
258
|
-
"part": "row",
|
|
259
|
-
"data-kind": "variable",
|
|
260
|
-
"data-path": "${$map.item.name}"
|
|
261
|
-
},
|
|
262
|
-
"children": [
|
|
263
|
-
{
|
|
264
|
-
"tagName": "span",
|
|
265
|
-
"attributes": {
|
|
266
|
-
"part": "badge",
|
|
267
|
-
"data-kind": "variable"
|
|
268
|
-
},
|
|
269
|
-
"textContent": "var"
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
"tagName": "span",
|
|
273
|
-
"attributes": {
|
|
274
|
-
"part": "label"
|
|
275
|
-
},
|
|
276
|
-
"textContent": "${$map.item.name}"
|
|
277
|
-
},
|
|
278
|
-
{
|
|
279
|
-
"tagName": "span",
|
|
280
|
-
"attributes": {
|
|
281
|
-
"part": "value"
|
|
282
|
-
},
|
|
283
|
-
"textContent": "${$map.item.value}"
|
|
284
|
-
}
|
|
285
|
-
]
|
|
286
|
-
}
|
|
287
176
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
"false": {
|
|
291
|
-
"tagName": "div",
|
|
292
|
-
"attributes": {
|
|
293
|
-
"part": "empty"
|
|
294
|
-
},
|
|
295
|
-
"children": [
|
|
296
|
-
{
|
|
297
|
-
"tagName": "p",
|
|
298
|
-
"attributes": {
|
|
299
|
-
"part": "empty-message"
|
|
300
|
-
},
|
|
301
|
-
"textContent": "No variables defined."
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
"tagName": "p",
|
|
305
|
-
"attributes": {
|
|
306
|
-
"part": "empty-detail"
|
|
307
|
-
},
|
|
308
|
-
"textContent": "A custom property declared on this file's own style block is listed here."
|
|
309
|
-
}
|
|
310
|
-
]
|
|
311
|
-
}
|
|
177
|
+
}
|
|
178
|
+
]
|
|
312
179
|
}
|
|
313
180
|
}
|
|
314
|
-
|
|
181
|
+
]
|
|
315
182
|
}
|
|
316
183
|
]
|
|
317
184
|
}
|
|
@@ -26,10 +26,9 @@
|
|
|
26
26
|
import { reactive } from "../reactivity";
|
|
27
27
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
28
28
|
import stylebookLayersDoc from "./panel-stylebook-layers.json";
|
|
29
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
30
29
|
import type { SurfaceHandle } from "../ui/surface";
|
|
31
30
|
|
|
32
|
-
registerSurface("panel-stylebook-layers", stylebookLayersDoc
|
|
31
|
+
registerSurface("panel-stylebook-layers", stylebookLayersDoc);
|
|
33
32
|
|
|
34
33
|
/**
|
|
35
34
|
* One line of the catalogue, as the document draws it. Every field is a value: no records, no
|
|
@@ -56,24 +55,9 @@ export interface StylebookRowView {
|
|
|
56
55
|
kind: string;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
/** One custom property the open file declares. */
|
|
60
|
-
export interface StylebookVariableView {
|
|
61
|
-
/** The reconcile key. Same as {@link name}; kept separate so the key never follows the label. */
|
|
62
|
-
key: string;
|
|
63
|
-
/** The property, `--accent` and its like. */
|
|
64
|
-
name: string;
|
|
65
|
-
/** Whatever it is declared as, as text. */
|
|
66
|
-
value: string;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
58
|
/** What the panel says the surface should be showing right now. */
|
|
70
59
|
export interface StylebookLayersValues {
|
|
71
|
-
/** `elements` or `variables` — `shell.stylebook.tab`, which names the `$switch` case. */
|
|
72
|
-
tab: string;
|
|
73
60
|
rows: StylebookRowView[];
|
|
74
|
-
variables: StylebookVariableView[];
|
|
75
|
-
/** Whether there is anything under the variables tab: the document has no `length` to ask. */
|
|
76
|
-
hasVariables: boolean;
|
|
77
61
|
}
|
|
78
62
|
|
|
79
63
|
/** What a control can ask the panel to do. The one thing a row does is select itself. */
|
|
@@ -91,15 +75,11 @@ export interface StylebookLayersSurfaceHandle {
|
|
|
91
75
|
}
|
|
92
76
|
|
|
93
77
|
/** The scope the document reads: the projection, plus the one thing a row can ask for. */
|
|
94
|
-
interface StylebookLayersScope
|
|
95
|
-
extends Record<string, unknown>, StylebookLayersValues, StylebookLayersActions {}
|
|
78
|
+
interface StylebookLayersScope extends StylebookLayersValues, StylebookLayersActions {}
|
|
96
79
|
|
|
97
80
|
/** Write a projection into the scope. */
|
|
98
81
|
function project(scope: StylebookLayersScope, values: StylebookLayersValues): void {
|
|
99
|
-
scope.tab = values.tab;
|
|
100
82
|
scope.rows = values.rows;
|
|
101
|
-
scope.variables = values.variables;
|
|
102
|
-
scope.hasVariables = values.hasVariables;
|
|
103
83
|
}
|
|
104
84
|
|
|
105
85
|
/**
|
|
@@ -116,13 +96,10 @@ export function mountStylebookLayersSurface(
|
|
|
116
96
|
values: StylebookLayersValues,
|
|
117
97
|
actions: StylebookLayersActions,
|
|
118
98
|
): StylebookLayersSurfaceHandle {
|
|
119
|
-
const scope = reactive<StylebookLayersScope>({
|
|
120
|
-
hasVariables: false,
|
|
99
|
+
const scope: StylebookLayersScope = reactive<StylebookLayersScope>({
|
|
121
100
|
rows: [],
|
|
122
101
|
selectRow: actions.selectRow,
|
|
123
|
-
|
|
124
|
-
variables: [],
|
|
125
|
-
}) as StylebookLayersScope;
|
|
102
|
+
});
|
|
126
103
|
project(scope, values);
|
|
127
104
|
|
|
128
105
|
let mounted: SurfaceHandle | null = null;
|
|
@@ -141,8 +118,7 @@ export function mountStylebookLayersSurface(
|
|
|
141
118
|
mount racing the first. Once mounted, the question is whether the root is still where it was
|
|
142
119
|
put: a Navigator that painted another panel, or the Outline's own lit branch, cleared this
|
|
143
120
|
document out from under it. */
|
|
144
|
-
connected: () =>
|
|
145
|
-
!disposed && (mounted === null || (mounted.root as Node).parentNode === container),
|
|
121
|
+
connected: () => !disposed && (mounted === null || mounted.root.parentNode === container),
|
|
146
122
|
dispose() {
|
|
147
123
|
disposed = true;
|
|
148
124
|
mounted?.dispose();
|