@jxsuite/studio 4.1.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-n6tfwnda.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-wcnt3r9g.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-vx9bhp1d.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-msd847zn.js → studio-25hkdrkw.js} +357 -86
- package/dist/chunks/studio-26d7myd1.js +258 -0
- package/dist/chunks/{studio-4r1pv6zf.js → studio-38emantv.js} +22 -5
- package/dist/chunks/studio-3gxv60tn.js +422 -0
- package/dist/chunks/{studio-fbf92ckf.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-1wagb550.js → studio-5523bpzt.js} +11 -11
- package/dist/chunks/{studio-x4qkdat5.js → studio-57mf66w2.js} +1749 -2481
- 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-ahn3pdgx.js → studio-79y5sz51.js} +52 -38
- package/dist/chunks/{studio-gcye7qka.js → studio-7e11jpa9.js} +21 -21
- 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-x813zp48.js → studio-arfpe389.js} +30 -30
- package/dist/chunks/{studio-trxrabqf.js → studio-az3zd49t.js} +475 -283
- package/dist/chunks/studio-cpvb2ed1.js +1171 -0
- package/dist/chunks/{studio-f3wqjtk5.js → studio-d0300636.js} +5076 -18
- 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-3bqpr0zh.js → studio-em9nw8eh.js} +299 -110
- 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-dm19q43r.js → studio-hhvs4sdg.js} +10 -10
- package/dist/chunks/{studio-q9jd1a60.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-2b946z26.js → studio-rkstz940.js} +3658 -6134
- 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-jkftxyvz.js → studio-s6z853aq.js} +5858 -2152
- package/dist/chunks/{studio-6yw4y3my.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-qjy2z9bv.js → studio-vz68yn9e.js} +32 -137
- package/dist/chunks/studio-wqpngpsk.js +174 -0
- package/dist/chunks/{studio-b55y6ewx.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 +1780 -667
- package/dist/studio.js +52819 -36480
- 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/index.html +1 -0
- package/package.json +18 -52
- package/src/about/about-modal.ts +72 -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 +943 -660
- package/src/files/json-layout.ts +474 -0
- 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/layout.ts +2 -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 +181 -252
- package/src/new-project/location-fields.ts +93 -160
- 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 -163
- 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 +106 -16
- 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 +134 -328
- package/src/services/a11y-report.ts +100 -43
- package/src/services/ai-command-tools.ts +468 -0
- 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/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 +6 -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 +1 -1
- package/src/settings/preferences-dialog.ts +350 -330
- 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 +22 -0
- package/src/ui/ai-credentials-form.ts +104 -100
- package/src/ui/ai-managed-connect.ts +54 -36
- package/src/ui/ai-model-picker.ts +75 -47
- package/src/ui/cf-account-picker.ts +76 -141
- 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 -1568
- package/styles/tokens.css +65 -136
- package/styles/tokens.json +84 -0
- package/dist/chunks/Overlay.dev-etqjwyf9.js +0 -23
- package/dist/chunks/adapter-jkcyhgtr.js +0 -14
- package/dist/chunks/cf-account-picker-en86v7x7.js +0 -163
- package/dist/chunks/cf-settings-45fgyx8y.js +0 -21
- package/dist/chunks/components-zmx10t62.js +0 -21
- package/dist/chunks/content-source-48xg86wj.js +0 -49
- package/dist/chunks/convert-to-repeater-43tfn7cs.js +0 -268
- package/dist/chunks/editor-cptq5jp1.js +0 -37
- package/dist/chunks/entry-commands-e63f1xc0.js +0 -46
- package/dist/chunks/extension-sections-txv08xxg.js +0 -311
- package/dist/chunks/file-ops-wbh4hhsx.js +0 -48
- package/dist/chunks/files-3kfkwhk4.js +0 -93
- package/dist/chunks/flow-qbfgrpeh.js +0 -634
- package/dist/chunks/focus-trap.esm-9t2drp0g.js +0 -1025
- package/dist/chunks/focus-visible-6eg70z18.js +0 -167
- package/dist/chunks/format-host-w16q81tf.js +0 -43
- package/dist/chunks/fs-events-hrrg328g.js +0 -21
- package/dist/chunks/git-panel-532whr1y.js +0 -59
- package/dist/chunks/index-zqxmqxmh.js +0 -109
- package/dist/chunks/jx-validate-8er6gbxy.js +0 -19
- package/dist/chunks/layers-panel-07hm7g5j.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-v9st96ja.js +0 -29
- package/dist/chunks/quick-search-zccjp6gv.js +0 -66
- package/dist/chunks/references-3qx8fkyp.js +0 -29
- package/dist/chunks/right-panel-vm3b6kwy.js +0 -46
- package/dist/chunks/section-registry-sx1ykvkw.js +0 -30
- package/dist/chunks/sp-overlay.dev-qgvhnxf4.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-4sastdnw.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-0bq6eh7v.js +0 -12
- package/dist/chunks/studio-18j3bmcz.js +0 -14
- package/dist/chunks/studio-1ngbejft.js +0 -181
- package/dist/chunks/studio-4b5z1x43.js +0 -424
- package/dist/chunks/studio-4n2b5gzb.js +0 -357
- package/dist/chunks/studio-4rzyrtjz.js +0 -426
- package/dist/chunks/studio-5fx3g9jg.js +0 -4325
- package/dist/chunks/studio-5myknm0a.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-950k0dx6.js +0 -6939
- package/dist/chunks/studio-9n4mrmnb.js +0 -184
- package/dist/chunks/studio-a0tswy0w.js +0 -58
- package/dist/chunks/studio-ahnzd9rg.js +0 -23
- package/dist/chunks/studio-cmb03bg5.js +0 -13890
- package/dist/chunks/studio-d1ks410h.js +0 -175
- package/dist/chunks/studio-ef49pnzx.js +0 -387
- package/dist/chunks/studio-eqq1w638.js +0 -113
- package/dist/chunks/studio-ew0djmhg.js +0 -341
- package/dist/chunks/studio-gfgb8pe6.js +0 -1652
- package/dist/chunks/studio-h4rxscfc.js +0 -10
- package/dist/chunks/studio-jc994dnr.js +0 -1066
- package/dist/chunks/studio-kyh9avvv.js +0 -28
- package/dist/chunks/studio-m3hwn7y1.js +0 -120
- package/dist/chunks/studio-mtfnaqs9.js +0 -659
- package/dist/chunks/studio-n6j9t10q.js +0 -318
- package/dist/chunks/studio-n8b9wqwy.js +0 -291
- package/dist/chunks/studio-qcy05dp8.js +0 -1743
- package/dist/chunks/studio-qq6jym04.js +0 -53
- 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-z6nw2ek2.js +0 -18
- package/dist/chunks/studio-zczps70q.js +0 -378
- package/dist/chunks/studio-zqazsct2.js +0 -1823
- package/dist/chunks/workspace-fjx52ryv.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
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
|
+
"$id": "StudioPanelStylebookLayers",
|
|
4
|
+
"$description": "The Outline panel while the pane is showing Project Styles: the element catalogue as a list of selectable tags, and the document's own custom properties under the other tab. The adapter hands in one flat projection per row — its badge, its name, how deep it sits, whether the open file has already styled it and whether it is the selected one — so nothing here walks the catalogue tree, reads the component registry or knows what a `& tag` style key is. A row asks the host to select the compound path it was given, by that path.",
|
|
5
|
+
"tagName": "div",
|
|
6
|
+
"attributes": {
|
|
7
|
+
"part": "stylebook-layers"
|
|
8
|
+
},
|
|
9
|
+
"style": {
|
|
10
|
+
"$description": "What `.layer-row`, `.layer-tag`, `.layer-label` and `.component-tag` said in `styles/panels.css`, keyed on `part` and carried here rather than moved: three of those four are SHARED with the Outline's own rows (`panels/layers-panel.ts`), so the stylesheet rule can only go when that surface moves too. `.component-tag` is the exception — nothing else emits it once this lands. Three Spectrum names could not come with the declarations and are the kit's instead, at the same values: `--spectrum-corner-radius-75` (2px) is `--jx-radius-xs`, `--spectrum-font-size-50` (11px) is `--jx-text-sm` and `--spectrum-font-size-75` (12px) is `--jx-text-md`. Two things changed on purpose. A ROW IS A BUTTON: it was a `<div>` with a click handler and no role, so the catalogue could not be reached from the keyboard at all, and `cursor: grab` promised a drag that has never existed here. AND THE INDENT IS A VARIABLE, for the reason `panel-data.json` gives: a per-row `padding-left` declaration interns one rule per row, while `--row-indent` is written inline under its own name and read by one shared rule.",
|
|
11
|
+
"display": "block",
|
|
12
|
+
"fontFamily": "var(--jx-font-sans)",
|
|
13
|
+
"color": "var(--fg)",
|
|
14
|
+
"& [part=\"list\"]": {
|
|
15
|
+
"display": "flex",
|
|
16
|
+
"flexDirection": "column",
|
|
17
|
+
"margin": "0",
|
|
18
|
+
"padding": "0",
|
|
19
|
+
"listStyle": "none"
|
|
20
|
+
},
|
|
21
|
+
"& [part=\"row\"]": {
|
|
22
|
+
"$description": "The 24px row the Outline declares, so the two lists line up when the pane switches between them. `block-size` rather than a height, and `box-sizing: border-box`, because the indent is padding.",
|
|
23
|
+
"display": "flex",
|
|
24
|
+
"alignItems": "center",
|
|
25
|
+
"gap": "var(--jx-space-2)",
|
|
26
|
+
"width": "100%",
|
|
27
|
+
"blockSize": "24px",
|
|
28
|
+
"boxSizing": "border-box",
|
|
29
|
+
"margin": "0",
|
|
30
|
+
"padding": "3px var(--jx-space-3)",
|
|
31
|
+
"paddingLeft": "var(--row-indent, var(--jx-space-3))",
|
|
32
|
+
"border": "none",
|
|
33
|
+
"borderLeft": "2px solid transparent",
|
|
34
|
+
"background": "none",
|
|
35
|
+
"color": "inherit",
|
|
36
|
+
"font": "inherit",
|
|
37
|
+
"textAlign": "left",
|
|
38
|
+
"whiteSpace": "nowrap",
|
|
39
|
+
"userSelect": "none"
|
|
40
|
+
},
|
|
41
|
+
"& button[part=\"row\"]": {
|
|
42
|
+
"cursor": "pointer",
|
|
43
|
+
":hover": {
|
|
44
|
+
"background": "var(--hover-bg)"
|
|
45
|
+
},
|
|
46
|
+
":focus-visible": {
|
|
47
|
+
"outline": "var(--jx-focus-ring)",
|
|
48
|
+
"outlineOffset": "-2px"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"& [part=\"row\"][aria-current=\"true\"]": {
|
|
52
|
+
"background": "var(--accent-20)",
|
|
53
|
+
"borderLeftColor": "var(--accent)"
|
|
54
|
+
},
|
|
55
|
+
"& [part=\"badge\"]": {
|
|
56
|
+
"$description": "A long custom-element tag is a badge, not a paragraph: it truncates rather than pushing the label out of a 240px column.",
|
|
57
|
+
"flex": "none",
|
|
58
|
+
"maxWidth": "12ch",
|
|
59
|
+
"overflow": "hidden",
|
|
60
|
+
"padding": "0 var(--jx-space-2)",
|
|
61
|
+
"borderRadius": "var(--jx-radius-xs)",
|
|
62
|
+
"background": "var(--tag)",
|
|
63
|
+
"color": "var(--accent-fg)",
|
|
64
|
+
"fontSize": "var(--jx-text-xs)",
|
|
65
|
+
"textOverflow": "ellipsis"
|
|
66
|
+
},
|
|
67
|
+
"& [part=\"badge\"][data-kind=\"component\"]": {
|
|
68
|
+
"$description": "A component has no tag to show that a reader would recognise from the page, so the badge is the glyph and the tag name is the label. Fixed width, so a column of them has one left edge.",
|
|
69
|
+
"width": "18px",
|
|
70
|
+
"padding": "0",
|
|
71
|
+
"background": "var(--accent)",
|
|
72
|
+
"fontSize": "9px",
|
|
73
|
+
"textAlign": "center"
|
|
74
|
+
},
|
|
75
|
+
"& [part=\"badge\"][data-kind=\"variable\"]": {
|
|
76
|
+
"fontFamily": "var(--font-mono)"
|
|
77
|
+
},
|
|
78
|
+
"& [part=\"label\"]": {
|
|
79
|
+
"flex": "1",
|
|
80
|
+
"minWidth": "24px",
|
|
81
|
+
"overflow": "hidden",
|
|
82
|
+
"textOverflow": "ellipsis",
|
|
83
|
+
"whiteSpace": "nowrap"
|
|
84
|
+
},
|
|
85
|
+
"& [part=\"dot\"]": {
|
|
86
|
+
"$description": "The file has already styled this tag. The kit's neutral disc in the accent, which is the one thing about it that was ever this surface's own.",
|
|
87
|
+
"background": "var(--accent)"
|
|
88
|
+
},
|
|
89
|
+
"& [part=\"value\"]": {
|
|
90
|
+
"maxWidth": "80px",
|
|
91
|
+
"overflow": "hidden",
|
|
92
|
+
"color": "var(--fg-dim)",
|
|
93
|
+
"fontSize": "var(--jx-text-sm)",
|
|
94
|
+
"textOverflow": "ellipsis",
|
|
95
|
+
"whiteSpace": "nowrap"
|
|
96
|
+
},
|
|
97
|
+
"& [part=\"empty\"]": {
|
|
98
|
+
"$description": "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (§11): one sentence saying what the region is for, then where its content comes from.",
|
|
99
|
+
"display": "flex",
|
|
100
|
+
"flexDirection": "column",
|
|
101
|
+
"alignItems": "center",
|
|
102
|
+
"gap": "var(--jx-space-3)",
|
|
103
|
+
"padding": "var(--jx-space-5)",
|
|
104
|
+
"textAlign": "center",
|
|
105
|
+
"color": "var(--fg-dim)",
|
|
106
|
+
"fontSize": "var(--jx-text-md)"
|
|
107
|
+
},
|
|
108
|
+
"& [part=\"empty-message\"], & [part=\"empty-detail\"]": {
|
|
109
|
+
"margin": "0",
|
|
110
|
+
"maxWidth": "28ch",
|
|
111
|
+
"lineHeight": "1.5"
|
|
112
|
+
},
|
|
113
|
+
"& [part=\"empty-detail\"]": {
|
|
114
|
+
"fontSize": "var(--jx-text-sm)",
|
|
115
|
+
"opacity": "0.8"
|
|
116
|
+
},
|
|
117
|
+
"@(forced-colors: active)": {
|
|
118
|
+
"& [part=\"row\"][aria-current=\"true\"]": {
|
|
119
|
+
"$description": "The selected row, redrawn. Every author colour is replaced by one from the user's palette in forced colours, so the accent wash behind the row collapses into the page and the left edge is the only marker left.",
|
|
120
|
+
"borderLeftColor": "Highlight"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"children": [
|
|
125
|
+
{
|
|
126
|
+
"tagName": "div",
|
|
127
|
+
"attributes": {
|
|
128
|
+
"part": "tab-slot",
|
|
129
|
+
"role": "none"
|
|
130
|
+
},
|
|
131
|
+
"style": {
|
|
132
|
+
"display": "contents"
|
|
133
|
+
},
|
|
134
|
+
"$switch": {
|
|
135
|
+
"$ref": "#/state/tab"
|
|
136
|
+
},
|
|
137
|
+
"cases": {
|
|
138
|
+
"elements": {
|
|
139
|
+
"tagName": "div",
|
|
140
|
+
"attributes": {
|
|
141
|
+
"part": "list",
|
|
142
|
+
"data-tab": "elements"
|
|
143
|
+
},
|
|
144
|
+
"children": [
|
|
145
|
+
{
|
|
146
|
+
"$prototype": "Array",
|
|
147
|
+
"items": {
|
|
148
|
+
"$ref": "#/state/rows"
|
|
149
|
+
},
|
|
150
|
+
"key": {
|
|
151
|
+
"$ref": "$map/item/key"
|
|
152
|
+
},
|
|
153
|
+
"map": {
|
|
154
|
+
"tagName": "button",
|
|
155
|
+
"attributes": {
|
|
156
|
+
"part": "row",
|
|
157
|
+
"type": "button",
|
|
158
|
+
"data-path": "${$map.item.key}",
|
|
159
|
+
"data-kind": "${$map.item.kind}",
|
|
160
|
+
"aria-current": "${$map.item.selected ? 'true' : null}"
|
|
161
|
+
},
|
|
162
|
+
"style": {
|
|
163
|
+
"--row-indent": {
|
|
164
|
+
"$ref": "$map/item/indent"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"onclick": {
|
|
168
|
+
"$prototype": "Function",
|
|
169
|
+
"body": [
|
|
170
|
+
{
|
|
171
|
+
"operator": "call",
|
|
172
|
+
"target": {
|
|
173
|
+
"$ref": "#/state/selectRow"
|
|
174
|
+
},
|
|
175
|
+
"value": [
|
|
176
|
+
{
|
|
177
|
+
"$ref": "$map/item/key"
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"children": [
|
|
184
|
+
{
|
|
185
|
+
"tagName": "span",
|
|
186
|
+
"attributes": {
|
|
187
|
+
"part": "badge",
|
|
188
|
+
"data-kind": "${$map.item.kind}"
|
|
189
|
+
},
|
|
190
|
+
"textContent": "${$map.item.tag}"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"tagName": "span",
|
|
194
|
+
"attributes": {
|
|
195
|
+
"part": "label"
|
|
196
|
+
},
|
|
197
|
+
"textContent": "${$map.item.label}"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"tagName": "span",
|
|
201
|
+
"attributes": {
|
|
202
|
+
"part": "dot-slot",
|
|
203
|
+
"role": "none"
|
|
204
|
+
},
|
|
205
|
+
"style": {
|
|
206
|
+
"display": "contents"
|
|
207
|
+
},
|
|
208
|
+
"$switch": {
|
|
209
|
+
"$ref": "$map/item/customized"
|
|
210
|
+
},
|
|
211
|
+
"cases": {
|
|
212
|
+
"true": {
|
|
213
|
+
"tagName": "jx-dot",
|
|
214
|
+
"attributes": {
|
|
215
|
+
"part": "dot",
|
|
216
|
+
"role": "img",
|
|
217
|
+
"aria-label": "Styled in this file"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
"variables": {
|
|
228
|
+
"tagName": "div",
|
|
229
|
+
"attributes": {
|
|
230
|
+
"part": "variables-slot",
|
|
231
|
+
"role": "none"
|
|
232
|
+
},
|
|
233
|
+
"style": {
|
|
234
|
+
"display": "contents"
|
|
235
|
+
},
|
|
236
|
+
"$switch": {
|
|
237
|
+
"$ref": "#/state/hasVariables"
|
|
238
|
+
},
|
|
239
|
+
"cases": {
|
|
240
|
+
"true": {
|
|
241
|
+
"tagName": "ul",
|
|
242
|
+
"attributes": {
|
|
243
|
+
"part": "list",
|
|
244
|
+
"data-tab": "variables"
|
|
245
|
+
},
|
|
246
|
+
"children": [
|
|
247
|
+
{
|
|
248
|
+
"$prototype": "Array",
|
|
249
|
+
"items": {
|
|
250
|
+
"$ref": "#/state/variables"
|
|
251
|
+
},
|
|
252
|
+
"key": {
|
|
253
|
+
"$ref": "$map/item/key"
|
|
254
|
+
},
|
|
255
|
+
"map": {
|
|
256
|
+
"tagName": "li",
|
|
257
|
+
"attributes": {
|
|
258
|
+
"part": "row",
|
|
259
|
+
"data-kind": "variable",
|
|
260
|
+
"data-path": "${$map.item.name}"
|
|
261
|
+
},
|
|
262
|
+
"children": [
|
|
263
|
+
{
|
|
264
|
+
"tagName": "span",
|
|
265
|
+
"attributes": {
|
|
266
|
+
"part": "badge",
|
|
267
|
+
"data-kind": "variable"
|
|
268
|
+
},
|
|
269
|
+
"textContent": "var"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"tagName": "span",
|
|
273
|
+
"attributes": {
|
|
274
|
+
"part": "label"
|
|
275
|
+
},
|
|
276
|
+
"textContent": "${$map.item.name}"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"tagName": "span",
|
|
280
|
+
"attributes": {
|
|
281
|
+
"part": "value"
|
|
282
|
+
},
|
|
283
|
+
"textContent": "${$map.item.value}"
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
},
|
|
290
|
+
"false": {
|
|
291
|
+
"tagName": "div",
|
|
292
|
+
"attributes": {
|
|
293
|
+
"part": "empty"
|
|
294
|
+
},
|
|
295
|
+
"children": [
|
|
296
|
+
{
|
|
297
|
+
"tagName": "p",
|
|
298
|
+
"attributes": {
|
|
299
|
+
"part": "empty-message"
|
|
300
|
+
},
|
|
301
|
+
"textContent": "No variables defined."
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"tagName": "p",
|
|
305
|
+
"attributes": {
|
|
306
|
+
"part": "empty-detail"
|
|
307
|
+
},
|
|
308
|
+
"textContent": "A custom property declared on this file's own style block is listed here."
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/// <reference lib="dom" />
|
|
2
|
+
/**
|
|
3
|
+
* The Project Styles outline: what the Navigator's Outline panel shows while the pane is drawing
|
|
4
|
+
* the element catalogue, as a Jx document over the kit.
|
|
5
|
+
*
|
|
6
|
+
* This is the adapter. `panels/stylebook-layers-panel.ts` keeps the panel — which tags the
|
|
7
|
+
* catalogue contains, how a child's compound path is spelled, which of them the open file has
|
|
8
|
+
* already styled, what the component registry holds and which row is selected — and hands this
|
|
9
|
+
* module a flat projection with no decisions left in it: one row per line, already indented,
|
|
10
|
+
* already keyed, already told whether it is the selected one.
|
|
11
|
+
*
|
|
12
|
+
* The flattening happens on the panel's side rather than here for the reason
|
|
13
|
+
* `surfaces/settings-overview.ts` gives: a document's only conditional is `$switch` over a value,
|
|
14
|
+
* and the catalogue is a recursive tree whose children are deduplicated by tag. The panel walks it
|
|
15
|
+
* and the surface renders a list.
|
|
16
|
+
*
|
|
17
|
+
* **The container is not cleared**, which is the one line where a panel differs from a settings
|
|
18
|
+
* section. A section is handed the pane's whole content area and starts by emptying it; a panel
|
|
19
|
+
* body is a node lit renders into, and its comment markers are how lit finds its own content again.
|
|
20
|
+
* So the document is APPENDED, and {@link StylebookLayersSurfaceHandle.connected} is how the panel
|
|
21
|
+
* finds out that lit has since painted something else over the top of it.
|
|
22
|
+
*
|
|
23
|
+
* @docs studio/design/stylebook
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { reactive } from "../reactivity";
|
|
27
|
+
import { mountSurface, registerSurface } from "../ui/surface";
|
|
28
|
+
import stylebookLayersDoc from "./panel-stylebook-layers.json";
|
|
29
|
+
import type { JxDocument } from "@jxsuite/schema/types";
|
|
30
|
+
import type { SurfaceHandle } from "../ui/surface";
|
|
31
|
+
|
|
32
|
+
registerSurface("panel-stylebook-layers", stylebookLayersDoc as unknown as JxDocument);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* One line of the catalogue, as the document draws it. Every field is a value: no records, no
|
|
36
|
+
* closures, no tree.
|
|
37
|
+
*/
|
|
38
|
+
export interface StylebookRowView {
|
|
39
|
+
/**
|
|
40
|
+
* The row's reconcile key AND what a click selects — for an element the compound path (`"ul
|
|
41
|
+
* li"`), for a component its tag name. One field, because they have never differed and a second
|
|
42
|
+
* one is a second thing to keep in step.
|
|
43
|
+
*/
|
|
44
|
+
key: string;
|
|
45
|
+
/** The badge's text: the tag for an element, the glyph for a component. */
|
|
46
|
+
tag: string;
|
|
47
|
+
/** The row's name: the specimen's own text, or `<tag>` where it has none. */
|
|
48
|
+
label: string;
|
|
49
|
+
/** How deep the row sits, as a CSS length. Read by one shared rule through `--row-indent`. */
|
|
50
|
+
indent: string;
|
|
51
|
+
/** Whether this is the selected tag. Drawn as `aria-current`, so it is announced. */
|
|
52
|
+
selected: boolean;
|
|
53
|
+
/** Whether the open file has already styled this tag — the dot at the end of the row. */
|
|
54
|
+
customized: boolean;
|
|
55
|
+
/** `element` or `component`: which of the two badge drawings the row gets. */
|
|
56
|
+
kind: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** One custom property the open file declares. */
|
|
60
|
+
export interface StylebookVariableView {
|
|
61
|
+
/** The reconcile key. Same as {@link name}; kept separate so the key never follows the label. */
|
|
62
|
+
key: string;
|
|
63
|
+
/** The property, `--accent` and its like. */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Whatever it is declared as, as text. */
|
|
66
|
+
value: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** What the panel says the surface should be showing right now. */
|
|
70
|
+
export interface StylebookLayersValues {
|
|
71
|
+
/** `elements` or `variables` — `shell.stylebook.tab`, which names the `$switch` case. */
|
|
72
|
+
tab: string;
|
|
73
|
+
rows: StylebookRowView[];
|
|
74
|
+
variables: StylebookVariableView[];
|
|
75
|
+
/** Whether there is anything under the variables tab: the document has no `length` to ask. */
|
|
76
|
+
hasVariables: boolean;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** What a control can ask the panel to do. The one thing a row does is select itself. */
|
|
80
|
+
export interface StylebookLayersActions {
|
|
81
|
+
selectRow: (path: string) => void;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface StylebookLayersSurfaceHandle {
|
|
85
|
+
/** Bring the mounted document up to date with a whole projection. */
|
|
86
|
+
update: (values: StylebookLayersValues) => void;
|
|
87
|
+
/** Whether the document this mounted is still standing in the container it was given. */
|
|
88
|
+
connected: () => boolean;
|
|
89
|
+
/** Take the document down. Idempotent. */
|
|
90
|
+
dispose: () => void;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** The scope the document reads: the projection, plus the one thing a row can ask for. */
|
|
94
|
+
interface StylebookLayersScope
|
|
95
|
+
extends Record<string, unknown>, StylebookLayersValues, StylebookLayersActions {}
|
|
96
|
+
|
|
97
|
+
/** Write a projection into the scope. */
|
|
98
|
+
function project(scope: StylebookLayersScope, values: StylebookLayersValues): void {
|
|
99
|
+
scope.tab = values.tab;
|
|
100
|
+
scope.rows = values.rows;
|
|
101
|
+
scope.variables = values.variables;
|
|
102
|
+
scope.hasVariables = values.hasVariables;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Mount the Project Styles outline into `container`, which is the `.panel-content` the Navigator
|
|
107
|
+
* just painted.
|
|
108
|
+
*
|
|
109
|
+
* Nothing is called on the elements, so the mount is all this has to wait for: the DOCUMENT is what
|
|
110
|
+
* this surface renders, and the kit elements inside it settle their own templates one
|
|
111
|
+
* `connectedCallback` later without anybody here asking them to (guidelines §1.1, "await the
|
|
112
|
+
* element").
|
|
113
|
+
*/
|
|
114
|
+
export function mountStylebookLayersSurface(
|
|
115
|
+
container: HTMLElement,
|
|
116
|
+
values: StylebookLayersValues,
|
|
117
|
+
actions: StylebookLayersActions,
|
|
118
|
+
): StylebookLayersSurfaceHandle {
|
|
119
|
+
const scope = reactive<StylebookLayersScope>({
|
|
120
|
+
hasVariables: false,
|
|
121
|
+
rows: [],
|
|
122
|
+
selectRow: actions.selectRow,
|
|
123
|
+
tab: "elements",
|
|
124
|
+
variables: [],
|
|
125
|
+
}) as StylebookLayersScope;
|
|
126
|
+
project(scope, values);
|
|
127
|
+
|
|
128
|
+
let mounted: SurfaceHandle | null = null;
|
|
129
|
+
let disposed = false;
|
|
130
|
+
void mountSurface("panel-stylebook-layers", scope, container).then((surface) => {
|
|
131
|
+
if (disposed) {
|
|
132
|
+
surface.dispose();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
mounted = surface;
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
/* While the mount is still in flight there is nothing in the container to ask about, so the
|
|
140
|
+
answer is simply whether this handle is still wanted — answering no would start a second
|
|
141
|
+
mount racing the first. Once mounted, the question is whether the root is still where it was
|
|
142
|
+
put: a Navigator that painted another panel, or the Outline's own lit branch, cleared this
|
|
143
|
+
document out from under it. */
|
|
144
|
+
connected: () =>
|
|
145
|
+
!disposed && (mounted === null || (mounted.root as Node).parentNode === container),
|
|
146
|
+
dispose() {
|
|
147
|
+
disposed = true;
|
|
148
|
+
mounted?.dispose();
|
|
149
|
+
mounted = null;
|
|
150
|
+
},
|
|
151
|
+
update: (next) => {
|
|
152
|
+
project(scope, next);
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|