@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
|
@@ -6,11 +6,24 @@
|
|
|
6
6
|
* cf-settings); connected without `build.deploy` → create-and-connect form;
|
|
7
7
|
* connected → deployment status (publishing rides every commit).
|
|
8
8
|
*
|
|
9
|
+
* **The token was in the DOM, on every open.** `credentialTpl` rendered
|
|
10
|
+
* `value=${getCfToken()}` into an `sp-textfield` whenever a token was stored and
|
|
11
|
+
* the platform had no hosted broker — a control the reader had not asked to
|
|
12
|
+
* edit, on a surface `scripts/screenshots` photographs. `type="password"` masks
|
|
13
|
+
* pixels and nothing else: the value is in the attribute, in the serialized
|
|
14
|
+
* HTML, in the accessibility tree and in every DOM dump. It is gone. A stored
|
|
15
|
+
* token is now reported as *stored*, the field is only ever drawn empty for a
|
|
16
|
+
* REPLACEMENT the reader asked for, and revoking lives where every other
|
|
17
|
+
* credential's does — Preferences › Accounts (`studio.md` §15 rule 1: a surface
|
|
18
|
+
* never prints the secret it describes).
|
|
19
|
+
*
|
|
9
20
|
* @license MIT
|
|
10
21
|
*/
|
|
11
22
|
|
|
12
23
|
import { html } from "lit-html";
|
|
13
24
|
import type { DeployConfig, ProjectConfig } from "@jxsuite/schema/types";
|
|
25
|
+
import { activeRegistry } from "../commands/active-registry";
|
|
26
|
+
import { currentDeploy, noteDeployment } from "./deploy-checklist";
|
|
14
27
|
import { getPlatform } from "../platform";
|
|
15
28
|
import { getCfToken, setCfToken } from "../services/cf-settings";
|
|
16
29
|
import { projectState } from "../store";
|
|
@@ -33,16 +46,14 @@ let _accounts: CfAccount[] = [];
|
|
|
33
46
|
let _deployment: PagesDeploymentInfo | null = null;
|
|
34
47
|
let _error = "";
|
|
35
48
|
let _busy = false;
|
|
49
|
+
/** Whether the reader has asked to replace a token that is already stored. */
|
|
50
|
+
let _replacing = false;
|
|
36
51
|
let _form = { accountId: "", branch: "main", owner: "", projectName: "", repo: "" };
|
|
37
52
|
|
|
38
53
|
function currentConfig(): ProjectConfig | null {
|
|
39
54
|
return (projectState?.projectConfig as ProjectConfig | undefined) ?? null;
|
|
40
55
|
}
|
|
41
56
|
|
|
42
|
-
function currentDeploy(): DeployConfig | undefined {
|
|
43
|
-
return currentConfig()?.build?.deploy;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
57
|
function deriveSlug(name: string): string {
|
|
47
58
|
return (
|
|
48
59
|
name
|
|
@@ -71,6 +82,9 @@ async function loadConnection(): Promise<void> {
|
|
|
71
82
|
const deploy = currentDeploy();
|
|
72
83
|
if (deploy) {
|
|
73
84
|
_deployment = await latestDeployment(deploy);
|
|
85
|
+
// We ASKED, so the deploy checklist may stop saying "unknown" — including when the answer
|
|
86
|
+
// Was "none", which is a fact and not an absence of one.
|
|
87
|
+
noteDeployment(_deployment);
|
|
74
88
|
}
|
|
75
89
|
}
|
|
76
90
|
} catch (error) {
|
|
@@ -80,13 +94,34 @@ async function loadConnection(): Promise<void> {
|
|
|
80
94
|
render();
|
|
81
95
|
}
|
|
82
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Take the token straight from the live control to storage.
|
|
99
|
+
*
|
|
100
|
+
* It is read from the DOM and never written back to it, which is the whole asymmetry: a secret may
|
|
101
|
+
* pass through a field the user typed it into, and may not be painted into one they did not.
|
|
102
|
+
*/
|
|
83
103
|
async function saveToken(host: HTMLElement): Promise<void> {
|
|
84
104
|
const input = host.querySelector<HTMLInputElement>("#cf-token-input");
|
|
85
|
-
|
|
105
|
+
const value = (input?.value ?? "").trim();
|
|
106
|
+
if (!value) {
|
|
107
|
+
_error = "Paste a token, or use Preferences › Accounts to forget the stored one.";
|
|
108
|
+
render();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
setCfToken(value);
|
|
112
|
+
if (input) {
|
|
113
|
+
input.value = "";
|
|
114
|
+
}
|
|
115
|
+
_replacing = false;
|
|
86
116
|
_error = "";
|
|
87
117
|
await loadConnection();
|
|
88
118
|
}
|
|
89
119
|
|
|
120
|
+
/** Open Preferences on Accounts — the one place a credential is listed and forgotten. */
|
|
121
|
+
function openAccounts(): void {
|
|
122
|
+
void activeRegistry()?.run("app.preferences", { section: "accounts" });
|
|
123
|
+
}
|
|
124
|
+
|
|
90
125
|
async function hostedConnect(): Promise<void> {
|
|
91
126
|
_busy = true;
|
|
92
127
|
render();
|
|
@@ -164,28 +199,67 @@ function credentialTpl() {
|
|
|
164
199
|
if (platform.cfConnect) {
|
|
165
200
|
return html`
|
|
166
201
|
<p>Connect your Cloudflare account to publish this site.</p>
|
|
167
|
-
<sp-button
|
|
202
|
+
<sp-button
|
|
203
|
+
?disabled=${_busy}
|
|
204
|
+
@click=${() => {
|
|
205
|
+
void hostedConnect();
|
|
206
|
+
}}
|
|
207
|
+
>
|
|
168
208
|
Connect Cloudflare
|
|
169
209
|
</sp-button>
|
|
170
210
|
`;
|
|
171
211
|
}
|
|
212
|
+
const stored = getCfToken() !== "";
|
|
213
|
+
if (stored && !_replacing) {
|
|
214
|
+
// The token is STORED, and that is the whole of what this says. It was rejected or has expired
|
|
215
|
+
// — otherwise `_connection.connected` would be true and this branch unreachable — so the two
|
|
216
|
+
// Honest moves are to replace it or to forget it, and neither needs to see it.
|
|
217
|
+
return html`
|
|
218
|
+
<p>
|
|
219
|
+
A Cloudflare API token is stored on this machine, and Cloudflare did not accept it. It may
|
|
220
|
+
have been revoked, or it may be missing the Account Settings Read and Pages Read/Write
|
|
221
|
+
permissions.
|
|
222
|
+
</p>
|
|
223
|
+
<div class="publish-actions">
|
|
224
|
+
<sp-button
|
|
225
|
+
?disabled=${_busy}
|
|
226
|
+
@click=${() => {
|
|
227
|
+
_replacing = true;
|
|
228
|
+
_error = "";
|
|
229
|
+
render();
|
|
230
|
+
}}
|
|
231
|
+
>
|
|
232
|
+
Replace token
|
|
233
|
+
</sp-button>
|
|
234
|
+
<sp-button variant="secondary" @click=${openAccounts}>Preferences › Accounts</sp-button>
|
|
235
|
+
</div>
|
|
236
|
+
`;
|
|
237
|
+
}
|
|
172
238
|
return html`
|
|
173
239
|
<p>
|
|
174
240
|
Paste a Cloudflare API token (permissions: Account Settings Read, Pages Read/Write). It is
|
|
175
|
-
stored
|
|
241
|
+
stored on this machine and only sent to the same-origin proxy — Studio never renders it back.
|
|
176
242
|
</p>
|
|
177
243
|
${fieldRow(
|
|
178
244
|
"API token",
|
|
179
245
|
html`<sp-textfield
|
|
180
246
|
id="cf-token-input"
|
|
181
247
|
type="password"
|
|
182
|
-
value
|
|
248
|
+
value=""
|
|
183
249
|
placeholder="cf_..."
|
|
184
250
|
></sp-textfield>`,
|
|
185
251
|
)}
|
|
186
|
-
<
|
|
187
|
-
|
|
188
|
-
|
|
252
|
+
<div class="publish-actions">
|
|
253
|
+
<sp-button
|
|
254
|
+
?disabled=${_busy}
|
|
255
|
+
@click=${(e: Event) => {
|
|
256
|
+
void saveToken(hostOf(e));
|
|
257
|
+
}}
|
|
258
|
+
>
|
|
259
|
+
Verify & Connect
|
|
260
|
+
</sp-button>
|
|
261
|
+
<sp-button variant="secondary" @click=${openAccounts}>Preferences › Accounts</sp-button>
|
|
262
|
+
</div>
|
|
189
263
|
`;
|
|
190
264
|
}
|
|
191
265
|
|
|
@@ -248,7 +322,12 @@ function connectFormTpl() {
|
|
|
248
322
|
}}
|
|
249
323
|
></sp-textfield>`,
|
|
250
324
|
)}
|
|
251
|
-
<sp-button
|
|
325
|
+
<sp-button
|
|
326
|
+
?disabled=${_busy}
|
|
327
|
+
@click=${() => {
|
|
328
|
+
void submitConnect();
|
|
329
|
+
}}
|
|
330
|
+
>
|
|
252
331
|
${_busy ? "Connecting…" : "Create & Connect"}
|
|
253
332
|
</sp-button>
|
|
254
333
|
`;
|
|
@@ -280,10 +359,22 @@ function statusTpl(deploy: DeployConfig) {
|
|
|
280
359
|
}
|
|
281
360
|
<p class="publish-hint">Publishing happens automatically on every commit.</p>
|
|
282
361
|
<div class="publish-actions">
|
|
283
|
-
<sp-button
|
|
362
|
+
<sp-button
|
|
363
|
+
variant="secondary"
|
|
364
|
+
?disabled=${_busy}
|
|
365
|
+
@click=${() => {
|
|
366
|
+
void loadConnection();
|
|
367
|
+
}}
|
|
368
|
+
>
|
|
284
369
|
Refresh
|
|
285
370
|
</sp-button>
|
|
286
|
-
<sp-button
|
|
371
|
+
<sp-button
|
|
372
|
+
variant="negative"
|
|
373
|
+
?disabled=${_busy}
|
|
374
|
+
@click=${() => {
|
|
375
|
+
void disconnect();
|
|
376
|
+
}}
|
|
377
|
+
>
|
|
287
378
|
Disconnect
|
|
288
379
|
</sp-button>
|
|
289
380
|
</div>
|
|
@@ -330,7 +421,7 @@ function errorTpl() {
|
|
|
330
421
|
|
|
331
422
|
function render(): void {
|
|
332
423
|
const tpl = html`
|
|
333
|
-
<div class="new-project-modal publish-modal">
|
|
424
|
+
<div class="new-project-modal publish-modal" data-jx-region="overlay.dialog:publish">
|
|
334
425
|
<div class="new-project-modal-header">
|
|
335
426
|
<h2 class="new-project-modal-title">Publish</h2>
|
|
336
427
|
<sp-action-button size="s" quiet @click=${close}>✕</sp-action-button>
|
|
@@ -341,7 +432,7 @@ function render(): void {
|
|
|
341
432
|
if (_handle) {
|
|
342
433
|
_handle.update(tpl);
|
|
343
434
|
} else {
|
|
344
|
-
_handle = openModal(tpl);
|
|
435
|
+
_handle = openModal(tpl, { label: "Publish", onDismiss: close });
|
|
345
436
|
}
|
|
346
437
|
}
|
|
347
438
|
|
|
@@ -357,8 +448,10 @@ export function seedPublishConnected(options: {
|
|
|
357
448
|
_connection = { accountId: options.accountId ?? "demo-account", connected: true };
|
|
358
449
|
_accounts = [];
|
|
359
450
|
_deployment = options.deployment;
|
|
451
|
+
noteDeployment(options.deployment);
|
|
360
452
|
_error = "";
|
|
361
453
|
_busy = false;
|
|
454
|
+
_replacing = false;
|
|
362
455
|
render();
|
|
363
456
|
}
|
|
364
457
|
|
|
@@ -371,6 +464,7 @@ export function openPublishPanel(): void {
|
|
|
371
464
|
_deployment = null;
|
|
372
465
|
_error = "";
|
|
373
466
|
_busy = false;
|
|
467
|
+
_replacing = false;
|
|
374
468
|
_form = {
|
|
375
469
|
accountId: "",
|
|
376
470
|
branch: "main",
|
package/src/recent-projects.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
2
|
import { getPlatform, hasPlatform } from "./platform";
|
|
3
|
+
import { now } from "./services/clock";
|
|
3
4
|
import type { RecentProjectEntry } from "./types";
|
|
4
5
|
|
|
5
6
|
interface RecentFile {
|
|
@@ -103,7 +104,7 @@ export function getRecentProjects(): RecentProjectEntry[] {
|
|
|
103
104
|
*/
|
|
104
105
|
export function addRecentProject(name: string, root: string) {
|
|
105
106
|
const projects = currentList().filter((p) => p.root !== root);
|
|
106
|
-
projects.unshift({ name, root, timestamp:
|
|
107
|
+
projects.unshift({ name, root, timestamp: now() });
|
|
107
108
|
if (projects.length > MAX_RECENT) {
|
|
108
109
|
projects.length = MAX_RECENT;
|
|
109
110
|
}
|
|
@@ -153,7 +154,7 @@ export function getRecentFiles(root?: string) {
|
|
|
153
154
|
/** @param {{ path: string; name: string; root: string }} file */
|
|
154
155
|
export function trackRecentFile(file: { path: string; name: string; root: string }) {
|
|
155
156
|
const all = loadRecentFiles().filter((f) => !(f.root === file.root && f.path === file.path));
|
|
156
|
-
all.unshift({ name: file.name, path: file.path, root: file.root, timestamp:
|
|
157
|
+
all.unshift({ name: file.name, path: file.path, root: file.root, timestamp: now() });
|
|
157
158
|
// Cap per project so a busy project can't evict another project's history.
|
|
158
159
|
const perRoot = new Map<string, number>();
|
|
159
160
|
const kept: RecentFile[] = [];
|