@jxsuite/studio 2.0.1 → 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-799jpvhm.js → components-2bpqp4mq.js} +5 -7
- package/dist/chunks/{components-799jpvhm.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-8jxwts2p.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-gs6kqdt1.js → studio-adn0z1k3.js} +14 -8
- package/dist/chunks/{studio-gs6kqdt1.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-esrewxap.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-v7jkjqng.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-jm0z592w.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 +21080 -32585
- 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 +7 -0
- package/src/new-project/location-fields.ts +9 -1
- package/src/new-project/new-project-modal.ts +221 -245
- 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 -53
- 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 +30 -1
- 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 +7 -1
- 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-qr3drkkw.js +0 -531
- package/dist/chunks/extension-sections-qr3drkkw.js.map +0 -12
- package/dist/chunks/files-j8a1t06k.js +0 -50
- package/dist/chunks/files-j8a1t06k.js.map +0 -9
- package/dist/chunks/git-panel-xtq5z81x.js +0 -28
- package/dist/chunks/git-panel-xtq5z81x.js.map +0 -9
- package/dist/chunks/layers-panel-ancn2wpq.js +0 -26
- package/dist/chunks/layers-panel-ancn2wpq.js.map +0 -9
- package/dist/chunks/settings-modal-17ttr96g.js +0 -29
- package/dist/chunks/settings-modal-17ttr96g.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-0xgs7xrs.js +0 -429
- package/dist/chunks/studio-0xgs7xrs.js.map +0 -13
- package/dist/chunks/studio-4d8hzcz5.js +0 -3427
- package/dist/chunks/studio-4d8hzcz5.js.map +0 -26
- package/dist/chunks/studio-4k0m4fmp.js.map +0 -13
- package/dist/chunks/studio-9smfzqhc.js +0 -19
- package/dist/chunks/studio-9smfzqhc.js.map +0 -10
- package/dist/chunks/studio-jm0z592w.js.map +0 -115
- package/dist/chunks/studio-m2t4mdg5.js +0 -1854
- package/dist/chunks/studio-m2t4mdg5.js.map +0 -18
- package/dist/chunks/studio-n4p11dfy.js +0 -853
- package/dist/chunks/studio-n4p11dfy.js.map +0 -12
- package/dist/chunks/studio-qkvt37c0.js.map +0 -9
- package/dist/chunks/studio-sjh1wt1a.js +0 -3744
- package/dist/chunks/studio-sjh1wt1a.js.map +0 -22
- package/dist/chunks/studio-v7jkjqng.js.map +0 -46
- 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-yfcstdzy.js +0 -399
- package/dist/chunks/studio-yfcstdzy.js.map +0 -12
- package/dist/chunks/studio-zp7jncs8.js +0 -469
- package/dist/chunks/studio-zp7jncs8.js.map +0 -14
- 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-8jxwts2p.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-esrewxap.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,234 @@
|
|
|
1
|
+
/// <reference lib="dom" />
|
|
2
|
+
/**
|
|
3
|
+
* Problems — everything that must be fixed, listed until it is (plan §7.1, §7.2).
|
|
4
|
+
*
|
|
5
|
+
* `services/notify.ts` landed the RECORD in P4 wave A: a failure is a `Notification` with `tier:
|
|
6
|
+
* "problem"`, which means the app promises to keep it until somebody fixes it. This is the surface
|
|
7
|
+
* that keeps the promise. Until it existed, `problems` was a reactive array with a count (the rail
|
|
8
|
+
* badge, the status bar) and no way to read what was in it.
|
|
9
|
+
*
|
|
10
|
+
* A row is the record, rendered:
|
|
11
|
+
*
|
|
12
|
+
* | Field | Renders as |
|
|
13
|
+
* | ---------- | -------------------------------------------------------------------------- |
|
|
14
|
+
* | `severity` | the glyph and the row's colour |
|
|
15
|
+
* | `message` | the line |
|
|
16
|
+
* | `source` | the group heading — "Save", "Source Control", "Canvas", "Assistant" |
|
|
17
|
+
* | `path` | a button that opens the file it names |
|
|
18
|
+
* | `detail` | a disclosure with the captured log (an Activity failure puts its log here) |
|
|
19
|
+
* | `action` | a REAL button, built from the command record, not a per-call-site closure |
|
|
20
|
+
*
|
|
21
|
+
* **The recovery button is the command.** Its label is the command's title, its disabled state is
|
|
22
|
+
* the command's `enablement`, and its tooltip is the command's `requires` sentence — four facts a
|
|
23
|
+
* callback could carry none of, and the reason `NotifyOptions.action` is a command id. A row whose
|
|
24
|
+
* command the registry does not have renders no button at all, rather than a dead one.
|
|
25
|
+
*
|
|
26
|
+
* **One record, one host.** Problems lives in the BOTTOM DOCK — plan §7.2's table says so outright
|
|
27
|
+
* ("Problems | Bottom dock ⑪, badge on the rail") and §3.2 ⑪ makes it the dock's first tab. §3.2 ③
|
|
28
|
+
* also lists it among the Navigator's panels; that line loses, because a list open in two docks at
|
|
29
|
+
* once is two hosts for one record, and hosting it in the Navigator spends left-dock width on
|
|
30
|
+
* something that belongs under the pane grid.
|
|
31
|
+
*
|
|
32
|
+
* **And no rail button.** It had one, in the PROJECT group, which meant a control on the far left
|
|
33
|
+
* that opened a dock along the bottom — the rail carried a per-dock branch in three places to keep
|
|
34
|
+
* that one button honest. It also made "things are wrong here" a permanent fixture of the shell,
|
|
35
|
+
* which is a poor first thing to promise someone opening the product. The warning count in the
|
|
36
|
+
* status bar is the standing signal, and it runs `view.setBottomTab { tab: "problems" }` — the same
|
|
37
|
+
* verb Diff, Logic and Activity are reached by.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
import { html, nothing } from "lit-html";
|
|
41
|
+
import { repeat } from "lit-html/directives/repeat.js";
|
|
42
|
+
import { activeRegistry } from "../commands/active-registry";
|
|
43
|
+
import { clearProblems, dismiss, problemCount, problems } from "../services/notify";
|
|
44
|
+
import { registerPanel } from "./panel-registry";
|
|
45
|
+
import { renderEmptyState } from "./empty-state";
|
|
46
|
+
import type { Notification, Severity } from "../services/notify";
|
|
47
|
+
import type { PanelBody } from "./panel-registry";
|
|
48
|
+
import type { TemplateResult } from "lit-html";
|
|
49
|
+
|
|
50
|
+
/** The severity glyphs — the same four `ui/layers.ts` gives the toasts, for the same reason. */
|
|
51
|
+
const SEVERITY_ICON: Readonly<Record<Severity, string>> = {
|
|
52
|
+
error: "✕",
|
|
53
|
+
info: "ℹ",
|
|
54
|
+
success: "✓",
|
|
55
|
+
warn: "!",
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/** Problems with no `source` are grouped under this heading rather than under an empty one. */
|
|
59
|
+
export const UNGROUPED_SOURCE = "Elsewhere";
|
|
60
|
+
|
|
61
|
+
/** One heading and the rows under it, in first-seen order. */
|
|
62
|
+
export interface ProblemGroup {
|
|
63
|
+
source: string;
|
|
64
|
+
records: Notification[];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Group the list by `source`, keeping first-seen order.
|
|
69
|
+
*
|
|
70
|
+
* Grouped rather than sorted by severity: a reader who has just saved wants the save's failures
|
|
71
|
+
* together, and the severity is already the glyph on every row. First-seen order also means a new
|
|
72
|
+
* problem never reorders the rows above it, which is what makes the list readable while it grows.
|
|
73
|
+
*/
|
|
74
|
+
export function groupProblems(records: readonly Notification[] = problems): ProblemGroup[] {
|
|
75
|
+
const groups: ProblemGroup[] = [];
|
|
76
|
+
for (const record of records) {
|
|
77
|
+
const source = record.source ?? UNGROUPED_SOURCE;
|
|
78
|
+
const group = groups.find((candidate) => candidate.source === source);
|
|
79
|
+
if (group) {
|
|
80
|
+
group.records.push(record);
|
|
81
|
+
} else {
|
|
82
|
+
groups.push({ records: [record], source });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return groups;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Open the file a problem names.
|
|
90
|
+
*
|
|
91
|
+
* Lazily imported for the reason `panels/properties-panel.ts` and `panels/empty-state.ts` already
|
|
92
|
+
* are: this module is on `shell.ts`'s static import path (the Bottom dock is mounted from there),
|
|
93
|
+
* and a static edge would drag the file browser and the format host into the shell's own graph.
|
|
94
|
+
*/
|
|
95
|
+
function openProblemPath(path: string): void {
|
|
96
|
+
void import("../files/files.js").then((m) => m.openFileInTab(path));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** The recovery button, or `nothing` when the record named no command or the registry lacks it. */
|
|
100
|
+
function actionTpl(record: Notification): TemplateResult | typeof nothing {
|
|
101
|
+
const id = record.action;
|
|
102
|
+
const registry = id === undefined ? null : activeRegistry();
|
|
103
|
+
if (!registry || id === undefined || !registry.get(id) || !registry.isVisible(id)) {
|
|
104
|
+
return nothing;
|
|
105
|
+
}
|
|
106
|
+
const command = registry.get(id)!;
|
|
107
|
+
const reason = registry.disabledReason(id);
|
|
108
|
+
return html`<button
|
|
109
|
+
class="problem-action"
|
|
110
|
+
?disabled=${reason !== undefined}
|
|
111
|
+
title=${reason === undefined ? command.title : `${command.title} — requires ${reason}`}
|
|
112
|
+
@click=${() => {
|
|
113
|
+
void registry.run(id, record.actionArgs);
|
|
114
|
+
}}
|
|
115
|
+
>
|
|
116
|
+
${command.title}
|
|
117
|
+
</button>`;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** One problem. */
|
|
121
|
+
function problemTpl(record: Notification): TemplateResult {
|
|
122
|
+
return html`
|
|
123
|
+
<li class="problem-row problem-row--${record.severity}">
|
|
124
|
+
<span class="problem-icon" aria-hidden="true">${SEVERITY_ICON[record.severity]}</span>
|
|
125
|
+
<div class="problem-body">
|
|
126
|
+
<div class="problem-message">${record.message}</div>
|
|
127
|
+
${
|
|
128
|
+
record.path
|
|
129
|
+
? html`<button
|
|
130
|
+
class="problem-path"
|
|
131
|
+
title=${`Open ${record.path}`}
|
|
132
|
+
@click=${() => {
|
|
133
|
+
openProblemPath(record.path!);
|
|
134
|
+
}}
|
|
135
|
+
>
|
|
136
|
+
${record.path}
|
|
137
|
+
</button>`
|
|
138
|
+
: nothing
|
|
139
|
+
}
|
|
140
|
+
${record.detail ? html`<pre class="problem-detail">${record.detail}</pre>` : nothing}
|
|
141
|
+
</div>
|
|
142
|
+
${actionTpl(record)}
|
|
143
|
+
<button
|
|
144
|
+
class="problem-dismiss"
|
|
145
|
+
title="Dismiss"
|
|
146
|
+
aria-label=${`Dismiss: ${record.message}`}
|
|
147
|
+
@click=${() => {
|
|
148
|
+
dismiss(record.id);
|
|
149
|
+
}}
|
|
150
|
+
>
|
|
151
|
+
<span aria-hidden="true">×</span>
|
|
152
|
+
</button>
|
|
153
|
+
</li>
|
|
154
|
+
`;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* The Problems body — the Bottom dock's first tab, and the only place this list is drawn.
|
|
159
|
+
*
|
|
160
|
+
* Exported separately from the record so a test (and the empty state below it) can be rendered
|
|
161
|
+
* without a dock: the record's `render` is this function with the panel context thrown away,
|
|
162
|
+
* because a list of problems reads nothing about the focused document.
|
|
163
|
+
*/
|
|
164
|
+
export function renderProblemsList(): PanelBody {
|
|
165
|
+
if (problems.length === 0) {
|
|
166
|
+
return renderEmptyState({
|
|
167
|
+
detail: "Failed writes, validation errors and render failures are listed here until fixed.",
|
|
168
|
+
message: "Nothing needs fixing.",
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return html`
|
|
172
|
+
<div class="problems-panel">
|
|
173
|
+
<div class="problems-actions">
|
|
174
|
+
<button
|
|
175
|
+
class="problems-clear"
|
|
176
|
+
@click=${() => {
|
|
177
|
+
clearProblems();
|
|
178
|
+
}}
|
|
179
|
+
>
|
|
180
|
+
Clear ${problemCount()}
|
|
181
|
+
</button>
|
|
182
|
+
</div>
|
|
183
|
+
${groupProblems().map(
|
|
184
|
+
(group) => html`
|
|
185
|
+
<section class="problem-group">
|
|
186
|
+
<h3 class="problem-group-title">${group.source}</h3>
|
|
187
|
+
<ul class="problem-list">
|
|
188
|
+
${repeat(
|
|
189
|
+
group.records,
|
|
190
|
+
(record) => record.id,
|
|
191
|
+
(record) => problemTpl(record),
|
|
192
|
+
)}
|
|
193
|
+
</ul>
|
|
194
|
+
</section>
|
|
195
|
+
`,
|
|
196
|
+
)}
|
|
197
|
+
</div>
|
|
198
|
+
`;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Define the Problems panel — the P3 placeholder, built.
|
|
203
|
+
*
|
|
204
|
+
* P3 registered this id with `when: () => false` and a `render` that threw: "declared in the design
|
|
205
|
+
* and not yet in the app", holding the rail slot §3.2 ② had already spent so the budget counted it
|
|
206
|
+
* from the day it was named. This is the edit that phase described — the predicate is gone, the
|
|
207
|
+
* body is real, and the badge is live.
|
|
208
|
+
*
|
|
209
|
+
* One caller: `panels/bottom-dock.ts`'s {@link import("./bottom-dock").registerBottomPanels}, which
|
|
210
|
+
* is the module that owns the dock this record is drawn in. `registerPanel` throws on a duplicate
|
|
211
|
+
* id and there is no guard here, because a second call IS a second definition site.
|
|
212
|
+
*/
|
|
213
|
+
export function registerProblemsPanel(): void {
|
|
214
|
+
registerPanel({
|
|
215
|
+
id: "problems",
|
|
216
|
+
title: "Problems",
|
|
217
|
+
level: "project",
|
|
218
|
+
dock: "bottom",
|
|
219
|
+
// OFF THE RAIL, and the argument is the rail's own meaning rather than taste. Every other rail
|
|
220
|
+
// Button opens a panel at the SIDE; this one opened a dock at the BOTTOM, so the rail had to
|
|
221
|
+
// Grow a per-dock branch in three places to keep one button honest. It also made "Problems" a
|
|
222
|
+
// Standing, first-class element of the shell's furniture — a product whose permanent navigation
|
|
223
|
+
// Advertises a place to find things wrong with it. The count still reaches the user the moment
|
|
224
|
+
// There is one, from the status bar (`panels/statusbar.ts`), which is where ambient project
|
|
225
|
+
// State already lives beside the branch and the deploy step.
|
|
226
|
+
rail: false,
|
|
227
|
+
// Inert, like every other `rail: false` panel's: `PanelRecord.icon` is required and `tabIcon()`
|
|
228
|
+
// Is only ever called by a rail button. The row that used to resolve it is gone from
|
|
229
|
+
// `activity-bar.ts`, and `check-icons.ts` is what refuses to let the two drift apart.
|
|
230
|
+
icon: "sp-icon-alert",
|
|
231
|
+
badge: () => problemCount() || null,
|
|
232
|
+
render: () => renderProblemsList(),
|
|
233
|
+
});
|
|
234
|
+
}
|