@jxsuite/studio 5.2.0 → 5.4.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/data/css-meta.json +28 -27
- package/dist/chunks/{cf-account-picker-h4dab9bq.js → cf-account-picker-3f08rry6.js} +21 -18
- package/dist/chunks/{cf-settings-adg74qsk.js → cf-settings-m79r7p5y.js} +4 -4
- package/dist/chunks/{components-5y78e05d.js → components-xm826zjw.js} +3 -3
- package/dist/chunks/{content-source-sgg1sv6n.js → content-source-jt7rbcbc.js} +22 -22
- package/dist/chunks/{convert-to-repeater-mf1cxgfn.js → convert-to-repeater-vg38bq99.js} +22 -22
- package/dist/chunks/{editor-3qhbg51x.js → editor-ddy019sn.js} +2 -2
- package/dist/chunks/entry-commands-64nb2a9a.js +42 -0
- package/dist/chunks/{extension-sections-c6zwzbre.js → extension-sections-r73an5s6.js} +31 -30
- package/dist/chunks/{file-ops-vrpq1jjk.js → file-ops-3xan8mnj.js} +21 -21
- package/dist/chunks/{files-msaf95y6.js → files-egsb0ry8.js} +30 -29
- package/dist/chunks/{format-host-f64fnesp.js → format-host-mym8qnd0.js} +3 -3
- package/dist/chunks/{fs-events-3y6y0nrm.js → fs-events-z2gg8qjt.js} +4 -4
- package/dist/chunks/{git-panel-bv5e22j0.js → git-panel-a05atk6q.js} +20 -20
- package/dist/chunks/{grid-view-1p6hsyjx.css → grid-view-3g1h2re8.css} +956 -139
- package/dist/chunks/{grid-view-paj67nr5.js → grid-view-qaqer9kr.js} +24 -24
- package/dist/chunks/{icons-yy10wk9r.js → icons-drxq9q10.js} +8 -2
- package/dist/chunks/{iframe-host-dh5np8vk.js → iframe-host-psetcv20.js} +11 -11
- package/dist/chunks/{index-n4j7qxyr.js → index-9yjae3hz.js} +4 -4
- package/dist/chunks/{javascript-4abzjcy9.css → javascript-bc9z461d.css} +688 -54
- package/dist/chunks/{javascript-xvrfrpkb.js → javascript-hr5sg57n.js} +2 -2
- package/dist/chunks/{jsonMode-vvmpmk34.css → jsonMode-qqd9nm1t.css} +1120 -303
- package/dist/chunks/{jsonMode-tyx2kj6p.js → jsonMode-zs88v0wr.js} +4 -4
- package/dist/chunks/{jx-validate-j0wxk72w.js → jx-validate-epp2z3s3.js} +2 -2
- package/dist/chunks/layers-panel-83a16ytx.js +41 -0
- package/dist/chunks/{layers-1vcfdbet.js → layers-s6mc01ry.js} +3 -3
- package/dist/chunks/{listbox-6v2ac08j.js → listbox-b7jxnhq1.js} +19 -3
- package/dist/chunks/{media-picker-p49nhqhs.js → media-picker-nhn6rv4w.js} +11 -11
- package/dist/chunks/{menu-qht48vnc.js → menu-8j4qxjrp.js} +4 -4
- package/dist/chunks/{monaco-binding-sw6en4dw.js → monaco-binding-e8d9wzyk.js} +3 -3
- package/dist/chunks/{monaco-buffer-pykwbm92.js → monaco-buffer-jaq1t9zj.js} +2 -2
- package/dist/chunks/{monaco-setup-8vbyqnhr.css → monaco-setup-ey9cjcm3.css} +954 -137
- package/dist/chunks/{monaco-setup-8r62fj6y.js → monaco-setup-gsjdysze.js} +7 -7
- package/dist/chunks/{platform-ts9cg1a4.js → platform-fnchmhy7.js} +5 -3
- package/dist/chunks/publish-panel-ak6hxfma.js +27 -0
- package/dist/chunks/quick-search-c63mkt3b.js +47 -0
- package/dist/chunks/{references-h69xp9zz.js → references-f7bdv3z5.js} +3 -3
- package/dist/chunks/right-panel-t5n8wttg.js +45 -0
- package/dist/chunks/{split-g7nm1rgb.js → split-4cz4b6ef.js} +14 -3
- package/dist/chunks/{studio-sar8g54p.js → studio-01269reb.js} +8 -8
- package/dist/chunks/{studio-rnyf3f8e.js → studio-0a4gncx0.js} +3 -3
- package/dist/chunks/{studio-e1f24eff.js → studio-0d4p4wxj.js} +6778 -2993
- package/dist/chunks/{studio-4wbb9ct0.js → studio-1tejxvba.js} +3006 -1855
- package/dist/chunks/{studio-p6pmwkvh.js → studio-3nprwbd9.js} +147 -28
- package/dist/chunks/{studio-4c041r8y.js → studio-40z39dme.js} +3 -3
- package/dist/chunks/{studio-68fydsrj.js → studio-482eeazk.js} +20 -20
- package/dist/chunks/{studio-y4f9fdge.js → studio-4998spet.js} +10 -9
- package/dist/chunks/{studio-nq5yf5mp.js → studio-557bmn0x.js} +2 -2
- package/dist/chunks/{studio-hdc2jt3z.js → studio-5w26wza5.js} +3 -3
- package/dist/chunks/{studio-6nzaktvy.js → studio-6pwn9j8c.js} +6 -3
- package/dist/chunks/{studio-wnsyffg1.js → studio-6vg0x5fz.js} +3 -2
- package/dist/chunks/{studio-vn5hske5.js → studio-7d3c1m59.js} +12 -5
- package/dist/chunks/{studio-28vs5k2y.js → studio-9vsvz7w7.js} +7 -7
- package/dist/chunks/{studio-t3adrr56.js → studio-9wm0xzpf.js} +19 -19
- package/dist/chunks/{studio-38emantv.js → studio-a5h5j33a.js} +19 -5
- package/dist/chunks/{studio-ympe0n7a.js → studio-ag3z6shb.js} +10 -4
- package/dist/chunks/studio-aj9drheq.js +177 -0
- package/dist/chunks/{studio-vt0tj32j.js → studio-apv9x70c.js} +189 -130
- package/dist/chunks/{studio-c04nzbby.js → studio-b9q3znz8.js} +2 -2
- package/dist/chunks/{studio-2mdbbc76.js → studio-bh47w0cy.js} +9 -10
- package/dist/chunks/{studio-ez11dmdh.js → studio-dgdm6vvt.js} +264 -52
- package/dist/chunks/{studio-5nz00bhh.js → studio-dwdcr2e8.js} +4 -4
- package/dist/chunks/{studio-nqgawfks.js → studio-fbcyz234.js} +146 -139
- package/dist/chunks/{studio-kcgff4r0.js → studio-fgmfksz8.js} +2 -2
- package/dist/chunks/{studio-x72j58vw.js → studio-fqpkpq1t.js} +7 -4
- package/dist/chunks/{studio-15f3kxqe.js → studio-fy320dfc.js} +62 -68
- package/dist/chunks/{studio-zjjde71a.js → studio-gjj4bbfx.js} +2 -2
- package/dist/chunks/{studio-66arbpc2.js → studio-jfhxy8h3.js} +16 -15
- package/dist/chunks/{studio-d0300636.js → studio-ks2zzth2.js} +17 -2
- package/dist/chunks/{studio-c07s5ckd.js → studio-kwewmhhq.js} +4 -4
- package/dist/chunks/{studio-01jeck2y.js → studio-m58xn8at.js} +26 -25
- package/dist/chunks/{studio-mpzwze9x.js → studio-mfkh1q8d.js} +17 -17
- package/dist/chunks/{studio-etvx9s2g.js → studio-mrh0a92f.js} +17 -17
- package/dist/chunks/{studio-qa7fzxan.js → studio-mt79tn56.js} +3 -3
- package/dist/chunks/{studio-hhskq2mr.js → studio-ne593z1j.js} +39 -32
- package/dist/chunks/{studio-h4nvnjvz.js → studio-ptfcxkz5.js} +418 -232
- package/dist/chunks/{studio-4xmjcrg3.js → studio-qxye31h7.js} +7 -7
- package/dist/chunks/{studio-a1pswps3.js → studio-rav5bpmp.js} +81 -59
- package/dist/chunks/{studio-ncn9e189.js → studio-rwmmbrth.js} +6 -6
- package/dist/chunks/{studio-en82c639.js → studio-sceg8ws0.js} +8 -8
- package/dist/chunks/{studio-wjpgxywa.js → studio-sjas5b3a.js} +19 -13
- package/dist/chunks/{studio-4r14yzyy.js → studio-vd67b66d.js} +3 -3
- package/dist/chunks/{studio-14d9tq4d.js → studio-w475cbf9.js} +10 -10
- package/dist/chunks/{studio-ctm7bhx5.js → studio-w7gpcvfj.js} +9 -9
- package/dist/chunks/{studio-9j6sfeba.js → studio-xrbfdxgk.js} +7 -7
- package/dist/chunks/{studio-x10fp4tp.js → studio-y49b6mjv.js} +35 -35
- package/dist/chunks/{studio-5t7ena5z.js → studio-ygvr9e4q.js} +10 -10
- package/dist/chunks/{studio-z2smx5ce.js → studio-yxmmjy2a.js} +9 -6
- package/dist/chunks/{tsMode-jy4m86rv.js → tsMode-ay4c78ne.js} +4 -4
- package/dist/chunks/{tsMode-hnxxb73h.css → tsMode-c72wyz27.css} +954 -137
- package/dist/chunks/{workspace-bnw54cha.js → workspace-b9k2frks.js} +5 -5
- package/dist/chunks/{ws-client-ny4zc51r.js → ws-client-erze4czt.js} +356 -20
- package/dist/codicon.ttf +0 -0
- package/dist/iframe-entry.js +20 -18
- package/dist/studio.css +956 -139
- package/dist/studio.js +1511 -851
- package/dist/workers/editor.worker.js +196 -107
- package/dist/workers/json.worker.js +196 -107
- package/dist/workers/ts.worker.js +196 -107
- package/package.json +18 -17
- package/src/about/about-modal.ts +4 -3
- package/src/browse/library-commands.ts +15 -13
- package/src/browse/library-pane.ts +2 -2
- package/src/canvas/canvas-render.ts +97 -83
- package/src/canvas/canvas-surface.ts +2 -2
- package/src/canvas/canvas-utils.ts +42 -32
- package/src/canvas/diff-toolbar.ts +21 -2
- package/src/canvas/diff-view.ts +30 -6
- package/src/canvas/iframe-entry.ts +2 -2
- package/src/canvas/iframe-host.ts +5 -5
- package/src/canvas/iframe-interaction.ts +7 -6
- package/src/canvas/iframe-overlay.ts +1 -1
- package/src/canvas/iframe-protocol.ts +6 -5
- package/src/canvas/iframe-render.ts +3 -3
- package/src/canvas/popover-state.ts +1 -1
- package/src/canvas/stage-scrollbar.ts +112 -0
- package/src/canvas/surface-registry.ts +9 -2
- package/src/collab/collab-commands.ts +8 -6
- package/src/collab/collab-session.ts +4 -4
- package/src/collab/collab-state.ts +4 -4
- package/src/collab/presence-chips.ts +3 -3
- package/src/commands/app-commands.ts +7 -7
- package/src/commands/budget.ts +17 -16
- package/src/commands/command-args.ts +10 -9
- package/src/commands/context.ts +20 -10
- package/src/commands/defaults.ts +30 -29
- package/src/commands/levels.ts +8 -6
- package/src/commands/live-context.ts +12 -10
- package/src/commands/reference.ts +5 -5
- package/src/commands/registry.ts +2 -2
- package/src/content/draft-state.ts +9 -8
- package/src/content/entry-commands.ts +16 -14
- package/src/content/entry-editor.ts +2 -2
- package/src/content/entry-fields.ts +1 -1
- package/src/editor/context-menu.ts +4 -4
- package/src/editor/convert-to-component.ts +6 -5
- package/src/editor/inline-edit.ts +3 -3
- package/src/editor/shortcuts.ts +88 -20
- package/src/editor/slash-menu.ts +11 -10
- package/src/files/elements.ts +4 -5
- package/src/files/file-ops.ts +1 -1
- package/src/files/files.ts +21 -17
- package/src/files/serialize-document.ts +1 -1
- package/src/format/convert-file.ts +5 -5
- package/src/github/github-auth-status.ts +107 -0
- package/src/github/github-auth.ts +18 -82
- package/src/github/github-publish.ts +7 -6
- package/src/grid/cell-editors.ts +8 -7
- package/src/grid/grid-layout.ts +1 -1
- package/src/grid/grid-open.ts +6 -5
- package/src/grid/grid-panel.ts +13 -12
- package/src/grid/redirects-grid.ts +14 -11
- package/src/grid/redirects.ts +10 -5
- package/src/grid/sources/content-source.ts +10 -9
- package/src/hosting/document.ts +28 -1
- package/src/hosting/stage.ts +15 -4
- package/src/i18n/i18n-commands.ts +9 -7
- package/src/new-project/location-fields.ts +16 -3
- package/src/new-project/new-project-modal.ts +23 -7
- package/src/page-params.ts +6 -6
- package/src/panels/activity-panel.ts +11 -10
- package/src/panels/ai-chat/chat-view.ts +27 -14
- package/src/panels/ai-chat/composer.ts +10 -3
- package/src/panels/ai-panel.ts +87 -29
- package/src/panels/block-action-bar.ts +59 -33
- package/src/panels/bottom-dock.ts +22 -22
- package/src/panels/chat-panel.ts +40 -5
- package/src/panels/data-explorer.ts +9 -9
- package/src/panels/data-grid.ts +1 -1
- package/src/panels/editors.ts +8 -8
- package/src/panels/elements-panel.ts +7 -8
- package/src/panels/empty-state.ts +1 -1
- package/src/panels/events-panel.ts +13 -12
- package/src/panels/formula-workspace.ts +8 -5
- package/src/panels/frontmatter-fields.ts +4 -1
- package/src/panels/frontmatter-panel.ts +18 -18
- package/src/panels/git-panel.ts +19 -13
- package/src/panels/head-panel.ts +9 -10
- package/src/panels/i18n-panel.ts +6 -4
- package/src/panels/imports-panel.ts +1 -1
- package/src/panels/jump-bar.ts +20 -18
- package/src/panels/layers-panel.ts +19 -17
- package/src/panels/left-panel.ts +3 -3
- package/src/panels/navigator-panels.ts +8 -8
- package/src/panels/overlays.ts +1 -1
- package/src/panels/pane-context.ts +56 -28
- package/src/panels/pane-grid.ts +9 -8
- package/src/panels/panel-registry.ts +47 -19
- package/src/panels/problems-panel.ts +11 -12
- package/src/panels/properties-panel.ts +21 -20
- package/src/panels/provenance.ts +3 -3
- package/src/panels/quick-search.ts +15 -11
- package/src/panels/right-panel.ts +4 -3
- package/src/panels/seo-modal.ts +5 -4
- package/src/panels/settings-menu.ts +9 -9
- package/src/panels/settings-pane.ts +3 -3
- package/src/panels/signals-panel.ts +16 -9
- package/src/panels/statement-editor.ts +12 -9
- package/src/panels/style-panel.ts +45 -41
- package/src/panels/stylebook-panel.ts +0 -1
- package/src/panels/tab-strip.ts +26 -23
- package/src/platform-errors.ts +2 -2
- package/src/platform.ts +44 -4
- package/src/platforms/cloud.ts +11 -1
- package/src/platforms/default-platform.ts +141 -4
- package/src/platforms/devserver.ts +23 -3
- package/src/publish/deploy-checklist.ts +11 -10
- package/src/publish/publish-commands.ts +9 -8
- package/src/services/a11y-report.ts +1 -1
- package/src/services/ai-ask.ts +39 -16
- package/src/services/ai-command-tools.ts +28 -14
- package/src/services/ai-import-tools.ts +43 -29
- package/src/services/ai-project-tools.ts +20 -38
- package/src/services/ai-settings.ts +55 -2
- package/src/services/ai-tools.ts +69 -58
- package/src/services/ai-write-report.ts +4 -4
- package/src/services/ai-writes.ts +74 -55
- package/src/services/automation.ts +12 -12
- package/src/services/clock.ts +2 -1
- package/src/services/connection.ts +2 -2
- package/src/services/context-manager.ts +69 -6
- package/src/services/directory-picker.ts +93 -27
- package/src/services/document-assistant.ts +86 -17
- package/src/services/gated-registry.ts +4 -3
- package/src/services/idle.ts +5 -4
- package/src/services/live-surfaces.ts +2 -1
- package/src/services/module-preloads.ts +67 -0
- package/src/services/notify.ts +9 -7
- package/src/services/popover-report.ts +3 -3
- package/src/services/preview-eval.ts +1 -1
- package/src/services/project-adoption.ts +34 -1
- package/src/services/project-path.ts +53 -0
- package/src/services/settings/kernel.ts +13 -2
- package/src/services/tool-executor.ts +135 -30
- package/src/services/tool-outcomes.ts +143 -0
- package/src/settings/contexts-section.ts +8 -8
- package/src/settings/contributed-section.ts +6 -6
- package/src/settings/css-vars-editor.ts +6 -5
- package/src/settings/extension-commands.ts +19 -18
- package/src/settings/extension-sections.ts +7 -7
- package/src/settings/extensions-section.ts +3 -3
- package/src/settings/general-settings.ts +21 -18
- package/src/settings/preferences-accounts.ts +3 -3
- package/src/settings/preferences-dialog.ts +9 -8
- package/src/settings/preferences-sections.ts +1 -1
- package/src/settings/project-sections.ts +2 -2
- package/src/settings/section-registry.ts +7 -6
- package/src/settings/settings-document.ts +41 -43
- package/src/shell/tree.ts +29 -0
- package/src/shell.ts +63 -55
- package/src/site-context.ts +1 -1
- package/src/store.ts +2 -2
- package/src/studio.ts +52 -28
- package/src/style/live-preview.ts +8 -8
- package/src/style/project-styles.ts +8 -9
- package/src/style/token-ref.ts +2 -2
- package/src/surfaces/about.json +6 -2
- package/src/surfaces/add-repo.json +2 -2
- package/src/surfaces/add-repo.ts +2 -2
- package/src/surfaces/ai-chat.json +14 -6
- package/src/surfaces/ai-chat.ts +4 -2
- package/src/surfaces/ai-credentials-form.json +53 -49
- package/src/surfaces/ai-credentials-form.ts +18 -4
- package/src/surfaces/ai-managed-connect.json +4 -4
- package/src/surfaces/block-action-bar.json +4 -4
- package/src/surfaces/block-action-bar.ts +3 -3
- package/src/surfaces/boot-failure.json +228 -0
- package/src/surfaces/boot-failure.ts +156 -0
- package/src/surfaces/bottom-dock.json +1 -1
- package/src/surfaces/canvas-stage.json +9 -40
- package/src/surfaces/canvas-stage.ts +9 -9
- package/src/surfaces/cf-account-picker.json +11 -8
- package/src/surfaces/commandbar.ts +11 -10
- package/src/surfaces/convert-repeater.ts +3 -2
- package/src/surfaces/dialog.json +7 -1
- package/src/surfaces/dialog.ts +2 -2
- package/src/surfaces/doc-header.json +6 -13
- package/src/surfaces/doc-header.ts +4 -5
- package/src/surfaces/entry-editor.json +1 -1
- package/src/surfaces/entry-editor.ts +2 -1
- package/src/surfaces/expression-editor.json +5 -5
- package/src/surfaces/files-panel.json +4 -3
- package/src/surfaces/files-panel.ts +1 -1
- package/src/surfaces/formula-palette.json +10 -9
- package/src/surfaces/formula-palette.ts +11 -7
- package/src/surfaces/git-panel.json +167 -109
- package/src/surfaces/git-panel.ts +2 -2
- package/src/surfaces/github-auth.json +2 -1
- package/src/surfaces/github-publish.ts +3 -3
- package/src/surfaces/grid-open.json +1 -1
- package/src/surfaces/grid-panel.json +2 -2
- package/src/surfaces/grid-views.json +1 -1
- package/src/surfaces/inspector-dock.json +2 -2
- package/src/surfaces/jump-bar.json +1 -1
- package/src/surfaces/jump-bar.ts +1 -1
- package/src/surfaces/library-pane.ts +2 -1
- package/src/surfaces/logic-panel.json +7 -7
- package/src/surfaces/logic-panel.ts +6 -4
- package/src/surfaces/logic-workspace.json +2 -2
- package/src/surfaces/logic-workspace.ts +2 -2
- package/src/surfaces/media-browser.ts +3 -3
- package/src/surfaces/media-pane.ts +2 -1
- package/src/surfaces/menu.ts +5 -5
- package/src/surfaces/new-project.json +1 -1
- package/src/surfaces/palette.json +8 -7
- package/src/surfaces/pane-context.json +86 -57
- package/src/surfaces/pane-context.ts +2 -1
- package/src/surfaces/pane-grid.json +3 -3
- package/src/surfaces/panel-activity.json +2 -1
- package/src/surfaces/panel-deploy-checklist.json +1 -1
- package/src/surfaces/panel-elements.ts +2 -1
- package/src/surfaces/panel-i18n.ts +2 -1
- package/src/surfaces/panel-outline.json +1 -1
- package/src/surfaces/panel-outline.ts +4 -3
- package/src/surfaces/panel-page.json +2 -2
- package/src/surfaces/panel-page.ts +4 -1
- package/src/surfaces/panel-problems.json +4 -3
- package/src/surfaces/panel-problems.ts +2 -2
- package/src/surfaces/panel-signals.json +23 -8
- package/src/surfaces/panel-signals.ts +5 -1
- package/src/surfaces/panel-stylebook-layers.json +1 -1
- package/src/surfaces/panel-stylebook-layers.ts +2 -2
- package/src/surfaces/preferences.json +21 -8
- package/src/surfaces/preferences.ts +9 -1
- package/src/surfaces/properties-panel.json +4 -4
- package/src/surfaces/properties-panel.ts +2 -2
- package/src/surfaces/publish.json +1 -1
- package/src/surfaces/publish.ts +2 -1
- package/src/surfaces/push-plan.json +4 -3
- package/src/surfaces/rail.json +2 -2
- package/src/surfaces/rail.ts +10 -4
- package/src/surfaces/reference-field.json +1 -1
- package/src/surfaces/schema-form.json +2 -2
- package/src/surfaces/schema-form.ts +1 -1
- package/src/surfaces/seo.json +1 -1
- package/src/surfaces/seo.ts +2 -2
- package/src/surfaces/settings-contributed.ts +2 -1
- package/src/surfaces/settings-css-vars.json +4 -4
- package/src/surfaces/settings-deploy.json +4 -4
- package/src/surfaces/settings-deploy.ts +2 -1
- package/src/surfaces/settings-extensions.json +6 -6
- package/src/surfaces/settings-extensions.ts +6 -2
- package/src/surfaces/settings-locales.json +4 -4
- package/src/surfaces/settings-overview.ts +2 -1
- package/src/surfaces/settings-pane.ts +3 -2
- package/src/surfaces/settings-rawjson.ts +1 -1
- package/src/surfaces/slash-menu.ts +4 -4
- package/src/surfaces/statements.json +3 -3
- package/src/surfaces/statusbar.ts +23 -23
- package/src/surfaces/style-panel.json +9 -5
- package/src/surfaces/style-panel.ts +3 -3
- package/src/surfaces/tab-strip.json +2 -2
- package/src/surfaces/target-line.json +1 -1
- package/src/surfaces/target-line.ts +12 -10
- package/src/surfaces/welcome.json +7 -2
- package/src/tabs/doc-op-apply.ts +5 -5
- package/src/tabs/patch-ops.ts +3 -3
- package/src/tabs/project-config.ts +10 -10
- package/src/tabs/selection.ts +1 -1
- package/src/tabs/tab.ts +13 -14
- package/src/tabs/transact.ts +18 -24
- package/src/types.ts +27 -3
- package/src/ui/ai-credentials-form.ts +74 -16
- package/src/ui/ai-managed-connect.ts +68 -19
- package/src/ui/color-selector.ts +1 -1
- package/src/ui/expression-editor.ts +3 -3
- package/src/ui/form-controls.ts +6 -5
- package/src/ui/formula-catalog.ts +4 -4
- package/src/ui/formula-chips.ts +2 -2
- package/src/ui/layers.ts +20 -18
- package/src/ui/panel-resize.ts +8 -28
- package/src/ui/popover-surface.ts +2 -2
- package/src/ui/progress-modal.ts +3 -3
- package/src/ui/regions.ts +14 -9
- package/src/ui/schema-form.ts +10 -9
- package/src/ui/timing.ts +9 -7
- package/src/ui/value-source.ts +4 -4
- package/src/ui/virtual-window.ts +58 -5
- package/src/utils/base64.ts +20 -1
- package/src/utils/canvas-media.ts +1 -1
- package/src/utils/studio-utils.ts +0 -31
- package/src/view.ts +4 -3
- package/src/workspace/pane-derive.ts +14 -13
- package/src/workspace/session.ts +7 -6
- package/src/workspace/workspace.ts +49 -39
- package/styles/canvas.css +1 -27
- package/styles/inspector.css +4 -3
- package/styles/overlays.css +1 -1
- package/styles/tokens.css +17 -1
- package/styles/tokens.json +6 -1
- package/dist/chunks/entry-commands-w9qsxa6q.js +0 -42
- package/dist/chunks/layers-panel-fksbdg4q.js +0 -40
- package/dist/chunks/publish-panel-vz23wwmg.js +0 -27
- package/dist/chunks/quick-search-e9rp74m8.js +0 -46
- package/dist/chunks/right-panel-j97t2yvy.js +0 -45
- package/dist/chunks/studio-727xh0e3.js +0 -76
- package/src/files/json-layout.ts +0 -474
- package/src/services/ai-turn-signal.ts +0 -70
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
normalizeProjectPath,
|
|
6
6
|
showModal,
|
|
7
7
|
close2
|
|
8
|
-
} from "./studio-
|
|
8
|
+
} from "./studio-3nprwbd9.js";
|
|
9
9
|
import {
|
|
10
10
|
syncDeployChecklist
|
|
11
|
-
} from "./studio-
|
|
11
|
+
} from "./studio-xrbfdxgk.js";
|
|
12
12
|
import {
|
|
13
13
|
effectScope,
|
|
14
14
|
effect,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./studio-d8z5bajd.js";
|
|
19
19
|
import {
|
|
20
20
|
setBottomTab
|
|
21
|
-
} from "./studio-
|
|
21
|
+
} from "./studio-mfkh1q8d.js";
|
|
22
22
|
import {
|
|
23
23
|
REGION_ATTR,
|
|
24
24
|
overlayRegion,
|
|
@@ -26,15 +26,15 @@ import {
|
|
|
26
26
|
mountSurface,
|
|
27
27
|
whenReady,
|
|
28
28
|
layerHost2
|
|
29
|
-
} from "./studio-
|
|
29
|
+
} from "./studio-ag3z6shb.js";
|
|
30
30
|
import {
|
|
31
31
|
registerPanel
|
|
32
|
-
} from "./studio-
|
|
32
|
+
} from "./studio-fqpkpq1t.js";
|
|
33
33
|
import {
|
|
34
34
|
peekUsages2,
|
|
35
35
|
loadUsages2,
|
|
36
36
|
usageHeadline2
|
|
37
|
-
} from "./studio-
|
|
37
|
+
} from "./studio-557bmn0x.js";
|
|
38
38
|
// src/surfaces/panel-activity.json
|
|
39
39
|
var panel_activity_default = {
|
|
40
40
|
$schema: "https://jxsuite.com/schema/v1",
|
|
@@ -192,7 +192,8 @@ var panel_activity_default = {
|
|
|
192
192
|
}
|
|
193
193
|
},
|
|
194
194
|
'& [part="log"]': {
|
|
195
|
-
$description: "The captured output the progress modal used to show once and then lose. It scrolls inside the row rather than growing it, so one 400-line `bun install` failure does not become the whole panel.",
|
|
195
|
+
$description: "The captured output the progress modal used to show once and then lose. It scrolls inside the row rather than growing it, so one 400-line `bun install` failure does not become the whole panel. It is selectable against the root's `user-select: none`, the one part of an activity row that is: the output is what a reader pastes into a bug report, and the row offers no copy action.",
|
|
196
|
+
userSelect: "text",
|
|
196
197
|
maxHeight: "180px",
|
|
197
198
|
margin: "2px 0 0",
|
|
198
199
|
padding: "6px",
|
|
@@ -1167,5 +1168,5 @@ function showProgressModal(opts) {
|
|
|
1167
1168
|
|
|
1168
1169
|
export { beginActivity, activityIdleBlockers, registerActivityPanel, showProgressModal, peekMediaUsages, loadMediaUsages, mediaUsageHeadline };
|
|
1169
1170
|
|
|
1170
|
-
//# debugId=
|
|
1171
|
-
//# sourceMappingURL=studio-
|
|
1171
|
+
//# debugId=809FAF2890B53E3F64756E2164756E21
|
|
1172
|
+
//# sourceMappingURL=studio-4998spet.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatform2,
|
|
3
3
|
hasPlatform2
|
|
4
|
-
} from "./studio-
|
|
4
|
+
} from "./studio-6pwn9j8c.js";
|
|
5
5
|
import {
|
|
6
6
|
errorMessage2
|
|
7
7
|
} from "./studio-yxa81f45.js";
|
|
@@ -116,4 +116,4 @@ function usageFiles2(result) {
|
|
|
116
116
|
export { usagesSupported2, peekUsages2, loadUsages2, retryUsages2, invalidateUsages2, usageHeadline2, usageWarning2, usageFiles2 };
|
|
117
117
|
|
|
118
118
|
//# debugId=4EF5BE6F2F2180F464756E2164756E21
|
|
119
|
-
//# sourceMappingURL=studio-
|
|
119
|
+
//# sourceMappingURL=studio-557bmn0x.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./studio-m1p9b6c3.js";
|
|
4
4
|
import {
|
|
5
5
|
findContentTypeSchema
|
|
6
|
-
} from "./studio-
|
|
6
|
+
} from "./studio-dgdm6vvt.js";
|
|
7
7
|
import {
|
|
8
8
|
collectionInfo2
|
|
9
|
-
} from "./studio-
|
|
9
|
+
} from "./studio-ygvr9e4q.js";
|
|
10
10
|
|
|
11
11
|
// src/content/entry-model.ts
|
|
12
12
|
function collectionNames() {
|
|
@@ -88,4 +88,4 @@ function missingRequired(schema, value) {
|
|
|
88
88
|
export { entryCollection, entryCollections, collectionOfPath, seedEntry, missingRequired };
|
|
89
89
|
|
|
90
90
|
//# debugId=DEACD1047368F5A364756E2164756E21
|
|
91
|
-
//# sourceMappingURL=studio-
|
|
91
|
+
//# sourceMappingURL=studio-5w26wza5.js.map
|
|
@@ -3,6 +3,9 @@ var g = globalThis;
|
|
|
3
3
|
function registerPlatform2(platform) {
|
|
4
4
|
g.__jxPlatform = platform;
|
|
5
5
|
}
|
|
6
|
+
function launcherSignal2() {
|
|
7
|
+
return g.__jxLauncher;
|
|
8
|
+
}
|
|
6
9
|
var inFlight = new Map;
|
|
7
10
|
function platformInFlight2() {
|
|
8
11
|
const names = [];
|
|
@@ -69,7 +72,7 @@ function hasPlatform2() {
|
|
|
69
72
|
return g.__jxPlatform != null;
|
|
70
73
|
}
|
|
71
74
|
|
|
72
|
-
export { registerPlatform2, platformInFlight2, getPlatform2, hasPlatform2 };
|
|
75
|
+
export { registerPlatform2, launcherSignal2, platformInFlight2, getPlatform2, hasPlatform2 };
|
|
73
76
|
|
|
74
|
-
//# debugId=
|
|
75
|
-
//# sourceMappingURL=studio-
|
|
77
|
+
//# debugId=2E6511C413CB194564756E2164756E21
|
|
78
|
+
//# sourceMappingURL=studio-6pwn9j8c.js.map
|
|
@@ -49,6 +49,7 @@ function freshSurface(paneId) {
|
|
|
49
49
|
prevStylebookFilter: null,
|
|
50
50
|
renderGeneration: 0,
|
|
51
51
|
sourceCollabCleanup: null,
|
|
52
|
+
stageScrollbar: null,
|
|
52
53
|
wrap: null
|
|
53
54
|
};
|
|
54
55
|
}
|
|
@@ -260,5 +261,5 @@ function tabBufferUnsaved2(tab) {
|
|
|
260
261
|
|
|
261
262
|
export { view, nextRenderGeneration, surfaceForPane, allCanvasSurfaces, stageContaining, registerCanvasSurface, createPaneSurface, setSurfaceTeardown, disposePaneSurface, BUFFER_COMMIT2, bufferWrites2, commitBufferWrites2, cancelBufferWrites2, bufferIsLive2, bufferMovedOn2, commitTabBuffers2, tabBufferUnsaved2 };
|
|
262
263
|
|
|
263
|
-
//# debugId=
|
|
264
|
-
//# sourceMappingURL=studio-
|
|
264
|
+
//# debugId=6CCD1AF08CFE601764756E2164756E21
|
|
265
|
+
//# sourceMappingURL=studio-6vg0x5fz.js.map
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatform2
|
|
3
|
-
} from "./studio-
|
|
3
|
+
} from "./studio-6pwn9j8c.js";
|
|
4
4
|
import {
|
|
5
5
|
SETTINGS,
|
|
6
6
|
readStoredSetting,
|
|
7
7
|
hasSetting,
|
|
8
8
|
onSettingsChanged,
|
|
9
|
+
normalizeSetting,
|
|
9
10
|
setSetting,
|
|
10
11
|
setSettings,
|
|
11
12
|
clearSettings
|
|
12
|
-
} from "./studio-
|
|
13
|
+
} from "./studio-yxmmjy2a.js";
|
|
13
14
|
|
|
14
15
|
// src/services/ai-settings.ts
|
|
15
16
|
function getOpenAiKey() {
|
|
@@ -37,6 +38,12 @@ function saveAiProvider(provider) {
|
|
|
37
38
|
[SETTINGS.aiModel, provider.model]
|
|
38
39
|
]);
|
|
39
40
|
}
|
|
41
|
+
function aiProviderDiffers(provider) {
|
|
42
|
+
return !storedEquals(SETTINGS.aiOpenAiKey, provider.apiKey, getOpenAiKey()) || !storedEquals(SETTINGS.aiBaseUrl, provider.baseUrl, getBaseUrl()) || !storedEquals(SETTINGS.aiModel, provider.model, storedModel());
|
|
43
|
+
}
|
|
44
|
+
function storedEquals(definition, draft, stored) {
|
|
45
|
+
return normalizeSetting(definition, draft) === normalizeSetting(definition, stored);
|
|
46
|
+
}
|
|
40
47
|
function clearAiProvider() {
|
|
41
48
|
clearSettings([SETTINGS.aiOpenAiKey, SETTINGS.aiBaseUrl, SETTINGS.aiModel]);
|
|
42
49
|
}
|
|
@@ -195,7 +202,7 @@ async function fetchAvailableModels(opts = {}) {
|
|
|
195
202
|
return cache;
|
|
196
203
|
}
|
|
197
204
|
|
|
198
|
-
export { getOpenAiKey, setOpenAiKey, hasOpenAiKey, getBaseUrl, storedModel, setModel, saveAiProvider, clearAiProvider, aiConnection, resetModelCache, cachedModels, modelToolSupport, modelContextWindow, ensureProxyProbe, hasAiCredentials, isProxyConfigured, isManagedProxy, proxyStateCode, proxyModelsErrorMessage, preferredModel, fetchAvailableModels };
|
|
205
|
+
export { getOpenAiKey, setOpenAiKey, hasOpenAiKey, getBaseUrl, storedModel, setModel, saveAiProvider, aiProviderDiffers, storedEquals, clearAiProvider, aiConnection, resetModelCache, cachedModels, modelToolSupport, modelContextWindow, ensureProxyProbe, hasAiCredentials, isProxyConfigured, isManagedProxy, proxyStateCode, proxyModelsErrorMessage, preferredModel, fetchAvailableModels };
|
|
199
206
|
|
|
200
|
-
//# debugId=
|
|
201
|
-
//# sourceMappingURL=studio-
|
|
207
|
+
//# debugId=19AC3998EBEF80C364756E2164756E21
|
|
208
|
+
//# sourceMappingURL=studio-7d3c1m59.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatform2
|
|
3
|
-
} from "./studio-
|
|
3
|
+
} from "./studio-6pwn9j8c.js";
|
|
4
4
|
import {
|
|
5
5
|
__preload
|
|
6
6
|
} from "./studio-5te5tqng.js";
|
|
@@ -21,7 +21,7 @@ async function applyPendingSchemas() {
|
|
|
21
21
|
}
|
|
22
22
|
_pendingSchemasDirty = false;
|
|
23
23
|
try {
|
|
24
|
-
const { applyProjectSchemas } = await (__preload("
|
|
24
|
+
const { applyProjectSchemas } = await (__preload("gsjdysze"), import("./monaco-setup-gsjdysze.js"));
|
|
25
25
|
applyProjectSchemas(_pendingSchemas);
|
|
26
26
|
} catch {}
|
|
27
27
|
}
|
|
@@ -31,8 +31,8 @@ function loadMonaco() {
|
|
|
31
31
|
}
|
|
32
32
|
_loading ??= (async () => {
|
|
33
33
|
const [monaco] = await Promise.all([
|
|
34
|
-
(__preload("
|
|
35
|
-
(__preload("
|
|
34
|
+
(__preload("ddy019sn"), import("./editor-ddy019sn.js")),
|
|
35
|
+
(__preload("gsjdysze"), import("./monaco-setup-gsjdysze.js"))
|
|
36
36
|
]);
|
|
37
37
|
_monaco = monaco;
|
|
38
38
|
await applyPendingSchemas();
|
|
@@ -119,12 +119,12 @@ async function shareProjectSchemas(platform) {
|
|
|
119
119
|
schemas = await platform.fetchProjectSchemas?.() ?? null;
|
|
120
120
|
} catch {}
|
|
121
121
|
setProjectSchemasForMonaco(schemas);
|
|
122
|
-
await (__preload("
|
|
122
|
+
await (__preload("epp2z3s3"), import("./jx-validate-epp2z3s3.js")).then(({ applyProjectSchemas }) => applyProjectSchemas(schemas)).catch(() => false);
|
|
123
123
|
}
|
|
124
124
|
function refreshExtensionUi2(platform) {
|
|
125
125
|
shareProjectSchemas(platform);
|
|
126
126
|
loadExtensionCatalog();
|
|
127
|
-
(__preload("
|
|
127
|
+
(__preload("r73an5s6"), import("./extension-sections-r73an5s6.js")).then(({ syncExtensionSettingsSections }) => syncExtensionSettingsSections()).catch(() => {});
|
|
128
128
|
}
|
|
129
129
|
function getFormats2() {
|
|
130
130
|
return _formats;
|
|
@@ -239,4 +239,4 @@ function splitFormatDocument2(format, doc) {
|
|
|
239
239
|
export { loadMonaco, loadedMonaco, mountStillWanted, loadFormats2, refreshFormats2, loadExtensions2, getExtensions2, getExtensionCatalog2, refreshExtensionUi2, getFormats2, formatByExtension2, formatByName2, noFormatError2, formatForPath2, documentExtensions2, defaultContentFormat2, formatParse2, formatSerialize2, splitFormatDocument2 };
|
|
240
240
|
|
|
241
241
|
//# debugId=DC4D74E6C120403064756E2164756E21
|
|
242
|
-
//# sourceMappingURL=studio-
|
|
242
|
+
//# sourceMappingURL=studio-9vsvz7w7.js.map
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
reactive
|
|
3
3
|
} from "./studio-d8z5bajd.js";
|
|
4
|
-
import {
|
|
5
|
-
getPlatform2
|
|
6
|
-
} from "./studio-6nzaktvy.js";
|
|
7
|
-
import {
|
|
8
|
-
loadFormats2,
|
|
9
|
-
formatForPath2
|
|
10
|
-
} from "./studio-28vs5k2y.js";
|
|
11
|
-
import {
|
|
12
|
-
projectState
|
|
13
|
-
} from "./studio-m1p9b6c3.js";
|
|
14
4
|
import {
|
|
15
5
|
resolveI18n,
|
|
16
6
|
servedLocaleOfPath,
|
|
@@ -22,20 +12,30 @@ import {
|
|
|
22
12
|
workspace2,
|
|
23
13
|
openTab2,
|
|
24
14
|
activateTab2
|
|
25
|
-
} from "./studio-
|
|
15
|
+
} from "./studio-dgdm6vvt.js";
|
|
16
|
+
import {
|
|
17
|
+
getPlatform2
|
|
18
|
+
} from "./studio-6pwn9j8c.js";
|
|
19
|
+
import {
|
|
20
|
+
loadFormats2,
|
|
21
|
+
formatForPath2
|
|
22
|
+
} from "./studio-9vsvz7w7.js";
|
|
23
|
+
import {
|
|
24
|
+
projectState
|
|
25
|
+
} from "./studio-m1p9b6c3.js";
|
|
26
26
|
import {
|
|
27
27
|
registerSurface,
|
|
28
28
|
mountSurface,
|
|
29
29
|
openDialogSurface,
|
|
30
30
|
layerHost2
|
|
31
|
-
} from "./studio-
|
|
31
|
+
} from "./studio-ag3z6shb.js";
|
|
32
32
|
import {
|
|
33
33
|
errorMessage2
|
|
34
34
|
} from "./studio-yxa81f45.js";
|
|
35
35
|
import {
|
|
36
36
|
markLocalMutation2,
|
|
37
37
|
isRecentLocal2
|
|
38
|
-
} from "./studio-
|
|
38
|
+
} from "./studio-40z39dme.js";
|
|
39
39
|
import {
|
|
40
40
|
makeGridTabId,
|
|
41
41
|
parseGridTabId,
|
|
@@ -44,21 +44,21 @@ import {
|
|
|
44
44
|
coerceCellInput,
|
|
45
45
|
cellToText,
|
|
46
46
|
createGridController
|
|
47
|
-
} from "./studio-
|
|
47
|
+
} from "./studio-y49b6mjv.js";
|
|
48
48
|
import {
|
|
49
49
|
collectionDirs2,
|
|
50
50
|
createCollectionSource2,
|
|
51
51
|
createPagesSource2
|
|
52
|
-
} from "./studio-
|
|
52
|
+
} from "./studio-ygvr9e4q.js";
|
|
53
53
|
import {
|
|
54
54
|
MEDIA_EXTENSIONS,
|
|
55
55
|
extensionOf
|
|
56
|
-
} from "./studio-
|
|
56
|
+
} from "./studio-sceg8ws0.js";
|
|
57
57
|
// src/surfaces/grid-open.json
|
|
58
58
|
var grid_open_default = {
|
|
59
59
|
$schema: "https://jxsuite.com/schema/v1",
|
|
60
60
|
$id: "StudioGridOpen",
|
|
61
|
-
$description: "Every grid-able source a project has, grouped by where it comes from: the project's own pages and content collections first, then each connection's tables. It is the ISLAND of a confirm dialog rather than a dialog of its own — `ui/layers.ts`'s dialog owns the headline, the cancel button, modality and focus, and this document is only the list — because a second answer to \"what is a dialog\" is a defect (§12.5). Group headings are why it is not the kit menu: a menu row can carry a divider above it and cannot carry a name for the run it opens.",
|
|
61
|
+
$description: "Every grid-able source a project has, grouped by where it comes from: the project's own pages and content collections first, then each connection's tables. It is the ISLAND of a confirm dialog rather than a dialog of its own — `ui/layers.ts`'s dialog owns the headline, the cancel button, modality and focus, and this document is only the list — because a second answer to \"what is a dialog\" is a defect (studio-ui-guidelines.md §12.5). Group headings are why it is not the kit menu: a menu row can carry a divider above it and cannot carry a name for the run it opens.",
|
|
62
62
|
tagName: "div",
|
|
63
63
|
attributes: {
|
|
64
64
|
part: "sources"
|
|
@@ -1196,5 +1196,5 @@ function registerGridCommands(registry) {
|
|
|
1196
1196
|
|
|
1197
1197
|
export { dataSurfaceAvailable, testConnection, pushSchema, deriveSecretEnvName, parseCsv, createCsvFileSource, LIBRARY_CATEGORIES, LIBRARY_CATEGORY_KEYS, libraryCategory, uploadDirForCategory, scanLibrary, filterLibrary, LIBRARY_LAYOUTS, LIBRARY_LAYOUT_LABELS, PREVIEW_LAYOUTS, projectLocales, libraryLocales, groupByDate, groupByCategory, libraryColumns, createLibrarySource, openCsvGridTab, openLibraryTab, openPagesGrid, openGridSourcePicker, registerGridCommands };
|
|
1198
1198
|
|
|
1199
|
-
//# debugId=
|
|
1200
|
-
//# sourceMappingURL=studio-
|
|
1199
|
+
//# debugId=70A68BB6D43FFCA764756E2164756E21
|
|
1200
|
+
//# sourceMappingURL=studio-9wm0xzpf.js.map
|
|
@@ -100,6 +100,19 @@ function nearestScroller(el) {
|
|
|
100
100
|
}
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
|
+
function scrollerFor(list) {
|
|
104
|
+
const cached = scrollerCache.get(list);
|
|
105
|
+
if (cached && cached.isConnected && list.isConnected && cached.contains(list)) {
|
|
106
|
+
return cached;
|
|
107
|
+
}
|
|
108
|
+
const found = nearestScroller(list);
|
|
109
|
+
if (found) {
|
|
110
|
+
scrollerCache.set(list, found);
|
|
111
|
+
} else {
|
|
112
|
+
scrollerCache.delete(list);
|
|
113
|
+
}
|
|
114
|
+
return found;
|
|
115
|
+
}
|
|
103
116
|
function listScrollTop(scroller, list) {
|
|
104
117
|
if (scroller === list) {
|
|
105
118
|
return Math.max(0, scroller.scrollTop);
|
|
@@ -107,7 +120,7 @@ function listScrollTop(scroller, list) {
|
|
|
107
120
|
return Math.max(0, rectOf(scroller).top - rectOf(list).top);
|
|
108
121
|
}
|
|
109
122
|
function listWindow(list, spec) {
|
|
110
|
-
const scroller = list?.isConnected === true ?
|
|
123
|
+
const scroller = list?.isConnected === true ? scrollerFor(list) : null;
|
|
111
124
|
if (!scroller || !list) {
|
|
112
125
|
const count = Math.max(0, Math.trunc(spec.count));
|
|
113
126
|
return { end: count, padBottom: 0, padTop: 0, start: 0, totalRows: count };
|
|
@@ -133,7 +146,7 @@ function scrollTopToReveal(spec) {
|
|
|
133
146
|
return null;
|
|
134
147
|
}
|
|
135
148
|
function revealListRow(list, index, rowHeight) {
|
|
136
|
-
const scroller = list?.isConnected === true ?
|
|
149
|
+
const scroller = list?.isConnected === true ? scrollerFor(list) : null;
|
|
137
150
|
if (!scroller || !list || index < 0 || !(rowHeight > 0)) {
|
|
138
151
|
return false;
|
|
139
152
|
}
|
|
@@ -155,8 +168,9 @@ function measuredRowHeight(list, selector, declared) {
|
|
|
155
168
|
const row = list?.querySelector(selector);
|
|
156
169
|
return row && row.offsetHeight > 0 ? row.offsetHeight : declared;
|
|
157
170
|
}
|
|
171
|
+
var scrollerCache = new WeakMap;
|
|
158
172
|
function watchListWindow(previous, list, spec) {
|
|
159
|
-
const scroller =
|
|
173
|
+
const scroller = scrollerFor(list);
|
|
160
174
|
if (previous && previous.list === list && previous.scroller === scroller) {
|
|
161
175
|
return previous;
|
|
162
176
|
}
|
|
@@ -179,5 +193,5 @@ function watchListWindow(previous, list, spec) {
|
|
|
179
193
|
|
|
180
194
|
export { computeWindow, listWindow, revealListRow, measuredRowHeight, watchListWindow };
|
|
181
195
|
|
|
182
|
-
//# debugId=
|
|
183
|
-
//# sourceMappingURL=studio-
|
|
196
|
+
//# debugId=E03093CC18BA73A564756E2164756E21
|
|
197
|
+
//# sourceMappingURL=studio-a5h5j33a.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
selectValue,
|
|
11
11
|
registerUi,
|
|
12
12
|
activeRegistry
|
|
13
|
-
} from "./studio-
|
|
13
|
+
} from "./studio-3nprwbd9.js";
|
|
14
14
|
import {
|
|
15
15
|
effectScope,
|
|
16
16
|
effect,
|
|
@@ -328,11 +328,17 @@ var dialog_default = {
|
|
|
328
328
|
},
|
|
329
329
|
style: {
|
|
330
330
|
'& [part="message"]': {
|
|
331
|
-
|
|
331
|
+
$description: "The one part of a dialog that is text rather than interface, so it opts back in to selection. The root sets `user-select: none` and `styles/tokens.json` restates it on every `dialog`, so the headline, the labels and the buttons around this sentence stay unselectable; a message is often the thing a reader copies into a search or a bug report.",
|
|
332
|
+
margin: "0 0 var(--jx-space-3)",
|
|
333
|
+
userSelect: "text"
|
|
332
334
|
},
|
|
333
335
|
'& [part="message"]:last-child': {
|
|
334
336
|
margin: "0"
|
|
335
337
|
},
|
|
338
|
+
'& [part="island"] > p, & [part="island"] > span, & [part="island"] > strong, & [part="island"] > em, & [part="island"] > code': {
|
|
339
|
+
$description: "The island's own prose is the message's other form — a body richer than a sentence, written straight into the island from a lit template (studio-ui-guidelines.md §9.4) — so it is selectable for the same reason `[part=\"message\"]` is. The opt-in stops at those children because the island is ALSO the mount point for a whole document: the Open Grid picker and Push Schema's plan put their surfaces here, and `user-select` inherits, so a rule on the island itself would hand selection to every heading, source row and button they draw, which is the interface the policy exists to keep unselectable. A mounted surface roots a `div`; a message writes paragraphs and text-level spans, so the two forms are told apart by the child that arrives.",
|
|
340
|
+
userSelect: "text"
|
|
341
|
+
},
|
|
336
342
|
'& [part="island"]:empty': {
|
|
337
343
|
display: "none"
|
|
338
344
|
},
|
|
@@ -1215,5 +1221,5 @@ function unmountToastHost() {
|
|
|
1215
1221
|
|
|
1216
1222
|
export { mountsUsing, mountsOf, registerKit, REGION_ATTR, resolveRegion, REGION_FOR_FOCUS, paneRegion, paneStripRegion, navigatorPanelRegion, inspectorTabRegion, NAVIGATOR_STATEMENTS_REGION, inspectorStatementsRegion, bottomPanelRegion, overlayRegion, registerSurface, surfaceDocument, mountSurface, whenReady, openDialogSurface, runReported, runActiveReported, layerHost2, initLayers2, isModalOpen2, showConfirmDialog2, showSaveDiscardDialog2, showPromptDialog2, getLayerSlot2, clearLayerSlot2, overlayIdleBlockers2 };
|
|
1217
1223
|
|
|
1218
|
-
//# debugId=
|
|
1219
|
-
//# sourceMappingURL=studio-
|
|
1224
|
+
//# debugId=DE102B371B9E6DE864756E2164756E21
|
|
1225
|
+
//# sourceMappingURL=studio-ag3z6shb.js.map
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// ../schema/src/doc-ops.ts
|
|
2
|
+
function jsonClone(value) {
|
|
3
|
+
return JSON.parse(JSON.stringify(value));
|
|
4
|
+
}
|
|
5
|
+
function cloneValue2(v) {
|
|
6
|
+
return v === undefined || v === null ? v : jsonClone(v);
|
|
7
|
+
}
|
|
8
|
+
function getNodeAtPath3(doc, path) {
|
|
9
|
+
let node = doc;
|
|
10
|
+
for (const key of path) {
|
|
11
|
+
if (node == null) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
node = node[key];
|
|
15
|
+
}
|
|
16
|
+
return node;
|
|
17
|
+
}
|
|
18
|
+
function childArray2(node) {
|
|
19
|
+
if (Array.isArray(node)) {
|
|
20
|
+
throw new TypeError("Cannot insert into a children array; parentPath must point at a node");
|
|
21
|
+
}
|
|
22
|
+
if (!node.children) {
|
|
23
|
+
node.children = [];
|
|
24
|
+
}
|
|
25
|
+
if (!Array.isArray(node.children)) {
|
|
26
|
+
throw new TypeError("Cannot insert into mapped-array children; edit the map template instead");
|
|
27
|
+
}
|
|
28
|
+
return node.children;
|
|
29
|
+
}
|
|
30
|
+
function applyDocOpToDoc2(doc, op) {
|
|
31
|
+
switch (op.op) {
|
|
32
|
+
case "set-key": {
|
|
33
|
+
const node = getNodeAtPath3(doc, op.path);
|
|
34
|
+
if (!node) {
|
|
35
|
+
throw new Error(`doc-op-node-not-found:${op.path.join("/")}`);
|
|
36
|
+
}
|
|
37
|
+
const target = node;
|
|
38
|
+
if (op.value === undefined) {
|
|
39
|
+
delete target[op.key];
|
|
40
|
+
} else {
|
|
41
|
+
target[op.key] = cloneValue2(op.value);
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
case "insert-child": {
|
|
46
|
+
const parent = getNodeAtPath3(doc, op.parentPath);
|
|
47
|
+
childArray2(parent).splice(op.index, 0, cloneValue2(op.node));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
case "remove-child": {
|
|
51
|
+
const parent = getNodeAtPath3(doc, op.parentPath);
|
|
52
|
+
childArray2(parent).splice(op.index, 1);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
case "set-child": {
|
|
56
|
+
const parent = getNodeAtPath3(doc, op.parentPath);
|
|
57
|
+
childArray2(parent).splice(op.index, 1, cloneValue2(op.node));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
case "move-child": {
|
|
61
|
+
assertNotIntoOwnSubtree(op);
|
|
62
|
+
const fromParent = getNodeAtPath3(doc, op.fromParentPath);
|
|
63
|
+
const toParent = getNodeAtPath3(doc, op.toParentPath);
|
|
64
|
+
const from = childArray2(fromParent);
|
|
65
|
+
const to = childArray2(toParent);
|
|
66
|
+
const [node] = from.splice(op.fromIndex, 1);
|
|
67
|
+
to.splice(op.toIndex, 0, node);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
default: {
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
throw new Error(`unknown-doc-op:${op.op}`);
|
|
75
|
+
}
|
|
76
|
+
function shiftThroughSplice(parentPath, path, spliceIndex, delta, inclusive) {
|
|
77
|
+
const depth = parentPath.length;
|
|
78
|
+
const isProperPrefix = depth < path.length && parentPath.every((seg, i) => seg === path[i]);
|
|
79
|
+
if (!isProperPrefix || path[depth] !== "children" || typeof path[depth + 1] !== "number") {
|
|
80
|
+
return path;
|
|
81
|
+
}
|
|
82
|
+
const index = path[depth + 1];
|
|
83
|
+
if (inclusive ? index < spliceIndex : index <= spliceIndex) {
|
|
84
|
+
return path;
|
|
85
|
+
}
|
|
86
|
+
const shifted = [...path];
|
|
87
|
+
shifted[depth + 1] = index + delta;
|
|
88
|
+
return shifted;
|
|
89
|
+
}
|
|
90
|
+
function assertNotIntoOwnSubtree(op) {
|
|
91
|
+
const moved = [...op.fromParentPath, "children", op.fromIndex];
|
|
92
|
+
const target = op.toParentPath;
|
|
93
|
+
if (target.length >= moved.length && moved.every((seg, i) => seg === target[i])) {
|
|
94
|
+
throw new Error(`doc-op-move-into-self:${target.join("/")}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function insertionSlot(index, length) {
|
|
98
|
+
return index < 0 ? Math.max(length + index, 0) : Math.min(index, length);
|
|
99
|
+
}
|
|
100
|
+
function inverseOf(doc, op) {
|
|
101
|
+
switch (op.op) {
|
|
102
|
+
case "set-key": {
|
|
103
|
+
const node = getNodeAtPath3(doc, op.path);
|
|
104
|
+
if (!node) {
|
|
105
|
+
throw new Error(`doc-op-node-not-found:${op.path.join("/")}`);
|
|
106
|
+
}
|
|
107
|
+
const before = cloneValue2(node[op.key]);
|
|
108
|
+
return before === undefined ? { key: op.key, op: "set-key", path: op.path } : { key: op.key, op: "set-key", path: op.path, value: before };
|
|
109
|
+
}
|
|
110
|
+
case "insert-child": {
|
|
111
|
+
const { length } = insertableChildren(doc, op.parentPath);
|
|
112
|
+
return {
|
|
113
|
+
index: insertionSlot(op.index, length),
|
|
114
|
+
op: "remove-child",
|
|
115
|
+
parentPath: op.parentPath
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
case "remove-child": {
|
|
119
|
+
const removed = existingChild(doc, op.parentPath, op.index);
|
|
120
|
+
return { index: op.index, node: removed, op: "insert-child", parentPath: op.parentPath };
|
|
121
|
+
}
|
|
122
|
+
case "set-child": {
|
|
123
|
+
const replaced = existingChild(doc, op.parentPath, op.index);
|
|
124
|
+
return { index: op.index, node: replaced, op: "set-child", parentPath: op.parentPath };
|
|
125
|
+
}
|
|
126
|
+
case "move-child": {
|
|
127
|
+
assertNotIntoOwnSubtree(op);
|
|
128
|
+
const source = childrenAt(doc, op.fromParentPath);
|
|
129
|
+
assertIndex(source, op.fromParentPath, op.fromIndex);
|
|
130
|
+
const target = insertableChildren(doc, op.toParentPath);
|
|
131
|
+
const toIndex = insertionSlot(op.toIndex, target.length - (target === source ? 1 : 0));
|
|
132
|
+
return {
|
|
133
|
+
fromIndex: toIndex,
|
|
134
|
+
fromParentPath: shiftThroughSplice(op.fromParentPath, op.toParentPath, op.fromIndex, -1, false),
|
|
135
|
+
op: "move-child",
|
|
136
|
+
toIndex: op.fromIndex,
|
|
137
|
+
toParentPath: shiftThroughSplice(op.toParentPath, op.fromParentPath, toIndex, 1, true)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
default: {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
throw new Error(`unknown-doc-op:${op.op}`);
|
|
145
|
+
}
|
|
146
|
+
function childrenAt(doc, parentPath) {
|
|
147
|
+
const parent = getNodeAtPath3(doc, parentPath);
|
|
148
|
+
return parent && Array.isArray(parent.children) ? parent.children : null;
|
|
149
|
+
}
|
|
150
|
+
function assertIndex(children, parentPath, index) {
|
|
151
|
+
if (!children || index < 0 || index >= children.length) {
|
|
152
|
+
throw new Error(`doc-op-node-not-found:${[...parentPath, "children", index].join("/")}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function existingChild(doc, parentPath, index) {
|
|
156
|
+
const children = childrenAt(doc, parentPath);
|
|
157
|
+
assertIndex(children, parentPath, index);
|
|
158
|
+
return cloneValue2(children[index]);
|
|
159
|
+
}
|
|
160
|
+
function insertableChildren(doc, parentPath) {
|
|
161
|
+
const node = getNodeAtPath3(doc, parentPath);
|
|
162
|
+
if (!node || typeof node !== "object" || Array.isArray(node)) {
|
|
163
|
+
throw new Error(`doc-op-node-not-found:${parentPath.join("/")}`);
|
|
164
|
+
}
|
|
165
|
+
if (node.children === undefined) {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
if (!Array.isArray(node.children)) {
|
|
169
|
+
throw new TypeError(`doc-op-mapped-children:${parentPath.join("/")}`);
|
|
170
|
+
}
|
|
171
|
+
return node.children;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export { cloneValue2, getNodeAtPath3, childArray2, applyDocOpToDoc2, inverseOf };
|
|
175
|
+
|
|
176
|
+
//# debugId=FEDC5B4E1A6763C764756E2164756E21
|
|
177
|
+
//# sourceMappingURL=studio-aj9drheq.js.map
|