@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
|
@@ -2,23 +2,23 @@ import {
|
|
|
2
2
|
githubTokenStored,
|
|
3
3
|
githubTokenLocation,
|
|
4
4
|
clearGithubToken
|
|
5
|
-
} from "./studio-
|
|
5
|
+
} from "./studio-sjas5b3a.js";
|
|
6
6
|
import {
|
|
7
7
|
getPlatform2,
|
|
8
8
|
hasPlatform2
|
|
9
|
-
} from "./studio-
|
|
9
|
+
} from "./studio-6pwn9j8c.js";
|
|
10
10
|
import {
|
|
11
11
|
getCfToken2,
|
|
12
12
|
getCfAccountId2,
|
|
13
13
|
clearCfConnection2
|
|
14
|
-
} from "./studio-
|
|
14
|
+
} from "./studio-b9q3znz8.js";
|
|
15
15
|
import {
|
|
16
16
|
hasOpenAiKey,
|
|
17
17
|
getBaseUrl,
|
|
18
18
|
clearAiProvider,
|
|
19
19
|
resetModelCache,
|
|
20
20
|
preferredModel
|
|
21
|
-
} from "./studio-
|
|
21
|
+
} from "./studio-7d3c1m59.js";
|
|
22
22
|
import {
|
|
23
23
|
__preload
|
|
24
24
|
} from "./studio-5te5tqng.js";
|
|
@@ -56,7 +56,7 @@ function resetCfConnectionCache() {
|
|
|
56
56
|
async function hostedConnect() {
|
|
57
57
|
const outcome = await getPlatform2().cfConnect?.();
|
|
58
58
|
if (outcome?.status === "connected" && !outcome.connection.accountId) {
|
|
59
|
-
const { openCfAccountPicker } = await (__preload("
|
|
59
|
+
const { openCfAccountPicker } = await (__preload("3f08rry6"), import("./cf-account-picker-3f08rry6.js"));
|
|
60
60
|
await openCfAccountPicker();
|
|
61
61
|
}
|
|
62
62
|
resetModelCache();
|
|
@@ -111,7 +111,7 @@ function brokeredCloudflareRecord() {
|
|
|
111
111
|
id: "choose-account",
|
|
112
112
|
label: "Choose account",
|
|
113
113
|
run: async () => {
|
|
114
|
-
const { openCfAccountPicker } = await (__preload("
|
|
114
|
+
const { openCfAccountPicker } = await (__preload("3f08rry6"), import("./cf-account-picker-3f08rry6.js"));
|
|
115
115
|
if (await openCfAccountPicker()) {
|
|
116
116
|
resetModelCache();
|
|
117
117
|
await refreshCfConnection();
|
|
@@ -192,4 +192,4 @@ function notifyCredentialsChanged() {
|
|
|
192
192
|
export { platformBrokersCf, refreshCfConnection, ensureCfConnection, resetCfConnectionCache, listAccounts, revokeAccount, onCredentialsChanged, notifyCredentialsChanged };
|
|
193
193
|
|
|
194
194
|
//# debugId=5A4E8AE3D8A598C464756E2164756E21
|
|
195
|
-
//# sourceMappingURL=studio-
|
|
195
|
+
//# sourceMappingURL=studio-qxye31h7.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
|
isJsonObject,
|
|
6
6
|
isRef,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./studio-m1p9b6c3.js";
|
|
22
22
|
import {
|
|
23
23
|
componentRegistry2
|
|
24
|
-
} from "./studio-
|
|
24
|
+
} from "./studio-gjj4bbfx.js";
|
|
25
25
|
import {
|
|
26
26
|
tabOfPane,
|
|
27
27
|
canvasModeOfTab,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
attachInstruction,
|
|
33
33
|
extractInstruction,
|
|
34
34
|
requestCanvasEval2
|
|
35
|
-
} from "./studio-
|
|
35
|
+
} from "./studio-mrh0a92f.js";
|
|
36
36
|
import {
|
|
37
37
|
effectScope,
|
|
38
38
|
effect,
|
|
@@ -49,13 +49,7 @@ import {
|
|
|
49
49
|
cancelBufferWrites2,
|
|
50
50
|
bufferIsLive2,
|
|
51
51
|
bufferMovedOn2
|
|
52
|
-
} from "./studio-
|
|
53
|
-
import {
|
|
54
|
-
loadMonaco,
|
|
55
|
-
mountStillWanted,
|
|
56
|
-
loadExtensions2,
|
|
57
|
-
getExtensions2
|
|
58
|
-
} from "./studio-28vs5k2y.js";
|
|
52
|
+
} from "./studio-6vg0x5fz.js";
|
|
59
53
|
import {
|
|
60
54
|
localeLabel,
|
|
61
55
|
translationPathFor,
|
|
@@ -94,7 +88,13 @@ import {
|
|
|
94
88
|
insertIntoPane2,
|
|
95
89
|
tabIsLive2,
|
|
96
90
|
promoteTab2
|
|
97
|
-
} from "./studio-
|
|
91
|
+
} from "./studio-dgdm6vvt.js";
|
|
92
|
+
import {
|
|
93
|
+
loadMonaco,
|
|
94
|
+
mountStillWanted,
|
|
95
|
+
loadExtensions2,
|
|
96
|
+
getExtensions2
|
|
97
|
+
} from "./studio-9vsvz7w7.js";
|
|
98
98
|
import {
|
|
99
99
|
PURE_METHOD_OPS,
|
|
100
100
|
BLESSED_OPERATORS,
|
|
@@ -104,7 +104,7 @@ import {
|
|
|
104
104
|
popoverIdsIn,
|
|
105
105
|
POPOVER_TAGS,
|
|
106
106
|
activeRegistry
|
|
107
|
-
} from "./studio-
|
|
107
|
+
} from "./studio-3nprwbd9.js";
|
|
108
108
|
import {
|
|
109
109
|
getEffectiveMedia,
|
|
110
110
|
getEffectiveStyle,
|
|
@@ -113,7 +113,7 @@ import {
|
|
|
113
113
|
shell,
|
|
114
114
|
monacoTheme,
|
|
115
115
|
setBottomTab
|
|
116
|
-
} from "./studio-
|
|
116
|
+
} from "./studio-mfkh1q8d.js";
|
|
117
117
|
import {
|
|
118
118
|
nothing2
|
|
119
119
|
} from "./studio-1k325pwf.js";
|
|
@@ -125,17 +125,17 @@ import {
|
|
|
125
125
|
mountSurface,
|
|
126
126
|
showPromptDialog2,
|
|
127
127
|
getLayerSlot2
|
|
128
|
-
} from "./studio-
|
|
128
|
+
} from "./studio-ag3z6shb.js";
|
|
129
129
|
import {
|
|
130
130
|
registerPanel
|
|
131
|
-
} from "./studio-
|
|
131
|
+
} from "./studio-fqpkpq1t.js";
|
|
132
132
|
import {
|
|
133
133
|
codeService,
|
|
134
134
|
pluginSchemaCache,
|
|
135
135
|
fetchPluginSchema,
|
|
136
136
|
setLintMarkers,
|
|
137
137
|
getFunctionArgs
|
|
138
|
-
} from "./studio-
|
|
138
|
+
} from "./studio-vd67b66d.js";
|
|
139
139
|
import {
|
|
140
140
|
VALUE_SOURCE_LABELS,
|
|
141
141
|
slotMode,
|
|
@@ -148,27 +148,27 @@ import {
|
|
|
148
148
|
switchSlotMode,
|
|
149
149
|
mountSchemaForm,
|
|
150
150
|
resolveContextPointer
|
|
151
|
-
} from "./studio-
|
|
151
|
+
} from "./studio-w7gpcvfj.js";
|
|
152
152
|
import {
|
|
153
153
|
combine
|
|
154
154
|
} from "./studio-esrxgwh6.js";
|
|
155
155
|
import {
|
|
156
156
|
openMenu2
|
|
157
|
-
} from "./studio-
|
|
157
|
+
} from "./studio-mt79tn56.js";
|
|
158
158
|
import {
|
|
159
159
|
mountMediaPicker2,
|
|
160
160
|
unmountMediaPicker2
|
|
161
|
-
} from "./studio-
|
|
161
|
+
} from "./studio-rwmmbrth.js";
|
|
162
162
|
import {
|
|
163
163
|
peekUsages2,
|
|
164
164
|
loadUsages2,
|
|
165
165
|
retryUsages2,
|
|
166
166
|
usageHeadline2,
|
|
167
167
|
usageFiles2
|
|
168
|
-
} from "./studio-
|
|
168
|
+
} from "./studio-557bmn0x.js";
|
|
169
169
|
import {
|
|
170
170
|
cloneValue2
|
|
171
|
-
} from "./studio-
|
|
171
|
+
} from "./studio-aj9drheq.js";
|
|
172
172
|
import {
|
|
173
173
|
rectOf
|
|
174
174
|
} from "./studio-rs76k67r.js";
|
|
@@ -2213,7 +2213,7 @@ function formulaChipStrip(node, opts = {}) {
|
|
|
2213
2213
|
var formula_palette_default = {
|
|
2214
2214
|
$schema: "https://jxsuite.com/schema/v1",
|
|
2215
2215
|
$id: "StudioFormulaPalette",
|
|
2216
|
-
$description: "The formula palette (spec §19.9): a search field over the formula catalog, its results grouped by the catalog's own group order, and one pick that hands an entry back to whoever opened it. The same shape as `palette.json` — a scrim, a framed panel, a borderless field, a listbox — because it is the same gesture over a different corpus, and the two used to share a stylesheet by sharing its class names. `groups` is the filtered catalog already grouped; `activeId` is the highlight, and it is ONE string — the id the field points `aria-activedescendant` at and the id the listbox is handed as `active` — kept apart from the rows so a key moves it without the list reconciling, which is why every row carries the FLAT index it would otherwise have to be asked for. Panel position is the caller's: centred under the top edge by default, and pinned under an anchor control when one was named, which is the only thing about this surface a document cannot decide for itself — it arrives as `anchorLeft`/`anchorTop`, two numbers the `style` object below binds, because a style declaration may read state like any other value (spec §9.1).",
|
|
2216
|
+
$description: "The formula palette (spec.md §19.9): a search field over the formula catalog, its results grouped by the catalog's own group order, and one pick that hands an entry back to whoever opened it. The same shape as `palette.json` — a scrim, a framed panel, a borderless field, a listbox — because it is the same gesture over a different corpus, and the two used to share a stylesheet by sharing its class names. `groups` is the filtered catalog already grouped; `activeId` is the highlight, and it is ONE string — the id the field points `aria-activedescendant` at and the id the listbox is handed as `active` — kept apart from the rows so a key moves it without the list reconciling, which is why every row carries the FLAT index it would otherwise have to be asked for. Panel position is the caller's: centred under the top edge by default, and pinned under an anchor control when one was named, which is the only thing about this surface a document cannot decide for itself — it arrives as `anchorLeft`/`anchorTop`, two numbers the `style` object below binds, because a style declaration may read state like any other value (spec.md §9.1).",
|
|
2217
2217
|
tagName: "div",
|
|
2218
2218
|
attributes: {
|
|
2219
2219
|
part: "palette"
|
|
@@ -2232,6 +2232,9 @@ var formula_palette_default = {
|
|
|
2232
2232
|
paddingTop: "60px",
|
|
2233
2233
|
background: "rgba(0, 0, 0, 0.4)"
|
|
2234
2234
|
},
|
|
2235
|
+
'& [part="overlay"][hidden]': {
|
|
2236
|
+
display: "none"
|
|
2237
|
+
},
|
|
2235
2238
|
'& [part="panel"]': {
|
|
2236
2239
|
width: "560px",
|
|
2237
2240
|
maxWidth: "calc(100vw - 32px)",
|
|
@@ -2248,7 +2251,7 @@ var formula_palette_default = {
|
|
|
2248
2251
|
overflow: "hidden"
|
|
2249
2252
|
},
|
|
2250
2253
|
'& [part="panel"][data-anchored]': {
|
|
2251
|
-
$description: "Opened from a control rather than from a chord: the panel hangs under that control instead of sitting under the top edge. The two custom properties are the only measured numbers in the surface — a rect belongs to the moment it was taken, so the adapter measures it once per open and this document binds the result. They used to travel as a `style` ATTRIBUTE the adapter assembled into one string, on the belief that a document cannot bind a style declaration to state; it can, and always could. They are declared at the top of this object rather than here because a reactive custom property in a rule targeting the element ITSELF is written inline under the author's own name (spec §9.1), and the panel then reads them by inheritance — the root is `display: contents`, so nothing sits between the two.",
|
|
2254
|
+
$description: "Opened from a control rather than from a chord: the panel hangs under that control instead of sitting under the top edge. The two custom properties are the only measured numbers in the surface — a rect belongs to the moment it was taken, so the adapter measures it once per open and this document binds the result. They used to travel as a `style` ATTRIBUTE the adapter assembled into one string, on the belief that a document cannot bind a style declaration to state; it can, and always could. They are declared at the top of this object rather than here because a reactive custom property in a rule targeting the element ITSELF is written inline under the author's own name (spec.md §9.1), and the panel then reads them by inheritance — the root is `display: contents`, so nothing sits between the two.",
|
|
2252
2255
|
position: "fixed",
|
|
2253
2256
|
left: "var(--formula-palette-left)",
|
|
2254
2257
|
top: "var(--formula-palette-top)",
|
|
@@ -2309,14 +2312,12 @@ var formula_palette_default = {
|
|
|
2309
2312
|
color: "inherit"
|
|
2310
2313
|
}
|
|
2311
2314
|
},
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
},
|
|
2315
|
-
cases: {
|
|
2316
|
-
true: {
|
|
2315
|
+
children: [
|
|
2316
|
+
{
|
|
2317
2317
|
tagName: "div",
|
|
2318
2318
|
attributes: {
|
|
2319
|
-
part: "overlay"
|
|
2319
|
+
part: "overlay",
|
|
2320
|
+
hidden: "${state.open ? null : ''}"
|
|
2320
2321
|
},
|
|
2321
2322
|
onclick: {
|
|
2322
2323
|
$prototype: "Function",
|
|
@@ -2572,7 +2573,7 @@ var formula_palette_default = {
|
|
|
2572
2573
|
}
|
|
2573
2574
|
]
|
|
2574
2575
|
}
|
|
2575
|
-
|
|
2576
|
+
]
|
|
2576
2577
|
};
|
|
2577
2578
|
|
|
2578
2579
|
// src/surfaces/formula-palette.ts
|
|
@@ -2749,7 +2750,7 @@ function closeFormulaPalette() {
|
|
|
2749
2750
|
var expression_editor_default = {
|
|
2750
2751
|
$schema: "https://jxsuite.com/schema/v1",
|
|
2751
2752
|
$id: "StudioExpressionEditor",
|
|
2752
|
-
$description: "The expression editor (spec §19.9): a `$expression` node edited as STRUCTURE — an operator, the operands that operator needs, and the live value of each. The rows arrive FLAT. An expression nests to any depth (an operand may be another expression, an aggregate's per-item body is one, and either may hold more of both) while a document's one repeater is `$prototype: \"Array\"` over a list, so `ui/expression-editor.ts` walks the tree once and hands over rows that already carry their own indent — recursion is a property of the walk, exactly as it is for the statement tree and the Data panel's value tree. Six kinds of row come out of that walk: the CHIP strip that summarises the whole pipeline, the preview's ERROR line, the OPERATOR row, an OPERAND row (the workhorse, which carries the value ladder and every literal control), a section LABEL, and an ACTION that grows the node. Five surfaces draw this — the Inspector's Content and Logic tabs, the Navigator's State panel, the statement editor and the Logic dock — and none of them is named here: each host has already said where it is, so this document stamps no region of its own.",
|
|
2753
|
+
$description: "The expression editor (spec.md §19.9): a `$expression` node edited as STRUCTURE — an operator, the operands that operator needs, and the live value of each. The rows arrive FLAT. An expression nests to any depth (an operand may be another expression, an aggregate's per-item body is one, and either may hold more of both) while a document's one repeater is `$prototype: \"Array\"` over a list, so `ui/expression-editor.ts` walks the tree once and hands over rows that already carry their own indent — recursion is a property of the walk, exactly as it is for the statement tree and the Data panel's value tree. Six kinds of row come out of that walk: the CHIP strip that summarises the whole pipeline, the preview's ERROR line, the OPERATOR row, an OPERAND row (the workhorse, which carries the value ladder and every literal control), a section LABEL, and an ACTION that grows the node. Five surfaces draw this — the Inspector's Content and Logic tabs, the Navigator's State panel, the statement editor and the Logic dock — and none of them is named here: each host has already said where it is, so this document stamps no region of its own.",
|
|
2753
2754
|
tagName: "div",
|
|
2754
2755
|
attributes: {
|
|
2755
2756
|
part: "expression"
|
|
@@ -2806,7 +2807,7 @@ var expression_editor_default = {
|
|
|
2806
2807
|
textOverflow: "ellipsis"
|
|
2807
2808
|
},
|
|
2808
2809
|
'& [part="row"]': {
|
|
2809
|
-
$description: "§4.1's standard form row, stacked, with its own indent. `display: flex` rather than `block` because an operand row carries a leading cell (an argument's name, a case's key) beside the field.",
|
|
2810
|
+
$description: "studio-ui-guidelines.md §4.1's standard form row, stacked, with its own indent. `display: flex` rather than `block` because an operand row carries a leading cell (an argument's name, a case's key) beside the field.",
|
|
2810
2811
|
boxSizing: "border-box",
|
|
2811
2812
|
display: "flex",
|
|
2812
2813
|
alignItems: "flex-start",
|
|
@@ -2855,7 +2856,7 @@ var expression_editor_default = {
|
|
|
2855
2856
|
fontSize: "var(--jx-text-xs)"
|
|
2856
2857
|
},
|
|
2857
2858
|
'& [part="badge"]': {
|
|
2858
|
-
$description: "The live value (spec §19.9). A resolved formula is arbitrary text — an object, a URL, a paragraph — so it ellipsizes inside the line it annotates and never sets that line's width.",
|
|
2859
|
+
$description: "The live value (spec.md §19.9). A resolved formula is arbitrary text — an object, a URL, a paragraph — so it ellipsizes inside the line it annotates and never sets that line's width.",
|
|
2859
2860
|
flex: "0 1 auto",
|
|
2860
2861
|
minWidth: "0",
|
|
2861
2862
|
maxWidth: "120px",
|
|
@@ -2871,7 +2872,7 @@ var expression_editor_default = {
|
|
|
2871
2872
|
textOverflow: "ellipsis"
|
|
2872
2873
|
},
|
|
2873
2874
|
'& [part="preview-error"]': {
|
|
2874
|
-
$description: "§
|
|
2875
|
+
$description: "§16.1's inline tier: not a toast and not a problem record, because it is a property of the value currently in the editor and lives exactly as long as that value does.",
|
|
2875
2876
|
margin: "0",
|
|
2876
2877
|
padding: "2px 0",
|
|
2877
2878
|
minWidth: "0",
|
|
@@ -3277,7 +3278,7 @@ var expression_editor_default = {
|
|
|
3277
3278
|
},
|
|
3278
3279
|
children: [
|
|
3279
3280
|
{
|
|
3280
|
-
$description: "The value ladder (§6.
|
|
3281
|
+
$description: "The value ladder (§6.6), in the one vocabulary `ui/value-source.ts` owns. It is absent where the position admits a single shape — an assignment target, a `call`'s callee — because a picker with one entry is a control that asks a question with one answer.",
|
|
3281
3282
|
tagName: "span",
|
|
3282
3283
|
attributes: {
|
|
3283
3284
|
part: "source-slot",
|
|
@@ -4564,7 +4565,7 @@ function scheduleLiveRefresh(tab, targetId, node, contextPath, key, onUpdate) {
|
|
|
4564
4565
|
var logic_workspace_default = {
|
|
4565
4566
|
$schema: "https://jxsuite.com/schema/v1",
|
|
4566
4567
|
$id: "StudioLogicWorkspace",
|
|
4567
|
-
$description: '
|
|
4568
|
+
$description: 'Logic — the Bottom dock tab where a formula and a function body are edited BESIDE the page they compute. One tab, two surfaces, one header: `panels/formula-workspace.ts` decides which of them is open (a `$expression` or a Monaco body), what it is called and what its verbs are, and this draws both. The chip pipeline is a projection of `ui/formula-chips.ts`\'s model — the expression tree read left to right — and a chip click reports its key back; nothing here unrolls a tree, reads a document or evaluates anything. Three ISLANDS, each an empty host this document draws and the flow fills (studio-ui-guidelines.md §9.4): `[part="code-host"]` takes Monaco, `[part="editor-host"]` takes the expression editor, which is a lit surface of its own and another conversion\'s to move, and one `[part="tree-host"]` per data-rail entry takes the value tree, which is a mounted document of its own (`surfaces/panel-data.json`). The rail\'s trees had been empty since that tree became a document, because the lit takeover rendered a host nothing ever filled; announcing them is what fills them.',
|
|
4568
4569
|
tagName: "div",
|
|
4569
4570
|
attributes: {
|
|
4570
4571
|
part: "workspace"
|
|
@@ -4657,7 +4658,7 @@ var logic_workspace_default = {
|
|
|
4657
4658
|
textOverflow: "ellipsis"
|
|
4658
4659
|
},
|
|
4659
4660
|
'& [part="badge"]': {
|
|
4660
|
-
$description: "The live value (spec §19.9). A resolved formula is arbitrary text — an object, a URL, a paragraph — so it ellipsizes inside the chip it annotates and never sets the chip's width.",
|
|
4661
|
+
$description: "The live value (spec.md §19.9). A resolved formula is arbitrary text — an object, a URL, a paragraph — so it ellipsizes inside the chip it annotates and never sets the chip's width.",
|
|
4661
4662
|
flex: "0 1 auto",
|
|
4662
4663
|
minWidth: "0",
|
|
4663
4664
|
maxWidth: "120px",
|
|
@@ -5920,7 +5921,7 @@ function openPageAction(label = "Open a page…") {
|
|
|
5920
5921
|
return {
|
|
5921
5922
|
label,
|
|
5922
5923
|
run: () => {
|
|
5923
|
-
(__preload("
|
|
5924
|
+
(__preload("c63mkt3b"), import("./quick-search-c63mkt3b.js")).then((m) => {
|
|
5924
5925
|
m.openQuickSearch();
|
|
5925
5926
|
});
|
|
5926
5927
|
}
|
|
@@ -6448,7 +6449,7 @@ var properties_panel_default = {
|
|
|
6448
6449
|
minWidth: "0"
|
|
6449
6450
|
},
|
|
6450
6451
|
'& [part="section-body"] > [part="row"], & [part="layout-class-slot"] > [part="row"]': {
|
|
6451
|
-
$description: '§4.1\'s standard form row, stacked: the label sits above a control that takes the whole width. `min-width: 0` is what keeps it honest in a narrow dock — a field refuses to shrink below its own min-content without it. Scoped to the tab\'s OWN rows rather than to every `part="row"` beneath it, which a colour row made load-bearing: the kit is light DOM and one cascade, so a bare descendant selector also matches `jx-color-field`\'s internal row — and at equal specificity with the kit\'s own `& > [part="row"]` the winner is whichever sheet was interned later, which is not a thing a stylesheet may depend on. `[part="chip"]` moved under `[part="chip-slot"]` for the same reason and a sharper one: its `background: transparent` and its border would otherwise have erased a swatch\'s colour and drawn a box round it. The `layout-class-slot` half of the pair is there because that slot is `display: contents`, so its row is a grandchild in the DOM even though it is a child in the box tree.',
|
|
6452
|
+
$description: 'studio-ui-guidelines.md §4.1\'s standard form row, stacked: the label sits above a control that takes the whole width. `min-width: 0` is what keeps it honest in a narrow dock — a field refuses to shrink below its own min-content without it. Scoped to the tab\'s OWN rows rather than to every `part="row"` beneath it, which a colour row made load-bearing: the kit is light DOM and one cascade, so a bare descendant selector also matches `jx-color-field`\'s internal row — and at equal specificity with the kit\'s own `& > [part="row"]` the winner is whichever sheet was interned later, which is not a thing a stylesheet may depend on. `[part="chip"]` moved under `[part="chip-slot"]` for the same reason and a sharper one: its `background: transparent` and its border would otherwise have erased a swatch\'s colour and drawn a box round it. The `layout-class-slot` half of the pair is there because that slot is `display: contents`, so its row is a grandchild in the DOM even though it is a child in the box tree.',
|
|
6452
6453
|
display: "flex",
|
|
6453
6454
|
flexDirection: "column",
|
|
6454
6455
|
alignItems: "stretch",
|
|
@@ -6492,7 +6493,7 @@ var properties_panel_default = {
|
|
|
6492
6493
|
minInlineSize: "0"
|
|
6493
6494
|
},
|
|
6494
6495
|
'& [part="chip-slot"] > [part="chip"]': {
|
|
6495
|
-
$description: "§6.
|
|
6496
|
+
$description: "§6.7's provenance chip. `set` is the 6px accent dot it has always been — a circle is not a button, whatever element draws it — and the three states that carry a donor are bordered chips naming it. The fourth state, `default`, draws nothing at all: a ghost dot on every unset row says less than silence.",
|
|
6496
6497
|
flexShrink: "0",
|
|
6497
6498
|
display: "inline-flex",
|
|
6498
6499
|
alignItems: "center",
|
|
@@ -6985,7 +6986,7 @@ var properties_panel_default = {
|
|
|
6985
6986
|
},
|
|
6986
6987
|
children: [
|
|
6987
6988
|
{
|
|
6988
|
-
$description: "§6.
|
|
6989
|
+
$description: "§6.7's collapsed-header tally. It is an indicator and not a control: the heading's own click already toggles the section, so a second meaning for the same click would be worse than the silence. It says how many values in the section are set, which is what a closed section otherwise cannot say.",
|
|
6989
6990
|
tagName: "span",
|
|
6990
6991
|
attributes: {
|
|
6991
6992
|
slot: "heading",
|
|
@@ -7144,7 +7145,7 @@ var properties_panel_default = {
|
|
|
7144
7145
|
},
|
|
7145
7146
|
cases: {
|
|
7146
7147
|
true: {
|
|
7147
|
-
$description: "§6.
|
|
7148
|
+
$description: "§6.6's Value Source chip: the rung this value is produced at, in plain language, opening a picker of every rung the POSITION permits. The rungs are derived from the schema at that position and the picker is the kit menu every other list in the shell opens, so neither is decided here.",
|
|
7148
7149
|
tagName: "jx-action-button",
|
|
7149
7150
|
attributes: {
|
|
7150
7151
|
part: "source",
|
|
@@ -8474,10 +8475,10 @@ function openSourceMenu(key, anchor) {
|
|
|
8474
8475
|
});
|
|
8475
8476
|
}
|
|
8476
8477
|
function openUsage(path) {
|
|
8477
|
-
(__preload("
|
|
8478
|
+
(__preload("egsb0ry8"), import("./files-egsb0ry8.js")).then((m) => m.openFileInTab(path));
|
|
8478
8479
|
}
|
|
8479
8480
|
function showLogicTab() {
|
|
8480
|
-
(__preload("
|
|
8481
|
+
(__preload("t5n8wttg"), import("./right-panel-t5n8wttg.js")).then((m) => m.setInspectorTab("events"));
|
|
8481
8482
|
}
|
|
8482
8483
|
function withPlan(row, plan) {
|
|
8483
8484
|
plans.set(row.key, plan);
|
|
@@ -9195,7 +9196,7 @@ function registerInspectorCommands(registry) {
|
|
|
9195
9196
|
var statements_default = {
|
|
9196
9197
|
$schema: "https://jxsuite.com/schema/v1",
|
|
9197
9198
|
$id: "StudioStatements",
|
|
9198
|
-
$description: "The statement editor (spec §20): a Function entry's `body: JxStatement[]` edited as STRUCTURE rather than as text. The rows arrive FLAT. A statement tree nests to any depth — an `if` holds two lanes, a `$switch` holds one per case plus a default, and either may hold another of both — while a document's one repeater is `$prototype: \"Array\"` over a list, so `panels/statement-editor.ts` walks the tree once and hands over rows that already carry their own indent; recursion is a property of the walk, exactly as it is for the Data panel's value tree. Four kinds of row come out of that walk: a statement CARD (its header, and the fields that statement is made of), a LANE header naming a branch, the ADD control that ends every lane, and an ACTION that grows the statement itself (`+ Add else`, `+ Add case`). Two hosts draw this — the Navigator's State panel and the Inspector's Logic tab — and neither is named here: the region is stamped on the host, because a shared control cannot know where it is. An operand is an ISLAND: the document renders `[part=\"control-host\"]` and nothing inside it, and the flow fills it with the expression editor (studio-ui-guidelines.md §9.4).",
|
|
9199
|
+
$description: "The statement editor (spec.md §20): a Function entry's `body: JxStatement[]` edited as STRUCTURE rather than as text. The rows arrive FLAT. A statement tree nests to any depth — an `if` holds two lanes, a `$switch` holds one per case plus a default, and either may hold another of both — while a document's one repeater is `$prototype: \"Array\"` over a list, so `panels/statement-editor.ts` walks the tree once and hands over rows that already carry their own indent; recursion is a property of the walk, exactly as it is for the Data panel's value tree. Four kinds of row come out of that walk: a statement CARD (its header, and the fields that statement is made of), a LANE header naming a branch, the ADD control that ends every lane, and an ACTION that grows the statement itself (`+ Add else`, `+ Add case`). Two hosts draw this — the Navigator's State panel and the Inspector's Logic tab — and neither is named here: the region is stamped on the host, because a shared control cannot know where it is. An operand is an ISLAND: the document renders `[part=\"control-host\"]` and nothing inside it, and the flow fills it with the expression editor (studio-ui-guidelines.md §9.4).",
|
|
9199
9200
|
tagName: "div",
|
|
9200
9201
|
attributes: {
|
|
9201
9202
|
part: "statements"
|
|
@@ -9412,7 +9413,7 @@ var statements_default = {
|
|
|
9412
9413
|
$ref: "$map/item/key"
|
|
9413
9414
|
},
|
|
9414
9415
|
map: {
|
|
9415
|
-
$description: "One operand of the statement. Every field is `span` — the Inspector is 280px and the
|
|
9416
|
+
$description: "One operand of the statement. Every field is `span` — the Inspector is 280px and the standard row is vertically stacked (studio-ui-guidelines.md §4.1) — and every field carries `data-prop`, which is what `inspector/field:<prop>` addresses. The key is `<row>::<prop>`, self-contained because this `$map` shadows the row's own `$map.item`.",
|
|
9416
9417
|
tagName: "jx-field",
|
|
9417
9418
|
attributes: {
|
|
9418
9419
|
part: "field",
|
|
@@ -9694,7 +9695,7 @@ var statements_default = {
|
|
|
9694
9695
|
]
|
|
9695
9696
|
},
|
|
9696
9697
|
add: {
|
|
9697
|
-
$description: "The end of every lane. It opens the kit's menu rather than being a picker of its own: a select that has to snap back to its placeholder after each pick is a control fighting the runtime's skip-an-equal-write, and §12.5 asks for one list of actions rather than a second.",
|
|
9698
|
+
$description: "The end of every lane. It opens the kit's menu rather than being a picker of its own: a select that has to snap back to its placeholder after each pick is a control fighting the runtime's skip-an-equal-write, and studio-ui-guidelines.md §12.5 asks for one list of actions rather than a second.",
|
|
9698
9699
|
tagName: "div",
|
|
9699
9700
|
attributes: {
|
|
9700
9701
|
part: "add",
|
|
@@ -10567,7 +10568,11 @@ var panel_signals_default = {
|
|
|
10567
10568
|
fontSize: "var(--jx-text-xs)",
|
|
10568
10569
|
color: "var(--fg-dim)"
|
|
10569
10570
|
},
|
|
10570
|
-
'& [part="bar-segments"]
|
|
10571
|
+
'& [part="bar-segments"]': {
|
|
10572
|
+
$description: "The Body switch is the kit's segmented control, which draws its own row, frame and selected segment; all the bar asks of it is not to shrink.",
|
|
10573
|
+
flex: "none"
|
|
10574
|
+
},
|
|
10575
|
+
'& [part="bar-buttons"]': {
|
|
10571
10576
|
display: "flex",
|
|
10572
10577
|
flex: "none",
|
|
10573
10578
|
alignItems: "center"
|
|
@@ -11576,11 +11581,17 @@ var panel_signals_default = {
|
|
|
11576
11581
|
textContent: "${$map.item.label}"
|
|
11577
11582
|
},
|
|
11578
11583
|
{
|
|
11579
|
-
|
|
11584
|
+
$description: "The mode switch is the kit's radiogroup, as the Logic panel's Handler body is. It was a `span` with `role=group` over buttons that carried `selected` alone: the one Spectrum `compact` group the conversion never reached, so it drew as two loose words and announced neither which mode was on nor that the two exclude each other. `checked` makes each segment a radio, so the caret roves and `aria-checked` is the element's own.",
|
|
11585
|
+
tagName: "jx-action-group",
|
|
11580
11586
|
attributes: {
|
|
11581
|
-
part: "bar-segments"
|
|
11582
|
-
|
|
11583
|
-
|
|
11587
|
+
part: "bar-segments"
|
|
11588
|
+
},
|
|
11589
|
+
$props: {
|
|
11590
|
+
selects: "single",
|
|
11591
|
+
compact: true,
|
|
11592
|
+
label: {
|
|
11593
|
+
$ref: "$map/item/label"
|
|
11594
|
+
}
|
|
11584
11595
|
},
|
|
11585
11596
|
children: [
|
|
11586
11597
|
{
|
|
@@ -11602,11 +11613,16 @@ var panel_signals_default = {
|
|
|
11602
11613
|
label: {
|
|
11603
11614
|
$ref: "$map/item/label"
|
|
11604
11615
|
},
|
|
11605
|
-
|
|
11606
|
-
$ref: "$map/item/
|
|
11616
|
+
checked: {
|
|
11617
|
+
$ref: "$map/item/checked"
|
|
11607
11618
|
}
|
|
11608
11619
|
},
|
|
11609
|
-
|
|
11620
|
+
children: [
|
|
11621
|
+
{
|
|
11622
|
+
tagName: "span",
|
|
11623
|
+
textContent: "${$map.item.label}"
|
|
11624
|
+
}
|
|
11625
|
+
],
|
|
11610
11626
|
onclick: {
|
|
11611
11627
|
$prototype: "Function",
|
|
11612
11628
|
body: [
|
|
@@ -13146,13 +13162,19 @@ function functionFields(S, name, def) {
|
|
|
13146
13162
|
prop: "Body",
|
|
13147
13163
|
segments: [
|
|
13148
13164
|
{
|
|
13165
|
+
checked: statements ? "true" : "false",
|
|
13149
13166
|
field: "body",
|
|
13150
13167
|
key: "statements",
|
|
13151
13168
|
label: "Statements",
|
|
13152
|
-
selected: statements,
|
|
13153
13169
|
signal: name
|
|
13154
13170
|
},
|
|
13155
|
-
{
|
|
13171
|
+
{
|
|
13172
|
+
checked: statements ? "false" : "true",
|
|
13173
|
+
field: "body",
|
|
13174
|
+
key: "code",
|
|
13175
|
+
label: "Code",
|
|
13176
|
+
signal: name
|
|
13177
|
+
}
|
|
13156
13178
|
],
|
|
13157
13179
|
signal: name
|
|
13158
13180
|
}, {
|
|
@@ -13611,5 +13633,5 @@ function registerSignalsCommands(registry) {
|
|
|
13611
13633
|
|
|
13612
13634
|
export { DERIVE_PRESETS, PRESET_LABELS, declaredMedia, clearPaneDerivation, installDerivationEffects, presetRefusal, deriveRefusal, pinRefusal, derivationCommands, mountExpressionEditor, unwrapSignal, dataTypeLabel, registerDataExplorerCommands, registerDataPanel, livePreviewExpression, closeFunctionEditor, logicTarget, revealLogicPanel, openLogicTarget, registerLogicPanel, registerFormulaEditorCommands, provenanceText, provenanceTitle, countProvenance, provenanceSummaryText, clickAnythingTo, staleSelectionMessage, openPageAction, tokenRefName, toTokenRef, resolveTokenValue, colorTokens, resolvedColor, mountStatementEditor, mapSignalsFor, bindableSignalNames, defaultAsString, invalidatePageRouteCache, isInspectorSectionOpen, setInspectorSection, renderPropertiesPanel, bindContentHost, inspectorCommands, registerInspectorCommands, defCategory, defBadgeLabel, isCustomElementDoc, collectCssParts, mountSignalsPanel, registerSignalsCommands };
|
|
13613
13635
|
|
|
13614
|
-
//# debugId=
|
|
13615
|
-
//# sourceMappingURL=studio-
|
|
13636
|
+
//# debugId=A1EC7A96E45C85E664756E2164756E21
|
|
13637
|
+
//# sourceMappingURL=studio-rav5bpmp.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
|
debouncedStyleCommit,
|
|
6
6
|
renderOnly
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
registerSurface,
|
|
12
12
|
mountSurface,
|
|
13
13
|
layerHost2
|
|
14
|
-
} from "./studio-
|
|
14
|
+
} from "./studio-ag3z6shb.js";
|
|
15
15
|
import {
|
|
16
16
|
reactive
|
|
17
17
|
} from "./studio-d8z5bajd.js";
|
|
@@ -23,17 +23,17 @@ import {
|
|
|
23
23
|
uploadAssets,
|
|
24
24
|
mediaSiteUrl,
|
|
25
25
|
previewFileSrc
|
|
26
|
-
} from "./studio-
|
|
26
|
+
} from "./studio-sceg8ws0.js";
|
|
27
27
|
import {
|
|
28
28
|
peekMediaMeta,
|
|
29
29
|
seedMediaMeta,
|
|
30
30
|
recordImageSize,
|
|
31
31
|
invalidateMediaMeta,
|
|
32
32
|
mediaMetaSummary
|
|
33
|
-
} from "./studio-
|
|
33
|
+
} from "./studio-dwdcr2e8.js";
|
|
34
34
|
import {
|
|
35
35
|
previewAssetSrc
|
|
36
|
-
} from "./studio-
|
|
36
|
+
} from "./studio-kwewmhhq.js";
|
|
37
37
|
import {
|
|
38
38
|
rectOf
|
|
39
39
|
} from "./studio-rs76k67r.js";
|
|
@@ -836,4 +836,4 @@ function unmountMediaPicker2(host) {
|
|
|
836
836
|
export { openPopoverSurface, invalidateMediaCache2, showMediaPickerPopover2, uploadAndAssign2, pickAndUpload2, mountMediaPicker2, unmountMediaPicker2 };
|
|
837
837
|
|
|
838
838
|
//# debugId=9A676D8FC549E4AE64756E2164756E21
|
|
839
|
-
//# sourceMappingURL=studio-
|
|
839
|
+
//# sourceMappingURL=studio-rwmmbrth.js.map
|
|
@@ -4,27 +4,27 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
getPlatform2,
|
|
6
6
|
hasPlatform2
|
|
7
|
-
} from "./studio-
|
|
7
|
+
} from "./studio-6pwn9j8c.js";
|
|
8
8
|
import {
|
|
9
9
|
notify2
|
|
10
10
|
} from "./studio-d8z5bajd.js";
|
|
11
|
+
import {
|
|
12
|
+
activeTab2
|
|
13
|
+
} from "./studio-dgdm6vvt.js";
|
|
11
14
|
import {
|
|
12
15
|
projectState
|
|
13
16
|
} from "./studio-m1p9b6c3.js";
|
|
14
|
-
import {
|
|
15
|
-
activeTab2
|
|
16
|
-
} from "./studio-ez11dmdh.js";
|
|
17
17
|
import {
|
|
18
18
|
PUBLIC_DIR,
|
|
19
19
|
normalizeProjectPath,
|
|
20
20
|
encodeProjectPath
|
|
21
|
-
} from "./studio-
|
|
21
|
+
} from "./studio-3nprwbd9.js";
|
|
22
22
|
import {
|
|
23
23
|
contentMountFor,
|
|
24
24
|
loopbackAssetSrc,
|
|
25
25
|
projectLocales2,
|
|
26
26
|
hostAssetDeclarations
|
|
27
|
-
} from "./studio-
|
|
27
|
+
} from "./studio-kwewmhhq.js";
|
|
28
28
|
|
|
29
29
|
// src/files/media-upload.ts
|
|
30
30
|
var IMAGE_EXTENSIONS = new Set([
|
|
@@ -236,5 +236,5 @@ function previewFileSrc(path) {
|
|
|
236
236
|
|
|
237
237
|
export { IMAGE_EXTENSIONS, MEDIA_EXTENSIONS, uploadAccept, extensionOf, isImage, isMediaFile, mediaKind, setMediaChangedHandler, uploadAssets, baseName, dirName, mediaSiteUrl, previewFileSrc };
|
|
238
238
|
|
|
239
|
-
//# debugId=
|
|
240
|
-
//# sourceMappingURL=studio-
|
|
239
|
+
//# debugId=BDC1B0ADAA9E564764756E2164756E21
|
|
240
|
+
//# sourceMappingURL=studio-sceg8ws0.js.map
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
mountSurface,
|
|
13
13
|
whenReady,
|
|
14
14
|
layerHost2
|
|
15
|
-
} from "./studio-
|
|
15
|
+
} from "./studio-ag3z6shb.js";
|
|
16
16
|
import {
|
|
17
17
|
showModal,
|
|
18
18
|
close2
|
|
19
|
-
} from "./studio-
|
|
19
|
+
} from "./studio-3nprwbd9.js";
|
|
20
20
|
// src/surfaces/github-auth.json
|
|
21
21
|
var github_auth_default = {
|
|
22
22
|
$schema: "https://jxsuite.com/schema/v1",
|
|
@@ -69,7 +69,8 @@ var github_auth_default = {
|
|
|
69
69
|
margin: "0"
|
|
70
70
|
},
|
|
71
71
|
'& [part="code"]': {
|
|
72
|
-
$description: "`<code>`, not a styled `<div>`: this is a literal string to be transcribed, and the element that says so is also the one a reader's own stylesheet and a screen reader's character-by-character mode already know about.",
|
|
72
|
+
$description: "`<code>`, not a styled `<div>`: this is a literal string to be transcribed, and the element that says so is also the one a reader's own stylesheet and a screen reader's character-by-character mode already know about. It is this dialog's message, and the one string in it the reader must carry to another screen, so it opts back in to selection against the root's `user-select: none`. `all` rather than `text`: one click selects the whole code, so a copy never leaves a character behind.",
|
|
73
|
+
userSelect: "all",
|
|
73
74
|
fontFamily: "var(--font-mono)",
|
|
74
75
|
fontSize: "24px",
|
|
75
76
|
fontWeight: "700",
|
|
@@ -185,25 +186,22 @@ function openGithubAuthSurface(options) {
|
|
|
185
186
|
};
|
|
186
187
|
}
|
|
187
188
|
|
|
188
|
-
// src/github/github-auth.ts
|
|
189
|
-
var CLIENT_ID = "Ov23liYVlMFpgjOEPXJH";
|
|
189
|
+
// src/github/github-auth-status.ts
|
|
190
190
|
var STORAGE_KEY = "jx_github_token";
|
|
191
191
|
function nativeAuth() {
|
|
192
192
|
return globalThis.__jxPlatform?.githubAuth ?? null;
|
|
193
193
|
}
|
|
194
194
|
var nativeToken = null;
|
|
195
195
|
var nativeStored = false;
|
|
196
|
+
function setNativeToken(token) {
|
|
197
|
+
nativeToken = token;
|
|
198
|
+
}
|
|
196
199
|
function githubTokenStored() {
|
|
197
200
|
return nativeToken !== null || nativeStored || localStorage.getItem(STORAGE_KEY) !== null;
|
|
198
201
|
}
|
|
199
202
|
function githubTokenLocation() {
|
|
200
203
|
return nativeAuth() ? "desktop" : "browser";
|
|
201
204
|
}
|
|
202
|
-
var NOTIFY_KEY = "github.auth";
|
|
203
|
-
var SOURCE = "Source Control";
|
|
204
|
-
var RETRY = "git.signInToGithub";
|
|
205
|
-
var MAX_POLL_FAILURES = 3;
|
|
206
|
-
var UNREACHABLE_DETAIL = "The request never reached GitHub. GitHub's device-flow endpoints send no CORS headers, so a " + "browser cannot call them directly — the desktop app can. A machine that is offline fails " + "identically, and the browser does not say which happened.";
|
|
207
205
|
function getGithubToken() {
|
|
208
206
|
return nativeToken ?? localStorage.getItem(STORAGE_KEY);
|
|
209
207
|
}
|
|
@@ -213,6 +211,14 @@ function clearGithubToken() {
|
|
|
213
211
|
localStorage.removeItem(STORAGE_KEY);
|
|
214
212
|
nativeAuth()?.signOut().catch(() => {});
|
|
215
213
|
}
|
|
214
|
+
|
|
215
|
+
// src/github/github-auth.ts
|
|
216
|
+
var CLIENT_ID = "Ov23liYVlMFpgjOEPXJH";
|
|
217
|
+
var NOTIFY_KEY = "github.auth";
|
|
218
|
+
var SOURCE = "Source Control";
|
|
219
|
+
var RETRY = "git.signInToGithub";
|
|
220
|
+
var MAX_POLL_FAILURES = 3;
|
|
221
|
+
var UNREACHABLE_DETAIL = "The request never reached GitHub. GitHub's device-flow endpoints send no CORS headers, so a " + "browser cannot call them directly — the desktop app can. A machine that is offline fails " + "identically, and the browser does not say which happened.";
|
|
216
222
|
function reportUnreachable(error) {
|
|
217
223
|
notify2.error("Could not reach GitHub to sign in.", {
|
|
218
224
|
action: RETRY,
|
|
@@ -256,7 +262,7 @@ async function authenticateGithub() {
|
|
|
256
262
|
if (native) {
|
|
257
263
|
try {
|
|
258
264
|
const { token } = await native.signIn();
|
|
259
|
-
|
|
265
|
+
setNativeToken(token);
|
|
260
266
|
return token;
|
|
261
267
|
} catch (error) {
|
|
262
268
|
reportRefused("GitHub sign-in was not completed.", errorMessage2(error));
|
|
@@ -358,5 +364,5 @@ async function authenticateGithub() {
|
|
|
358
364
|
|
|
359
365
|
export { githubTokenStored, githubTokenLocation, clearGithubToken, authenticateGithub };
|
|
360
366
|
|
|
361
|
-
//# debugId=
|
|
362
|
-
//# sourceMappingURL=studio-
|
|
367
|
+
//# debugId=2E3AA6611B2C5CA164756E2164756E21
|
|
368
|
+
//# sourceMappingURL=studio-sjas5b3a.js.map
|