@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
package/src/types.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { CollabHandle } from "@jxsuite/collab/provider";
|
|
3
3
|
import type {
|
|
4
4
|
ContentTypeSchema,
|
|
5
|
+
JsonObject,
|
|
5
6
|
JxMutableNode,
|
|
6
7
|
JxPath,
|
|
7
8
|
ProjectConfig,
|
|
@@ -39,6 +40,7 @@ import type {
|
|
|
39
40
|
ImportReadyEvent,
|
|
40
41
|
ImportSiteOptions,
|
|
41
42
|
ImportSiteSummary,
|
|
43
|
+
JsonValue,
|
|
42
44
|
PackageInfo,
|
|
43
45
|
PackageOpResult,
|
|
44
46
|
PackageVersionInfo,
|
|
@@ -47,9 +49,8 @@ import type {
|
|
|
47
49
|
RecentProjectEntry,
|
|
48
50
|
ReferencesResult,
|
|
49
51
|
RenameResult,
|
|
50
|
-
|
|
52
|
+
KeyValuePatch,
|
|
51
53
|
SecretsSetResponse,
|
|
52
|
-
SettingsPatch,
|
|
53
54
|
StarterInfo,
|
|
54
55
|
UploadResult,
|
|
55
56
|
} from "@jxsuite/protocol";
|
|
@@ -80,7 +81,6 @@ export type {
|
|
|
80
81
|
DataRowsResult,
|
|
81
82
|
DataRowUpdate,
|
|
82
83
|
DirEntry,
|
|
83
|
-
ErrorBody,
|
|
84
84
|
ExtensionCatalogEntry,
|
|
85
85
|
ExtensionContributionInfo,
|
|
86
86
|
ExtensionProjectBlock,
|
|
@@ -109,9 +109,8 @@ export type {
|
|
|
109
109
|
ReferencesResult,
|
|
110
110
|
RenameResult,
|
|
111
111
|
SecretsListResponse,
|
|
112
|
-
|
|
112
|
+
KeyValuePatch,
|
|
113
113
|
SecretsSetResponse,
|
|
114
|
-
SettingsPatch,
|
|
115
114
|
StarterInfo,
|
|
116
115
|
} from "@jxsuite/protocol";
|
|
117
116
|
|
|
@@ -291,31 +290,30 @@ export interface SitePreviewResult extends SiteBuildResult {
|
|
|
291
290
|
*/
|
|
292
291
|
export type FsResyncReason = "reconnect" | "commit" | "open";
|
|
293
292
|
|
|
293
|
+
/**
|
|
294
|
+
* One request to a format class's capability (`POST /__studio/format`, or the desktop RPC of the
|
|
295
|
+
* same name): `parse` reads `source` into a Jx document, `serialize` writes `doc` back out as text,
|
|
296
|
+
* and the answer is that document or that text. The backend refuses an action the format does not
|
|
297
|
+
* declare, so `action` stays an open name.
|
|
298
|
+
*/
|
|
299
|
+
export interface FormatActionRequest {
|
|
300
|
+
action: string;
|
|
301
|
+
format: string;
|
|
302
|
+
source?: string | undefined;
|
|
303
|
+
/** The document to serialize, merged with its frontmatter. */
|
|
304
|
+
doc?: JxMutableNode | undefined;
|
|
305
|
+
options?: { mode?: string | undefined; frontmatter?: boolean | undefined } | undefined;
|
|
306
|
+
}
|
|
307
|
+
|
|
294
308
|
export interface StudioPlatform {
|
|
295
309
|
id: string;
|
|
296
310
|
projectRoot: string;
|
|
297
311
|
/**
|
|
298
312
|
* URL of the canvas iframe document. Optional: when set (chromium serves it from the project
|
|
299
313
|
* server under the studio namespace), the iframe host uses it; otherwise the host falls back to
|
|
300
|
-
* the default dev-server path. Not keyed on `id
|
|
301
|
-
* "desktop"`, but only chromium sets this.
|
|
314
|
+
* the default dev-server path. Not keyed on `id`.
|
|
302
315
|
*/
|
|
303
316
|
canvasUrl?: string;
|
|
304
|
-
/**
|
|
305
|
-
* True when this platform resolves {@link canvasUrl} ASYNCHRONOUSLY.
|
|
306
|
-
*
|
|
307
|
-
* Electrobun does: the url is this window's loopback port, fetched over RPC inside `activate()`.
|
|
308
|
-
* Until the canvas fallback was anchored to the bundle it did not matter — the old literal
|
|
309
|
-
* `/packages/studio/canvas.html` resolved to nothing servable under `views://`, so an early frame
|
|
310
|
-
* simply failed and the host rebuilt when the real url landed. Now the fallback RESOLVES:
|
|
311
|
-
* `views://studio/canvas.html` is a document electrobun really stages. An early frame would boot
|
|
312
|
-
* the whole canvas bundle inside the SHELL's app-privileged origin, in a CEF instance running
|
|
313
|
-
* `disable-site-isolation-trials` — and the cross-origin loopback canvas exists precisely so that
|
|
314
|
-
* cannot happen. Declaring it makes the host wait instead.
|
|
315
|
-
*
|
|
316
|
-
* Not keyed on `id`: chromium and electrobun both report `"desktop"`, and only electrobun defers.
|
|
317
|
-
*/
|
|
318
|
-
canvasUrlDeferred?: boolean;
|
|
319
317
|
/**
|
|
320
318
|
* Base URL the canvas fetches PROJECT FILES from — component `$ref`s, `$src` modules, images.
|
|
321
319
|
*
|
|
@@ -394,12 +392,11 @@ export interface StudioPlatform {
|
|
|
394
392
|
* image. So a caller that must DECODE a project file — the image editor — needs this instead.
|
|
395
393
|
*
|
|
396
394
|
* **The `<img>` route is not an alternative, on the one platform that matters most.** A preview
|
|
397
|
-
* `src` from `files/media-paths.ts`
|
|
398
|
-
*
|
|
399
|
-
* `
|
|
400
|
-
*
|
|
401
|
-
*
|
|
402
|
-
* worked around.
|
|
395
|
+
* `src` from `files/media-paths.ts` can be a cross-origin loopback URL while the shell sits on
|
|
396
|
+
* another origin, so drawing it into a canvas taints the canvas and `toBlob()` throws; and
|
|
397
|
+
* `server.md` §4.2 bans CORS outright, because the whole loopback security model rests on the
|
|
398
|
+
* browser refusing cross-origin reads. Bytes through the PAL become a same-origin `Blob`, so
|
|
399
|
+
* tainting stops being a thing that can happen rather than a thing that is worked around.
|
|
403
400
|
*
|
|
404
401
|
* Optional, and feature-detected like every optional member: a backend without it simply does not
|
|
405
402
|
* offer the image editor, which is the honest degradation `specs/desktop.md` §3.1 asks for.
|
|
@@ -464,8 +461,10 @@ export interface StudioPlatform {
|
|
|
464
461
|
options?: { onResync?: (reason: FsResyncReason) => void },
|
|
465
462
|
) => () => void;
|
|
466
463
|
discoverComponents: (dir?: string) => Promise<ComponentMeta[]>;
|
|
467
|
-
|
|
468
|
-
|
|
464
|
+
/* Resolves once the dependency is added (or removed) and rejects when it could not be. No caller
|
|
465
|
+
reads an answer, and the desktop RPC carries none. */
|
|
466
|
+
addPackage: (name: string) => Promise<void>;
|
|
467
|
+
removePackage: (name: string) => Promise<void>;
|
|
469
468
|
listPackages: () => Promise<PackageInfo[]>;
|
|
470
469
|
/**
|
|
471
470
|
* Run `bun install` in the project root. Optional: platforms without a Bun-capable backend omit
|
|
@@ -493,7 +492,7 @@ export interface StudioPlatform {
|
|
|
493
492
|
* section.
|
|
494
493
|
*/
|
|
495
494
|
getAppInfo?: () => Promise<AppInfo>;
|
|
496
|
-
codeService: (action: string, payload:
|
|
495
|
+
codeService: (action: string, payload: JsonValue) => Promise<CodeServiceResult | null>;
|
|
497
496
|
resolveSiteContext: (filePath: string) => Promise<{
|
|
498
497
|
sitePath: string | null;
|
|
499
498
|
projectConfig?: ProjectConfig;
|
|
@@ -535,7 +534,7 @@ export interface StudioPlatform {
|
|
|
535
534
|
*/
|
|
536
535
|
fetchProjectSchemas?: () => Promise<ProjectSchemasResponse>;
|
|
537
536
|
/** Invoke a format capability (parse/serialize) — { format, action, source?, doc?, options? }. */
|
|
538
|
-
formatAction?: (payload:
|
|
537
|
+
formatAction?: (payload: FormatActionRequest) => Promise<JxMutableNode | string>;
|
|
539
538
|
// ─── Data surface + secrets (owner console; specs/extensions.md §13) ────────
|
|
540
539
|
// Optional as a family: backends without the connector data routes omit them all, and Studio
|
|
541
540
|
// Hides the data grid and connection/push/test actions. Row CRUD is the ADMIN path — it
|
|
@@ -548,21 +547,21 @@ export interface StudioPlatform {
|
|
|
548
547
|
dataPush?: (opts?: { connection?: string; dryRun?: boolean }) => Promise<DataPushResult>;
|
|
549
548
|
/** Page a table's rows with introspected column metadata. */
|
|
550
549
|
dataRows?: (query: DataRowsQuery) => Promise<DataRowsResult>;
|
|
551
|
-
dataInsertRow?: (req: DataRowInsert) => Promise<{ row:
|
|
552
|
-
dataUpdateRow?: (req: DataRowUpdate) => Promise<{ row:
|
|
550
|
+
dataInsertRow?: (req: DataRowInsert) => Promise<{ row: JsonObject }>;
|
|
551
|
+
dataUpdateRow?: (req: DataRowUpdate) => Promise<{ row: JsonObject }>;
|
|
553
552
|
dataDeleteRow?: (req: DataRowDelete) => Promise<{ ok: boolean }>;
|
|
554
553
|
/** Configured secret env-var NAMES — never values. */
|
|
555
554
|
listSecrets?: () => Promise<string[]>;
|
|
556
555
|
/** Write/remove secrets in the backend store (.dev.vars locally); names-only response. */
|
|
557
|
-
setSecrets?: (req:
|
|
558
|
-
fetchPluginSchema: (src: string, prototype?: string, base?: string) => Promise<
|
|
556
|
+
setSecrets?: (req: KeyValuePatch) => Promise<SecretsSetResponse>;
|
|
557
|
+
fetchPluginSchema: (src: string, prototype?: string, base?: string) => Promise<JsonValue>;
|
|
559
558
|
/**
|
|
560
559
|
* Resolve a class-prototype config through the backend's `/__jx_resolve__` pipeline (with the
|
|
561
560
|
* project's content types loaded) and return the parsed result. Used by the tab-bar's dynamic
|
|
562
561
|
* route-param picker to enumerate ContentCollection entries. Optional: platforms without a
|
|
563
562
|
* resolve backend omit it and the picker falls back to a plain fetch.
|
|
564
563
|
*/
|
|
565
|
-
resolveClass?: (body:
|
|
564
|
+
resolveClass?: (body: JsonObject) => Promise<JsonValue>;
|
|
566
565
|
gitStatus: () => Promise<GitStatusResult>;
|
|
567
566
|
gitBranches: () => Promise<GitBranchesResult>;
|
|
568
567
|
gitLog: (limit?: number) => Promise<GitLogEntry[]>;
|
|
@@ -579,6 +578,16 @@ export interface StudioPlatform {
|
|
|
579
578
|
gitDiscard: (files: string[]) => Promise<void>;
|
|
580
579
|
gitClone?: (url: string) => Promise<{ ok: boolean; root: string }>;
|
|
581
580
|
gitInit: () => Promise<void>;
|
|
581
|
+
/**
|
|
582
|
+
* True on a host whose git is the remote's: a commit lands on GitHub as it is made, a push is
|
|
583
|
+
* only a check that it did, and each branch is a session of its own, so a checkout reloads the
|
|
584
|
+
* window into that branch's session (the cloud). Absent means an ordinary working tree, where a
|
|
585
|
+
* commit is local until it is pushed and a checkout swaps files in place.
|
|
586
|
+
*
|
|
587
|
+
* A declaration rather than a method, because what differs is the meaning of the verbs every host
|
|
588
|
+
* has: the Publish workspace reads it to say what a verb will do (studio.md §22.8).
|
|
589
|
+
*/
|
|
590
|
+
gitHosted?: boolean;
|
|
582
591
|
/**
|
|
583
592
|
* Build the site to its output directory, so a reader opens what the author is looking at.
|
|
584
593
|
*
|
|
@@ -816,7 +825,7 @@ export interface StudioPlatform {
|
|
|
816
825
|
* injects credentials — an OAuth token on the cloud platform, the user's pasted API token locally
|
|
817
826
|
* — so no secret ever rides in the request body.
|
|
818
827
|
*/
|
|
819
|
-
cfApi?: (path: string, init?: { method?: string; body?: unknown }) => Promise<
|
|
828
|
+
cfApi?: (path: string, init?: { method?: string; body?: unknown }) => Promise<JsonValue>;
|
|
820
829
|
// ─── User settings (backend-persisted; undefined on dev-server) ─────────────
|
|
821
830
|
/**
|
|
822
831
|
* Read the user-level settings map (e.g. the AI connection parameters) from a backend store
|
|
@@ -834,7 +843,7 @@ export interface StudioPlatform {
|
|
|
834
843
|
* held no settings could, and did, clear the credentials another window had just stored. It also
|
|
835
844
|
* preserves keys this build does not know: one written by a newer version, or by hand.
|
|
836
845
|
*/
|
|
837
|
-
patchSettings?: (patch:
|
|
846
|
+
patchSettings?: (patch: KeyValuePatch) => Promise<Record<string, string>>;
|
|
838
847
|
/**
|
|
839
848
|
* Be told when the backend store changes — by another window, or by hand. Returns the
|
|
840
849
|
* unsubscribe.
|
|
@@ -848,9 +857,9 @@ export interface StudioPlatform {
|
|
|
848
857
|
* Watch the backend connection, on platforms whose transport can lose one.
|
|
849
858
|
*
|
|
850
859
|
* Only a socket-based launcher implements this: the dev server talks over `fetch` and has nothing
|
|
851
|
-
* to lose,
|
|
852
|
-
*
|
|
853
|
-
*
|
|
860
|
+
* to lose, The chromium launcher holds one long-lived WebSocket, and when it died every call
|
|
861
|
+
* after it hung with no error anywhere — so the transport reports the state, and the studio says
|
|
862
|
+
* it out loud.
|
|
854
863
|
*
|
|
855
864
|
* The handler is called on each transition, never repeatedly for one state.
|
|
856
865
|
*/
|
|
@@ -870,6 +879,8 @@ export interface ContentSectionEntry {
|
|
|
870
879
|
source?: string;
|
|
871
880
|
format?: string;
|
|
872
881
|
schema?: ContentTypeSchema;
|
|
882
|
+
/** The field a file-backed collection's records are identified by (the loader's `idField`). */
|
|
883
|
+
idField?: string;
|
|
873
884
|
$elements?: unknown[];
|
|
874
885
|
}
|
|
875
886
|
|
|
@@ -937,5 +948,4 @@ export interface ProjectState {
|
|
|
937
948
|
selectedPath: string | null;
|
|
938
949
|
searchQuery: string;
|
|
939
950
|
projectDirs?: string[];
|
|
940
|
-
[key: string]: unknown;
|
|
941
951
|
}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Ai-credentials-form.ts — reusable AI provider credentials form (key / model / endpoint).
|
|
4
4
|
*
|
|
5
|
-
* Embedded by every host that needs a provider configured — **Preferences › Assistant** (⌘,) and
|
|
6
|
-
* New Project modal's Import/Agent gates. All draft/model-list state lives inside the closure,
|
|
7
|
-
* multiple instances never share state. Persists via src/services/ai-settings.ts on Save.
|
|
5
|
+
* Embedded by every host that needs a provider configured — **Preferences › Assistant** (⌘,) and
|
|
6
|
+
* the New Project modal's Import/Agent gates. All draft/model-list state lives inside the closure,
|
|
7
|
+
* so multiple instances never share state. Persists via src/services/ai-settings.ts on Save.
|
|
8
8
|
*
|
|
9
9
|
* The interim `Assistant: Settings…` dialog that used to host it is deleted: a provider key is an
|
|
10
10
|
* application setting, and the surface that owns application settings is also the one that can list
|
|
11
|
-
* it and revoke it (§15). Nothing about this form changed for the move, which is the argument
|
|
12
|
-
*
|
|
11
|
+
* it and revoke it (§15). Nothing about this form changed for the move, which is the argument for
|
|
12
|
+
* it having been a reusable form rather than a section of a dialog.
|
|
13
13
|
*
|
|
14
14
|
* This module is the FLOW; `surfaces/ai-credentials-form.json` is what it draws. It keeps the three
|
|
15
15
|
* drafts, decides which credentials a listing is sent with, what Save persists and re-reads, and
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
* `surfaces/ai-credentials-form.ts` for why that element is the mount point and why re-rendering
|
|
20
20
|
* the gate cannot disturb it.
|
|
21
21
|
*
|
|
22
|
-
* @docs studio/ai
|
|
23
22
|
* @license MIT
|
|
23
|
+
* @docs studio/ai
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
import { fetchAvailableModels, proxyModelsErrorMessage } from "../services/ai-models";
|
|
@@ -35,11 +35,8 @@ import {
|
|
|
35
35
|
import { SETTINGS } from "../services/settings/definitions";
|
|
36
36
|
import type { AiProvider } from "../services/ai-settings";
|
|
37
37
|
import { createAiCredentialsSurface } from "../surfaces/ai-credentials-form";
|
|
38
|
-
import type {
|
|
39
|
-
|
|
40
|
-
AiCredentialsView,
|
|
41
|
-
CredentialsModelRow,
|
|
42
|
-
} from "../surfaces/ai-credentials-form";
|
|
38
|
+
import type { AiCredentialsSurface, AiCredentialsView } from "../surfaces/ai-credentials-form";
|
|
39
|
+
import type { SurfaceOption } from "./surface";
|
|
43
40
|
|
|
44
41
|
/** The blurb a host that says nothing gets. */
|
|
45
42
|
const DEFAULT_INTRO =
|
|
@@ -231,7 +228,7 @@ export function createAiCredentialsForm(opts: AiCredentialsFormOptions): AiCrede
|
|
|
231
228
|
modelsError = `${upstreamMessage} — type the model ID directly instead.`;
|
|
232
229
|
}
|
|
233
230
|
} catch (error: unknown) {
|
|
234
|
-
modelsError = (error
|
|
231
|
+
modelsError = (error instanceof Error && error.message) || "Failed to fetch models";
|
|
235
232
|
} finally {
|
|
236
233
|
modelsLoading = false;
|
|
237
234
|
opts.requestRender();
|
|
@@ -242,7 +239,7 @@ export function createAiCredentialsForm(opts: AiCredentialsFormOptions): AiCrede
|
|
|
242
239
|
* The catalogue as rows — the list the combobox will draw, never a corpus it matches against. A
|
|
243
240
|
* model with no name of its own is called by its id.
|
|
244
241
|
*/
|
|
245
|
-
function rows():
|
|
242
|
+
function rows(): SurfaceOption[] {
|
|
246
243
|
return availableModels.map((model) => ({ label: model.name, value: model.id }));
|
|
247
244
|
}
|
|
248
245
|
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
* A closure factory (precedent: `createComposer`, `createAiCredentialsForm`) so two hosts never
|
|
23
23
|
* share a loading flag or a failed-fetch record.
|
|
24
24
|
*
|
|
25
|
-
* @docs studio/ai
|
|
26
25
|
* @license MIT
|
|
26
|
+
* @docs studio/ai
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
29
|
import {
|
|
@@ -146,8 +146,8 @@ export function createModelPicker(opts: ModelPickerOptions): ModelPicker {
|
|
|
146
146
|
failure = "";
|
|
147
147
|
attempted = credentials;
|
|
148
148
|
fetchAvailableModels({ credentials, force })
|
|
149
|
-
.catch((error
|
|
150
|
-
failure = (error
|
|
149
|
+
.catch((error) => {
|
|
150
|
+
failure = (error instanceof Error && error.message) || "Failed to fetch models";
|
|
151
151
|
})
|
|
152
152
|
.finally(() => {
|
|
153
153
|
loading = false;
|
|
@@ -19,12 +19,15 @@
|
|
|
19
19
|
* The dialog itself is `src/surfaces/cf-account-picker.json`, a `jx-dialog`; this module is the
|
|
20
20
|
* flow around it. It used to be a lit template rendered through `showDialog`, with its own
|
|
21
21
|
* `repaint()` re-rendering the whole body into the slot's parent whenever anything landed — the
|
|
22
|
-
* surface is reactive now, so a listing that arrives late, or a refusal, changes only what it
|
|
22
|
+
* surface is reactive now, so a listing that arrives late, or a refusal, changes only what it
|
|
23
|
+
* names.
|
|
23
24
|
*
|
|
24
|
-
* @docs studio/ai
|
|
25
25
|
* @license MIT
|
|
26
|
+
* @docs studio/ai
|
|
26
27
|
*/
|
|
27
28
|
|
|
29
|
+
import { errorMessage } from "@jxsuite/schema/parse";
|
|
30
|
+
|
|
28
31
|
import { getPlatform, hasPlatform } from "../platform";
|
|
29
32
|
import { notifyCredentialsChanged } from "../settings/preferences-accounts";
|
|
30
33
|
import { openCfAccountPickerSurface } from "../surfaces/cf-account-picker";
|
|
@@ -40,11 +43,6 @@ function canPick(): boolean {
|
|
|
40
43
|
return Boolean(platform.cfAccounts && platform.cfSelectAccount);
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
/** What a thrown thing says, for a line the reader has to act on. */
|
|
44
|
-
function reasonOf(error: unknown): string {
|
|
45
|
-
return error instanceof Error ? error.message : String(error);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
46
|
/**
|
|
49
47
|
* Ask which Cloudflare account this connection should use, and store the answer.
|
|
50
48
|
*
|
|
@@ -83,7 +81,7 @@ export function openCfAccountPicker(): Promise<CfAccountSummary | null> {
|
|
|
83
81
|
accounts = (await getPlatform().cfAccounts?.()) ?? [];
|
|
84
82
|
} catch (error) {
|
|
85
83
|
accounts = [];
|
|
86
|
-
failure =
|
|
84
|
+
failure = errorMessage(error);
|
|
87
85
|
}
|
|
88
86
|
/* `done` released the slot, so a late listing landing after a dismissal would otherwise be a
|
|
89
87
|
write into a disposed surface. The lit version guarded the same moment by resolving its
|
|
@@ -108,7 +106,7 @@ export function openCfAccountPicker(): Promise<CfAccountSummary | null> {
|
|
|
108
106
|
if (!settled) {
|
|
109
107
|
/* The list survives a refusal, and the reason sits above it: listing again is not what
|
|
110
108
|
would fix an account the broker will not accept, so this state offers no retry. */
|
|
111
|
-
handle.update({ choosing: "", failure:
|
|
109
|
+
handle.update({ choosing: "", failure: errorMessage(error) });
|
|
112
110
|
}
|
|
113
111
|
return;
|
|
114
112
|
}
|
package/src/ui/color-selector.ts
CHANGED
|
@@ -25,18 +25,22 @@
|
|
|
25
25
|
* @docs studio/design/style-inspector
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
+
import { isNumber, isString } from "@jxsuite/schema/guards";
|
|
29
|
+
|
|
28
30
|
import { activeTab } from "../workspace/workspace";
|
|
29
31
|
import { getEffectiveStyle } from "../site-context";
|
|
30
32
|
import { resolveTokenValue, tokenRefName } from "../style/token-ref";
|
|
31
33
|
import { kebabToLabel } from "../utils/studio-utils";
|
|
32
34
|
|
|
33
35
|
/**
|
|
34
|
-
* One colour the project has named, as a swatch reads it
|
|
36
|
+
* One colour the project has named, as a swatch reads it — the palette a Style or Content `color`
|
|
37
|
+
* row offers inside its picker.
|
|
35
38
|
*
|
|
36
|
-
* `
|
|
37
|
-
*
|
|
39
|
+
* `value` and `color` are two fields because they are two things: choosing a swatch commits
|
|
40
|
+
* `var(--color-accent)`, while the chip is only how that reads on screen. A swatch is a `$map`
|
|
41
|
+
* item, read through `$map/item/...` by member name, so every member is a value a scope can hold.
|
|
38
42
|
*/
|
|
39
|
-
export interface ColorTokenView
|
|
43
|
+
export interface ColorTokenView {
|
|
40
44
|
/** What choosing this swatch commits — the reference, never the literal behind it. */
|
|
41
45
|
value: string;
|
|
42
46
|
/** The chip's colour: how the token looks, which is not what it means. */
|
|
@@ -76,7 +80,7 @@ export function colorTokens(): ColorTokenView[] {
|
|
|
76
80
|
const style = getEffectiveStyle(activeTab.value?.doc.document?.style);
|
|
77
81
|
const tokens: ColorTokenView[] = [];
|
|
78
82
|
for (const [name, value] of Object.entries(style)) {
|
|
79
|
-
if (name.startsWith("--color") && (
|
|
83
|
+
if (name.startsWith("--color") && (isString(value) || isNumber(value))) {
|
|
80
84
|
tokens.push({ color: String(value), label: varToLabel(name), value: `var(${name})` });
|
|
81
85
|
}
|
|
82
86
|
}
|
package/src/ui/dynamic-slot.ts
CHANGED
|
@@ -23,8 +23,10 @@ import { cloneValue } from "../tabs/doc-op-apply";
|
|
|
23
23
|
import { activeTab } from "../workspace/workspace";
|
|
24
24
|
import { slotMode } from "./value-source";
|
|
25
25
|
|
|
26
|
+
import type { JxDocumentValue } from "@jxsuite/schema/types";
|
|
26
27
|
import type { JsonValue } from "../types";
|
|
27
28
|
import type { SlotMode } from "./value-source";
|
|
29
|
+
import type { SurfaceOption } from "./surface";
|
|
28
30
|
|
|
29
31
|
export type { SlotCapsSource, SlotMode, SlotPosition } from "./value-source";
|
|
30
32
|
export { slotCaps, slotMode } from "./value-source";
|
|
@@ -96,7 +98,10 @@ function isTextEditRung(mode: SlotMode): boolean {
|
|
|
96
98
|
* The rung to render this field at: the one it is already being edited at when a text edit could
|
|
97
99
|
* explain the difference, otherwise whatever the document value says. Records its answer.
|
|
98
100
|
*/
|
|
99
|
-
export function effectiveSlotMode(
|
|
101
|
+
export function effectiveSlotMode(
|
|
102
|
+
fieldKey: string,
|
|
103
|
+
value: JxDocumentValue | JsonValue | undefined,
|
|
104
|
+
): SlotMode {
|
|
100
105
|
const key = fieldScopeKey(fieldKey);
|
|
101
106
|
const sniffed = slotMode(value);
|
|
102
107
|
const previous = slotModeRendered.get(key);
|
|
@@ -108,18 +113,12 @@ export function effectiveSlotMode(fieldKey: string, value: unknown): SlotMode {
|
|
|
108
113
|
return mode;
|
|
109
114
|
}
|
|
110
115
|
|
|
111
|
-
/** One pointer the From data… rung may offer, as a picker option. */
|
|
112
|
-
export interface SignalOption {
|
|
113
|
-
value: string;
|
|
114
|
-
label: string;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
116
|
/** Where a rung's seed value comes from — the subset of a slot's options that decides one. */
|
|
118
117
|
export interface SlotSeedSources {
|
|
119
118
|
/** State keys the position may point at; the first is what a fresh binding lands on. */
|
|
120
119
|
stateDefs: readonly string[];
|
|
121
120
|
/** Extra pointers beyond `#/state/*` — route params, `$map/item`. */
|
|
122
|
-
extraSignals?: readonly
|
|
121
|
+
extraSignals?: readonly SurfaceOption[] | null;
|
|
123
122
|
/** What Fixed value restores to. */
|
|
124
123
|
literalDefault?: JsonValue | undefined;
|
|
125
124
|
}
|