@jxsuite/studio 2.0.0 → 2.1.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/canvas.html +21 -0
- package/dist/chunks/Overlay.dev-qfjzkms8.js +23 -0
- package/dist/chunks/{Overlay.dev-cszx7yn5.js.map → Overlay.dev-qfjzkms8.js.map} +1 -1
- package/dist/chunks/{adapter-z8fkmbmv.js → adapter-qfnesn5v.js} +2 -2
- package/dist/chunks/{cf-settings-mmyv436d.js → cf-settings-73sh5z4p.js} +3 -3
- package/dist/chunks/{components-0hzentwq.js → components-2bpqp4mq.js} +5 -7
- package/dist/chunks/{components-0hzentwq.js.map → components-2bpqp4mq.js.map} +1 -1
- package/dist/chunks/content-source-34gnkbnn.js +38 -0
- package/dist/chunks/content-source-34gnkbnn.js.map +9 -0
- package/dist/chunks/convert-to-repeater-t8kxre5s.js +258 -0
- package/dist/chunks/convert-to-repeater-t8kxre5s.js.map +10 -0
- package/dist/chunks/extension-sections-6mqydz35.js +301 -0
- package/dist/chunks/extension-sections-6mqydz35.js.map +11 -0
- package/dist/chunks/files-8kn321h1.js +70 -0
- package/dist/chunks/files-8kn321h1.js.map +9 -0
- package/dist/chunks/{format-host-2c188n41.js → format-host-mkwsmt8d.js} +3 -3
- package/dist/chunks/git-panel-tjbr191d.js +51 -0
- package/dist/chunks/git-panel-tjbr191d.js.map +9 -0
- package/dist/chunks/{index-baeg2x3y.js → index-7pxchcce.js} +4 -3
- package/dist/chunks/{index-baeg2x3y.js.map → index-7pxchcce.js.map} +3 -3
- package/dist/chunks/{jx-validate-qx8degj7.js → jx-validate-v6qgknrs.js} +3 -3
- package/dist/chunks/layers-panel-87pb25km.js +58 -0
- package/dist/chunks/layers-panel-87pb25km.js.map +9 -0
- package/dist/chunks/{monaco-setup-zjdp9zdw.js → monaco-setup-e0yh25j4.js} +4 -75
- package/dist/chunks/{monaco-setup-zjdp9zdw.js.map → monaco-setup-e0yh25j4.js.map} +3 -4
- package/dist/chunks/publish-panel-m0fcgdrt.js +21 -0
- package/dist/chunks/publish-panel-m0fcgdrt.js.map +9 -0
- package/dist/chunks/quick-search-rhs6cbsb.js +53 -0
- package/dist/chunks/quick-search-rhs6cbsb.js.map +9 -0
- package/dist/chunks/right-panel-zpdxd98t.js +37 -0
- package/dist/chunks/right-panel-zpdxd98t.js.map +9 -0
- package/dist/chunks/section-registry-zmckaxf4.js +30 -0
- package/dist/chunks/section-registry-zmckaxf4.js.map +9 -0
- package/dist/chunks/sp-overlay.dev-9ran0sfq.js +18 -0
- package/dist/chunks/sp-overlay.dev-9ran0sfq.js.map +9 -0
- package/dist/chunks/sp-popover.dev-rebmdncr.js +9 -0
- package/dist/chunks/sp-popover.dev-rebmdncr.js.map +9 -0
- package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js +15 -0
- package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js.map +9 -0
- package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js +15 -0
- package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js.map +9 -0
- package/dist/chunks/{sp-tray.dev-pb2fsd65.js → sp-tray.dev-ey59vfh7.js} +10 -8
- package/dist/chunks/{sp-tray.dev-pb2fsd65.js.map → sp-tray.dev-ey59vfh7.js.map} +2 -2
- package/dist/chunks/{studio-9qr6fq7p.js → studio-0rqqhrdy.js} +10 -378
- package/dist/chunks/{studio-9qr6fq7p.js.map → studio-0rqqhrdy.js.map} +4 -14
- package/dist/chunks/{studio-5x6tqqec.js → studio-2sj1jj3v.js} +10 -8
- package/dist/chunks/{studio-5x6tqqec.js.map → studio-2sj1jj3v.js.map} +2 -2
- package/dist/chunks/{studio-h3fw0wn8.js → studio-3fk1ac9z.js} +6 -4
- package/dist/chunks/{studio-h3fw0wn8.js.map → studio-3fk1ac9z.js.map} +2 -2
- package/dist/chunks/studio-41exgzhq.js +6690 -0
- package/dist/chunks/studio-41exgzhq.js.map +38 -0
- package/dist/chunks/{studio-7v2bpweq.js → studio-4mqb9a0j.js} +6 -4
- package/dist/chunks/{studio-7v2bpweq.js.map → studio-4mqb9a0j.js.map} +2 -2
- package/dist/chunks/studio-50k77cca.js +1787 -0
- package/dist/chunks/studio-50k77cca.js.map +18 -0
- package/dist/chunks/{studio-56v3zwk6.js → studio-6a0h7sne.js} +10 -8
- package/dist/chunks/{studio-56v3zwk6.js.map → studio-6a0h7sne.js.map} +2 -2
- package/dist/chunks/studio-6f0am8f2.js +53 -0
- package/dist/chunks/studio-6f0am8f2.js.map +10 -0
- package/dist/chunks/studio-6nmjc5qk.js +7002 -0
- package/dist/chunks/studio-6nmjc5qk.js.map +32 -0
- package/dist/chunks/studio-7afd21nw.js +67 -0
- package/dist/chunks/studio-7afd21nw.js.map +10 -0
- package/dist/chunks/{studio-xze4zrs1.js → studio-7bmdvzne.js} +2 -2
- package/dist/chunks/studio-7bmdvzne.js.map +10 -0
- package/dist/chunks/studio-8jpzqk5s.js +128 -0
- package/dist/chunks/studio-8jpzqk5s.js.map +10 -0
- package/dist/chunks/studio-94m77tgk.js +1482 -0
- package/dist/chunks/studio-94m77tgk.js.map +13 -0
- package/dist/chunks/studio-9je6w5sq.js +1000 -0
- package/dist/chunks/studio-9je6w5sq.js.map +16 -0
- package/dist/chunks/{studio-w7c6kvk7.js → studio-a7pzveq1.js} +2 -2
- package/dist/chunks/{studio-97qcgvdn.js → studio-adn0z1k3.js} +14 -8
- package/dist/chunks/{studio-97qcgvdn.js.map → studio-adn0z1k3.js.map} +3 -3
- package/dist/chunks/{studio-kr88ryr7.js → studio-bsxxx3x2.js} +17 -15
- package/dist/chunks/{studio-kr88ryr7.js.map → studio-bsxxx3x2.js.map} +7 -6
- package/dist/chunks/studio-bw5dz6km.js +608 -0
- package/dist/chunks/studio-bw5dz6km.js.map +21 -0
- package/dist/chunks/studio-c6s5getc.js +4232 -0
- package/dist/chunks/studio-c6s5getc.js.map +39 -0
- package/dist/chunks/studio-cjm7fdjf.js +451 -0
- package/dist/chunks/studio-cjm7fdjf.js.map +14 -0
- package/dist/chunks/{studio-cx91mnh8.js → studio-ckwz4d3x.js} +53 -53
- package/dist/chunks/{studio-cx91mnh8.js.map → studio-ckwz4d3x.js.map} +5 -5
- package/dist/chunks/studio-dg7zyt5x.js +28 -0
- package/dist/chunks/studio-dg7zyt5x.js.map +10 -0
- package/dist/chunks/studio-dzcyvvvz.js +166 -0
- package/dist/chunks/studio-dzcyvvvz.js.map +10 -0
- package/dist/chunks/{studio-7kqe41sa.js → studio-evkr5d3b.js} +15 -7
- package/dist/chunks/{studio-7kqe41sa.js.map → studio-evkr5d3b.js.map} +5 -4
- package/dist/chunks/studio-f12h6177.js +411 -0
- package/dist/chunks/studio-f12h6177.js.map +13 -0
- package/dist/chunks/studio-hbp1s8m9.js +1817 -0
- package/dist/chunks/studio-hbp1s8m9.js.map +14 -0
- package/dist/chunks/studio-k2sxjph5.js +15295 -0
- package/dist/chunks/studio-k2sxjph5.js.map +235 -0
- package/dist/chunks/studio-myje51t3.js +385 -0
- package/dist/chunks/studio-myje51t3.js.map +12 -0
- package/dist/chunks/studio-na6rwzhw.js +353 -0
- package/dist/chunks/studio-na6rwzhw.js.map +11 -0
- package/dist/chunks/{studio-4k0m4fmp.js → studio-p471gg5n.js} +126 -3
- package/dist/chunks/studio-p471gg5n.js.map +14 -0
- package/dist/chunks/{studio-9bjwf0d4.js → studio-rgwcpast.js} +5 -46
- package/dist/chunks/{studio-9bjwf0d4.js.map → studio-rgwcpast.js.map} +4 -5
- package/dist/chunks/{studio-hhj92gcr.js → studio-s519zc99.js} +3 -3
- package/dist/chunks/studio-sas7mt3k.js +75 -0
- package/dist/chunks/studio-sas7mt3k.js.map +10 -0
- package/dist/chunks/studio-t5wqwzdh.js +74 -0
- package/dist/chunks/studio-t5wqwzdh.js.map +10 -0
- package/dist/chunks/{studio-9qpspwfn.js → studio-temv5bw4.js} +5 -5
- package/dist/chunks/{studio-9qpspwfn.js.map → studio-temv5bw4.js.map} +1 -1
- package/dist/chunks/{studio-qkvt37c0.js → studio-tr20m8g8.js} +669 -18
- package/dist/chunks/studio-tr20m8g8.js.map +9 -0
- package/dist/chunks/{studio-ygzav7z5.js → studio-v96qfnww.js} +5514 -4291
- package/dist/chunks/studio-v96qfnww.js.map +54 -0
- package/dist/chunks/studio-vcetc91k.js +659 -0
- package/dist/chunks/studio-vcetc91k.js.map +10 -0
- package/dist/chunks/{studio-n9zmpxjg.js → studio-vmymjefp.js} +2972 -4937
- package/dist/chunks/studio-vmymjefp.js.map +98 -0
- package/dist/chunks/{studio-bghqfmea.js → studio-wwseqyw0.js} +2 -2
- package/dist/chunks/studio-x9hmy5kr.js +390 -0
- package/dist/chunks/studio-x9hmy5kr.js.map +10 -0
- package/dist/chunks/studio-xa0ce0n7.js +335 -0
- package/dist/chunks/studio-xa0ce0n7.js.map +10 -0
- package/dist/chunks/studio-xm3dbxvn.js +378 -0
- package/dist/chunks/studio-xm3dbxvn.js.map +19 -0
- package/dist/chunks/{studio-nqw433kv.js → studio-xmvbhg31.js} +2 -2
- package/dist/chunks/studio-zv37yrfa.js +1054 -0
- package/dist/chunks/studio-zv37yrfa.js.map +13 -0
- package/dist/chunks/{ws-client-q7hkz3j9.js → ws-client-654ts66j.js} +6 -4
- package/dist/chunks/ws-client-654ts66j.js.map +11 -0
- package/dist/iframe-entry.js +668 -230
- package/dist/studio.js +23711 -35185
- package/index.html +35 -4685
- package/package.json +17 -15
- package/src/about/about-modal.ts +42 -11
- package/src/browse/library-commands.ts +240 -0
- package/src/browse/library-layouts.ts +369 -0
- package/src/browse/library-model.ts +396 -0
- package/src/browse/library-pane.ts +1049 -0
- package/src/browse/library-preview.ts +252 -0
- package/src/browse/library-source.ts +150 -0
- package/src/canvas/canvas-helpers.ts +33 -9
- package/src/canvas/canvas-live-render.ts +45 -29
- package/src/canvas/canvas-patcher.ts +151 -31
- package/src/canvas/canvas-perf.ts +46 -7
- package/src/canvas/canvas-render.ts +1092 -220
- package/src/canvas/canvas-surface.ts +240 -0
- package/src/canvas/canvas-utils.ts +1166 -124
- package/src/canvas/iframe-drop.ts +2 -1
- package/src/canvas/iframe-entry.ts +241 -4
- package/src/canvas/iframe-host.ts +1226 -143
- package/src/canvas/iframe-inline-edit.ts +31 -0
- package/src/canvas/iframe-interaction.ts +76 -16
- package/src/canvas/iframe-keys.ts +107 -45
- package/src/canvas/iframe-overlay.ts +38 -1
- package/src/canvas/iframe-protocol.ts +137 -2
- package/src/canvas/iframe-render.ts +70 -2
- package/src/canvas/iframe-slash.ts +6 -0
- package/src/canvas/path-mapping.ts +56 -6
- package/src/canvas/surface-registry.ts +292 -0
- package/src/collab/collab-commands.ts +244 -0
- package/src/collab/collab-session.ts +198 -32
- package/src/collab/collab-state.ts +28 -2
- package/src/collab/presence-chips.ts +100 -9
- package/src/commands/active-registry.ts +42 -0
- package/src/commands/app-commands.ts +176 -0
- package/src/commands/budget.ts +158 -0
- package/src/commands/command-args.ts +253 -0
- package/src/commands/context.ts +387 -0
- package/src/commands/defaults.ts +580 -0
- package/src/commands/keymap.ts +571 -0
- package/src/commands/levels.ts +345 -0
- package/src/commands/live-context.ts +193 -0
- package/src/commands/reference.ts +227 -0
- package/src/commands/registry.ts +293 -0
- package/src/component-props.ts +3 -2
- package/src/content/draft-state.ts +106 -0
- package/src/content/entry-commands.ts +282 -0
- package/src/content/entry-editor.ts +327 -0
- package/src/content/entry-fields.ts +116 -0
- package/src/content/entry-model.ts +175 -0
- package/src/editor/canvas-context-menu.ts +17 -11
- package/src/editor/canvas-slash-bridge.ts +11 -4
- package/src/editor/context-menu.ts +804 -204
- package/src/editor/convert-to-component.ts +31 -10
- package/src/editor/convert-to-repeater.ts +3 -2
- package/src/editor/inline-edit-apply.ts +5 -5
- package/src/editor/inline-edit.ts +86 -50
- package/src/editor/insert-zone-action.ts +1 -1
- package/src/editor/shortcuts.ts +1043 -329
- package/src/editor/slash-menu.ts +1 -0
- package/src/files/elements.ts +166 -0
- package/src/files/file-ops.ts +178 -31
- package/src/files/files.ts +898 -268
- package/src/files/fs-events.ts +21 -0
- package/src/files/media-meta.ts +203 -0
- package/src/files/media-paths.ts +141 -0
- package/src/files/media-upload.ts +7 -3
- package/src/files/media-usage.ts +189 -0
- package/src/github/github-auth.ts +235 -33
- package/src/github/github-publish.ts +80 -21
- package/src/grid/grid-controller.ts +152 -12
- package/src/grid/grid-layout.ts +225 -20
- package/src/grid/grid-open.ts +120 -0
- package/src/grid/grid-panel.ts +554 -39
- package/src/grid/grid-source.ts +27 -1
- package/src/grid/redirects-grid.ts +599 -0
- package/src/grid/redirects.ts +398 -0
- package/src/grid/sources/content-source.ts +108 -2
- package/src/i18n/i18n-commands.ts +322 -0
- package/src/new-project/add-repo-modal.ts +8 -10
- package/src/new-project/import-tab.ts +34 -9
- package/src/new-project/location-fields.ts +9 -1
- package/src/new-project/new-project-modal.ts +270 -262
- package/src/packages/jxsuite-update.ts +97 -48
- package/src/packages/pull-package-sync.ts +18 -9
- package/src/page-params.ts +2 -1
- package/src/panels/activity-bar.ts +152 -91
- package/src/panels/activity-panel.ts +481 -0
- package/src/panels/ai-chat/chat-markdown.ts +8 -3
- package/src/panels/ai-chat/chat-view.ts +245 -18
- package/src/panels/ai-chat/composer.ts +31 -5
- package/src/panels/ai-chat/sessions-view.ts +17 -10
- package/src/panels/ai-panel.ts +279 -120
- package/src/panels/block-action-bar.ts +1115 -224
- package/src/panels/bottom-dock.ts +337 -0
- package/src/panels/canvas-dnd-bridge.ts +37 -8
- package/src/panels/chat-panel.ts +29 -12
- package/src/panels/data-explorer.ts +254 -112
- package/src/panels/data-grid.ts +10 -4
- package/src/panels/dnd.ts +28 -51
- package/src/panels/editors.ts +434 -107
- package/src/panels/elements-panel.ts +66 -2
- package/src/panels/empty-state.ts +112 -0
- package/src/panels/events-panel.ts +596 -82
- package/src/panels/formula-workspace.ts +408 -218
- package/src/panels/frontmatter-fields.ts +51 -10
- package/src/panels/frontmatter-panel.ts +357 -79
- package/src/panels/git-panel.ts +375 -164
- package/src/panels/head-panel.ts +791 -85
- package/src/panels/i18n-panel.ts +592 -0
- package/src/panels/imports-panel.ts +95 -85
- package/src/panels/jump-bar.ts +584 -0
- package/src/panels/layers-panel.ts +1106 -328
- package/src/panels/left-panel.ts +109 -204
- package/src/panels/navigator-panels.ts +131 -0
- package/src/panels/overlays.ts +7 -2
- package/src/panels/pane-context.ts +1477 -0
- package/src/panels/pane-grid.ts +406 -0
- package/src/panels/panel-registry.ts +340 -0
- package/src/panels/panel-scheduler.ts +75 -0
- package/src/panels/problems-panel.ts +234 -0
- package/src/panels/properties-panel.ts +946 -1139
- package/src/panels/provenance.ts +258 -0
- package/src/panels/quick-search.ts +791 -122
- package/src/panels/right-panel.ts +228 -102
- package/src/panels/seo-modal.ts +395 -0
- package/src/panels/settings-pane.ts +203 -0
- package/src/panels/signals-panel.ts +354 -137
- package/src/panels/statement-editor.ts +41 -25
- package/src/panels/statusbar.ts +342 -106
- package/src/panels/style-panel.ts +974 -463
- package/src/panels/style-utils.ts +3 -3
- package/src/panels/stylebook-doc.ts +4 -2
- package/src/panels/stylebook-layers-panel.ts +3 -2
- package/src/panels/stylebook-panel.ts +51 -26
- package/src/panels/tab-strip.ts +1058 -78
- package/src/panels/target-line.ts +274 -0
- package/src/panels/toolbar.ts +631 -484
- package/src/panels/welcome-screen.ts +301 -198
- package/src/platform-errors.ts +26 -3
- package/src/platform.ts +96 -2
- package/src/platforms/cloud.ts +71 -8
- package/src/platforms/devserver.ts +92 -29
- package/src/publish/deploy-checklist.ts +383 -0
- package/src/publish/pages-service.ts +10 -1
- package/src/publish/publish-commands.ts +218 -0
- package/src/publish/publish-panel.ts +110 -16
- package/src/recent-projects.ts +3 -2
- package/src/services/a11y-report.ts +505 -0
- package/src/services/ai-models.ts +75 -2
- package/src/services/ai-project-tools.ts +29 -10
- package/src/services/ai-system-prompt.ts +53 -14
- package/src/services/ai-tools.ts +39 -3
- package/src/services/ai-writes.ts +154 -0
- package/src/services/announce.ts +97 -0
- package/src/services/automation.ts +424 -175
- package/src/services/cem-export.ts +9 -4
- package/src/services/clock.ts +61 -0
- package/src/services/document-assistant.ts +36 -8
- package/src/services/idle.ts +179 -0
- package/src/services/import-client.ts +26 -0
- package/src/services/monaco-buffer.ts +627 -0
- package/src/services/monaco-lazy.ts +36 -0
- package/src/services/notify.ts +271 -0
- package/src/services/profile.ts +155 -0
- package/src/services/references.ts +0 -0
- package/src/services/token-lint.ts +3 -2
- package/src/services/tool-executor.ts +53 -7
- package/src/services/trusted-types.ts +123 -0
- package/src/settings/contexts-section.ts +427 -0
- package/src/settings/contributed-section.ts +149 -11
- package/src/settings/css-vars-editor.ts +306 -349
- package/src/settings/defs-editor.ts +93 -34
- package/src/settings/dependencies-editor.ts +7 -7
- package/src/settings/extension-sections.ts +37 -5
- package/src/settings/general-settings.ts +204 -121
- package/src/settings/locales-section.ts +347 -0
- package/src/settings/preferences-accounts.ts +140 -0
- package/src/settings/preferences-dialog.ts +620 -0
- package/src/settings/preferences-keymap.ts +270 -0
- package/src/settings/project-sections.ts +260 -0
- package/src/settings/section-registry.ts +169 -0
- package/src/settings/settings-document.ts +385 -0
- package/src/shell.ts +1549 -0
- package/src/site-context.ts +45 -20
- package/src/state.ts +14 -275
- package/src/store.ts +88 -43
- package/src/studio.ts +790 -346
- package/src/style/live-preview.ts +36 -0
- package/src/style/project-styles.ts +349 -0
- package/src/style/token-ref.ts +123 -0
- package/src/tabs/patch-ops.ts +16 -4
- package/src/tabs/project-config.ts +416 -0
- package/src/tabs/selection.ts +323 -0
- package/src/tabs/tab.ts +182 -47
- package/src/tabs/transact.ts +209 -28
- package/src/types.ts +68 -13
- package/src/ui/ai-credentials-form.ts +39 -35
- package/src/ui/ai-managed-connect.ts +113 -0
- package/src/ui/dynamic-slot.ts +224 -81
- package/src/ui/expression-editor.ts +71 -63
- package/src/ui/field-input.ts +4 -6
- package/src/ui/field-row.ts +215 -38
- package/src/ui/form-controls.ts +194 -7
- package/src/ui/layers.ts +492 -69
- package/src/ui/media-picker.ts +115 -25
- package/src/ui/panel-resize.ts +109 -91
- package/src/ui/progress-modal.ts +131 -50
- package/src/ui/regions.ts +462 -0
- package/src/ui/schema-form.ts +229 -45
- package/src/ui/spectrum.ts +24 -8
- package/src/ui/timing.ts +49 -0
- package/src/ui/value-selector.ts +20 -0
- package/src/ui/value-source.ts +348 -0
- package/src/ui/virtual-window.ts +400 -0
- package/src/utils/edit-display.ts +3 -2
- package/src/utils/inherited-style.ts +67 -37
- package/src/view.ts +64 -78
- package/src/workspace/pane-derive.ts +1258 -0
- package/src/workspace/session.ts +317 -0
- package/src/workspace/workspace.ts +1345 -23
- package/styles/canvas.css +653 -0
- package/styles/forced-colors.css +106 -0
- package/styles/inspector.css +1454 -0
- package/styles/overlays.css +2704 -0
- package/styles/panels.css +1701 -0
- package/styles/shell.css +1423 -0
- package/styles/tokens.css +151 -0
- package/dist/chunks/Overlay.dev-cszx7yn5.js +0 -22
- package/dist/chunks/extension-sections-qct0gt8f.js +0 -531
- package/dist/chunks/extension-sections-qct0gt8f.js.map +0 -12
- package/dist/chunks/files-02zn5y24.js +0 -50
- package/dist/chunks/files-02zn5y24.js.map +0 -9
- package/dist/chunks/git-panel-mbb0y0hz.js +0 -28
- package/dist/chunks/git-panel-mbb0y0hz.js.map +0 -9
- package/dist/chunks/layers-panel-9qekmqk1.js +0 -26
- package/dist/chunks/layers-panel-9qekmqk1.js.map +0 -9
- package/dist/chunks/settings-modal-gj0hrah4.js +0 -29
- package/dist/chunks/settings-modal-gj0hrah4.js.map +0 -9
- package/dist/chunks/sp-overlay.dev-earn5as8.js +0 -17
- package/dist/chunks/sp-overlay.dev-earn5as8.js.map +0 -9
- package/dist/chunks/sp-popover.dev-frxtfejn.js +0 -8
- package/dist/chunks/sp-popover.dev-frxtfejn.js.map +0 -9
- package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js +0 -14
- package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js.map +0 -9
- package/dist/chunks/sp-tooltip.dev-a9fywesm.js +0 -21
- package/dist/chunks/sp-tooltip.dev-a9fywesm.js.map +0 -10
- package/dist/chunks/studio-4k0m4fmp.js.map +0 -13
- package/dist/chunks/studio-568nx4t5.js +0 -469
- package/dist/chunks/studio-568nx4t5.js.map +0 -14
- package/dist/chunks/studio-9smfzqhc.js +0 -19
- package/dist/chunks/studio-9smfzqhc.js.map +0 -10
- package/dist/chunks/studio-asvf0j9e.js +0 -429
- package/dist/chunks/studio-asvf0j9e.js.map +0 -13
- package/dist/chunks/studio-d77qm3pk.js +0 -3427
- package/dist/chunks/studio-d77qm3pk.js.map +0 -26
- package/dist/chunks/studio-j6gqyjf4.js +0 -1854
- package/dist/chunks/studio-j6gqyjf4.js.map +0 -18
- package/dist/chunks/studio-n9zmpxjg.js.map +0 -115
- package/dist/chunks/studio-qkvt37c0.js.map +0 -9
- package/dist/chunks/studio-rq0vxb19.js +0 -3744
- package/dist/chunks/studio-rq0vxb19.js.map +0 -22
- package/dist/chunks/studio-wd6ewdvd.js +0 -853
- package/dist/chunks/studio-wd6ewdvd.js.map +0 -12
- package/dist/chunks/studio-xq0t7n5t.js +0 -140
- package/dist/chunks/studio-xq0t7n5t.js.map +0 -10
- package/dist/chunks/studio-xze4zrs1.js.map +0 -10
- package/dist/chunks/studio-ygzav7z5.js.map +0 -46
- package/dist/chunks/studio-zmy7241e.js +0 -399
- package/dist/chunks/studio-zmy7241e.js.map +0 -12
- package/dist/chunks/ws-client-q7hkz3j9.js.map +0 -11
- package/src/browse/browse-modal.ts +0 -69
- package/src/browse/browse.ts +0 -904
- package/src/canvas/canvas-diff.ts +0 -216
- package/src/canvas/nested-site-style.ts +0 -58
- package/src/new-project/design-fields.ts +0 -264
- package/src/new-project/templates.ts +0 -61
- package/src/panels/tab-bar.ts +0 -548
- package/src/settings/settings-modal.ts +0 -203
- /package/dist/chunks/{adapter-z8fkmbmv.js.map → adapter-qfnesn5v.js.map} +0 -0
- /package/dist/chunks/{cf-settings-mmyv436d.js.map → cf-settings-73sh5z4p.js.map} +0 -0
- /package/dist/chunks/{format-host-2c188n41.js.map → format-host-mkwsmt8d.js.map} +0 -0
- /package/dist/chunks/{jx-validate-qx8degj7.js.map → jx-validate-v6qgknrs.js.map} +0 -0
- /package/dist/chunks/{studio-w7c6kvk7.js.map → studio-a7pzveq1.js.map} +0 -0
- /package/dist/chunks/{studio-hhj92gcr.js.map → studio-s519zc99.js.map} +0 -0
- /package/dist/chunks/{studio-bghqfmea.js.map → studio-wwseqyw0.js.map} +0 -0
- /package/dist/chunks/{studio-nqw433kv.js.map → studio-xmvbhg31.js.map} +0 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance — where the value in a field came from, as one chip (plan §6.2).
|
|
3
|
+
*
|
|
4
|
+
* Four states, and the two that carry information NAME THEIR SOURCE:
|
|
5
|
+
*
|
|
6
|
+
* | State | Rendering | Click |
|
|
7
|
+
* | --------- | --------------------------------- | ----------------- |
|
|
8
|
+
* | set | accent dot | clear the value |
|
|
9
|
+
* | inherited | amber, "from Base" / "from Md" | jump to the donor |
|
|
10
|
+
* | default | nothing — absence IS the ghost | — |
|
|
11
|
+
* | bound | violet, naming the signal/formula | open the source |
|
|
12
|
+
* | mixed | neutral, "mixed (3)" — see below | clear across all |
|
|
13
|
+
*
|
|
14
|
+
* **Mixed** is what a multi-selection says when the selected elements disagree about a field
|
|
15
|
+
* (§6.5). It is a fifth state of THIS chip rather than a fifth widget, because it answers the same
|
|
16
|
+
* question the other four answer — _where did the value in this box come from?_ — and the honest
|
|
17
|
+
* answer is "from several places, and they differ". It names how many elements are involved, so
|
|
18
|
+
* "mixed" never has to mean "some unknown number of things". Typing into a Mixed field commits the
|
|
19
|
+
* new value to every selected element in one transaction; the chip's click clears it from all of
|
|
20
|
+
* them, which is the same verb `set` has, applied to the same set.
|
|
21
|
+
*
|
|
22
|
+
* `set` and `default` are the only two the inspector could previously express, and it expressed
|
|
23
|
+
* them as a dot or the absence of one. The other two were known at render time and thrown away: an
|
|
24
|
+
* inherited style value arrived as an input placeholder, visually indistinguishable from the CSS
|
|
25
|
+
* initial value `style-inputs.ts` renders into the same slot, and a `${…}`-bound value looked like
|
|
26
|
+
* a literal that happened to contain braces.
|
|
27
|
+
*
|
|
28
|
+
* **One module, two cascades.** The Style tab reads provenance against the breakpoint / scheme /
|
|
29
|
+
* site-token cascade; Component Props reads it against the component's declared defaults. Same
|
|
30
|
+
* question, same words, same chip — so the two surfaces cannot drift into two vocabularies for one
|
|
31
|
+
* idea. The chip's CSS lives in `styles/inspector.css` beside `.set-dot`, which the `set` state
|
|
32
|
+
* reuses outright: a 6px accent dot that clears the value on click is exactly what the set state
|
|
33
|
+
* has always been, and every stylesheet rule and test that addresses `.set-dot` keeps addressing
|
|
34
|
+
* the same thing.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
import { html, nothing } from "lit-html";
|
|
38
|
+
import { classMap } from "lit-html/directives/class-map.js";
|
|
39
|
+
|
|
40
|
+
/** The states of §6.2 (four) plus §6.5's `mixed`, in the order the table lists them. */
|
|
41
|
+
export type ProvenanceState = "set" | "inherited" | "default" | "bound" | "mixed";
|
|
42
|
+
|
|
43
|
+
/** Where one field's value came from, and what clicking the chip does about it. */
|
|
44
|
+
export interface FieldProvenance {
|
|
45
|
+
state: ProvenanceState;
|
|
46
|
+
/**
|
|
47
|
+
* Who supplied the value, in the words a reader would use — `"Base"`, `"Md"`, `"site tokens"`,
|
|
48
|
+
* `"the component default"`, or a signal name. Rendered verbatim after the word "from" for
|
|
49
|
+
* `inherited`, and on its own for `bound`, so a caller passes the noun and never the preposition.
|
|
50
|
+
* For `mixed` it is the COUNT of disagreeing elements, as a string.
|
|
51
|
+
*/
|
|
52
|
+
donor?: string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Clear (`set`), jump to the donor (`inherited`), open the source (`bound`). A chip with no
|
|
55
|
+
* handler renders as a `<span>`, never a `<button>`: a control that looks pressable and does
|
|
56
|
+
* nothing is the defect this phase exists to remove.
|
|
57
|
+
*/
|
|
58
|
+
onClick?: (() => void) | undefined;
|
|
59
|
+
/** Overrides the derived tooltip. */
|
|
60
|
+
title?: string | undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** The lead word of the derived tooltip, per state. */
|
|
64
|
+
const PROVENANCE_TITLES: Readonly<Record<ProvenanceState, string>> = {
|
|
65
|
+
bound: "Bound",
|
|
66
|
+
default: "Not set",
|
|
67
|
+
inherited: "Inherited",
|
|
68
|
+
mixed: "Mixed",
|
|
69
|
+
set: "Set here",
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/** The chip's own text. The dots say nothing; the two informative states name a donor. */
|
|
73
|
+
function provenanceText(p: FieldProvenance): string {
|
|
74
|
+
if (p.state === "inherited") {
|
|
75
|
+
return p.donor ? `from ${p.donor}` : "inherited";
|
|
76
|
+
}
|
|
77
|
+
if (p.state === "bound") {
|
|
78
|
+
return p.donor ?? "bound";
|
|
79
|
+
}
|
|
80
|
+
if (p.state === "mixed") {
|
|
81
|
+
return p.donor ? `mixed (${p.donor})` : "mixed";
|
|
82
|
+
}
|
|
83
|
+
return "";
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** The tooltip a chip carries when the caller does not supply one. */
|
|
87
|
+
export function provenanceTitle(prop: string, p: FieldProvenance): string {
|
|
88
|
+
if (p.title) {
|
|
89
|
+
return p.title;
|
|
90
|
+
}
|
|
91
|
+
const lead = PROVENANCE_TITLES[p.state];
|
|
92
|
+
if (p.state === "inherited") {
|
|
93
|
+
return `${lead} from ${p.donor ?? "the cascade"} — click to go there`;
|
|
94
|
+
}
|
|
95
|
+
if (p.state === "bound") {
|
|
96
|
+
return p.donor ? `${lead} to ${p.donor} — click to open it` : lead;
|
|
97
|
+
}
|
|
98
|
+
if (p.state === "set") {
|
|
99
|
+
return `${lead} — click to clear ${prop}`;
|
|
100
|
+
}
|
|
101
|
+
if (p.state === "mixed") {
|
|
102
|
+
const count = p.donor ? `${p.donor} selected elements` : "the selected elements";
|
|
103
|
+
return `${lead} — ${count} have different values for ${prop}; typing sets them all`;
|
|
104
|
+
}
|
|
105
|
+
return `${lead} — ${prop} falls back to the browser default`;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The provenance chip.
|
|
110
|
+
*
|
|
111
|
+
* `default` renders **nothing**, and that is the ghost: a dot on every unset row is 138 dots on the
|
|
112
|
+
* Style tab and a uniform grey field on Content, which says less than silence. `.set-dot`'s own
|
|
113
|
+
* documented rule already reads "only show when the property is explicitly set" (ui-guidelines
|
|
114
|
+
* §4.2) — this keeps it, and gives the two states that were previously indistinguishable from
|
|
115
|
+
* absence a chip of their own.
|
|
116
|
+
*
|
|
117
|
+
* @param {string} prop — the field key, used in the derived tooltip.
|
|
118
|
+
* @param {FieldProvenance} p
|
|
119
|
+
* @returns {import("lit-html").TemplateResult | typeof nothing}
|
|
120
|
+
*/
|
|
121
|
+
export function renderProvenanceChip(prop: string, p: FieldProvenance) {
|
|
122
|
+
if (p.state === "default") {
|
|
123
|
+
return nothing;
|
|
124
|
+
}
|
|
125
|
+
const text = provenanceText(p);
|
|
126
|
+
const title = provenanceTitle(prop, p);
|
|
127
|
+
const isDot = p.state === "set";
|
|
128
|
+
const classes = classMap({
|
|
129
|
+
"provenance-chip": true,
|
|
130
|
+
[`provenance-chip--${p.state}`]: true,
|
|
131
|
+
// The set state reuses `.set-dot`'s geometry — the chip is a generalisation of the dot, not a
|
|
132
|
+
// Replacement for it, and a 6px circle is not a button.
|
|
133
|
+
"set-dot": isDot,
|
|
134
|
+
});
|
|
135
|
+
const { onClick } = p;
|
|
136
|
+
if (!onClick) {
|
|
137
|
+
return html`<span class=${classes} title=${title}>${text}</span>`;
|
|
138
|
+
}
|
|
139
|
+
const activate = (e: Event) => {
|
|
140
|
+
e.stopPropagation();
|
|
141
|
+
e.preventDefault();
|
|
142
|
+
onClick();
|
|
143
|
+
};
|
|
144
|
+
return isDot
|
|
145
|
+
? html`<span class=${classes} title=${title} @click=${activate}>${text}</span>`
|
|
146
|
+
: html`<button type="button" class=${classes} title=${title} @click=${activate}>
|
|
147
|
+
${text}
|
|
148
|
+
</button>`;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// ─── Section summaries ────────────────────────────────────────────────────────
|
|
152
|
+
|
|
153
|
+
/** How many fields in a group are in each informative state. */
|
|
154
|
+
export interface ProvenanceCounts {
|
|
155
|
+
set: number;
|
|
156
|
+
inherited: number;
|
|
157
|
+
bound: number;
|
|
158
|
+
mixed: number;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Tally a group of states.
|
|
163
|
+
*
|
|
164
|
+
* @param {Iterable<ProvenanceState>} states
|
|
165
|
+
* @returns {ProvenanceCounts}
|
|
166
|
+
*/
|
|
167
|
+
export function countProvenance(states: Iterable<ProvenanceState>): ProvenanceCounts {
|
|
168
|
+
const counts: ProvenanceCounts = { bound: 0, inherited: 0, mixed: 0, set: 0 };
|
|
169
|
+
for (const state of states) {
|
|
170
|
+
if (state !== "default") {
|
|
171
|
+
counts[state] += 1;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return counts;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** Whether a tally has anything to show at all. */
|
|
178
|
+
export function hasProvenance(counts: ProvenanceCounts): boolean {
|
|
179
|
+
return counts.set > 0 || counts.inherited > 0 || counts.bound > 0 || counts.mixed > 0;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** "3 set here · 2 inherited · 1 bound" — the summary a collapsed section states on hover. */
|
|
183
|
+
export function provenanceSummaryText(counts: ProvenanceCounts): string {
|
|
184
|
+
const parts: string[] = [];
|
|
185
|
+
if (counts.set > 0) {
|
|
186
|
+
parts.push(`${counts.set} set here`);
|
|
187
|
+
}
|
|
188
|
+
if (counts.inherited > 0) {
|
|
189
|
+
parts.push(`${counts.inherited} inherited`);
|
|
190
|
+
}
|
|
191
|
+
if (counts.bound > 0) {
|
|
192
|
+
parts.push(`${counts.bound} bound`);
|
|
193
|
+
}
|
|
194
|
+
if (counts.mixed > 0) {
|
|
195
|
+
parts.push(`${counts.mixed} mixed`);
|
|
196
|
+
}
|
|
197
|
+
return parts.length > 0 ? parts.join(" · ") : "nothing set";
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* A collapsed accordion heading's provenance dots.
|
|
202
|
+
*
|
|
203
|
+
* This is what retires the Style tab's "Active" filter toggle. That toggle existed for one reason —
|
|
204
|
+
* with a section closed there was no way to tell whether anything inside it was set, so the only
|
|
205
|
+
* way to find your own overrides was to hide every property that had none. A heading that says "3
|
|
206
|
+
* set here · 2 inherited" answers the question without changing what the panel shows.
|
|
207
|
+
*
|
|
208
|
+
* The `set` dot keeps its clear-all handler, so the heading loses no affordance.
|
|
209
|
+
*
|
|
210
|
+
* @param {ProvenanceCounts} counts
|
|
211
|
+
* @param {{ onClearSet?: () => void; clearTitle?: string }} opts
|
|
212
|
+
*/
|
|
213
|
+
export function renderProvenanceDots(
|
|
214
|
+
counts: ProvenanceCounts,
|
|
215
|
+
opts: { onClearSet?: (() => void) | undefined; clearTitle?: string | undefined } = {},
|
|
216
|
+
) {
|
|
217
|
+
if (!hasProvenance(counts)) {
|
|
218
|
+
return nothing;
|
|
219
|
+
}
|
|
220
|
+
const summary = provenanceSummaryText(counts);
|
|
221
|
+
return html`
|
|
222
|
+
<span class="provenance-dots" title=${summary} aria-label=${summary}>
|
|
223
|
+
${
|
|
224
|
+
counts.set > 0
|
|
225
|
+
? renderProvenanceChip("section", {
|
|
226
|
+
state: "set",
|
|
227
|
+
title: opts.clearTitle ?? summary,
|
|
228
|
+
...(opts.onClearSet ? { onClick: opts.onClearSet } : {}),
|
|
229
|
+
})
|
|
230
|
+
: nothing
|
|
231
|
+
}
|
|
232
|
+
${
|
|
233
|
+
counts.inherited > 0
|
|
234
|
+
? html`<span
|
|
235
|
+
class="provenance-chip provenance-chip--inherited set-dot"
|
|
236
|
+
title=${summary}
|
|
237
|
+
></span>`
|
|
238
|
+
: nothing
|
|
239
|
+
}
|
|
240
|
+
${
|
|
241
|
+
counts.bound > 0
|
|
242
|
+
? html`<span
|
|
243
|
+
class="provenance-chip provenance-chip--bound set-dot"
|
|
244
|
+
title=${summary}
|
|
245
|
+
></span>`
|
|
246
|
+
: nothing
|
|
247
|
+
}
|
|
248
|
+
${
|
|
249
|
+
counts.mixed > 0
|
|
250
|
+
? html`<span
|
|
251
|
+
class="provenance-chip provenance-chip--mixed set-dot"
|
|
252
|
+
title=${summary}
|
|
253
|
+
></span>`
|
|
254
|
+
: nothing
|
|
255
|
+
}
|
|
256
|
+
</span>
|
|
257
|
+
`;
|
|
258
|
+
}
|