@jxsuite/studio 6.1.0 → 6.1.2
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/dist/chunks/2020-f2gkpy8d.js +4 -0
- package/dist/chunks/{action-group-2mqby73c.js → action-group-4aan7g6g.js} +3 -3
- package/dist/chunks/adapter-4912g339.js +4 -0
- package/dist/chunks/cf-account-picker-wccaenh6.js +4 -0
- package/dist/chunks/cf-settings-br6105tr.js +4 -0
- package/dist/chunks/color-28ksk2qm.js +4 -0
- package/dist/chunks/color-area-0fj8a4ga.js +4 -0
- package/dist/chunks/color-field-xch8kx2g.js +4 -0
- package/dist/chunks/color-slider-jxd8v350.js +4 -0
- package/dist/chunks/combobox-p0efwjke.js +4 -0
- package/dist/chunks/components-db68vsn7.js +4 -0
- package/dist/chunks/content-source-1449qesq.js +4 -0
- package/dist/chunks/convert-to-repeater-5h457egj.js +4 -0
- package/dist/chunks/dialog-c4x05vyx.js +4 -0
- package/dist/chunks/editor-x9jn86a7.js +4 -0
- package/dist/chunks/entry-commands-may24cpt.js +4 -0
- package/dist/chunks/extension-sections-pvr14vxr.js +4 -0
- package/dist/chunks/file-ops-x9v54pcj.js +4 -0
- package/dist/chunks/files-j3knqf0s.js +4 -0
- package/dist/chunks/format-host-tyre2trb.js +4 -0
- package/dist/chunks/fs-events-64ma9htc.js +4 -0
- package/dist/chunks/git-panel-84ps5dex.js +4 -0
- package/dist/chunks/grid-view-d2wq9ezg.js +51 -0
- package/dist/chunks/icons-pnfz478q.js +4 -0
- package/dist/chunks/iframe-entry-fvbk89gm.js +5 -0
- package/dist/chunks/iframe-entry-jdcktez8.js +5 -0
- package/dist/chunks/iframe-entry-x0ygf2yr.js +5 -0
- package/dist/chunks/iframe-entry-zap785cw.js +5 -0
- package/dist/chunks/iframe-host-ck6vejt5.js +4 -0
- package/dist/chunks/index-b8xw3vy9.js +4 -0
- package/dist/chunks/{index-gybvv7a6.js → index-zpjmzqfk.js} +3 -3
- package/dist/chunks/{javascript-rnvdp3k4.js → javascript-m54mnwp6.js} +3 -3
- package/dist/chunks/jsonMode-w15cmrcm.js +13 -0
- package/dist/chunks/jx-validate-at3zn8wa.js +4 -0
- package/dist/chunks/layers-h4xp1pss.js +4 -0
- package/dist/chunks/layers-panel-m5hw1d7g.js +4 -0
- package/dist/chunks/listbox-e74qjyq6.js +4 -0
- package/dist/chunks/lit-html-8t8t3dnr.js +4 -0
- package/dist/chunks/media-picker-2cweexc5.js +4 -0
- package/dist/chunks/menu-n6yzswmy.js +4 -0
- package/dist/chunks/menu-ynw13y0s.js +4 -0
- package/dist/chunks/monaco-binding-7gx83x3r.js +4 -0
- package/dist/chunks/monaco-buffer-qzxn567r.js +4 -0
- package/dist/chunks/monaco-setup-gxf6656g.js +4 -0
- package/dist/chunks/notify-cj5zbrs2.js +4 -0
- package/dist/chunks/number-field-y62xq0ty.js +4 -0
- package/dist/chunks/parse-b7ddhr8m.js +4 -0
- package/dist/chunks/platform-3dfws9js.js +4 -0
- package/dist/chunks/popover-jt2gxmzs.js +4 -0
- package/dist/chunks/publish-panel-1gvxbj21.js +4 -0
- package/dist/chunks/quick-search-0dajrwqg.js +4 -0
- package/dist/chunks/references-49qgt404.js +4 -0
- package/dist/chunks/right-panel-jm1bwe53.js +4 -0
- package/dist/chunks/section-registry-6kwc4fky.js +4 -0
- package/dist/chunks/select-rzds841e.js +4 -0
- package/dist/chunks/split-n2gfpm5m.js +4 -0
- package/dist/chunks/{studio-5g0ag7c0.js → studio-0q988f9w.js} +3 -3
- package/dist/chunks/studio-0rt52vpq.js +5 -0
- package/dist/chunks/studio-18vgbhs5.js +5 -0
- package/dist/chunks/{studio-pxg4ap1e.js → studio-1fxkaaea.js} +4 -4
- package/dist/chunks/studio-24mccdrj.js +5 -0
- package/dist/chunks/studio-2eh507zk.js +9 -0
- package/dist/chunks/studio-2hcbccfv.js +5 -0
- package/dist/chunks/studio-2j1cb95x.js +5 -0
- package/dist/chunks/studio-2jbs3rxv.js +5 -0
- package/dist/chunks/{studio-qbj760tx.js → studio-485046te.js} +7 -7
- package/dist/chunks/studio-4h8k4dw9.js +5 -0
- package/dist/chunks/studio-5f6n18kx.js +5 -0
- package/dist/chunks/studio-5gthpky6.js +5 -0
- package/dist/chunks/studio-5ve6bbep.js +5 -0
- package/dist/chunks/studio-6ep3js6b.js +9 -0
- package/dist/chunks/studio-6wkmf3wz.js +9 -0
- package/dist/chunks/studio-841rf3cg.js +5 -0
- package/dist/chunks/studio-8gmwgheg.js +5 -0
- package/dist/chunks/studio-8qm0ep50.js +5 -0
- package/dist/chunks/{studio-anyrgzvb.js → studio-90pq9km1.js} +4 -4
- package/dist/chunks/studio-924p1tm1.js +6 -0
- package/dist/chunks/{studio-v2bvmbjj.js → studio-a3g98wjr.js} +4 -4
- package/dist/chunks/studio-a3shpz9y.js +5 -0
- package/dist/chunks/studio-amsbaaar.js +6 -0
- package/dist/chunks/studio-at5spjbc.js +7 -0
- package/dist/chunks/studio-b2xv945e.js +5 -0
- package/dist/chunks/studio-bn5nkafw.js +5 -0
- package/dist/chunks/studio-bw6q5xjf.js +9 -0
- package/dist/chunks/studio-c7q0t9x1.js +5 -0
- package/dist/chunks/studio-camnhc96.js +6 -0
- package/dist/chunks/studio-cffqvnzd.js +5 -0
- package/dist/chunks/studio-d81xfh1g.js +5 -0
- package/dist/chunks/studio-dgz8d0c1.js +5 -0
- package/dist/chunks/studio-efvfrsf8.js +5 -0
- package/dist/chunks/studio-er30bpcx.js +5 -0
- package/dist/chunks/studio-ezscgr64.js +5 -0
- package/dist/chunks/studio-ffrrncvz.js +5 -0
- package/dist/chunks/studio-fpphgn8y.js +10 -0
- package/dist/chunks/studio-j1kvhdjk.js +4 -0
- package/dist/chunks/{studio-txjjzrsm.js → studio-j430n16g.js} +5 -5
- package/dist/chunks/studio-jjkg84nj.js +5 -0
- package/dist/chunks/studio-m0q32ars.js +4 -0
- package/dist/chunks/studio-m6bdst11.js +5 -0
- package/dist/chunks/studio-nv2cptd4.js +64 -0
- package/dist/chunks/studio-nwfrc98n.js +5 -0
- package/dist/chunks/studio-p1wgvp7r.js +5 -0
- package/dist/chunks/studio-pag2wncm.js +5 -0
- package/dist/chunks/studio-qvanvzfd.js +5 -0
- package/dist/chunks/studio-qwa64kt7.js +5 -0
- package/dist/chunks/studio-rk1zc4x3.js +928 -0
- package/dist/chunks/studio-se2r3ptc.js +5 -0
- package/dist/chunks/studio-sg2a0dh0.js +5 -0
- package/dist/chunks/studio-tjzjhe68.js +5 -0
- package/dist/chunks/{studio-0x3jyb8r.js → studio-tq0rtfwj.js} +4 -4
- package/dist/chunks/{studio-cpxkgjrj.js → studio-v0jzqdjm.js} +4 -4
- package/dist/chunks/studio-v2w7q8r1.js +7 -0
- package/dist/chunks/studio-v5vjq1h0.js +4 -0
- package/dist/chunks/studio-v8aga3vp.js +14 -0
- package/dist/chunks/studio-vfcdrfmv.js +5 -0
- package/dist/chunks/studio-vmfkgdjf.js +5 -0
- package/dist/chunks/studio-wt1816jj.js +5 -0
- package/dist/chunks/studio-wz73q5kq.js +4 -0
- package/dist/chunks/studio-y04qtxvp.js +7 -0
- package/dist/chunks/studio-y21g8zzg.js +5 -0
- package/dist/chunks/studio-y64hrt8p.js +12 -0
- package/dist/chunks/studio-ynn90f58.js +16 -0
- package/dist/chunks/studio-yxz682sx.js +5 -0
- package/dist/chunks/studio-zp7snvkq.js +5 -0
- package/dist/chunks/studio-zq4z6tm6.js +5 -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-c9fn075p.js +4 -0
- package/dist/chunks/toast-host-ke5z4ng7.js +4 -0
- package/dist/chunks/{toolbar-2nnzqhrj.js → toolbar-44cm5cta.js} +3 -3
- package/dist/chunks/tooltip-5v8ngwj2.js +4 -0
- package/dist/chunks/tree-mdq3v5cw.js +4 -0
- package/dist/chunks/tsMode-sf49ee9x.js +14 -0
- package/dist/chunks/workspace-jtfahpee.js +4 -0
- package/dist/chunks/ws-client-nze0k6mv.js +4 -0
- package/dist/iframe-entry.js +16 -16
- package/dist/manifest.json +63 -63
- package/dist/studio.js +98 -98
- package/dist/workers/ts.worker.js +3 -3
- package/package.json +11 -11
- 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/library-layouts.ts +8 -5
- package/src/browse/library-model.ts +18 -6
- package/src/browse/library-pane.ts +37 -21
- package/src/browse/library-preview.ts +14 -9
- package/src/browse/library-source.ts +1 -1
- package/src/canvas/asset-refs.ts +24 -9
- package/src/canvas/asset-resolve.ts +19 -23
- package/src/canvas/canvas-helpers.ts +7 -6
- package/src/canvas/canvas-live-render.ts +44 -53
- package/src/canvas/canvas-patcher.ts +30 -30
- package/src/canvas/canvas-perf.ts +11 -5
- package/src/canvas/canvas-render.ts +66 -42
- package/src/canvas/canvas-surface.ts +5 -3
- package/src/canvas/canvas-utils.ts +163 -64
- 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 +13 -12
- package/src/canvas/iframe-editable-root.ts +29 -16
- package/src/canvas/iframe-entry.ts +80 -63
- package/src/canvas/iframe-eval.ts +73 -49
- package/src/canvas/iframe-host.ts +203 -118
- package/src/canvas/iframe-inline-edit.ts +69 -32
- package/src/canvas/iframe-insert.ts +5 -4
- package/src/canvas/iframe-interaction.ts +37 -26
- package/src/canvas/iframe-overlay.ts +1 -1
- package/src/canvas/iframe-patch.ts +18 -15
- package/src/canvas/iframe-position.ts +12 -6
- package/src/canvas/iframe-protocol.ts +15 -16
- package/src/canvas/iframe-render.ts +41 -36
- package/src/canvas/iframe-slash.ts +24 -11
- package/src/canvas/iframe-subtree.ts +6 -2
- 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/serialize-scope.ts +13 -5
- package/src/canvas/stage-scrollbar.ts +2 -1
- package/src/canvas/surface-registry.ts +21 -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/budget.ts +3 -3
- package/src/commands/command-args.ts +103 -71
- package/src/commands/context.ts +22 -20
- package/src/commands/defaults.ts +4 -1
- package/src/commands/keymap.ts +47 -43
- package/src/commands/levels.ts +3 -3
- package/src/commands/live-context.ts +10 -8
- package/src/commands/reference.ts +2 -1
- package/src/commands/registry.ts +12 -10
- package/src/commands/run-reported.ts +15 -10
- package/src/component-props.ts +46 -30
- package/src/content/collection-match.ts +5 -4
- package/src/content/draft-state.ts +4 -3
- package/src/content/entry-commands.ts +3 -2
- package/src/content/entry-editor.ts +29 -17
- package/src/content/entry-fields.ts +12 -7
- package/src/content/entry-model.ts +21 -12
- 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 +11 -5
- package/src/editor/convert-to-repeater.ts +34 -22
- package/src/editor/editable-tags.ts +17 -2
- package/src/editor/file-drop-action.ts +21 -22
- package/src/editor/inline-edit-apply.ts +35 -17
- package/src/editor/inline-edit.ts +66 -50
- package/src/editor/inline-format.ts +59 -56
- package/src/editor/inline-link.ts +40 -15
- package/src/editor/insert-zone-action.ts +1 -1
- package/src/editor/merge-tags.ts +58 -19
- package/src/editor/repeater-scope.ts +39 -28
- package/src/editor/shortcuts.ts +87 -47
- package/src/editor/slash-menu.ts +1 -6
- package/src/files/asset-versions.ts +4 -4
- package/src/files/components.ts +15 -10
- package/src/files/elements.ts +5 -6
- package/src/files/file-ops.ts +77 -36
- package/src/files/files.ts +90 -95
- package/src/files/media-meta.ts +2 -1
- package/src/files/media-paths.ts +6 -1
- package/src/files/serialize-document.ts +2 -2
- 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 +76 -50
- package/src/github/github-auth-status.ts +27 -3
- package/src/github/github-auth.ts +19 -9
- package/src/github/github-publish.ts +24 -20
- 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 +20 -22
- package/src/grid/grid-layout.ts +21 -5
- package/src/grid/grid-open.ts +3 -6
- package/src/grid/grid-panel.ts +11 -4
- package/src/grid/grid-source.ts +8 -8
- package/src/grid/grid-view.ts +14 -17
- 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 +25 -24
- package/src/grid/sources/csv-file-source.ts +2 -2
- package/src/grid/tabulator-tables.d.ts +55 -34
- package/src/hosting/stage.ts +7 -7
- package/src/i18n/i18n-commands.ts +1 -2
- package/src/media/media-pane.ts +4 -1
- 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 +17 -9
- package/src/panels/ai-chat/attached-context.ts +13 -7
- 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 +46 -35
- package/src/panels/bottom-dock.ts +5 -3
- package/src/panels/canvas-dnd-bridge.ts +31 -24
- package/src/panels/data-explorer.ts +62 -25
- package/src/panels/data-grid.ts +14 -11
- package/src/panels/dnd.ts +108 -118
- package/src/panels/editors.ts +55 -22
- package/src/panels/elements-panel.ts +10 -3
- package/src/panels/events-panel.ts +84 -69
- package/src/panels/formula-workspace.ts +76 -51
- package/src/panels/frontmatter-fields.ts +24 -19
- package/src/panels/frontmatter-panel.ts +44 -34
- package/src/panels/git-diff-open.ts +4 -4
- package/src/panels/git-panel.ts +49 -61
- package/src/panels/head-panel.ts +131 -111
- package/src/panels/i18n-panel.ts +10 -3
- package/src/panels/imports-panel.ts +23 -47
- package/src/panels/jump-bar.ts +48 -29
- package/src/panels/layers-panel.ts +97 -74
- package/src/panels/left-panel.ts +3 -3
- package/src/panels/pane-context.ts +31 -22
- package/src/panels/pane-grid.ts +49 -20
- package/src/panels/panel-registry.ts +22 -37
- package/src/panels/properties-panel.ts +175 -121
- package/src/panels/quick-search.ts +53 -31
- package/src/panels/right-panel.ts +3 -3
- package/src/panels/seo-modal.ts +13 -17
- package/src/panels/settings-menu.ts +15 -15
- package/src/panels/signals-panel.ts +153 -131
- package/src/panels/statement-editor.ts +230 -140
- package/src/panels/style-panel.ts +254 -216
- package/src/panels/style-utils.ts +114 -51
- package/src/panels/stylebook-doc.ts +57 -54
- package/src/panels/stylebook-layers-panel.ts +9 -9
- package/src/panels/stylebook-panel.ts +13 -17
- package/src/panels/tab-drop.ts +27 -11
- package/src/panels/tab-strip.ts +36 -26
- package/src/platform-errors.ts +57 -43
- package/src/platform.ts +58 -30
- package/src/platforms/cloud.ts +345 -175
- package/src/platforms/default-platform.ts +10 -4
- package/src/platforms/devserver.ts +174 -127
- package/src/platforms/read-batcher.ts +16 -8
- package/src/project-list.ts +2 -1
- package/src/publish/deploy-checklist.ts +8 -2
- package/src/publish/pages-service.ts +28 -13
- package/src/publish/publish-commands.ts +5 -4
- package/src/publish/publish-panel.ts +10 -6
- 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 +58 -31
- package/src/services/cem-export.ts +149 -58
- package/src/services/clock.ts +6 -1
- package/src/services/code-services.ts +37 -31
- 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 +18 -12
- 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 +8 -7
- 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 +79 -60
- package/src/settings/css-vars-editor.ts +37 -16
- package/src/settings/defs-editor.ts +38 -35
- package/src/settings/extension-rows.ts +16 -8
- package/src/settings/extension-sections.ts +23 -13
- package/src/settings/extensions-section.ts +4 -1
- package/src/settings/general-settings.ts +11 -8
- package/src/settings/locales-section.ts +20 -12
- package/src/settings/preferences-dialog.ts +9 -6
- package/src/settings/preferences-keymap.ts +7 -5
- package/src/settings/preferences-sections.ts +11 -5
- package/src/settings/project-sections.ts +1 -1
- package/src/settings/schema-field-ui.ts +9 -0
- package/src/settings/settings-document.ts +5 -5
- package/src/shell/tree.ts +6 -5
- package/src/shell.ts +104 -81
- package/src/site-context.ts +37 -22
- package/src/state.ts +41 -49
- package/src/store.ts +54 -34
- package/src/studio.ts +39 -77
- package/src/style/live-preview.ts +1 -1
- package/src/style/project-styles.ts +6 -7
- package/src/style/token-ref.ts +5 -4
- package/src/surfaces/about.ts +18 -19
- package/src/surfaces/add-repo.ts +17 -19
- package/src/surfaces/ai-chat.ts +31 -36
- 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.ts +4 -5
- package/src/surfaces/bottom-dock.ts +9 -18
- package/src/surfaces/canvas-stage.ts +12 -11
- package/src/surfaces/cf-account-picker.ts +17 -18
- package/src/surfaces/commandbar.ts +14 -9
- 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/doc-header.ts +10 -19
- package/src/surfaces/empty-state.ts +7 -10
- package/src/surfaces/entry-editor.ts +14 -11
- 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/git-panel.ts +7 -15
- 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.ts +13 -12
- package/src/surfaces/jump-bar.ts +5 -6
- package/src/surfaces/jxsuite-update.ts +16 -22
- package/src/surfaces/library-pane.ts +25 -20
- package/src/surfaces/logic-panel.ts +17 -30
- package/src/surfaces/logic-workspace.ts +13 -15
- package/src/surfaces/media-browser.ts +11 -10
- package/src/surfaces/media-field.ts +4 -5
- package/src/surfaces/media-pane.ts +8 -7
- package/src/surfaces/menu.ts +29 -23
- package/src/surfaces/navigator-dock.ts +11 -12
- package/src/surfaces/new-project.ts +27 -26
- package/src/surfaces/pane-context.ts +20 -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.ts +5 -6
- 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.ts +11 -18
- package/src/surfaces/panel-problems.ts +5 -7
- package/src/surfaces/panel-signals.ts +20 -34
- package/src/surfaces/panel-stylebook-layers.ts +5 -8
- package/src/surfaces/preferences.ts +21 -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.ts +18 -18
- package/src/surfaces/push-plan.ts +7 -8
- package/src/surfaces/rail.json +126 -73
- package/src/surfaces/rail.ts +38 -12
- package/src/surfaces/reference-field.ts +11 -15
- package/src/surfaces/schema-builder.ts +16 -22
- package/src/surfaces/schema-form.ts +15 -25
- package/src/surfaces/secret-field.ts +9 -6
- package/src/surfaces/seo.ts +21 -15
- package/src/surfaces/settings-contexts.ts +9 -7
- package/src/surfaces/settings-contributed.ts +14 -10
- package/src/surfaces/settings-css-vars.ts +5 -12
- package/src/surfaces/settings-defs.json +2 -2
- package/src/surfaces/settings-defs.ts +17 -21
- package/src/surfaces/settings-deploy.ts +8 -15
- 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.ts +5 -6
- package/src/surfaces/settings-packages.ts +8 -7
- package/src/surfaces/settings-pane.ts +9 -18
- package/src/surfaces/settings-rawjson.ts +5 -6
- package/src/surfaces/shell.ts +1 -2
- package/src/surfaces/slash-menu.ts +19 -9
- package/src/surfaces/statements.ts +13 -18
- package/src/surfaces/statusbar.ts +17 -14
- package/src/surfaces/style-panel.ts +18 -31
- package/src/surfaces/stylebook-chrome.ts +3 -5
- package/src/surfaces/tab-strip.ts +14 -13
- package/src/surfaces/target-line.ts +6 -7
- package/src/surfaces/welcome.ts +5 -7
- 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 +52 -41
- package/src/tabs/transact.ts +98 -53
- package/src/tabs/typing.ts +31 -0
- package/src/types.ts +32 -17
- 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 +57 -48
- package/src/ui/formula-catalog.ts +239 -230
- package/src/ui/formula-chips.ts +33 -18
- package/src/ui/layers.ts +44 -31
- package/src/ui/media-picker.ts +18 -9
- package/src/ui/popover-surface.ts +20 -12
- package/src/ui/progress-modal.ts +13 -8
- package/src/ui/regions.ts +7 -6
- package/src/ui/schema-form.ts +113 -70
- 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 +3 -2
- package/src/utils/base64.ts +3 -1
- package/src/utils/edit-display.ts +103 -74
- 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/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 +10 -12
- package/src/workspace/session.ts +53 -43
- package/src/workspace/workspace.ts +47 -36
- package/dist/chunks/2020-nkxms0ay.js +0 -4
- package/dist/chunks/adapter-m948ab5f.js +0 -4
- package/dist/chunks/cf-account-picker-n8hr38v7.js +0 -4
- package/dist/chunks/cf-settings-356xdtne.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-yk3t844e.js +0 -4
- package/dist/chunks/content-source-bawmyc09.js +0 -4
- package/dist/chunks/convert-to-repeater-7wns8kf1.js +0 -4
- package/dist/chunks/dialog-mtm9fq5t.js +0 -4
- package/dist/chunks/editor-6sc8nacq.js +0 -4
- package/dist/chunks/entry-commands-8ay9fh81.js +0 -4
- package/dist/chunks/extension-sections-na7rj3nr.js +0 -4
- package/dist/chunks/file-ops-gye0qw56.js +0 -4
- package/dist/chunks/files-dmc2xvcq.js +0 -4
- package/dist/chunks/format-host-t76b53f8.js +0 -4
- package/dist/chunks/fs-events-cg4tpz06.js +0 -4
- package/dist/chunks/git-panel-yef7bshy.js +0 -4
- package/dist/chunks/grid-view-7tt4bxw1.js +0 -51
- package/dist/chunks/icons-qbh8akb1.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-tmz30gfp.js +0 -4
- package/dist/chunks/index-nag78a9h.js +0 -4
- package/dist/chunks/jsonMode-zhwsprqk.js +0 -13
- package/dist/chunks/jx-validate-3gbp5nkn.js +0 -4
- package/dist/chunks/layers-fvz99859.js +0 -4
- package/dist/chunks/layers-panel-gchmbf9p.js +0 -4
- package/dist/chunks/listbox-s8fkmnq8.js +0 -4
- package/dist/chunks/lit-html-9agdspkt.js +0 -4
- package/dist/chunks/media-picker-rhjvyy00.js +0 -4
- package/dist/chunks/menu-2e4y9j7b.js +0 -4
- package/dist/chunks/menu-37d07z9m.js +0 -4
- package/dist/chunks/monaco-binding-2jnhjjvr.js +0 -4
- package/dist/chunks/monaco-buffer-rp21359g.js +0 -4
- package/dist/chunks/monaco-setup-vhh7gayr.js +0 -4
- package/dist/chunks/notify-h3www560.js +0 -4
- package/dist/chunks/number-field-gw7sq8rn.js +0 -4
- package/dist/chunks/parse-897fvqah.js +0 -4
- package/dist/chunks/platform-hz34wcd7.js +0 -4
- package/dist/chunks/popover-8htra4er.js +0 -4
- package/dist/chunks/publish-panel-exsmjzyj.js +0 -4
- package/dist/chunks/quick-search-pgaqeh0m.js +0 -4
- package/dist/chunks/references-2cgdxnb8.js +0 -4
- package/dist/chunks/right-panel-jf856w5w.js +0 -4
- package/dist/chunks/section-registry-jnf8r5gy.js +0 -4
- package/dist/chunks/select-n3v7gwas.js +0 -4
- package/dist/chunks/split-pff8f3ze.js +0 -4
- package/dist/chunks/studio-0f55h9ye.js +0 -5
- package/dist/chunks/studio-0sqdhnew.js +0 -12
- package/dist/chunks/studio-19x1c75w.js +0 -5
- package/dist/chunks/studio-2sqcndak.js +0 -5
- package/dist/chunks/studio-3aey7dd3.js +0 -5
- package/dist/chunks/studio-3bpdkq2s.js +0 -5
- package/dist/chunks/studio-47y6fbpf.js +0 -5
- package/dist/chunks/studio-4m3826v2.js +0 -5
- package/dist/chunks/studio-4nx2dj1g.js +0 -4
- package/dist/chunks/studio-4xv5s47r.js +0 -9
- package/dist/chunks/studio-5g4t8v6w.js +0 -5
- package/dist/chunks/studio-5py436sf.js +0 -5
- package/dist/chunks/studio-77kt594t.js +0 -5
- package/dist/chunks/studio-8f87n763.js +0 -10
- package/dist/chunks/studio-8mb00b84.js +0 -5
- package/dist/chunks/studio-8p51gq2h.js +0 -6
- package/dist/chunks/studio-954ds834.js +0 -5
- package/dist/chunks/studio-9ft45c83.js +0 -9
- package/dist/chunks/studio-a2138x5k.js +0 -7
- package/dist/chunks/studio-a9yzstqj.js +0 -5
- package/dist/chunks/studio-acdksxx6.js +0 -5
- package/dist/chunks/studio-ar8jcf2y.js +0 -5
- package/dist/chunks/studio-bmn4mn9j.js +0 -7
- package/dist/chunks/studio-e7xxa0sj.js +0 -5
- package/dist/chunks/studio-ecaz25vk.js +0 -5
- package/dist/chunks/studio-ery42sqr.js +0 -4
- package/dist/chunks/studio-fzdywr6p.js +0 -9
- package/dist/chunks/studio-g5fmf0c1.js +0 -5
- package/dist/chunks/studio-g7nse7zb.js +0 -5
- package/dist/chunks/studio-geq1ea6k.js +0 -14
- package/dist/chunks/studio-ghkb32r8.js +0 -5
- package/dist/chunks/studio-ghrhy2y7.js +0 -5
- package/dist/chunks/studio-grawhey1.js +0 -5
- package/dist/chunks/studio-h0xgswew.js +0 -5
- package/dist/chunks/studio-h9c4p2tx.js +0 -5
- package/dist/chunks/studio-jyzj5cxs.js +0 -5
- package/dist/chunks/studio-mgx8yhnz.js +0 -64
- package/dist/chunks/studio-mpb04y1d.js +0 -6
- package/dist/chunks/studio-n17mty64.js +0 -5
- package/dist/chunks/studio-nwh2eqsk.js +0 -6
- package/dist/chunks/studio-q1h883bt.js +0 -16
- package/dist/chunks/studio-q4tv82h7.js +0 -9
- package/dist/chunks/studio-qpqa7vk3.js +0 -5
- package/dist/chunks/studio-qqz8e5gk.js +0 -5
- package/dist/chunks/studio-qvasen3f.js +0 -5
- package/dist/chunks/studio-rggdb3hm.js +0 -5
- package/dist/chunks/studio-sghy936h.js +0 -4
- package/dist/chunks/studio-skprc6ef.js +0 -5
- package/dist/chunks/studio-tt2nactf.js +0 -5
- package/dist/chunks/studio-tyasmc39.js +0 -5
- package/dist/chunks/studio-vk9ezads.js +0 -5
- package/dist/chunks/studio-vzacdfsc.js +0 -4
- package/dist/chunks/studio-w4c0xmrw.js +0 -5
- package/dist/chunks/studio-wfjqhhbk.js +0 -5
- package/dist/chunks/studio-wgh5kxpj.js +0 -5
- package/dist/chunks/studio-xasj0796.js +0 -5
- package/dist/chunks/studio-y78s8r2n.js +0 -5
- package/dist/chunks/studio-z8w183sh.js +0 -5
- package/dist/chunks/studio-zscd9ty4.js +0 -928
- package/dist/chunks/studio-zxp13sss.js +0 -7
- package/dist/chunks/studio-zygnmm01.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-gr0m4dzr.js +0 -14
- package/dist/chunks/workspace-m15qtcqp.js +0 -4
- package/dist/chunks/ws-client-nf61frr1.js +0 -4
package/src/surfaces/seo.ts
CHANGED
|
@@ -33,13 +33,12 @@
|
|
|
33
33
|
import { reactive } from "../reactivity";
|
|
34
34
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
35
35
|
import { overlayRegion, REGION_ATTR } from "../ui/regions";
|
|
36
|
-
import { close
|
|
36
|
+
import { close, showModal } from "@jxsuite/ui/behaviors/dialog";
|
|
37
37
|
import { whenReady } from "./dialog";
|
|
38
38
|
import seoDoc from "./seo.json";
|
|
39
39
|
import type { SurfaceHandle } from "../ui/surface";
|
|
40
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
41
40
|
|
|
42
|
-
registerSurface("seo", seoDoc
|
|
41
|
+
registerSurface("seo", seoDoc);
|
|
43
42
|
|
|
44
43
|
/** How a field's provenance is drawn — §6.7's vocabulary, reduced to three shapes and an absence. */
|
|
45
44
|
export type SeoChipKind = "none" | "dot" | "static" | "link";
|
|
@@ -65,8 +64,9 @@ export interface SeoFieldView {
|
|
|
65
64
|
chipTitle: string;
|
|
66
65
|
}
|
|
67
66
|
|
|
68
|
-
/**
|
|
67
|
+
/** A named thing that is wrong, or absent. Never summed: the list IS the report. */
|
|
69
68
|
export interface SeoWarningView {
|
|
69
|
+
/** Stable id, so a test and a shot name the same warning. */
|
|
70
70
|
id: string;
|
|
71
71
|
/** The head key it is about, so the row can carry it as code. */
|
|
72
72
|
field: string;
|
|
@@ -154,17 +154,17 @@ export interface SeoSurfaceHandle {
|
|
|
154
154
|
type LineState = "text" | "unset";
|
|
155
155
|
|
|
156
156
|
/** One field row with the flags the document branches on. */
|
|
157
|
-
interface SeoFieldRow extends SeoFieldView
|
|
157
|
+
interface SeoFieldRow extends SeoFieldView {
|
|
158
158
|
valueState: LineState;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
/** One editable row with the flags the document branches on. */
|
|
162
|
-
interface SeoEditRow extends SeoEditRowView
|
|
162
|
+
interface SeoEditRow extends SeoEditRowView {
|
|
163
163
|
hasThumb: boolean;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/** One group with its rows already flagged. */
|
|
167
|
-
interface SeoGroupRow
|
|
167
|
+
interface SeoGroupRow {
|
|
168
168
|
key: string;
|
|
169
169
|
title: string;
|
|
170
170
|
note: string;
|
|
@@ -196,12 +196,12 @@ interface SeoFlags {
|
|
|
196
196
|
groups: SeoGroupRow[];
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
interface SeoScope extends
|
|
199
|
+
interface SeoScope extends SeoFlags {
|
|
200
200
|
documentLabel: string;
|
|
201
201
|
edit: (key: string, value: string) => void;
|
|
202
202
|
commit: (key: string, value: string) => void;
|
|
203
203
|
upload: (key: string) => void;
|
|
204
|
-
browse: (key: string, anchor:
|
|
204
|
+
browse: (key: string, anchor: EventTarget | null) => void;
|
|
205
205
|
openDonor: (key: string) => void;
|
|
206
206
|
closed: () => void;
|
|
207
207
|
}
|
|
@@ -268,9 +268,9 @@ export function openSeoSurface(options: SeoSurfaceOptions): SeoSurfaceHandle {
|
|
|
268
268
|
options.onClosed();
|
|
269
269
|
};
|
|
270
270
|
|
|
271
|
-
const scope = reactive({
|
|
271
|
+
const scope: SeoScope = reactive<SeoScope>({
|
|
272
272
|
...derive(options.view),
|
|
273
|
-
browse: (key: string, anchor:
|
|
273
|
+
browse: (key: string, anchor: EventTarget | null) => {
|
|
274
274
|
if (anchor instanceof HTMLElement) {
|
|
275
275
|
options.onBrowse(key, anchor);
|
|
276
276
|
}
|
|
@@ -288,18 +288,24 @@ export function openSeoSurface(options: SeoSurfaceOptions): SeoSurfaceHandle {
|
|
|
288
288
|
upload: (key: string) => {
|
|
289
289
|
options.onUpload(key);
|
|
290
290
|
},
|
|
291
|
-
})
|
|
291
|
+
});
|
|
292
292
|
|
|
293
|
+
/* Read through a call, not the bare binding: `close()` can run while the mount is awaiting the
|
|
294
|
+
element, and a direct `closed` test after that `await` would be narrowed to the value the test
|
|
295
|
+
before it saw. */
|
|
296
|
+
const isClosed = (): boolean => closed;
|
|
293
297
|
let mounted: SurfaceHandle | null = null;
|
|
294
298
|
const ready = mountSurface("seo", scope, slot).then(async (surface) => {
|
|
295
299
|
mounted = surface;
|
|
300
|
+
/* SAFETY: `seo.json`'s root definition carries `tagName: "jx-dialog"`, so the runtime mounts an
|
|
301
|
+
HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
296
302
|
const element = surface.root as HTMLElement;
|
|
297
|
-
if (
|
|
303
|
+
if (isClosed()) {
|
|
298
304
|
surface.dispose();
|
|
299
305
|
return element;
|
|
300
306
|
}
|
|
301
307
|
await whenReady(element);
|
|
302
|
-
if (
|
|
308
|
+
if (isClosed()) {
|
|
303
309
|
return element;
|
|
304
310
|
}
|
|
305
311
|
const box = element.querySelector<HTMLElement>('dialog[part="dialog"]') ?? element;
|
|
@@ -317,7 +323,7 @@ export function openSeoSurface(options: SeoSurfaceOptions): SeoSurfaceHandle {
|
|
|
317
323
|
const element = mounted?.root;
|
|
318
324
|
if (element instanceof HTMLElement) {
|
|
319
325
|
// The platform's close first, so focus goes back where it came from; then the document.
|
|
320
|
-
|
|
326
|
+
close(element);
|
|
321
327
|
}
|
|
322
328
|
// A mount that has not landed yet is disposed by `ready` when it does — `finish` tells it so.
|
|
323
329
|
mounted?.dispose();
|
|
@@ -22,10 +22,9 @@ import { reactive } from "../reactivity";
|
|
|
22
22
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
23
23
|
import contextsDoc from "./settings-contexts.json";
|
|
24
24
|
|
|
25
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
26
25
|
import type { SurfaceHandle } from "../ui/surface";
|
|
27
26
|
|
|
28
|
-
registerSurface("settings-contexts", contextsDoc
|
|
27
|
+
registerSurface("settings-contexts", contextsDoc);
|
|
29
28
|
|
|
30
29
|
/** One `$media` row, as the document draws it. */
|
|
31
30
|
export interface ContextRowView {
|
|
@@ -111,7 +110,7 @@ export interface ContextsSurfaceHandle {
|
|
|
111
110
|
* would be a second place to get it wrong. The refusal lines need none — `invalid` already says
|
|
112
111
|
* which control the message belongs to.
|
|
113
112
|
*/
|
|
114
|
-
interface ContextsScope extends
|
|
113
|
+
interface ContextsScope extends ContextsView, ContextsActions {
|
|
115
114
|
hasSectionError: boolean;
|
|
116
115
|
hasNotice: boolean;
|
|
117
116
|
}
|
|
@@ -141,7 +140,7 @@ export function mountContextsSurface(
|
|
|
141
140
|
actions: ContextsActions,
|
|
142
141
|
): ContextsSurfaceHandle {
|
|
143
142
|
host.textContent = "";
|
|
144
|
-
const scope = reactive<ContextsScope>({
|
|
143
|
+
const scope: ContextsScope = reactive<ContextsScope>({
|
|
145
144
|
...emptyView(),
|
|
146
145
|
add: actions.add,
|
|
147
146
|
hasNotice: false,
|
|
@@ -151,17 +150,20 @@ export function mountContextsSurface(
|
|
|
151
150
|
setBase: actions.setBase,
|
|
152
151
|
setQuery: actions.setQuery,
|
|
153
152
|
setScheme: actions.setScheme,
|
|
154
|
-
})
|
|
153
|
+
});
|
|
155
154
|
|
|
156
155
|
let mounted: SurfaceHandle | null = null;
|
|
157
156
|
let disposed = false;
|
|
158
157
|
const ready = mountSurface("settings-contexts", scope, host).then((surface) => {
|
|
158
|
+
/* SAFETY: `settings-contexts.json`'s root definition carries `tagName: "div"`, so the runtime
|
|
159
|
+
mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
160
|
+
const root = surface.root as HTMLElement;
|
|
159
161
|
if (disposed) {
|
|
160
162
|
surface.dispose();
|
|
161
|
-
return
|
|
163
|
+
return root;
|
|
162
164
|
}
|
|
163
165
|
mounted = surface;
|
|
164
|
-
return
|
|
166
|
+
return root;
|
|
165
167
|
});
|
|
166
168
|
|
|
167
169
|
return {
|
|
@@ -26,14 +26,15 @@
|
|
|
26
26
|
* @docs studio/projects/settings
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
+
import { isString } from "@jxsuite/schema/guards";
|
|
29
30
|
import { reactive } from "../reactivity";
|
|
30
31
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
31
32
|
import contributedDoc from "./settings-contributed.json";
|
|
32
33
|
|
|
33
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
34
34
|
import type { SurfaceHandle } from "../ui/surface";
|
|
35
|
+
import type { JxElement } from "@jxsuite/schema/types";
|
|
35
36
|
|
|
36
|
-
registerSurface("settings-contributed", contributedDoc
|
|
37
|
+
registerSurface("settings-contributed", contributedDoc);
|
|
37
38
|
|
|
38
39
|
/** One entry key in a map-layout section's left column. */
|
|
39
40
|
export interface ContributedEntryView {
|
|
@@ -101,7 +102,7 @@ export interface ContributedSurfaceHandle {
|
|
|
101
102
|
dispose: () => void;
|
|
102
103
|
}
|
|
103
104
|
|
|
104
|
-
interface ContributedScope extends
|
|
105
|
+
interface ContributedScope extends ContributedView, ContributedActions {}
|
|
105
106
|
|
|
106
107
|
/** The view a freshly mounted surface starts on: a form layout with nothing in it. */
|
|
107
108
|
function emptyView(): ContributedView {
|
|
@@ -119,10 +120,9 @@ function emptyView(): ContributedView {
|
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
/** The `part` a node was authored with, or `""` — the only thing this adapter asks about a node. */
|
|
122
|
-
function partOf(def:
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
return typeof part === "string" ? part : "";
|
|
123
|
+
function partOf(def: JxElement | string): string {
|
|
124
|
+
const part = isString(def) ? undefined : def.attributes?.["part"];
|
|
125
|
+
return isString(part) ? part : "";
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/**
|
|
@@ -139,7 +139,7 @@ export function mountContributedSurface(
|
|
|
139
139
|
islands: ContributedIslands,
|
|
140
140
|
): ContributedSurfaceHandle {
|
|
141
141
|
host.textContent = "";
|
|
142
|
-
const scope = reactive<ContributedScope>({ ...emptyView(), ...actions })
|
|
142
|
+
const scope: ContributedScope = reactive<ContributedScope>({ ...emptyView(), ...actions });
|
|
143
143
|
|
|
144
144
|
let mounted: SurfaceHandle | null = null;
|
|
145
145
|
let disposed = false;
|
|
@@ -160,12 +160,16 @@ export function mountContributedSurface(
|
|
|
160
160
|
}
|
|
161
161
|
},
|
|
162
162
|
}).then((surface) => {
|
|
163
|
+
/* SAFETY: `settings-contributed.json`'s root definition carries `tagName: "section"`, so the
|
|
164
|
+
runtime mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare
|
|
165
|
+
string. */
|
|
166
|
+
const root = surface.root as HTMLElement;
|
|
163
167
|
if (disposed) {
|
|
164
168
|
surface.dispose();
|
|
165
|
-
return
|
|
169
|
+
return root;
|
|
166
170
|
}
|
|
167
171
|
mounted = surface;
|
|
168
|
-
return
|
|
172
|
+
return root;
|
|
169
173
|
});
|
|
170
174
|
|
|
171
175
|
return {
|
|
@@ -29,16 +29,9 @@
|
|
|
29
29
|
import { reactive } from "../reactivity";
|
|
30
30
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
31
31
|
import cssVarsDoc from "./settings-css-vars.json";
|
|
32
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
33
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
32
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
34
33
|
|
|
35
|
-
registerSurface("settings-css-vars", cssVarsDoc
|
|
36
|
-
|
|
37
|
-
/** One row of the add-an-override picker. */
|
|
38
|
-
export interface OverrideChoice {
|
|
39
|
-
value: string;
|
|
40
|
-
label: string;
|
|
41
|
-
}
|
|
34
|
+
registerSurface("settings-css-vars", cssVarsDoc);
|
|
42
35
|
|
|
43
36
|
/** One of a token's per-context values. */
|
|
44
37
|
export interface OverrideRowView {
|
|
@@ -91,7 +84,7 @@ export interface TokenRowView {
|
|
|
91
84
|
overrides: OverrideRowView[];
|
|
92
85
|
/** Whether the add-an-override picker is offered. */
|
|
93
86
|
addState: "none" | "shown";
|
|
94
|
-
addOptions:
|
|
87
|
+
addOptions: SurfaceOption[];
|
|
95
88
|
/** What the picker currently reads. Always `""` in practice — see {@link renderCssVarsSurface}. */
|
|
96
89
|
addPick: string;
|
|
97
90
|
addLabel: string;
|
|
@@ -141,7 +134,7 @@ interface CssVarsFlags {
|
|
|
141
134
|
hasError: boolean;
|
|
142
135
|
}
|
|
143
136
|
|
|
144
|
-
interface CssVarsScope extends
|
|
137
|
+
interface CssVarsScope extends CssVarsView, CssVarsActions, CssVarsFlags {}
|
|
145
138
|
|
|
146
139
|
interface Mounted {
|
|
147
140
|
scope: CssVarsScope;
|
|
@@ -186,7 +179,7 @@ export function renderCssVarsSurface(
|
|
|
186
179
|
}
|
|
187
180
|
existing?.handle?.dispose();
|
|
188
181
|
host.textContent = "";
|
|
189
|
-
const scope = reactive({ ...derive(view), ...actions })
|
|
182
|
+
const scope: CssVarsScope = reactive<CssVarsScope>({ ...derive(view), ...actions });
|
|
190
183
|
const record: Mounted = { handle: null, scope };
|
|
191
184
|
mounts.set(host, record);
|
|
192
185
|
/* No race to arbitrate: a redraw arriving while this is in flight takes the branch above — a
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
{
|
|
159
159
|
"$prototype": "Array",
|
|
160
160
|
"items": {
|
|
161
|
-
"$ref": "#/state/
|
|
161
|
+
"$ref": "#/state/defs"
|
|
162
162
|
},
|
|
163
163
|
"key": {
|
|
164
164
|
"$ref": "$map/item/name"
|
|
@@ -406,7 +406,7 @@
|
|
|
406
406
|
{
|
|
407
407
|
"operator": "call",
|
|
408
408
|
"target": {
|
|
409
|
-
"$ref": "#/state/
|
|
409
|
+
"$ref": "#/state/removeSelected"
|
|
410
410
|
},
|
|
411
411
|
"value": []
|
|
412
412
|
}
|
|
@@ -26,19 +26,12 @@ import { reactive } from "../reactivity";
|
|
|
26
26
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
27
27
|
import defsDoc from "./settings-defs.json";
|
|
28
28
|
|
|
29
|
-
import type {
|
|
30
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
29
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
31
30
|
|
|
32
|
-
registerSurface("settings-defs", defsDoc
|
|
33
|
-
|
|
34
|
-
/** One row of a picker: a field type, a format, or a reference target. */
|
|
35
|
-
export interface DefsChoice {
|
|
36
|
-
value: string;
|
|
37
|
-
label: string;
|
|
38
|
-
}
|
|
31
|
+
registerSurface("settings-defs", defsDoc);
|
|
39
32
|
|
|
40
33
|
/** One data shape in the left column. */
|
|
41
|
-
export interface
|
|
34
|
+
export interface DefsEntryView {
|
|
42
35
|
name: string;
|
|
43
36
|
selected: boolean;
|
|
44
37
|
}
|
|
@@ -87,7 +80,7 @@ export interface DefsFieldView {
|
|
|
87
80
|
|
|
88
81
|
/** Everything the document draws, as one value. */
|
|
89
82
|
export interface DefsView {
|
|
90
|
-
|
|
83
|
+
defs: DefsEntryView[];
|
|
91
84
|
/** Whether the left column is offering the new-shape button or the form. */
|
|
92
85
|
newState: "closed" | "open";
|
|
93
86
|
newName: string;
|
|
@@ -95,10 +88,10 @@ export interface DefsView {
|
|
|
95
88
|
editorState: "empty" | "editing";
|
|
96
89
|
selected: string;
|
|
97
90
|
fields: DefsFieldView[];
|
|
98
|
-
typeOptions:
|
|
99
|
-
formatOptions:
|
|
91
|
+
typeOptions: SurfaceOption[];
|
|
92
|
+
formatOptions: SurfaceOption[];
|
|
100
93
|
/** The content types a reference field can point at. */
|
|
101
|
-
targets:
|
|
94
|
+
targets: SurfaceOption[];
|
|
102
95
|
addState: "closed" | "open";
|
|
103
96
|
addName: string;
|
|
104
97
|
addType: string;
|
|
@@ -114,7 +107,7 @@ export interface DefsActions {
|
|
|
114
107
|
editNew: (value: string) => void;
|
|
115
108
|
createNew: () => void;
|
|
116
109
|
cancelNew: () => void;
|
|
117
|
-
|
|
110
|
+
removeSelected: () => void;
|
|
118
111
|
renameField: (key: string, value: string) => void;
|
|
119
112
|
setType: (key: string, value: string) => void;
|
|
120
113
|
setFormat: (key: string, value: string) => void;
|
|
@@ -149,7 +142,7 @@ export interface DefsSurfaceHandle {
|
|
|
149
142
|
dispose: () => void;
|
|
150
143
|
}
|
|
151
144
|
|
|
152
|
-
interface DefsScope extends
|
|
145
|
+
interface DefsScope extends DefsView, DefsActions {}
|
|
153
146
|
|
|
154
147
|
/** The view a freshly mounted surface starts on: no shapes, and nothing chosen. */
|
|
155
148
|
function emptyView(): DefsView {
|
|
@@ -160,13 +153,13 @@ function emptyView(): DefsView {
|
|
|
160
153
|
addRequired: false,
|
|
161
154
|
addState: "closed",
|
|
162
155
|
addType: "string",
|
|
156
|
+
defs: [],
|
|
163
157
|
editorState: "empty",
|
|
164
158
|
fields: [],
|
|
165
159
|
formatOptions: [],
|
|
166
160
|
newName: "",
|
|
167
161
|
newState: "closed",
|
|
168
162
|
selected: "",
|
|
169
|
-
shapes: [],
|
|
170
163
|
targets: [],
|
|
171
164
|
typeOptions: [],
|
|
172
165
|
};
|
|
@@ -181,17 +174,20 @@ function emptyView(): DefsView {
|
|
|
181
174
|
*/
|
|
182
175
|
export function mountDefsSurface(host: HTMLElement, actions: DefsActions): DefsSurfaceHandle {
|
|
183
176
|
host.textContent = "";
|
|
184
|
-
const scope = reactive<DefsScope>({ ...emptyView(), ...actions })
|
|
177
|
+
const scope: DefsScope = reactive<DefsScope>({ ...emptyView(), ...actions });
|
|
185
178
|
|
|
186
179
|
let mounted: SurfaceHandle | null = null;
|
|
187
180
|
let disposed = false;
|
|
188
181
|
const ready = mountSurface("settings-defs", scope, host).then((surface) => {
|
|
182
|
+
/* SAFETY: `settings-defs.json`'s root definition carries `tagName: "section"`, so the runtime
|
|
183
|
+
mounts an HTMLElement; a `Text` root only comes from a document whose root is a bare string. */
|
|
184
|
+
const root = surface.root as HTMLElement;
|
|
189
185
|
if (disposed) {
|
|
190
186
|
surface.dispose();
|
|
191
|
-
return
|
|
187
|
+
return root;
|
|
192
188
|
}
|
|
193
189
|
mounted = surface;
|
|
194
|
-
return
|
|
190
|
+
return root;
|
|
195
191
|
});
|
|
196
192
|
|
|
197
193
|
return {
|
|
@@ -218,13 +214,13 @@ export function mountDefsSurface(host: HTMLElement, actions: DefsActions): DefsS
|
|
|
218
214
|
scope.addRequired = view.addRequired;
|
|
219
215
|
scope.addState = view.addState;
|
|
220
216
|
scope.addType = view.addType;
|
|
217
|
+
scope.defs = view.defs;
|
|
221
218
|
scope.editorState = view.editorState;
|
|
222
219
|
scope.fields = view.fields;
|
|
223
220
|
scope.formatOptions = view.formatOptions;
|
|
224
221
|
scope.newName = view.newName;
|
|
225
222
|
scope.newState = view.newState;
|
|
226
223
|
scope.selected = view.selected;
|
|
227
|
-
scope.shapes = view.shapes;
|
|
228
224
|
scope.targets = view.targets;
|
|
229
225
|
scope.typeOptions = view.typeOptions;
|
|
230
226
|
},
|
|
@@ -19,23 +19,16 @@
|
|
|
19
19
|
import { reactive } from "../reactivity";
|
|
20
20
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
21
21
|
import deployDoc from "./settings-deploy.json";
|
|
22
|
-
import type {
|
|
23
|
-
import type { SurfaceHandle } from "../ui/surface";
|
|
22
|
+
import type { SurfaceHandle, SurfaceOption } from "../ui/surface";
|
|
24
23
|
|
|
25
|
-
registerSurface("settings-deploy", deployDoc
|
|
26
|
-
|
|
27
|
-
/** One row of the adapter picker. */
|
|
28
|
-
export interface DeployChoice {
|
|
29
|
-
value: string;
|
|
30
|
-
label: string;
|
|
31
|
-
}
|
|
24
|
+
registerSurface("settings-deploy", deployDoc);
|
|
32
25
|
|
|
33
26
|
/** What the section says the surface should be showing right now. */
|
|
34
27
|
export interface DeployValues {
|
|
35
28
|
/** The adapter the project is built with. */
|
|
36
29
|
adapter: string;
|
|
37
30
|
/** Every adapter it may be. */
|
|
38
|
-
adapters:
|
|
31
|
+
adapters: SurfaceOption[];
|
|
39
32
|
/** What the last write failed with, or `""`. */
|
|
40
33
|
error: string;
|
|
41
34
|
}
|
|
@@ -58,9 +51,9 @@ export interface DeploySurfaceHandle {
|
|
|
58
51
|
* The scope the document reads. `hasError` is derived here: `$switch` is a document's only
|
|
59
52
|
* conditional.
|
|
60
53
|
*/
|
|
61
|
-
interface DeployScope
|
|
54
|
+
interface DeployScope {
|
|
62
55
|
adapter: string;
|
|
63
|
-
adapters:
|
|
56
|
+
adapters: SurfaceOption[];
|
|
64
57
|
error: string;
|
|
65
58
|
hasError: boolean;
|
|
66
59
|
setAdapter: (value: string) => void;
|
|
@@ -91,13 +84,13 @@ export function mountDeploySurface(
|
|
|
91
84
|
values: DeployValues,
|
|
92
85
|
actions: DeployActions,
|
|
93
86
|
): DeploySurfaceHandle {
|
|
94
|
-
const scope = reactive<DeployScope>({
|
|
87
|
+
const scope: DeployScope = reactive<DeployScope>({
|
|
95
88
|
adapter: "",
|
|
96
89
|
adapters: [],
|
|
97
90
|
error: "",
|
|
98
91
|
hasError: false,
|
|
99
92
|
setAdapter: actions.setAdapter,
|
|
100
|
-
})
|
|
93
|
+
});
|
|
101
94
|
project(scope, values);
|
|
102
95
|
|
|
103
96
|
container.replaceChildren();
|
|
@@ -125,7 +118,7 @@ export function mountDeploySurface(
|
|
|
125
118
|
!disposed &&
|
|
126
119
|
(mounted === null
|
|
127
120
|
? container.childNodes.length === 0
|
|
128
|
-
:
|
|
121
|
+
: mounted.root.parentNode === container),
|
|
129
122
|
dispose() {
|
|
130
123
|
disposed = true;
|
|
131
124
|
mounted?.dispose();
|
|
@@ -26,10 +26,9 @@
|
|
|
26
26
|
import { reactive } from "../reactivity";
|
|
27
27
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
28
28
|
import extensionsDoc from "./settings-extensions.json";
|
|
29
|
-
import type { JxDocument } from "@jxsuite/schema/types";
|
|
30
29
|
import type { SurfaceHandle } from "../ui/surface";
|
|
31
30
|
|
|
32
|
-
registerSurface("settings-extensions", extensionsDoc
|
|
31
|
+
registerSurface("settings-extensions", extensionsDoc);
|
|
33
32
|
|
|
34
33
|
/** One `project.json` key an extension owns, as the chip repeater reads it. */
|
|
35
34
|
export interface ExtensionSectionView {
|
|
@@ -117,7 +116,7 @@ export interface ExtensionsSurfaceHandle {
|
|
|
117
116
|
* value already in the view, and a view that had to keep them in step would be a second place to
|
|
118
117
|
* get it wrong.
|
|
119
118
|
*/
|
|
120
|
-
interface ExtensionsScope extends
|
|
119
|
+
interface ExtensionsScope extends ExtensionsView, ExtensionsActions {
|
|
121
120
|
/** Whether to draw the groups or the sentence that says what this region is for. */
|
|
122
121
|
listState: "empty" | "groups";
|
|
123
122
|
hasError: boolean;
|
|
@@ -147,14 +146,14 @@ export function mountExtensionsSurface(
|
|
|
147
146
|
view: ExtensionsView,
|
|
148
147
|
actions: ExtensionsActions,
|
|
149
148
|
): ExtensionsSurfaceHandle {
|
|
150
|
-
const scope = reactive<ExtensionsScope>({
|
|
149
|
+
const scope: ExtensionsScope = reactive<ExtensionsScope>({
|
|
151
150
|
error: "",
|
|
152
151
|
groups: [],
|
|
153
152
|
hasError: false,
|
|
154
153
|
listState: "empty",
|
|
155
154
|
remove: actions.remove,
|
|
156
155
|
toggle: actions.toggle,
|
|
157
|
-
})
|
|
156
|
+
});
|
|
158
157
|
project(scope, view);
|
|
159
158
|
|
|
160
159
|
container.replaceChildren();
|
|
@@ -182,7 +181,7 @@ export function mountExtensionsSurface(
|
|
|
182
181
|
!disposed &&
|
|
183
182
|
(mounted === null
|
|
184
183
|
? container.childNodes.length === 0
|
|
185
|
-
:
|
|
184
|
+
: mounted.root.parentNode === container),
|
|
186
185
|
dispose() {
|
|
187
186
|
disposed = true;
|
|
188
187
|
mounted?.dispose();
|