@jxsuite/studio 4.0.0 → 5.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 +1 -1
- package/data/elements-meta.json +5 -15
- package/data/html-meta.json +51 -6
- package/dist/chunks/{2020-xp8vnwma.js → 2020-g79n01v9.js} +14 -14
- package/dist/chunks/action-group-sp6tna8v.js +118 -0
- package/dist/chunks/adapter-nj7tnjfn.js +13 -0
- package/dist/chunks/cf-account-picker-fyf63pmy.js +495 -0
- package/dist/chunks/cf-settings-71bv5zn9.js +20 -0
- package/dist/chunks/color-area-v17df7b8.js +154 -0
- package/dist/chunks/color-field-anwybnkn.js +208 -0
- package/dist/chunks/color-slider-44ez96fc.js +79 -0
- package/dist/chunks/color-xgg3kfw7.js +35 -0
- package/dist/chunks/combobox-5e7jev23.js +236 -0
- package/dist/chunks/components-2w1f35qs.js +18 -0
- package/dist/chunks/content-source-3wqeas45.js +46 -0
- package/dist/chunks/convert-to-repeater-d0cgnb6d.js +639 -0
- package/dist/chunks/dialog-s890b918.js +85 -0
- package/dist/chunks/editor-3qhbg51x.js +35 -0
- package/dist/chunks/entry-commands-d6g50j7s.js +42 -0
- package/dist/chunks/extension-sections-fy7q4fe9.js +651 -0
- package/dist/chunks/file-ops-3btj6st0.js +47 -0
- package/dist/chunks/files-ef8fgs3w.js +72 -0
- package/dist/chunks/format-host-3c33nwr8.js +40 -0
- package/dist/chunks/fs-events-13tj6sex.js +18 -0
- package/dist/chunks/git-panel-4wp2rn9b.js +49 -0
- package/dist/chunks/icons-yy10wk9r.js +402 -0
- package/dist/chunks/iframe-entry-15g3n6xv.js +114 -0
- package/dist/chunks/iframe-entry-b27vq81n.js +203 -0
- package/dist/chunks/iframe-entry-nbyxee1y.js +154 -0
- package/dist/chunks/iframe-host-jgesd924.js +115 -0
- package/dist/chunks/{index-nj44jpzj.js → index-mdmyx6s2.js} +11 -11
- package/dist/chunks/index-n4j7qxyr.js +109 -0
- package/dist/chunks/{javascript-q8kpmfah.js → javascript-xvrfrpkb.js} +8 -9
- package/dist/chunks/{jsonMode-dkr040ga.js → jsonMode-tyx2kj6p.js} +526 -527
- package/dist/chunks/jx-validate-j0wxk72w.js +15 -0
- package/dist/chunks/layers-1nq5evsh.js +29 -0
- package/dist/chunks/layers-panel-ar2gh90g.js +40 -0
- package/dist/chunks/listbox-6v2ac08j.js +44 -0
- package/dist/chunks/lit-html-m244w9nh.js +17 -0
- package/dist/chunks/media-picker-2qbetq73.js +33 -0
- package/dist/chunks/menu-q99sy9rf.js +285 -0
- package/dist/chunks/menu-rf7n72mf.js +14 -0
- package/dist/chunks/{monaco-binding-rj6xpx9y.js → monaco-binding-sw6en4dw.js} +12 -15
- package/dist/chunks/monaco-buffer-bhy3hb6m.js +24 -0
- package/dist/chunks/{monaco-setup-rws7k4br.js → monaco-setup-8r62fj6y.js} +27 -37
- package/dist/chunks/notify-628t0anh.js +21 -0
- package/dist/chunks/number-field-5cndyft8.js +72 -0
- package/dist/chunks/parse-0zx14y15.js +10 -0
- package/dist/chunks/platform-ts9cg1a4.js +15 -0
- package/dist/chunks/popover-47z3ytva.js +25 -0
- package/dist/chunks/publish-panel-98f7sr3g.js +27 -0
- package/dist/chunks/quick-search-srzz83k2.js +45 -0
- package/dist/chunks/references-n553f0e1.js +26 -0
- package/dist/chunks/right-panel-rrgx2dn3.js +45 -0
- package/dist/chunks/section-registry-5pq32t0q.js +25 -0
- package/dist/chunks/select-2r16ez41.js +49 -0
- package/dist/chunks/split-g7nm1rgb.js +191 -0
- package/dist/chunks/studio-0hqbpbd0.js +62 -0
- package/dist/chunks/studio-18avnhjp.js +2430 -0
- package/dist/chunks/{studio-kryvsw6j.js → studio-1k325pwf.js} +48 -48
- package/dist/chunks/{studio-hbtp0eh1.js → studio-25hkdrkw.js} +356 -85
- package/dist/chunks/studio-26d7myd1.js +258 -0
- package/dist/chunks/{studio-p8j86wag.js → studio-38emantv.js} +22 -5
- package/dist/chunks/studio-3gxv60tn.js +422 -0
- package/dist/chunks/{studio-8swrjbny.js → studio-3hxkd92t.js} +275 -163
- package/dist/chunks/studio-4m0haseg.js +185 -0
- package/dist/chunks/{studio-ynxwkrzd.js → studio-4wbb9ct0.js} +1953 -1785
- package/dist/chunks/{studio-gv8vvshc.js → studio-5523bpzt.js} +11 -11
- package/dist/chunks/{studio-5q69gfag.js → studio-57mf66w2.js} +1753 -2484
- package/dist/chunks/studio-5jy81t3s.js +17463 -0
- package/dist/chunks/studio-5rt7sqa0.js +1168 -0
- package/dist/chunks/studio-5te5tqng.js +81 -0
- package/dist/chunks/{studio-p4ngc046.js → studio-6ewqv390.js} +9 -9
- package/dist/chunks/{studio-9ab8gqsm.js → studio-6nzaktvy.js} +7 -7
- package/dist/chunks/studio-6xa21ej9.js +28 -0
- package/dist/chunks/{studio-5ehhackm.js → studio-727xh0e3.js} +19 -19
- package/dist/chunks/{studio-eenfkt4e.js → studio-79y5sz51.js} +52 -38
- package/dist/chunks/{studio-4q0wznzf.js → studio-7e11jpa9.js} +461 -145
- package/dist/chunks/{studio-q7v10cg2.js → studio-7r42c6ca.js} +17 -7
- package/dist/chunks/studio-7xptrg0j.js +954 -0
- package/dist/chunks/{studio-cft9r4r7.js → studio-81390n6f.js} +22 -22
- package/dist/chunks/{studio-q43a5y9h.js → studio-8jn5yhyn.js} +16 -16
- package/dist/chunks/studio-8qtrpzr3.js +839 -0
- package/dist/chunks/{studio-dg7zyt5x.js → studio-98b3z07n.js} +1 -1
- package/dist/chunks/studio-9xxz1q69.js +1356 -0
- package/dist/chunks/studio-akbww0j5.js +13615 -0
- package/dist/chunks/studio-arfpe389.js +195 -0
- package/dist/chunks/{studio-2zkz8evn.js → studio-az3zd49t.js} +473 -281
- package/dist/chunks/studio-cpvb2ed1.js +1171 -0
- package/dist/chunks/{studio-9r6j5ev1.js → studio-d0300636.js} +5078 -19
- package/dist/chunks/{studio-bgxt93ga.js → studio-d055c37e.js} +13 -13
- package/dist/chunks/studio-d1ja2x9r.js +362 -0
- package/dist/chunks/{studio-b9b6t1dg.js → studio-e1f24eff.js} +5664 -5666
- package/dist/chunks/{studio-4pqqxbrt.js → studio-em9nw8eh.js} +301 -112
- package/dist/chunks/studio-erdatzvp.js +1190 -0
- package/dist/chunks/{studio-g1wdche0.js → studio-esrxgwh6.js} +80 -80
- package/dist/chunks/studio-fabxk6r9.js +2811 -0
- package/dist/chunks/{studio-3n4ndrzh.js → studio-h4nvnjvz.js} +303 -303
- package/dist/chunks/studio-hhvs4sdg.js +195 -0
- package/dist/chunks/{studio-68n67094.js → studio-kcgff4r0.js} +15 -18
- package/dist/chunks/{studio-685s0ytq.js → studio-nqgawfks.js} +572 -572
- package/dist/chunks/{studio-xrapxwwc.js → studio-p1dw8wfw.js} +55 -29
- package/dist/chunks/studio-pm6hgy7r.js +4763 -0
- package/dist/chunks/studio-q0a3yk4n.js +33 -0
- package/dist/chunks/{studio-wcy8trfx.js → studio-q3x06vmj.js} +23 -22
- package/dist/chunks/studio-qahxvnan.js +111 -0
- package/dist/chunks/{studio-53n8bp04.js → studio-r6xmmtfh.js} +1 -1
- package/dist/chunks/{studio-kjjsjak4.js → studio-rkstz940.js} +3661 -6136
- package/dist/chunks/{studio-tvgyw9xw.js → studio-rnyf3f8e.js} +83 -250
- package/dist/chunks/studio-rpyah2ew.js +2805 -0
- package/dist/chunks/studio-rs76k67r.js +12 -0
- package/dist/chunks/{studio-yxrkyv8a.js → studio-s6z853aq.js} +12108 -11766
- package/dist/chunks/{studio-sf7zjgv1.js → studio-sgdc5pfc.js} +8 -8
- package/dist/chunks/studio-tb3ev01j.js +763 -0
- package/dist/chunks/{studio-t5wqwzdh.js → studio-tjjk7jvk.js} +1 -1
- package/dist/chunks/studio-vhv5tgxm.js +51 -0
- package/dist/chunks/{studio-htsf0w6m.js → studio-vz68yn9e.js} +31 -154
- package/dist/chunks/studio-wqpngpsk.js +174 -0
- package/dist/chunks/{studio-eesa1myv.js → studio-x3rty6tr.js} +58 -58
- package/dist/chunks/studio-xsykpvsh.js +8448 -0
- package/dist/chunks/{studio-92ab2jqe.js → studio-y9zedyjn.js} +14 -14
- package/dist/chunks/studio-yxa81f45.js +12 -0
- package/dist/chunks/swatch-group-t0n6h2rn.js +139 -0
- package/dist/chunks/tabs-wbp1cdws.js +156 -0
- package/dist/chunks/textfield-abk6qyee.js +73 -0
- package/dist/chunks/toast-780pvfbv.js +27 -0
- package/dist/chunks/toast-host-3sqv46sn.js +116 -0
- package/dist/chunks/toolbar-xbh5bhtr.js +194 -0
- package/dist/chunks/tooltip-eptb614w.js +369 -0
- package/dist/chunks/tree-a73p0pqm.js +367 -0
- package/dist/chunks/{tsMode-76kr53q0.js → tsMode-jy4m86rv.js} +83 -85
- package/dist/chunks/workspace-wrew8zk4.js +69 -0
- package/dist/chunks/{ws-client-6shc5rze.js → ws-client-ny4zc51r.js} +20 -22
- package/dist/iframe-entry.js +1812 -698
- package/dist/manifest.json +7 -0
- package/dist/studio.js +52900 -36573
- package/dist/workers/editor.worker.js +1040 -1085
- package/dist/workers/json.worker.js +1946 -1991
- package/dist/workers/ts.worker.js +4960 -5005
- package/favicon.ico +0 -0
- package/index.html +2 -0
- package/package.json +22 -55
- package/src/about/about-modal.ts +73 -123
- package/src/browse/library-commands.ts +20 -49
- package/src/browse/library-layouts.ts +87 -218
- package/src/browse/library-pane.ts +406 -438
- package/src/canvas/canvas-helpers.ts +0 -49
- package/src/canvas/canvas-live-render.ts +25 -2
- package/src/canvas/canvas-render.ts +666 -231
- package/src/canvas/canvas-surface.ts +0 -1
- package/src/canvas/canvas-utils.ts +310 -117
- package/src/canvas/dialog-path.ts +76 -0
- package/src/canvas/dialog-state.ts +67 -0
- package/src/canvas/diff-marks.ts +252 -0
- package/src/canvas/diff-toolbar.ts +349 -0
- package/src/canvas/diff-view.ts +123 -0
- package/src/canvas/edit-width-drag.ts +187 -0
- package/src/canvas/edit-width.ts +150 -0
- package/src/canvas/iframe-entry.ts +125 -8
- package/src/canvas/iframe-host.ts +271 -15
- package/src/canvas/iframe-interaction.ts +133 -13
- package/src/canvas/iframe-patch.ts +7 -1
- package/src/canvas/iframe-position.ts +5 -6
- package/src/canvas/iframe-protocol.ts +106 -5
- package/src/canvas/iframe-render.ts +373 -5
- package/src/canvas/iframe-slash.ts +2 -2
- package/src/canvas/iframe-subtree.ts +5 -8
- package/src/canvas/path-mapping.ts +25 -3
- package/src/canvas/popover-path.ts +106 -0
- package/src/canvas/popover-state.ts +155 -0
- package/src/canvas/surface-registry.ts +21 -10
- package/src/collab/presence-chips.ts +51 -73
- package/src/commands/app-commands.ts +10 -0
- package/src/commands/budget.ts +12 -0
- package/src/commands/command-args.ts +369 -6
- package/src/commands/defaults.ts +44 -14
- package/src/commands/live-context.ts +11 -5
- package/src/commands/reference.ts +12 -2
- package/src/commands/registry.ts +165 -8
- package/src/content/entry-commands.ts +16 -23
- package/src/content/entry-editor.ts +144 -101
- package/src/editor/canvas-slash-bridge.ts +2 -2
- package/src/editor/context-menu.ts +49 -200
- package/src/editor/convert-to-component.ts +42 -82
- package/src/editor/convert-to-repeater.ts +132 -173
- package/src/editor/inline-edit.ts +11 -0
- package/src/editor/shortcuts.ts +65 -26
- package/src/editor/slash-menu.ts +150 -157
- package/src/files/file-ops.ts +117 -11
- package/src/files/files.ts +949 -664
- package/src/files/json-layout.ts +474 -0
- package/src/files/media-paths.ts +13 -42
- package/src/files/media-usage.ts +41 -131
- package/src/files/serialize-document.ts +8 -1
- package/src/format/convert-file.ts +16 -10
- package/src/format/format-host.ts +50 -1
- package/src/github/github-auth.ts +71 -29
- package/src/github/github-publish.ts +57 -65
- package/src/grid/cell-editors.ts +46 -4
- package/src/grid/cell-popovers.ts +65 -62
- package/src/grid/grid-open.ts +86 -64
- package/src/grid/grid-panel.ts +390 -469
- package/src/grid/redirects-grid.ts +40 -44
- package/src/hosting/document.ts +2 -0
- package/src/hosting/layout.ts +10 -0
- package/src/i18n/i18n-commands.ts +127 -62
- package/src/media/media-pane.ts +83 -133
- package/src/new-project/add-repo-modal.ts +125 -176
- package/src/new-project/import-tab.ts +201 -250
- package/src/new-project/location-fields.ts +101 -165
- package/src/new-project/new-project-modal.ts +376 -367
- package/src/packages/jxsuite-update.ts +76 -18
- package/src/panels/activity-panel.ts +137 -104
- package/src/panels/ai-chat/chat-markdown.ts +15 -13
- package/src/panels/ai-chat/chat-view.ts +307 -472
- package/src/panels/ai-chat/composer.ts +175 -153
- package/src/panels/ai-chat/sessions-view.ts +31 -62
- package/src/panels/ai-panel.ts +210 -185
- package/src/panels/block-action-bar.ts +437 -643
- package/src/panels/bottom-dock.ts +112 -47
- package/src/panels/chat-panel.ts +19 -14
- package/src/panels/data-explorer.ts +141 -102
- package/src/panels/data-grid.ts +183 -150
- package/src/panels/dnd.ts +75 -20
- package/src/panels/editors.ts +26 -19
- package/src/panels/elements-panel.ts +243 -186
- package/src/panels/empty-state.ts +26 -42
- package/src/panels/events-panel.ts +950 -729
- package/src/panels/formula-workspace.ts +434 -207
- package/src/panels/frontmatter-fields.ts +185 -153
- package/src/panels/frontmatter-panel.ts +411 -187
- package/src/panels/git-diff-open.ts +148 -0
- package/src/panels/git-panel.ts +679 -605
- package/src/panels/head-panel.ts +617 -435
- package/src/panels/i18n-panel.ts +153 -133
- package/src/panels/imports-panel.ts +388 -414
- package/src/panels/jump-bar.ts +174 -147
- package/src/panels/layers-panel.ts +785 -671
- package/src/panels/left-panel.ts +166 -94
- package/src/panels/navigator-panels.ts +1 -1
- package/src/panels/pane-context.ts +529 -677
- package/src/panels/pane-grid.ts +265 -241
- package/src/panels/panel-registry.ts +15 -4
- package/src/panels/problems-panel.ts +177 -99
- package/src/panels/properties-panel.ts +1525 -966
- package/src/panels/provenance.ts +31 -113
- package/src/panels/quick-search.ts +217 -172
- package/src/panels/right-panel.ts +135 -169
- package/src/panels/seo-modal.ts +346 -167
- package/src/panels/settings-menu.ts +109 -646
- package/src/panels/settings-pane.ts +102 -86
- package/src/panels/signals-panel.ts +1318 -1172
- package/src/panels/statement-editor.ts +556 -428
- package/src/panels/style-panel.ts +1367 -630
- package/src/panels/style-utils.ts +36 -32
- package/src/panels/stylebook-doc.ts +30 -73
- package/src/panels/stylebook-layers-panel.ts +202 -109
- package/src/panels/stylebook-panel.ts +124 -88
- package/src/panels/tab-strip.ts +385 -287
- package/src/platforms/cloud.ts +347 -86
- package/src/platforms/devserver.ts +13 -0
- package/src/publish/deploy-checklist.ts +124 -78
- package/src/publish/publish-commands.ts +4 -12
- package/src/publish/publish-panel.ts +165 -299
- package/src/services/a11y-report.ts +100 -43
- package/src/services/ai-command-tools.ts +468 -0
- package/src/services/ai-import-tools.ts +50 -12
- package/src/services/ai-models.ts +108 -1
- package/src/services/ai-session-store.ts +6 -0
- package/src/services/ai-system-prompt.ts +110 -18
- package/src/services/ai-tools.ts +28 -143
- package/src/services/ai-write-report.ts +174 -0
- package/src/services/context-manager.ts +12 -1
- package/src/services/document-assistant.ts +50 -2
- package/src/services/idle.ts +16 -14
- package/src/services/live-surfaces.ts +237 -0
- package/src/services/model-uri.ts +75 -0
- package/src/services/notify.ts +63 -6
- package/src/services/popover-report.ts +325 -0
- package/src/services/surface-registry.ts +56 -0
- package/src/services/tool-executor.ts +17 -0
- package/src/settings/contexts-section.ts +301 -299
- package/src/settings/contributed-section.ts +361 -222
- package/src/settings/css-vars-editor.ts +320 -325
- package/src/settings/defs-editor.ts +572 -535
- package/src/settings/dependencies-editor.ts +79 -107
- package/src/settings/extension-commands.ts +379 -0
- package/src/settings/extension-rows.ts +113 -0
- package/src/settings/extensions-section.ts +287 -0
- package/src/settings/general-settings.ts +130 -181
- package/src/settings/head-editor.ts +10 -305
- package/src/settings/locales-section.ts +146 -196
- package/src/settings/preferences-accounts.ts +193 -12
- package/src/settings/preferences-dialog.ts +384 -307
- package/src/settings/project-sections.ts +108 -181
- package/src/settings/schema-field-ui.ts +11 -399
- package/src/settings/section-registry.ts +8 -1
- package/src/settings/settings-document.ts +31 -29
- package/src/shell/tree.ts +42 -87
- package/src/shell.ts +48 -36
- package/src/studio.ts +90 -67
- package/src/style/token-ref.ts +0 -39
- package/src/surfaces/about.json +263 -0
- package/src/surfaces/about.ts +163 -0
- package/src/surfaces/add-repo.json +486 -0
- package/src/surfaces/add-repo.ts +236 -0
- package/src/surfaces/ai-chat.json +2185 -0
- package/src/surfaces/ai-chat.ts +549 -0
- package/src/surfaces/ai-credentials-form.json +332 -0
- package/src/surfaces/ai-credentials-form.ts +151 -0
- package/src/surfaces/ai-managed-connect.json +108 -0
- package/src/surfaces/ai-managed-connect.ts +123 -0
- package/src/surfaces/ai-model-picker.json +114 -0
- package/src/surfaces/ai-model-picker.ts +139 -0
- package/src/surfaces/block-action-bar.json +640 -0
- package/src/surfaces/block-action-bar.ts +368 -0
- package/src/surfaces/bottom-dock.json +154 -0
- package/src/surfaces/bottom-dock.ts +125 -0
- package/src/surfaces/canvas-stage.json +444 -0
- package/src/surfaces/canvas-stage.ts +253 -0
- package/src/surfaces/cf-account-picker.json +300 -0
- package/src/surfaces/cf-account-picker.ts +214 -0
- package/src/surfaces/commandbar.json +984 -0
- package/src/{panels/toolbar.ts → surfaces/commandbar.ts} +414 -389
- package/src/surfaces/convert-repeater.json +309 -0
- package/src/surfaces/convert-repeater.ts +276 -0
- package/src/surfaces/data-actions.json +157 -0
- package/src/surfaces/data-actions.ts +115 -0
- package/src/surfaces/dialog.json +289 -0
- package/src/surfaces/dialog.ts +343 -0
- package/src/surfaces/diff-toolbar.json +266 -0
- package/src/surfaces/diff-toolbar.ts +139 -0
- package/src/surfaces/doc-header.json +739 -0
- package/src/surfaces/doc-header.ts +223 -0
- package/src/surfaces/empty-state.json +152 -0
- package/src/surfaces/empty-state.ts +173 -0
- package/src/surfaces/entry-editor.json +281 -0
- package/src/surfaces/entry-editor.ts +191 -0
- package/src/surfaces/expression-editor.json +977 -0
- package/src/surfaces/expression-editor.ts +266 -0
- package/src/surfaces/files-panel.json +592 -0
- package/src/surfaces/files-panel.ts +301 -0
- package/src/surfaces/formula-palette.json +364 -0
- package/src/surfaces/formula-palette.ts +340 -0
- package/src/surfaces/git-panel.json +1822 -0
- package/src/surfaces/git-panel.ts +272 -0
- package/src/surfaces/github-auth.json +112 -0
- package/src/surfaces/github-auth.ts +139 -0
- package/src/surfaces/github-publish.json +206 -0
- package/src/surfaces/github-publish.ts +169 -0
- package/src/surfaces/grid-cell.json +218 -0
- package/src/surfaces/grid-cell.ts +120 -0
- package/src/surfaces/grid-open.json +147 -0
- package/src/surfaces/grid-open.ts +87 -0
- package/src/surfaces/grid-panel.json +706 -0
- package/src/surfaces/grid-panel.ts +206 -0
- package/src/surfaces/grid-replace.json +179 -0
- package/src/surfaces/grid-replace.ts +89 -0
- package/src/surfaces/grid-views.json +446 -0
- package/src/surfaces/grid-views.ts +172 -0
- package/src/surfaces/inspector-dock.json +187 -0
- package/src/surfaces/inspector-dock.ts +161 -0
- package/src/surfaces/jump-bar.json +243 -0
- package/src/surfaces/jump-bar.ts +129 -0
- package/src/surfaces/jxsuite-update.json +146 -0
- package/src/surfaces/jxsuite-update.ts +149 -0
- package/src/surfaces/library-pane.json +1509 -0
- package/src/surfaces/library-pane.ts +363 -0
- package/src/surfaces/logic-panel.json +1949 -0
- package/src/surfaces/logic-panel.ts +369 -0
- package/src/surfaces/logic-workspace.json +685 -0
- package/src/surfaces/logic-workspace.ts +238 -0
- package/src/surfaces/media-browser.json +303 -0
- package/src/surfaces/media-browser.ts +145 -0
- package/src/surfaces/media-field.json +163 -0
- package/src/surfaces/media-field.ts +116 -0
- package/src/surfaces/media-pane.json +513 -0
- package/src/surfaces/media-pane.ts +197 -0
- package/src/surfaces/menu.json +232 -0
- package/src/surfaces/menu.ts +375 -0
- package/src/surfaces/navigator-dock.json +113 -0
- package/src/surfaces/navigator-dock.ts +130 -0
- package/src/surfaces/new-project.json +1654 -0
- package/src/surfaces/new-project.ts +411 -0
- package/src/surfaces/palette.json +535 -0
- package/src/surfaces/pane-context.json +1497 -0
- package/src/surfaces/pane-context.ts +513 -0
- package/src/surfaces/pane-grid.json +188 -0
- package/src/surfaces/pane-grid.ts +250 -0
- package/src/surfaces/panel-activity.json +563 -0
- package/src/surfaces/panel-activity.ts +187 -0
- package/src/surfaces/panel-data.json +141 -0
- package/src/surfaces/panel-data.ts +156 -0
- package/src/surfaces/panel-deploy-checklist.json +283 -0
- package/src/surfaces/panel-deploy-checklist.ts +175 -0
- package/src/surfaces/panel-elements.json +367 -0
- package/src/surfaces/panel-elements.ts +175 -0
- package/src/surfaces/panel-i18n.json +569 -0
- package/src/surfaces/panel-i18n.ts +212 -0
- package/src/surfaces/panel-imports.json +780 -0
- package/src/surfaces/panel-imports.ts +209 -0
- package/src/surfaces/panel-outline.json +734 -0
- package/src/surfaces/panel-outline.ts +326 -0
- package/src/surfaces/panel-page.json +1017 -0
- package/src/surfaces/panel-page.ts +240 -0
- package/src/surfaces/panel-problems.json +497 -0
- package/src/surfaces/panel-problems.ts +157 -0
- package/src/surfaces/panel-signals.json +1973 -0
- package/src/surfaces/panel-signals.ts +436 -0
- package/src/surfaces/panel-stylebook-layers.json +317 -0
- package/src/surfaces/panel-stylebook-layers.ts +155 -0
- package/src/surfaces/preferences.json +850 -0
- package/src/surfaces/preferences.ts +332 -0
- package/src/surfaces/progress-modal.json +110 -0
- package/src/surfaces/progress-modal.ts +150 -0
- package/src/surfaces/properties-panel.json +1578 -0
- package/src/surfaces/properties-panel.ts +337 -0
- package/src/surfaces/publish.json +945 -0
- package/src/surfaces/publish.ts +392 -0
- package/src/surfaces/push-plan.json +110 -0
- package/src/surfaces/push-plan.ts +87 -0
- package/src/surfaces/rail.json +255 -0
- package/src/surfaces/rail.ts +206 -0
- package/src/surfaces/reference-field.json +191 -0
- package/src/surfaces/reference-field.ts +168 -0
- package/src/surfaces/schema-builder.json +1011 -0
- package/src/surfaces/schema-builder.ts +181 -0
- package/src/surfaces/schema-form.json +1013 -0
- package/src/surfaces/schema-form.ts +287 -0
- package/src/surfaces/secret-field.json +60 -0
- package/src/surfaces/secret-field.ts +146 -0
- package/src/surfaces/seo.json +932 -0
- package/src/surfaces/seo.ts +334 -0
- package/src/surfaces/settings-contexts.json +538 -0
- package/src/surfaces/settings-contexts.ts +196 -0
- package/src/surfaces/settings-contributed.json +489 -0
- package/src/surfaces/settings-contributed.ts +199 -0
- package/src/surfaces/settings-css-vars.json +820 -0
- package/src/surfaces/settings-css-vars.ts +199 -0
- package/src/surfaces/settings-defs.json +1363 -0
- package/src/surfaces/settings-defs.ts +232 -0
- package/src/surfaces/settings-deploy.json +108 -0
- package/src/surfaces/settings-deploy.ts +135 -0
- package/src/surfaces/settings-extensions.json +486 -0
- package/src/surfaces/settings-extensions.ts +201 -0
- package/src/surfaces/settings-head.json +779 -0
- package/src/surfaces/settings-head.ts +397 -0
- package/src/surfaces/settings-locales.json +420 -0
- package/src/surfaces/settings-locales.ts +137 -0
- package/src/surfaces/settings-overview.json +423 -0
- package/src/surfaces/settings-overview.ts +218 -0
- package/src/surfaces/settings-packages.json +549 -0
- package/src/surfaces/settings-packages.ts +158 -0
- package/src/surfaces/settings-pane.json +147 -0
- package/src/surfaces/settings-pane.ts +150 -0
- package/src/surfaces/settings-rawjson.json +104 -0
- package/src/surfaces/settings-rawjson.ts +107 -0
- package/src/surfaces/shell.json +99 -0
- package/src/surfaces/shell.ts +30 -0
- package/src/surfaces/slash-menu.json +180 -0
- package/src/surfaces/slash-menu.ts +272 -0
- package/src/surfaces/statements.json +607 -0
- package/src/surfaces/statements.ts +238 -0
- package/src/surfaces/statusbar.json +94 -0
- package/src/{panels → surfaces}/statusbar.ts +163 -90
- package/src/surfaces/style-panel.json +1643 -0
- package/src/surfaces/style-panel.ts +338 -0
- package/src/surfaces/stylebook-chrome.json +122 -0
- package/src/surfaces/stylebook-chrome.ts +122 -0
- package/src/surfaces/tab-strip.json +448 -0
- package/src/surfaces/tab-strip.ts +200 -0
- package/src/surfaces/target-line.json +419 -0
- package/src/surfaces/target-line.ts +349 -0
- package/src/surfaces/toasts.json +189 -0
- package/src/surfaces/welcome.json +571 -0
- package/src/surfaces/welcome.ts +338 -0
- package/src/tabs/project-config.ts +71 -15
- package/src/tabs/tab.ts +52 -1
- package/src/types.ts +49 -3
- package/src/ui/ai-credentials-form.ts +104 -100
- package/src/ui/ai-managed-connect.ts +116 -49
- package/src/ui/ai-model-picker.ts +102 -47
- package/src/ui/cf-account-picker.ts +135 -0
- package/src/ui/color-selector.ts +80 -301
- package/src/ui/dynamic-slot.ts +43 -283
- package/src/ui/expression-editor.ts +797 -576
- package/src/ui/field-input.ts +8 -181
- package/src/ui/form-controls.ts +838 -366
- package/src/ui/formula-chips.ts +80 -85
- package/src/ui/kit.ts +33 -0
- package/src/ui/layers.ts +293 -593
- package/src/ui/media-picker.ts +203 -284
- package/src/ui/panel-resize.ts +251 -64
- package/src/ui/popover-surface.ts +153 -0
- package/src/ui/progress-modal.ts +22 -60
- package/src/ui/regions.ts +13 -7
- package/src/ui/schema-form.ts +906 -440
- package/src/ui/surface.ts +122 -0
- package/src/ui/unit-selector.ts +15 -131
- package/src/ui/value-source.ts +14 -0
- package/src/ui/virtual-window.ts +88 -9
- package/src/utils/canvas-media.ts +72 -0
- package/src/utils/edit-display.ts +7 -2
- package/src/utils/element-selectors.ts +69 -0
- package/src/utils/link-target.ts +2 -2
- package/src/utils/studio-utils.ts +0 -10
- package/src/view.ts +15 -0
- package/src/workspace/pane-derive.ts +36 -14
- package/src/workspace/workspace.ts +15 -6
- package/styles/canvas.css +72 -467
- package/styles/forced-colors.css +48 -82
- package/styles/forced-colors.json +41 -0
- package/styles/inspector.css +2 -1301
- package/styles/overlays.css +96 -2823
- package/styles/panels.css +6 -1423
- package/styles/shell-frame.css +272 -0
- package/styles/shell-frame.json +227 -0
- package/styles/shell.css +0 -1532
- package/styles/tokens.css +65 -136
- package/styles/tokens.json +84 -0
- package/dist/chunks/Overlay.dev-723bv0df.js +0 -23
- package/dist/chunks/adapter-jkcyhgtr.js +0 -14
- package/dist/chunks/cf-settings-45fgyx8y.js +0 -21
- package/dist/chunks/components-zmx10t62.js +0 -21
- package/dist/chunks/content-source-t88vb2dr.js +0 -49
- package/dist/chunks/convert-to-repeater-dhw1nrz9.js +0 -268
- package/dist/chunks/editor-cptq5jp1.js +0 -37
- package/dist/chunks/entry-commands-6z6bhxg0.js +0 -46
- package/dist/chunks/extension-sections-3ydgjbdy.js +0 -311
- package/dist/chunks/file-ops-rskmhxyq.js +0 -48
- package/dist/chunks/files-0cratsr0.js +0 -92
- package/dist/chunks/flow-qbfgrpeh.js +0 -634
- package/dist/chunks/focus-trap.esm-ggawf1hy.js +0 -1024
- package/dist/chunks/focus-visible-6eg70z18.js +0 -167
- package/dist/chunks/format-host-tgcmfs4p.js +0 -43
- package/dist/chunks/fs-events-hrrg328g.js +0 -21
- package/dist/chunks/git-panel-0yywyk76.js +0 -58
- package/dist/chunks/index-zqxmqxmh.js +0 -109
- package/dist/chunks/jx-validate-8q2g05x1.js +0 -19
- package/dist/chunks/layers-panel-z3tqe5cd.js +0 -67
- package/dist/chunks/layers-q75tj2mf.js +0 -45
- package/dist/chunks/lit-html-j055mkh8.js +0 -22
- package/dist/chunks/monaco-buffer-dqw0xxpx.js +0 -25
- package/dist/chunks/notify-yjm79n4s.js +0 -30
- package/dist/chunks/parse-24d0gay3.js +0 -19
- package/dist/chunks/platform-ba1j1gbh.js +0 -16
- package/dist/chunks/publish-panel-54jvhskq.js +0 -28
- package/dist/chunks/quick-search-cgfmjwq5.js +0 -65
- package/dist/chunks/references-3qx8fkyp.js +0 -29
- package/dist/chunks/right-panel-cqp8bc4v.js +0 -46
- package/dist/chunks/section-registry-sx1ykvkw.js +0 -30
- package/dist/chunks/sp-overlay.dev-yztmtrs1.js +0 -18
- package/dist/chunks/sp-popover.dev-n2etmqdp.js +0 -9
- package/dist/chunks/sp-progress-circle.dev-hryhj0es.js +0 -15
- package/dist/chunks/sp-tooltip.dev-xcvpnqr0.js +0 -15
- package/dist/chunks/sp-tray.dev-tkbscm06.js +0 -199
- package/dist/chunks/studio-0a5qrh01.js +0 -3
- package/dist/chunks/studio-18j3bmcz.js +0 -14
- package/dist/chunks/studio-1hbqnt19.js +0 -1823
- package/dist/chunks/studio-4rzyrtjz.js +0 -426
- package/dist/chunks/studio-5rywrkxz.js +0 -1903
- package/dist/chunks/studio-7afd21nw.js +0 -67
- package/dist/chunks/studio-7nte2hj4.js +0 -613
- package/dist/chunks/studio-8jpzqk5s.js +0 -128
- package/dist/chunks/studio-8q517dfr.js +0 -24
- package/dist/chunks/studio-9c4k4vhv.js +0 -357
- package/dist/chunks/studio-9n4mrmnb.js +0 -184
- package/dist/chunks/studio-a0tswy0w.js +0 -58
- package/dist/chunks/studio-ahjfdy6e.js +0 -387
- package/dist/chunks/studio-ahnzd9rg.js +0 -23
- package/dist/chunks/studio-bw5dz6km.js +0 -608
- package/dist/chunks/studio-cb12yz9w.js +0 -15055
- package/dist/chunks/studio-d1ks410h.js +0 -175
- package/dist/chunks/studio-eqq1w638.js +0 -113
- package/dist/chunks/studio-ex8zyp98.js +0 -1813
- package/dist/chunks/studio-h4rxscfc.js +0 -10
- package/dist/chunks/studio-kyh9avvv.js +0 -28
- package/dist/chunks/studio-kyk2v92a.js +0 -659
- package/dist/chunks/studio-m3hwn7y1.js +0 -120
- package/dist/chunks/studio-mmv72a27.js +0 -4344
- package/dist/chunks/studio-n8b9wqwy.js +0 -291
- package/dist/chunks/studio-pdfjntbk.js +0 -6939
- package/dist/chunks/studio-qq6jym04.js +0 -53
- package/dist/chunks/studio-r1r7afxx.js +0 -1066
- package/dist/chunks/studio-rdx8jcxy.js +0 -83
- package/dist/chunks/studio-rn9ta2mz.js +0 -111
- package/dist/chunks/studio-t7qb9db8.js +0 -665
- package/dist/chunks/studio-tmc5emrw.js +0 -8
- package/dist/chunks/studio-txwkm6p9.js +0 -12
- package/dist/chunks/studio-v38hmvx1.js +0 -390
- package/dist/chunks/studio-vadzgkrz.js +0 -318
- package/dist/chunks/studio-wx5609xd.js +0 -341
- package/dist/chunks/studio-z6nw2ek2.js +0 -18
- package/dist/chunks/studio-zczps70q.js +0 -378
- package/dist/chunks/workspace-xpres40v.js +0 -89
- package/src/panels/activity-bar.ts +0 -251
- package/src/panels/panel-scheduler.ts +0 -219
- package/src/panels/style-inputs.ts +0 -237
- package/src/panels/target-line.ts +0 -274
- package/src/panels/welcome-screen.ts +0 -346
- package/src/ui/button-group.ts +0 -102
- package/src/ui/choice-field.ts +0 -72
- package/src/ui/field-row.ts +0 -249
- package/src/ui/formula-palette.ts +0 -213
- package/src/ui/icons.ts +0 -52
- package/src/ui/jx-theme.ts +0 -130
- package/src/ui/spectrum.ts +0 -340
- package/src/ui/value-selector.ts +0 -174
- package/src/ui/widgets.ts +0 -172
- /package/dist/chunks/{javascript-s56a8dpk.css → javascript-4abzjcy9.css} +0 -0
- /package/dist/chunks/{jsonMode-zr9sw0c7.css → jsonMode-vvmpmk34.css} +0 -0
- /package/dist/chunks/{monaco-setup-pav68602.css → monaco-setup-8vbyqnhr.css} +0 -0
- /package/dist/chunks/{tsMode-ef187txx.css → tsMode-hnxxb73h.css} +0 -0
|
@@ -7,45 +7,40 @@
|
|
|
7
7
|
* grid column it used to own — which is the point of plan §3.2 ⑨: an inspector tab costs zero
|
|
8
8
|
* additional width, so the canvas gets the ~300px back and the assistant is still one key away.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* **This file no longer draws anything.** The dock's markup, its ARIA and its style are
|
|
11
|
+
* `surfaces/inspector-dock.json`, mounted through `surfaces/inspector-dock.ts`; what is left here
|
|
12
|
+
* is the flow — which tab is selected, what the tab is pointed at, and which of the four seams each
|
|
13
|
+
* body host is handed to. Two things came out of the move:
|
|
11
14
|
*
|
|
12
|
-
* - **The
|
|
13
|
-
*
|
|
14
|
-
* `
|
|
15
|
-
*
|
|
16
|
-
* - **The containers are permanent
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* - **The strip is a real `tablist`.** It was `sp-tabs` with no `tabpanel` on the other end, so the
|
|
16
|
+
* four bodies were anonymous scrolling divs: a screen reader was told a tab was selected and
|
|
17
|
+
* never told what it controlled. `jx-tabs` / `jx-tab` / `jx-tab-panel` pair `aria-controls` with
|
|
18
|
+
* `aria-labelledby` from one key, which is what closes `gap:apg-coverage` for this strip.
|
|
19
|
+
* - **The containers are permanent by construction.** They were hand-built once and remembered in a
|
|
20
|
+
* module `Map`, because a repaint that rebuilt them would drop the Assistant's transcript and
|
|
21
|
+
* composer draft. They are now rows of a keyed `$map` over a CONSTANT list, so nothing can
|
|
22
|
+
* rebuild them — see `surfaces/inspector-dock.ts`.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* The heavy sub-templates (properties, style) remain in their own modules and are passed the ctx
|
|
26
|
-
* they need.
|
|
24
|
+
* **And the panel scheduler went with it.** Its focus guard existed because a lit repaint takes the
|
|
25
|
+
* node a reader is typing into; a document skips a write that resolved to the value the control
|
|
26
|
+
* already holds, so there is nothing to withhold.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
import { html, render as litRender } from "lit-html";
|
|
30
29
|
import { getNodeAtPath, nodeLabel, rightPanel } from "../store";
|
|
31
30
|
import { effect, effectScope, reactive } from "../reactivity";
|
|
32
|
-
import { createPanelScheduler } from "./panel-scheduler";
|
|
33
|
-
import type { PanelScheduler } from "./panel-scheduler";
|
|
34
31
|
import { activeTab } from "../workspace/workspace";
|
|
35
32
|
import { primarySelection } from "../tabs/selection";
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import { isCustomElementDoc } from "./signals-panel";
|
|
33
|
+
import { bindLogicPanelHost } from "./events-panel";
|
|
34
|
+
import { bindContentHost } from "./properties-panel";
|
|
39
35
|
|
|
40
36
|
import { DEFAULT_INSPECTOR_TAB, isInspectorTabId, shell } from "../shell";
|
|
41
37
|
import { INSPECTOR_TABS } from "../commands/defaults";
|
|
42
|
-
import { inspectorTabRegion
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import { renderPropertiesPanelTemplate } from "./properties-panel";
|
|
38
|
+
import { inspectorTabRegion } from "../ui/regions";
|
|
39
|
+
import { bindStyleHost } from "./style-panel";
|
|
40
|
+
import { mountInspectorDock } from "../surfaces/inspector-dock";
|
|
46
41
|
|
|
42
|
+
import type { InspectorDockHandle, InspectorTabView } from "../surfaces/inspector-dock";
|
|
47
43
|
import type { InspectorTabId } from "../shell";
|
|
48
|
-
import type { TemplateResult } from "lit-html";
|
|
49
44
|
import type { EffectScope } from "@vue/reactivity";
|
|
50
45
|
|
|
51
46
|
interface RightPanelCtx {
|
|
@@ -62,11 +57,9 @@ interface RightPanelCtx {
|
|
|
62
57
|
mountAssistant: (host: HTMLElement) => void;
|
|
63
58
|
}
|
|
64
59
|
|
|
65
|
-
let _ctx: RightPanelCtx | null = null;
|
|
66
|
-
|
|
67
60
|
let _scope: EffectScope | null = null;
|
|
68
61
|
|
|
69
|
-
let
|
|
62
|
+
let _dock: InspectorDockHandle | null = null;
|
|
70
63
|
|
|
71
64
|
/**
|
|
72
65
|
* The selected tab while NO document is open.
|
|
@@ -82,19 +75,93 @@ let _scheduler: PanelScheduler | null = null;
|
|
|
82
75
|
*/
|
|
83
76
|
const _detached = reactive({ tab: DEFAULT_INSPECTOR_TAB as InspectorTabId });
|
|
84
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Hand one tab's body host to its owner, once, and never let that stop the dock.
|
|
80
|
+
*
|
|
81
|
+
* **The boundary is load-bearing, and it moved.** The dock used to build its containers inside its
|
|
82
|
+
* own render, under a `try` that had already painted the header and the strip — so a tab whose bind
|
|
83
|
+
* threw left a dock that was still navigable and the reader could leave the tab that failed. A
|
|
84
|
+
* binder now runs inside `onNodeCreated`, which is the runtime building the document: an error
|
|
85
|
+
* there rejects the whole mount, and the dock that could not draw ONE tab would draw NO chrome at
|
|
86
|
+
* all. So the boundary is here, around exactly the call that is somebody else's code.
|
|
87
|
+
*/
|
|
88
|
+
function bindBody(ctx: RightPanelCtx, tabId: string, host: HTMLElement): void {
|
|
89
|
+
try {
|
|
90
|
+
bindBodyUnguarded(ctx, tabId, host);
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error(`right-panel: the ${tabId} tab could not take its body:`, error);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The four seams, keyed by the tab whose body feeds them.
|
|
98
|
+
*
|
|
99
|
+
* A table rather than a chain of `if`s so that the ONE thing this module still does with a body
|
|
100
|
+
* host is stated in one place. Every entry is a binder another module published: three of them
|
|
101
|
+
* mount a document of their own into the host, and the assistant's arrives from `studio.ts` because
|
|
102
|
+
* a matching import here would be a cycle.
|
|
103
|
+
*/
|
|
104
|
+
function bindBodyUnguarded(ctx: RightPanelCtx, tabId: string, host: HTMLElement): void {
|
|
105
|
+
switch (tabId) {
|
|
106
|
+
case "assistant": {
|
|
107
|
+
/* The assistant owns its container for the life of the window: it is the mount point for the
|
|
108
|
+
Assistant's own Jx document, and rebuilding it would drop the transcript and the composer
|
|
109
|
+
draft. */
|
|
110
|
+
ctx.mountAssistant(host);
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case "events": {
|
|
114
|
+
/* Logic is a mounted document too (`surfaces/logic-panel.json`), and it watches its own facts
|
|
115
|
+
and re-projects — this dock never paints over it. */
|
|
116
|
+
bindLogicPanelHost(host);
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case "properties": {
|
|
120
|
+
/* Content needs one thing from the dock that the others do not: the way to open a component's
|
|
121
|
+
definition, which is `studio.ts`'s and reaches this module as ctx. */
|
|
122
|
+
bindContentHost(host, { navigateToComponent: ctx.navigateToComponent });
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case "style": {
|
|
126
|
+
/* The canvas mode is what the tab cannot read for itself — Stylebook edits a tag catalogue
|
|
127
|
+
entry and Edit edits the selection — so it comes in from `studio.ts` the same way the
|
|
128
|
+
Content tab's navigation door does. */
|
|
129
|
+
bindStyleHost(host, { getCanvasMode: ctx.getCanvasMode });
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
default: {
|
|
133
|
+
/* A tab id the document drew but no seam claims. Unreachable while `INSPECTOR_TABS` is what
|
|
134
|
+
both this and the document read, and stated rather than assumed: a fifth tab arriving with
|
|
135
|
+
no binder must leave an empty body, not throw inside a mount callback. */
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** The tab rows the document draws, with the selection resolved onto them. */
|
|
142
|
+
function tabViews(selected: InspectorTabId): InspectorTabView[] {
|
|
143
|
+
return INSPECTOR_TABS.map((tab) => ({
|
|
144
|
+
active: tab.id === selected,
|
|
145
|
+
key: tab.id,
|
|
146
|
+
panelId: `inspector-panel-${tab.id}`,
|
|
147
|
+
region: inspectorTabRegion(tab.id),
|
|
148
|
+
tabId: `inspector-tab-${tab.id}`,
|
|
149
|
+
title: tab.title,
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
|
|
85
153
|
/**
|
|
86
154
|
* Mount the right panel.
|
|
87
155
|
*
|
|
88
156
|
* @param {RightPanelCtx} ctx
|
|
89
157
|
*/
|
|
90
158
|
export function mount(ctx: RightPanelCtx) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
_scheduler.bindFocus();
|
|
159
|
+
_dock = mountInspectorDock(
|
|
160
|
+
rightPanel,
|
|
161
|
+
values(),
|
|
162
|
+
{ selectTab: (id) => selectFromStrip(id) },
|
|
163
|
+
{ onBody: (tabId, host) => bindBody(ctx, tabId, host) },
|
|
164
|
+
);
|
|
98
165
|
_scope = effectScope();
|
|
99
166
|
_scope.run(() => {
|
|
100
167
|
effect(() => {
|
|
@@ -112,13 +179,8 @@ export function mount(ctx: RightPanelCtx) {
|
|
|
112
179
|
// Changes WITHIN the array, and §6.5's helpers always replace it but nothing enforces that.
|
|
113
180
|
void tab.session.selection.map((path) => path.join("/")).join("|");
|
|
114
181
|
void tab.session.ui.rightTab;
|
|
115
|
-
void tab.session.ui.activeMedia;
|
|
116
|
-
void tab.session.ui.activeSelector;
|
|
117
|
-
void tab.session.ui.styleSections;
|
|
118
|
-
void tab.session.ui.styleShorthands;
|
|
119
|
-
void tab.session.ui.styleFilter;
|
|
120
|
-
void tab.session.ui.inspectorSections;
|
|
121
182
|
}
|
|
183
|
+
void _detached.tab;
|
|
122
184
|
render();
|
|
123
185
|
});
|
|
124
186
|
});
|
|
@@ -127,19 +189,33 @@ export function mount(ctx: RightPanelCtx) {
|
|
|
127
189
|
export function unmount() {
|
|
128
190
|
_scope?.stop();
|
|
129
191
|
_scope = null;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
192
|
+
_dock?.dispose();
|
|
193
|
+
_dock = null;
|
|
194
|
+
// The Logic and Content tabs' documents and their watchers belong to the hosts being dropped;
|
|
195
|
+
// Nothing else hears about that, because the dock simply stops rendering.
|
|
196
|
+
bindLogicPanelHost(null);
|
|
197
|
+
bindContentHost(null);
|
|
198
|
+
bindStyleHost(null);
|
|
134
199
|
_detached.tab = DEFAULT_INSPECTOR_TAB;
|
|
135
200
|
}
|
|
136
201
|
|
|
202
|
+
/** The whole projection the document reads, built fresh from the state it names. */
|
|
203
|
+
function values() {
|
|
204
|
+
const tab = inspectorTab();
|
|
205
|
+
return {
|
|
206
|
+
tab,
|
|
207
|
+
tabs: tabViews(tab),
|
|
208
|
+
target: inspectorTarget(),
|
|
209
|
+
title: INSPECTOR_TABS.find((t) => t.id === tab)?.title ?? tab,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
137
213
|
/**
|
|
138
|
-
*
|
|
139
|
-
*
|
|
214
|
+
* Bring the dock up to date. Synchronous, and idempotent: the runtime skips a binding whose value
|
|
215
|
+
* did not move, so an explicit caller can never take a control mid-interaction.
|
|
140
216
|
*/
|
|
141
217
|
export function render() {
|
|
142
|
-
|
|
218
|
+
_dock?.update(values());
|
|
143
219
|
}
|
|
144
220
|
|
|
145
221
|
/**
|
|
@@ -172,25 +248,17 @@ export function setInspectorTab(tab: InspectorTabId): void {
|
|
|
172
248
|
render();
|
|
173
249
|
}
|
|
174
250
|
|
|
175
|
-
/**
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
251
|
+
/**
|
|
252
|
+
* A pick from the strip.
|
|
253
|
+
*
|
|
254
|
+
* The strip states a value and this decides what it means, which is why the document dispatches an
|
|
255
|
+
* id rather than writing one: an id the enum does not declare is refused here rather than becoming
|
|
256
|
+
* a dock with no tab selected.
|
|
257
|
+
*/
|
|
258
|
+
function selectFromStrip(id: string): void {
|
|
259
|
+
if (id !== "" && id !== inspectorTab() && isInspectorTabId(id)) {
|
|
260
|
+
setInspectorTab(id);
|
|
181
261
|
}
|
|
182
|
-
_containers = new Map(
|
|
183
|
-
INSPECTOR_TABS.map((t) => {
|
|
184
|
-
const el = document.createElement("div");
|
|
185
|
-
el.className = "panel-body";
|
|
186
|
-
el.setAttribute(REGION_ATTR, inspectorTabRegion(t.id));
|
|
187
|
-
return [t.id as InspectorTabId, el] as const;
|
|
188
|
-
}),
|
|
189
|
-
);
|
|
190
|
-
// The assistant owns its container for the life of the window: it is bound as lit's render host
|
|
191
|
-
// For a streaming rAF loop, and rebuilding it would drop the transcript and the composer draft.
|
|
192
|
-
ctx.mountAssistant(_containers.get("assistant")!);
|
|
193
|
-
return _containers;
|
|
194
262
|
}
|
|
195
263
|
|
|
196
264
|
/**
|
|
@@ -225,105 +293,3 @@ function inspectorTarget(): string {
|
|
|
225
293
|
const path = tab.documentPath;
|
|
226
294
|
return path ? (path.split("/").at(-1) ?? "document") : "document";
|
|
227
295
|
}
|
|
228
|
-
|
|
229
|
-
/** The dock's header: which tab you are in, and what it is pointed at. */
|
|
230
|
-
function headerTpl(tab: InspectorTabId): TemplateResult {
|
|
231
|
-
const title = INSPECTOR_TABS.find((t) => t.id === tab)?.title ?? tab;
|
|
232
|
-
return html`
|
|
233
|
-
<header class="panel-header">
|
|
234
|
-
<span class="panel-header-title">${title}</span>
|
|
235
|
-
<span class="panel-header-level">${inspectorTarget()}</span>
|
|
236
|
-
</header>
|
|
237
|
-
`;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/** The four-tab strip. Text labels: a dock you read all day should not need to be hovered. */
|
|
241
|
-
function tabsTpl(tab: InspectorTabId): TemplateResult {
|
|
242
|
-
return html`
|
|
243
|
-
<div class="panel-tabs inspector-tabs">
|
|
244
|
-
<sp-tabs
|
|
245
|
-
selected=${tab}
|
|
246
|
-
quiet
|
|
247
|
-
size="s"
|
|
248
|
-
@change=${(e: Event & { target: { selected: string } }) => {
|
|
249
|
-
const sel = e.target.selected;
|
|
250
|
-
if (sel && sel !== tab && isInspectorTabId(sel)) {
|
|
251
|
-
setInspectorTab(sel);
|
|
252
|
-
}
|
|
253
|
-
}}
|
|
254
|
-
>
|
|
255
|
-
${INSPECTOR_TABS.map((t) => html`<sp-tab value=${t.id} label=${t.title}></sp-tab>`)}
|
|
256
|
-
</sp-tabs>
|
|
257
|
-
</div>
|
|
258
|
-
`;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/** The inspector's no-document state, rendered into a document tab's own body. */
|
|
262
|
-
function noDocumentTpl(): TemplateResult {
|
|
263
|
-
return renderEmptyState({
|
|
264
|
-
actions: [openPageAction()],
|
|
265
|
-
message: "Open a page to inspect and style what you click.",
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
function _doRender() {
|
|
270
|
-
if (!_ctx) {
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
try {
|
|
274
|
-
const ctx = _ctx as RightPanelCtx;
|
|
275
|
-
const aTab = activeTab.value;
|
|
276
|
-
const tab = inspectorTab();
|
|
277
|
-
|
|
278
|
-
litRender(html`${headerTpl(tab)}${tabsTpl(tab)}`, rightPanel);
|
|
279
|
-
|
|
280
|
-
const containers = _ensureContainers(ctx);
|
|
281
|
-
// Show/hide containers, and attach any that a fresh build has not mounted yet.
|
|
282
|
-
for (const [key, el] of containers) {
|
|
283
|
-
el.style.display = key === tab ? "" : "none";
|
|
284
|
-
if (!el.parentNode) {
|
|
285
|
-
rightPanel.append(el);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
const body = containers.get(tab)!;
|
|
290
|
-
// The assistant paints itself through its own rAF loop into this very container (streaming has
|
|
291
|
-
// To repaint while the composer is focused), so the host must not render over it.
|
|
292
|
-
if (tab === "assistant") {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
if (!aTab) {
|
|
296
|
-
litRender(noDocumentTpl(), body);
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
if (tab === "properties") {
|
|
300
|
-
litRender(
|
|
301
|
-
renderPropertiesPanelTemplate({
|
|
302
|
-
navigateToComponent: ctx.navigateToComponent,
|
|
303
|
-
}),
|
|
304
|
-
body,
|
|
305
|
-
);
|
|
306
|
-
} else if (tab === "events") {
|
|
307
|
-
litRender(
|
|
308
|
-
renderLogicPanelTemplate({
|
|
309
|
-
isCustomElementDoc: () =>
|
|
310
|
-
isCustomElementDoc({
|
|
311
|
-
document: aTab.doc.document,
|
|
312
|
-
mode: aTab.doc.mode,
|
|
313
|
-
selection: aTab.session.selection,
|
|
314
|
-
ui: aTab.session.ui,
|
|
315
|
-
}),
|
|
316
|
-
}),
|
|
317
|
-
body,
|
|
318
|
-
);
|
|
319
|
-
} else {
|
|
320
|
-
try {
|
|
321
|
-
litRender(renderStylePanelTemplate({ getCanvasMode: ctx.getCanvasMode }), body);
|
|
322
|
-
} catch (error) {
|
|
323
|
-
console.error("[renderStylePanelTemplate]", error);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
} catch (error) {
|
|
327
|
-
console.error("right-panel render error:", error);
|
|
328
|
-
}
|
|
329
|
-
}
|