@jxsuite/studio 5.3.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-nwnwdm6p.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-4rzvmp0m.js → content-source-jt7rbcbc.js} +22 -22
- package/dist/chunks/{convert-to-repeater-jxsv62v7.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-2mrptyek.js → extension-sections-r73an5s6.js} +30 -29
- package/dist/chunks/{file-ops-knfqshrm.js → file-ops-3xan8mnj.js} +21 -21
- package/dist/chunks/{files-y6fr4he9.js → files-egsb0ry8.js} +28 -28
- package/dist/chunks/{format-host-1k4qrcqd.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-2rkrsjva.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-a7b87n2c.js → grid-view-qaqer9kr.js} +24 -24
- package/dist/chunks/{icons-yy10wk9r.js → icons-drxq9q10.js} +8 -2
- package/dist/chunks/{iframe-host-scpw01h8.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/layers-panel-83a16ytx.js +41 -0
- package/dist/chunks/{layers-jnvdbqva.js → layers-s6mc01ry.js} +3 -3
- package/dist/chunks/{media-picker-f66nav16.js → media-picker-nhn6rv4w.js} +11 -11
- package/dist/chunks/{menu-1dfhry4s.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-km6abc6q.js → monaco-setup-gsjdysze.js} +6 -6
- 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/{studio-ze46gzjh.js → studio-01269reb.js} +7 -7
- 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-d1n2bykn.js → studio-3nprwbd9.js} +117 -25
- package/dist/chunks/{studio-4c041r8y.js → studio-40z39dme.js} +3 -3
- package/dist/chunks/{studio-151w0xnh.js → studio-482eeazk.js} +20 -20
- package/dist/chunks/{studio-cgprcdxn.js → studio-4998spet.js} +10 -9
- package/dist/chunks/{studio-nq5yf5mp.js → studio-557bmn0x.js} +2 -2
- package/dist/chunks/{studio-rtskkm43.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-6gryj0sg.js → studio-9vsvz7w7.js} +6 -6
- package/dist/chunks/{studio-50wfwy44.js → studio-9wm0xzpf.js} +19 -19
- package/dist/chunks/{studio-0j7r7s9g.js → studio-ag3z6shb.js} +10 -4
- package/dist/chunks/studio-aj9drheq.js +177 -0
- package/dist/chunks/{studio-xajk70w0.js → studio-apv9x70c.js} +189 -130
- package/dist/chunks/{studio-c04nzbby.js → studio-b9q3znz8.js} +2 -2
- package/dist/chunks/{studio-nfx354t1.js → studio-bh47w0cy.js} +9 -10
- package/dist/chunks/{studio-gk2twyh4.js → studio-dgdm6vvt.js} +264 -52
- package/dist/chunks/{studio-gtfq1dkz.js → studio-dwdcr2e8.js} +4 -4
- package/dist/chunks/{studio-nqgawfks.js → studio-fbcyz234.js} +146 -139
- package/dist/chunks/{studio-27q131j3.js → studio-fqpkpq1t.js} +7 -4
- package/dist/chunks/{studio-c0qgc3tn.js → studio-fy320dfc.js} +62 -68
- package/dist/chunks/{studio-zjjde71a.js → studio-gjj4bbfx.js} +2 -2
- package/dist/chunks/{studio-g33v4fe9.js → studio-jfhxy8h3.js} +7 -7
- package/dist/chunks/{studio-ab87phj1.js → studio-kwewmhhq.js} +4 -4
- package/dist/chunks/{studio-7rrb1esn.js → studio-m58xn8at.js} +25 -24
- package/dist/chunks/{studio-fzjx96t2.js → studio-mfkh1q8d.js} +17 -17
- package/dist/chunks/{studio-drg8qj9k.js → studio-mrh0a92f.js} +17 -17
- package/dist/chunks/{studio-jt27ta6x.js → studio-mt79tn56.js} +3 -3
- package/dist/chunks/{studio-b66rsh78.js → studio-ne593z1j.js} +38 -31
- package/dist/chunks/{studio-h4nvnjvz.js → studio-ptfcxkz5.js} +418 -232
- package/dist/chunks/{studio-dd1qqkry.js → studio-qxye31h7.js} +7 -7
- package/dist/chunks/{studio-ye9drbk8.js → studio-rav5bpmp.js} +73 -52
- package/dist/chunks/{studio-6kvgrkrp.js → studio-rwmmbrth.js} +6 -6
- package/dist/chunks/{studio-b7xacrwe.js → studio-sceg8ws0.js} +8 -8
- package/dist/chunks/{studio-msc1ee1m.js → studio-sjas5b3a.js} +19 -13
- package/dist/chunks/{studio-a65w20ex.js → studio-vd67b66d.js} +3 -3
- package/dist/chunks/{studio-7144epdr.js → studio-w475cbf9.js} +10 -10
- package/dist/chunks/{studio-4f3psrk1.js → studio-w7gpcvfj.js} +9 -9
- package/dist/chunks/{studio-nsgw7dbk.js → studio-xrbfdxgk.js} +7 -7
- package/dist/chunks/{studio-ke09tn9k.js → studio-y49b6mjv.js} +35 -35
- package/dist/chunks/{studio-j0w60gft.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-np10mayv.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 +18 -16
- package/dist/studio.css +956 -139
- package/dist/studio.js +1453 -830
- 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 +15 -14
- 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/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/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 +46 -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 +2 -2
- package/src/surfaces/formula-palette.ts +1 -1
- 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/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 +5 -5
- 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 +1 -1
- 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-1wnsqn5d.js +0 -42
- package/dist/chunks/layers-panel-73gfkcga.js +0 -41
- package/dist/chunks/publish-panel-z1zd2da1.js +0 -27
- package/dist/chunks/quick-search-zdv7h8ht.js +0 -47
- package/dist/chunks/right-panel-889vbnm5.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
|
@@ -2990,16 +2990,10 @@ function sheetStateFor(doc) {
|
|
|
2990
2990
|
var elementStyles = new WeakMap;
|
|
2991
2991
|
var SCOPE_TOKEN = "\x01jx-scope\x01";
|
|
2992
2992
|
function rewriteScratch(state) {
|
|
2993
|
-
if (!state.scratch) {
|
|
2994
|
-
return;
|
|
2995
|
-
}
|
|
2996
2993
|
state.scratch.replaceAll([...state.scratchOwners.values()].flat());
|
|
2997
2994
|
}
|
|
2998
2995
|
function releaseInterned(state, table, key) {
|
|
2999
2996
|
const entry = table.get(key);
|
|
3000
|
-
if (!entry) {
|
|
3001
|
-
return;
|
|
3002
|
-
}
|
|
3003
2997
|
entry.refs -= 1;
|
|
3004
2998
|
if (entry.refs <= 0) {
|
|
3005
2999
|
table.delete(key);
|
|
@@ -3631,9 +3625,6 @@ async function importAndInstantiate(def, src, exportName, base) {
|
|
|
3631
3625
|
}
|
|
3632
3626
|
async function resolveClassJson(def, state, key, base) {
|
|
3633
3627
|
const src = def.$src;
|
|
3634
|
-
if (!src) {
|
|
3635
|
-
throw new Error(`Jx: class entry '${key}' has no $src`);
|
|
3636
|
-
}
|
|
3637
3628
|
let classDef;
|
|
3638
3629
|
const isBareSpecifier = !src.startsWith(".") && !src.startsWith("/") && !src.startsWith("http") && !src.startsWith("file:");
|
|
3639
3630
|
if (isBareSpecifier) {
|
|
@@ -5215,7 +5206,7 @@ var jx_action_button_default = {
|
|
|
5215
5206
|
type: "string",
|
|
5216
5207
|
default: "",
|
|
5217
5208
|
attribute: "icon",
|
|
5218
|
-
description: "The glyph, by its name in the kit's manifest. Empty for a text-only action button."
|
|
5209
|
+
description: "The glyph, by its name in the kit's manifest. Empty for a text-only action button, which the host reflects as data-no-icon so a sheet outside the element can tell the two apart: the icon PART is hidden while a glyph button is loading as well, the spinner having taken its place, so a compact group keyed on that span widened an icon segment by 4px for the length of a verb."
|
|
5219
5210
|
},
|
|
5220
5211
|
mirror: {
|
|
5221
5212
|
type: "boolean",
|
|
@@ -5256,7 +5247,7 @@ var jx_action_button_default = {
|
|
|
5256
5247
|
type: "boolean",
|
|
5257
5248
|
default: true,
|
|
5258
5249
|
attribute: "quiet",
|
|
5259
|
-
description: "No fill and no border until hovered, which is what a toolbar wants. Off for a standalone tool button."
|
|
5250
|
+
description: "No fill and no border until hovered, which is what a toolbar wants. Off for a standalone tool button. It has no effect on a member of a compact jx-action-group, which draws the segmented frame itself; a row of quiet tools is a group with compact=false."
|
|
5260
5251
|
},
|
|
5261
5252
|
emphasized: {
|
|
5262
5253
|
type: "boolean",
|
|
@@ -5530,6 +5521,7 @@ var jx_action_button_default = {
|
|
|
5530
5521
|
attributes: {
|
|
5531
5522
|
role: "${state.checked ? 'none' : null}",
|
|
5532
5523
|
"data-size": "${state.size}",
|
|
5524
|
+
"data-no-icon": "${state.icon ? null : ''}",
|
|
5533
5525
|
"data-quiet": "${state.quiet ? '' : null}",
|
|
5534
5526
|
"data-emphasized": "${state.emphasized ? '' : null}",
|
|
5535
5527
|
"data-selected": "${state.selected || state.checked === 'true' ? '' : null}",
|
|
@@ -5615,10 +5607,11 @@ var jx_action_button_default = {
|
|
|
5615
5607
|
color: "var(--jx-accent-fg)"
|
|
5616
5608
|
},
|
|
5617
5609
|
'&[data-size="sm"] > [part="control"]': {
|
|
5618
|
-
$description: "The small action button is the kit's most packed control — Studio's toolbars, block action bar and inspector rows declare it some four hundred times — and it draws 4px under the kit's control height, which is the WCAG 2.2 SC 2.5.8 floor (ui.md §4.3). The `::before` is the hit area, jx-tab's close-button technique: an empty pseudo-element that reaches 2px past the drawn box on every side, so the region that accepts the pointer is exactly `--jx-control-h` square while the picture stays 20px. The inset is -3px and not -2px because an absolutely positioned box is offset from its containing block's PADDING edge, and this control draws a 1px border: the border width comes first, then half of the 4px the box is under (jx-tab's close button is borderless, so -4px was exact there). The control is already `position: relative` for the badge, so the pseudo-element needs nothing more. A 4px gap (jx-toolbar's) lets two extended neighbours abut; a compact jx-action-group packs its members touching, and its sheet zeroes the extension on that axis, because an extension over a neighbour's box would take the neighbour's clicks, and the criterion gives an overlapped strip to the target on top rather than to both; a default group's 2px gap leaves every member but the last at 22px on that axis, which ui.md §11 names as a non-claim. Held by target-size.test.ts and the conformance gate, both of which read the border and subtract it.",
|
|
5610
|
+
$description: "The small action button is the kit's most packed control — Studio's toolbars, block action bar and inspector rows declare it some four hundred times — and it draws 4px under the kit's control height, which is the WCAG 2.2 SC 2.5.8 floor (ui.md §4.3). The `::before` is the hit area, jx-tab's close-button technique: an empty pseudo-element that reaches 2px past the drawn box on every side, so the region that accepts the pointer is exactly `--jx-control-h` square while the picture stays 20px. The inset is -3px and not -2px because an absolutely positioned box is offset from its containing block's PADDING edge, and this control draws a 1px border: the border width comes first, then half of the 4px the box is under (jx-tab's close button is borderless, so -4px was exact there). The control is already `position: relative` for the badge, so the pseudo-element needs nothing more. A 4px gap (jx-toolbar's) lets two extended neighbours abut; a compact jx-action-group packs its members touching, and its sheet zeroes the extension on that axis, because an extension over a neighbour's box would take the neighbour's clicks, and the criterion gives an overlapped strip to the target on top rather than to both; a default group's 2px gap leaves every member but the last at 22px on that axis, which ui.md §11 names as a non-claim. Held by target-size.test.ts and the conformance gate, both of which read the border and subtract it. `contain: layout` is the other half of drawing the hit area OUTSIDE the button's own box, as it is on jx-button's small control: an absolutely positioned descendant still contributes to the SCROLLABLE overflow of the nearest ancestor whose `overflow` isn't `visible`, whether or not anything clips or paints it, so a small action button whose box touched a scrolling host's edge widened that host's scrollable region by 2px and drew a scrollbar over content that fit (Preferences · Keyboard's `Search by keystroke`, and the `Change` of a row whose title wraps, both did). The containment has a price, and it is the baseline: a layout-contained box exports none, so a flex or grid row aligned on `baseline` synthesises one from the button's bottom edge and drops the row's text about 6px onto it. A row that holds a small action button centres it (`align-items: center`), which is what the host's `vertical-align: middle` already says for inline layout. The containment also makes the control a stacking context and the containing block of anything fixed inside it; neither moves a pixel here, because the badge is already positioned against the control, nothing fixed lives inside it, and a compact group's later member still paints over an earlier one, both painting in the positioned layer in tree order.",
|
|
5619
5611
|
minWidth: "calc(var(--jx-control-h) - 4px)",
|
|
5620
5612
|
minHeight: "calc(var(--jx-control-h) - 4px)",
|
|
5621
5613
|
padding: "0 var(--jx-space-1)",
|
|
5614
|
+
contain: "layout",
|
|
5622
5615
|
"::before": {
|
|
5623
5616
|
content: '""',
|
|
5624
5617
|
position: "absolute",
|
|
@@ -5823,7 +5816,7 @@ var jx_action_group_default = {
|
|
|
5823
5816
|
type: "boolean",
|
|
5824
5817
|
default: true,
|
|
5825
5818
|
attribute: "compact",
|
|
5826
|
-
description:
|
|
5819
|
+
description: `Draw the children joined into one segmented control, sharing their inner borders and rounding only the outer corners. The group draws every member's frame and fill itself, whatever the member's own quiet says: a strong border round an input fill, the selected member in the accent tint with an accent edge (the solid accent with emphasized), 6px of inline padding on a small member that shows text and no glyph, because the small size's 2px ran "Edit" into "Design", and muted ink on a disabled member, because fading it whole would fade its share of the shared frame. A member's quiet has no effect here. The control is one LINE — a segmented frame is written in tree order and no selector can find the ends of a wrapped line — so a row of choices that has to wrap is compact=false too. Off leaves them as separate buttons with a gap, each drawing itself, so a row of borderless tools is compact=false, never a compact group of quiet members. This is the one thing no button can do about itself: joining N of them needs selectors about a child's position among its siblings. The seam is a DIRECT-CHILD rule: it reaches the buttons the group itself owns — a slot leaves no node, so a distributed child is one — and so a nested group keeps its own compact, and a button a surface wraps in a div of its own is roved but not joined.`
|
|
5827
5820
|
},
|
|
5828
5821
|
label: {
|
|
5829
5822
|
type: "string",
|
|
@@ -5892,7 +5885,9 @@ var jx_action_group_default = {
|
|
|
5892
5885
|
alignItems: "stretch"
|
|
5893
5886
|
},
|
|
5894
5887
|
"&[data-compact]": {
|
|
5895
|
-
|
|
5888
|
+
$description: "A segmented control is ONE line, and this is where it says so. Every seam rule below is written in TREE order — the -1px overlap on `+ jx-action-button`, the rounded ends on `:first-of-type` and `:last-of-type` — and CSS has no selector for the first or last item on a flex LINE, so a group that wrapped put the overlap on a line-start member (1px outside the group's own edge), left both line ends square, and abutted the two lines into a doubled 2px border. Nothing in a sheet can see a line break, so the group refuses one rather than drawing it badly. A row of choices that has to wrap is `compact: false`: there each member draws its own rounded frame and the gap comes back, so every line reads the same (Studio's Size and Features chips are that row).",
|
|
5889
|
+
gap: "0",
|
|
5890
|
+
flexWrap: "nowrap"
|
|
5896
5891
|
},
|
|
5897
5892
|
'&[data-compact] > jx-action-button > [part="control"]': {
|
|
5898
5893
|
borderRadius: "0"
|
|
@@ -5908,6 +5903,10 @@ var jx_action_group_default = {
|
|
|
5908
5903
|
borderStartEndRadius: "var(--jx-radius-sm)",
|
|
5909
5904
|
borderEndEndRadius: "var(--jx-radius-sm)"
|
|
5910
5905
|
},
|
|
5906
|
+
'&[data-compact][data-orientation="vertical"] > jx-action-button > [part="control"]': {
|
|
5907
|
+
$description: "A vertical group stretches its member HOSTS to the widest one (`align-items: stretch` above), and a host is an inline-flex row whose control sits inside it at its own content width: so the segments' end edges stepped in and out down the column, one frame per label length, from the moment the group started drawing those frames. The control takes the whole host, as the zoom pod's label does for the same reason, and keeps the control's own centring.",
|
|
5908
|
+
flex: "1"
|
|
5909
|
+
},
|
|
5911
5910
|
'&[data-compact][data-orientation="vertical"] > jx-action-button + jx-action-button > [part="control"]': {
|
|
5912
5911
|
marginInlineStart: "0",
|
|
5913
5912
|
marginBlockStart: "-1px"
|
|
@@ -5920,9 +5919,44 @@ var jx_action_group_default = {
|
|
|
5920
5919
|
borderStartEndRadius: "0",
|
|
5921
5920
|
borderEndStartRadius: "var(--jx-radius-sm)"
|
|
5922
5921
|
},
|
|
5923
|
-
'&[data-compact] > jx-action-button > [part="control"]
|
|
5922
|
+
'&[data-compact] > jx-action-button:not([data-selected]) > [part="control"]': {
|
|
5923
|
+
$description: "The frame is the group's, not the member's. Every seam rule above acts on a member's border, and jx-action-button is quiet by default (a transparent border and fill, which is what a toolbar wants), so the shared borders, the rounded ends and the -1px overlap all worked on borders nobody could see, and a compact group drew as a gap-less row of bare words: the Canvas view switch, the Style panel's Display row, Preferences' Theme, the zoom pod and every other group Studio converted from Spectrum, whose sp-action-button was NOT quiet by default, so the conversion dropped the frame without anybody writing it off. So the group draws its members whatever their quiet says, which is what ui.md §5.4 means by `compact` with `single` being the segmented control. This rule and the selected one below are mutually exclusive, so neither depends on sheet order against the member's own; at (0,4,1) under the scope handle each outranks the member's quiet and selected rules at (0,3,0) and quiet's hover at (0,4,0). The ink restates the member's resting colour at this specificity so that only the hover rule below, which leaves a disabled member alone, can raise it: the member's own hover is not gated on disabled, and a disabled segment brightening under the pointer reads as one that can act.",
|
|
5924
|
+
borderColor: "var(--jx-border-strong)",
|
|
5925
|
+
background: "var(--jx-bg-input)",
|
|
5926
|
+
color: "var(--jx-fg-dim)"
|
|
5927
|
+
},
|
|
5928
|
+
'&[data-compact] > jx-action-button:not([data-selected]) > [part="control"]:hover:not(:disabled)': {
|
|
5929
|
+
$description: "The hover wash is LAYERED over the input fill rather than replacing it, as the member's own hover does. `--jx-hover-bg` is 6% of the ink over transparent, so on its own it shows whatever stands behind the group, and on the zoom pod's darkest background that came out a shade from the resting fill: a hover that did not read. As an image over the fill it is always the resting colour plus the wash, in both schemes.",
|
|
5930
|
+
backgroundColor: "var(--jx-bg-input)",
|
|
5931
|
+
backgroundImage: "linear-gradient(var(--jx-hover-bg), var(--jx-hover-bg))",
|
|
5932
|
+
color: "var(--jx-fg)"
|
|
5933
|
+
},
|
|
5934
|
+
'&[data-compact] > jx-action-button[data-selected] > [part="control"]': {
|
|
5935
|
+
$description: "The chosen segment: the accent tint with an accent EDGE. The member's own selected state is a 15% tint and nothing else, which beside a bordered neighbour read as a faint wash rather than as the one that is on. Raised over both neighbours, so the accent edge shows on every side through the -1px overlap, and still under a focus ring. A hovered selected segment stays as it is: this outranks the member's quiet hover.",
|
|
5936
|
+
borderColor: "var(--jx-accent)",
|
|
5937
|
+
background: "var(--jx-accent-20)",
|
|
5938
|
+
color: "var(--jx-fg)",
|
|
5924
5939
|
zIndex: "1"
|
|
5925
5940
|
},
|
|
5941
|
+
'&[data-compact] > jx-action-button[data-selected][data-emphasized] > [part="control"]': {
|
|
5942
|
+
$description: "The member's emphasized, kept: the solid accent, edge and all.",
|
|
5943
|
+
borderColor: "var(--jx-accent-solid)",
|
|
5944
|
+
background: "var(--jx-accent-solid)",
|
|
5945
|
+
color: "var(--jx-accent-fg)"
|
|
5946
|
+
},
|
|
5947
|
+
'&[data-compact] > jx-action-button > [part="control"]:disabled': {
|
|
5948
|
+
$description: "A disabled segment dims its INK and not the frame. jx-action-button fades the whole control (`opacity: 0.5`), which is right where the border is the button's own; in a group the border is one member's share of a frame drawn across all of them, so half-fading it left the outer rectangle bright on one side of a seam and faint on the other — a control that reads as half-broken rather than as half-unavailable. Muted ink is a step below the resting dim, and it carries a selected segment too: the accent fill and edge stay, so the chosen one still reads as chosen while it cannot act. AFTER the selected rules on purpose, because it ties with them at (0,4,1) and has to win the ink.",
|
|
5949
|
+
opacity: "1",
|
|
5950
|
+
color: "var(--jx-fg-muted)"
|
|
5951
|
+
},
|
|
5952
|
+
'&[data-compact] > jx-action-button[data-size="sm"][data-no-icon] > [part="control"]': {
|
|
5953
|
+
$description: 'A small member that shows no glyph is a text segment, and the small size\'s inline padding is 2px, which is right for a 20px glyph button and ran the words of a text row together ("flex" into "grid"). A text segment takes 6px: one step between --jx-space-2 and --jx-space-3, because the widest Style panel row measured 220px of its 256px at 4px and --jx-space-3 overflowed it. 6px costs that row 4px — `nowrap`, `wrap-reverse`, `normal` and `auto` are the only values css-meta leaves without a glyph, so no button row draws more than two text segments and the six-segment rows draw one. Keyed on the HOST\'s data-no-icon, not on a hidden icon part: the icon span is hidden while a glyph segment is `loading` too, since the spinner takes its place, so an icon segment grew 4px mid-verb and snapped back when it settled. Scoped to the group rather than made the small size\'s own, because some forty other small text buttons in Studio would widen with it.',
|
|
5954
|
+
paddingInline: "6px"
|
|
5955
|
+
},
|
|
5956
|
+
'&[data-compact] > jx-action-button > [part="control"]:focus-visible': {
|
|
5957
|
+
$description: "Over everything, the selected segment's raised edge included, so a focus ring is never painted under a neighbour.",
|
|
5958
|
+
zIndex: "2"
|
|
5959
|
+
},
|
|
5926
5960
|
'&[data-compact] > jx-action-button[data-size="sm"] > [part="control"]::before': {
|
|
5927
5961
|
$description: "A small action button carries a `::before` that extends its hit area 2px past its drawn box on every side (an inset of -3px: the button's 1px border, then half the 4px it is under, because an absolutely positioned box is offset from the padding edge), so that a 20px picture accepts the pointer over the kit's 24px control height (WCAG 2.2 SC 2.5.8, ui.md §4.3). In a compact group the boxes TOUCH on the packed axis — no gap, and each border drawn over the last — so an extension there could reach nothing but the neighbour's own box, and the later sibling paints above the earlier one: the last 2px of every button but the last would activate the button after it. The criterion gives an overlapped area to the target on TOP, so the extension would buy the earlier button nothing and cost it a stolen strip. The default 2px gap is the other case: two extensions overlap by 2px there, the later member keeps the strip, and every small member but the last counts 22px on the packed axis, which is under the floor and which ui.md §11 names beside this one. The packed axis is therefore zeroed here — `0` is the padding edge, 1px inside the drawn border, and the button's own box accepts the pointer over that pixel — and the cross axis keeps its 2px past the drawn box, which reaches only the gap around the group: a compact group's small members are 24px tall and as wide as they draw, which ui.md §11 records as the one thing the technique cannot reach. The vertical variant swaps the axes, and its inline value is the button's own -3px for the same reason.",
|
|
5928
5962
|
insetInline: "0"
|
|
@@ -5930,6 +5964,15 @@ var jx_action_group_default = {
|
|
|
5930
5964
|
'&[data-compact][data-orientation="vertical"] > jx-action-button[data-size="sm"] > [part="control"]::before': {
|
|
5931
5965
|
insetInline: "-3px",
|
|
5932
5966
|
insetBlock: "0"
|
|
5967
|
+
},
|
|
5968
|
+
"@(forced-colors: active)": {
|
|
5969
|
+
'&[data-compact] > jx-action-button[data-selected] > [part="control"], &[data-compact] > jx-action-button[data-selected][data-emphasized] > [part="control"]': {
|
|
5970
|
+
$description: "The chosen segment, redrawn. Forced colours replace every author colour with the user's palette, so the accent tint and the accent edge both collapse into the ones around them and the segmented control would say nothing about which segment is on. The system's own selection pair says it instead, as jx-switch does for its checked track. The emphasized selector is spelled out beside the plain one because a media condition adds no specificity: at (0,4,1) this block won `forced-color-adjust: none` and then LOST border, background and colour to the emphasized rule at (0,5,1), which painted the author's blue over the user's palette with adjustment switched off — the one combination where forced colours were worse than none.",
|
|
5971
|
+
forcedColorAdjust: "none",
|
|
5972
|
+
borderColor: "Highlight",
|
|
5973
|
+
background: "Highlight",
|
|
5974
|
+
color: "HighlightText"
|
|
5975
|
+
}
|
|
5933
5976
|
}
|
|
5934
5977
|
},
|
|
5935
5978
|
children: [
|
|
@@ -6238,11 +6281,12 @@ var jx_button_default = {
|
|
|
6238
6281
|
}
|
|
6239
6282
|
},
|
|
6240
6283
|
'&[data-size="sm"] > [part="control"]': {
|
|
6241
|
-
$description: "A small button draws 4px under the kit's control height, and the control height is the WCAG 2.2 SC 2.5.8 floor (ui.md §4.3), so the drawn box alone would be a 20px pointer target at the default density. The `::before` is the hit area: an empty pseudo-element that reaches 2px past the drawn box on every side, so what accepts the pointer is exactly `--jx-control-h` square while the picture stays small — jx-tab's close button's technique, and the criterion measures the region that accepts the pointer, not the paint. The inset is -3px and not -2px because an absolutely positioned box is offset from its containing block's PADDING edge, and this control draws a 1px border: the border width comes first, then half of the 4px the box is under. jx-tab's close button is borderless, which is why -4px was exact there, and why the number did not carry over unchanged. In a jx-toolbar (a 4px gap) two extended neighbours abut and neither loses a pixel; jx-action-group's own sheet zeroes the packed axis in a compact group, where the boxes touch and an extension could only steal a strip of the neighbour. Held by target-size.test.ts and the conformance gate, both of which read the border and subtract it.",
|
|
6284
|
+
$description: "A small button draws 4px under the kit's control height, and the control height is the WCAG 2.2 SC 2.5.8 floor (ui.md §4.3), so the drawn box alone would be a 20px pointer target at the default density. The `::before` is the hit area: an empty pseudo-element that reaches 2px past the drawn box on every side, so what accepts the pointer is exactly `--jx-control-h` square while the picture stays small — jx-tab's close button's technique, and the criterion measures the region that accepts the pointer, not the paint. The inset is -3px and not -2px because an absolutely positioned box is offset from its containing block's PADDING edge, and this control draws a 1px border: the border width comes first, then half of the 4px the box is under. jx-tab's close button is borderless, which is why -4px was exact there, and why the number did not carry over unchanged. In a jx-toolbar (a 4px gap) two extended neighbours abut and neither loses a pixel; jx-action-group's own sheet zeroes the packed axis in a compact group, where the boxes touch and an extension could only steal a strip of the neighbour. Held by target-size.test.ts and the conformance gate, both of which read the border and subtract it. `contain: layout` is the other half of drawing the hit area OUTSIDE the button's own box: an absolutely positioned descendant still contributes to the SCROLLABLE overflow of the nearest ancestor whose `overflow` isn't `visible`, whether or not anything clips or paints it, so every `sm` button inside a host that scrolls (Preferences · Assistant's `Refresh models` and `Save` both are) was quietly widening and heightening that host's scrollable region by a few px — enough, with jx-textfield's clear button and jx-combobox's toggle doing the same thing beside it, to draw a scrollbar over a panel whose visible content fit. The containment has a price, and it is the baseline: a layout-contained box exports none, so a flex or grid row aligned on `baseline` synthesises one from the button's bottom edge and drops the row's text about 6px onto it (Welcome's `Recent` header stood 7px taller for it until it centred its `Clear all`). A row that holds a small button centres it (`align-items: center`), which is what the host's `vertical-align: middle` already says for inline layout.",
|
|
6242
6285
|
position: "relative",
|
|
6243
6286
|
minHeight: "calc(var(--jx-control-h) - 4px)",
|
|
6244
6287
|
padding: "0 var(--jx-space-3)",
|
|
6245
6288
|
fontSize: "var(--jx-text-sm)",
|
|
6289
|
+
contain: "layout",
|
|
6246
6290
|
"::before": {
|
|
6247
6291
|
content: '""',
|
|
6248
6292
|
position: "absolute",
|
|
@@ -6513,11 +6557,12 @@ var jx_checkbox_default = {
|
|
|
6513
6557
|
color: "var(--jx-fg-dim)"
|
|
6514
6558
|
},
|
|
6515
6559
|
'&[data-size="sm"] > [part="control"]': {
|
|
6516
|
-
$description: "The control is the `<label>` wrapping the input, and the label is the pointer target: a click anywhere on it toggles the box. At `sm` it draws 4px under the kit's control height, the WCAG 2.2 SC 2.5.8 floor (ui.md §4.3), so the `::before` extends the hit area 2px beyond the box on every side — jx-tab's close-button technique, the same shape jx-button carries — and the region that accepts the pointer is `--jx-control-h` tall while the row stays 20px. -2px is exact here where jx-button needs -3px: an absolutely positioned box is offset from the PADDING edge, and the label draws no border, so its padding edge is its drawn edge. The label needs `position: relative` here for the pseudo-element to measure against; the input inside is 14px and needs nothing of its own, because the label around it is the target. Held by target-size.test.ts and the conformance gate.",
|
|
6560
|
+
$description: "The control is the `<label>` wrapping the input, and the label is the pointer target: a click anywhere on it toggles the box. At `sm` it draws 4px under the kit's control height, the WCAG 2.2 SC 2.5.8 floor (ui.md §4.3), so the `::before` extends the hit area 2px beyond the box on every side — jx-tab's close-button technique, the same shape jx-button carries — and the region that accepts the pointer is `--jx-control-h` tall while the row stays 20px. -2px is exact here where jx-button needs -3px: an absolutely positioned box is offset from the PADDING edge, and the label draws no border, so its padding edge is its drawn edge. The label needs `position: relative` here for the pseudo-element to measure against; the input inside is 14px and needs nothing of its own, because the label around it is the target. Held by target-size.test.ts and the conformance gate. `contain: layout` keeps the reach LOCAL, as it does on jx-button's and jx-action-button's small controls: an absolutely positioned box still counts toward the SCROLLABLE overflow of the nearest ancestor whose `overflow` isn't `visible`, invisible or not, so a small checkbox touching a scrolling host's edge would add 2px to that host's scrollable region and draw a scrollbar over content that fit. The price is the baseline: a layout-contained label exports none, so a row aligned on `baseline` puts the label's bottom edge on its text baseline, and a row that holds a small checkbox centres it (`align-items: center`) instead.",
|
|
6517
6561
|
position: "relative",
|
|
6518
6562
|
minHeight: "calc(var(--jx-control-h) - 4px)",
|
|
6519
6563
|
fontSize: "var(--jx-text-sm)",
|
|
6520
6564
|
lineHeight: "var(--jx-leading-sm)",
|
|
6565
|
+
contain: "layout",
|
|
6521
6566
|
"::before": {
|
|
6522
6567
|
content: '""',
|
|
6523
6568
|
position: "absolute",
|
|
@@ -9386,7 +9431,7 @@ var jx_combobox_default = {
|
|
|
9386
9431
|
fontSize: "var(--jx-text-lg)"
|
|
9387
9432
|
},
|
|
9388
9433
|
'& [part="toggle"]': {
|
|
9389
|
-
$description: "The toggle sits inside the field's border, so it draws 2px under the field's height: 22px in a 24px field, 18px in an `sm` one. The `::before` is its hit area (WCAG 2.2 SC 2.5.8, ui.md §4.3), the same shape as jx-textfield's clear button: an empty pseudo-element inset by half the difference between the drawn box and the kit's control height, -1px on a default field and -3px on a small one, so the region that accepts the pointer is `--jx-control-h` square at every size while the caret and its box stay where they were; on a large field the inset is positive and the pseudo-element is an invisible box inside a button already over the floor. `position: relative` is what the pseudo-element measures against, and it is new here: the toggle is a flex item of the field, not an absolutely placed one. The rotation the open state applies turns the pseudo-element with the button, which a square does not mind.",
|
|
9434
|
+
$description: "The toggle sits inside the field's border, so it draws 2px under the field's height: 22px in a 24px field, 18px in an `sm` one. The `::before` is its hit area (WCAG 2.2 SC 2.5.8, ui.md §4.3), the same shape as jx-textfield's clear button: an empty pseudo-element inset by half the difference between the drawn box and the kit's control height, -1px on a default field and -3px on a small one, so the region that accepts the pointer is `--jx-control-h` square at every size while the caret and its box stay where they were; on a large field the inset is positive and the pseudo-element is an invisible box inside a button already over the floor. `position: relative` is what the pseudo-element measures against, and it is new here: the toggle is a flex item of the field, not an absolutely placed one. The rotation the open state applies turns the pseudo-element with the button, which a square does not mind. `contain: layout` keeps that invisible expansion a LOCAL fact: an absolutely positioned box still contributes to the SCROLLABLE overflow of the nearest ancestor whose own `overflow` is not `visible`, even though nothing clips it and nothing paints there, so a form host that scrolls (Preferences · Assistant does, at `overflow: auto`) picked up a couple of phantom pixels on every axis from these `::before`s alone and drew scrollbars over content that fit.",
|
|
9390
9435
|
position: "relative",
|
|
9391
9436
|
display: "inline-flex",
|
|
9392
9437
|
alignItems: "center",
|
|
@@ -9404,6 +9449,7 @@ var jx_combobox_default = {
|
|
|
9404
9449
|
color: "var(--jx-fg-muted)",
|
|
9405
9450
|
cursor: "pointer",
|
|
9406
9451
|
outline: "none",
|
|
9452
|
+
contain: "layout",
|
|
9407
9453
|
transition: "rotate var(--jx-dur-1) var(--jx-ease-out)",
|
|
9408
9454
|
"::before": {
|
|
9409
9455
|
content: '""',
|
|
@@ -9441,7 +9487,19 @@ var jx_combobox_default = {
|
|
|
9441
9487
|
color: "var(--jx-danger)"
|
|
9442
9488
|
},
|
|
9443
9489
|
'& [part="error"]:empty': {
|
|
9444
|
-
|
|
9490
|
+
$description: "While the region is empty it draws nothing and takes no click, whatever an ancestor's rule gives it. The kit is light DOM, so a consumer's descendant rule on `[part=\"error\"]` lands on this paragraph too, and under `box-sizing: border-box` a 0×0 box floors at padding plus border, which is how a surface's banner rule drew a small painted box over a field's top-left corner that swallowed the click. So the box model is reset, and `clip-path: inset(50%)` with `pointer-events: none` removes the paint and hit area of anything the reset does not name. It is never `display: none` or `visibility: hidden`, because a live region absent from the accessibility tree does not announce its first text (ui.md §5.1). `jx-textfield.json`'s error region carries the same rule, and its description has the full mechanism.",
|
|
9491
|
+
position: "absolute",
|
|
9492
|
+
top: "0",
|
|
9493
|
+
left: "0",
|
|
9494
|
+
width: "0",
|
|
9495
|
+
height: "0",
|
|
9496
|
+
overflow: "hidden",
|
|
9497
|
+
margin: "0",
|
|
9498
|
+
padding: "0",
|
|
9499
|
+
border: "0",
|
|
9500
|
+
background: "none",
|
|
9501
|
+
clipPath: "inset(50%)",
|
|
9502
|
+
pointerEvents: "none"
|
|
9445
9503
|
},
|
|
9446
9504
|
'& > [part="help-slot"]': {
|
|
9447
9505
|
display: "contents"
|
|
@@ -10389,7 +10447,19 @@ var jx_select_default = {
|
|
|
10389
10447
|
color: "var(--jx-danger)"
|
|
10390
10448
|
},
|
|
10391
10449
|
'& [part="error"]:empty': {
|
|
10392
|
-
|
|
10450
|
+
$description: "While the region is empty it draws nothing and takes no click, whatever an ancestor's rule gives it. The kit is light DOM, so a consumer's descendant rule on `[part=\"error\"]` lands on this paragraph too, and under `box-sizing: border-box` a 0×0 box floors at padding plus border: Studio's Source Control banner rule drew a 16×13 box over the branch picker's top-left corner that swallowed the click. So the box model is reset, and `clip-path: inset(50%)` with `pointer-events: none` removes the paint and hit area of anything the reset does not name. It is never `display: none` or `visibility: hidden`, because a live region absent from the accessibility tree does not announce its first text (ui.md §5.1). `jx-textfield.json`'s error region carries the same rule, and its description has the full mechanism.",
|
|
10451
|
+
position: "absolute",
|
|
10452
|
+
top: "0",
|
|
10453
|
+
left: "0",
|
|
10454
|
+
width: "0",
|
|
10455
|
+
height: "0",
|
|
10456
|
+
overflow: "hidden",
|
|
10457
|
+
margin: "0",
|
|
10458
|
+
padding: "0",
|
|
10459
|
+
border: "0",
|
|
10460
|
+
background: "none",
|
|
10461
|
+
clipPath: "inset(50%)",
|
|
10462
|
+
pointerEvents: "none"
|
|
10393
10463
|
},
|
|
10394
10464
|
'& > [part="help-slot"]': {
|
|
10395
10465
|
display: "contents"
|
|
@@ -10997,13 +11067,14 @@ var jx_split_default = {
|
|
|
10997
11067
|
$ref: "#/state/onDoubleClick"
|
|
10998
11068
|
},
|
|
10999
11069
|
style: {
|
|
11070
|
+
$description: "`z-index: 3` is not decoration: a Navigator/Inspector split sits at the shell level, a sibling of the pane grid rather than a descendant of it, so where its box happens to meet a pane's own edge is decided by whichever stacking context wins — not by DOM order. `panels/pane-context.ts`'s floating toolbar band (`surfaces/pane-context.json`'s `[part=\"chrome\"]`) is `position: relative; z-index: 2` so it can float over the canvas stage, and that band's own edge sits flush against this splitter's box at the pane boundary. At `z-index: 1` the band won the last couple of pixels of the splitter's own 5px width, so a drag started right at that edge grabbed the toolbar instead of the handle — the reader-visible shape of that was `elementFromPoint` returning the band's `[part=\"bar\"]` for x inside the splitter's own rect. `3` clears every floating band in the shell (the chrome band's `2`, `diff-toolbar`'s `2`) without touching their own stacking, which still does its job of floating over the stage.",
|
|
11000
11071
|
display: "block",
|
|
11001
11072
|
"&[hidden]": {
|
|
11002
11073
|
display: "none"
|
|
11003
11074
|
},
|
|
11004
11075
|
flex: "none",
|
|
11005
11076
|
position: "relative",
|
|
11006
|
-
zIndex: "
|
|
11077
|
+
zIndex: "3",
|
|
11007
11078
|
touchAction: "none",
|
|
11008
11079
|
background: "var(--jx-border)",
|
|
11009
11080
|
cursor: "col-resize",
|
|
@@ -12558,7 +12629,9 @@ var jx_tab_default = {
|
|
|
12558
12629
|
background: "transparent",
|
|
12559
12630
|
color: "var(--jx-fg-muted)",
|
|
12560
12631
|
cursor: "pointer",
|
|
12632
|
+
contain: "layout",
|
|
12561
12633
|
"::before": {
|
|
12634
|
+
$description: "The hit area, and the technique every `sm` control in the kit borrows (ui.md §4.3): an empty pseudo-element, absolutely positioned and inset 4px past a borderless 16px box, so the region that accepts the pointer is the 24px SC 2.5.8 asks for while the × stays 16px. The containment above is the other half of it, and it was missing while §4.3 claimed every outset hit area had it: an absolutely positioned box counts toward the SCROLLABLE overflow of the nearest ancestor whose overflow is not visible, painted or not, so a scrolling tab strip counted 4px it could not see. Nothing here pays the containment's price — the tab is a centred flex row, so no baseline is asked of the ×, and the 4px reaches only the tab's own inline padding.",
|
|
12562
12635
|
content: '""',
|
|
12563
12636
|
position: "absolute",
|
|
12564
12637
|
insetBlock: "-4px",
|
|
@@ -13316,7 +13389,7 @@ var jx_textfield_default = {
|
|
|
13316
13389
|
fontSize: "var(--jx-text-lg)"
|
|
13317
13390
|
},
|
|
13318
13391
|
'& [part="clear"]': {
|
|
13319
|
-
$description: "The clear button sits inside the field's border, so it draws 2px under the field's height: 22px in a 24px field, and 18px in an `sm` one. The `::before` is its hit area (WCAG 2.2 SC 2.5.8, ui.md §4.3): an empty pseudo-element inset by half the difference between the drawn box and the kit's control height, which is -1px on a default field and -3px on a small one, so the region that accepts the pointer is `--jx-control-h` square at every size while the glyph and its hover box stay where they were. On a large field the difference is positive and the pseudo-element is an invisible box INSIDE a button that is already over the floor, which changes nothing. jx-tab's close button is the technique; the button is absolutely positioned already, so it is its own containing block. The extension lies over the input it clears, which was true of the drawn button too, and 2px past the field's edge at `sm`, where a neighbour at the kit's 4px gap extends 2px back and the two abut.",
|
|
13392
|
+
$description: "The clear button sits inside the field's border, so it draws 2px under the field's height: 22px in a 24px field, and 18px in an `sm` one. The `::before` is its hit area (WCAG 2.2 SC 2.5.8, ui.md §4.3): an empty pseudo-element inset by half the difference between the drawn box and the kit's control height, which is -1px on a default field and -3px on a small one, so the region that accepts the pointer is `--jx-control-h` square at every size while the glyph and its hover box stay where they were. On a large field the difference is positive and the pseudo-element is an invisible box INSIDE a button that is already over the floor, which changes nothing. jx-tab's close button is the technique; the button is absolutely positioned already, so it is its own containing block. The extension lies over the input it clears, which was true of the drawn button too, and 2px past the field's edge at `sm`, where a neighbour at the kit's 4px gap extends 2px back and the two abut. `contain: layout` keeps the expansion LOCAL: an absolutely positioned box still counts toward the SCROLLABLE overflow of the nearest ancestor whose `overflow` is not `visible`, invisible or not, so a host that scrolls picks up a couple of phantom pixels from every `::before` like this one between it and the field, and draws a scrollbar over content that already fit.",
|
|
13320
13393
|
position: "absolute",
|
|
13321
13394
|
insetBlockStart: "1px",
|
|
13322
13395
|
insetInlineEnd: "1px",
|
|
@@ -13340,6 +13413,7 @@ var jx_textfield_default = {
|
|
|
13340
13413
|
color: "var(--jx-fg-muted)",
|
|
13341
13414
|
cursor: "pointer",
|
|
13342
13415
|
outline: "none",
|
|
13416
|
+
contain: "layout",
|
|
13343
13417
|
":hover": {
|
|
13344
13418
|
color: "var(--jx-fg)"
|
|
13345
13419
|
},
|
|
@@ -13361,7 +13435,19 @@ var jx_textfield_default = {
|
|
|
13361
13435
|
color: "var(--jx-danger)"
|
|
13362
13436
|
},
|
|
13363
13437
|
'& [part="error"]:empty': {
|
|
13364
|
-
|
|
13438
|
+
$description: "The region is permanent and empty until it has something to say, and while it is empty it must draw nothing and take no click, whatever an ancestor's rule gives it. The kit is light DOM, so a consumer's descendant rule on `[part=\"error\"]` (a surface's own banner, a site's stylesheet) lands on this paragraph as well — and under `box-sizing: border-box` a `width`/`height` of 0 floors at padding plus border, which is how a Studio banner's `padding: 6px 8px` and 1px rule drew a 16×13 box at the field's top-left corner that also took the click meant for the control. Pinning the size was never enough on its own; the box model is therefore reset here, and `clip-path: inset(50%)` (the kit's visually-hidden idiom, as `jx-accordion-item.json`'s heading uses it) with `pointer-events: none` removes the paint and the hit area of anything a reset does not name, such as a shadow or an outline. Its `:empty` makes the selector one pseudo-class heavier than the `X [part=\"error\"]` a consumer writes, so it wins in whichever order the sheets land. It is never `display: none` or `visibility: hidden`: a live region absent from the accessibility tree does not announce its first text (ui.md §5.1). When text arrives `:empty` stops matching and the sentence draws in flow exactly as the two rules above say. `jx-select.json` and `jx-combobox.json` carry the same rule, for the same reason.",
|
|
13439
|
+
position: "absolute",
|
|
13440
|
+
top: "0",
|
|
13441
|
+
left: "0",
|
|
13442
|
+
width: "0",
|
|
13443
|
+
height: "0",
|
|
13444
|
+
overflow: "hidden",
|
|
13445
|
+
margin: "0",
|
|
13446
|
+
padding: "0",
|
|
13447
|
+
border: "0",
|
|
13448
|
+
background: "none",
|
|
13449
|
+
clipPath: "inset(50%)",
|
|
13450
|
+
pointerEvents: "none"
|
|
13365
13451
|
},
|
|
13366
13452
|
'& > [part="control-slot"], & > [part="clear-slot"], & > [part="help-slot"]': {
|
|
13367
13453
|
display: "contents"
|
|
@@ -17092,6 +17178,9 @@ var manifest_default = {
|
|
|
17092
17178
|
"arrow-square-out": {
|
|
17093
17179
|
regular: "M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"
|
|
17094
17180
|
},
|
|
17181
|
+
"arrow-u-down-left": {
|
|
17182
|
+
regular: "M232,112a64.07,64.07,0,0,1-64,64H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48a8,8,0,0,1,11.32,11.32L51.31,160H168a48,48,0,0,0,0-96H80a8,8,0,0,1,0-16h88A64.07,64.07,0,0,1,232,112Z"
|
|
17183
|
+
},
|
|
17095
17184
|
"arrow-u-up-left": {
|
|
17096
17185
|
regular: "M232,144a64.07,64.07,0,0,1-64,64H80a8,8,0,0,1,0-16h88a48,48,0,0,0,0-96H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,85.66,45.66L51.31,80H168A64.07,64.07,0,0,1,232,144Z"
|
|
17097
17186
|
},
|
|
@@ -17378,6 +17467,9 @@ var manifest_default = {
|
|
|
17378
17467
|
"text-superscript": {
|
|
17379
17468
|
regular: "M248,144a8,8,0,0,1-8,8H192a8,8,0,0,1-6.4-12.8l43.17-57.55a16,16,0,1,0-27.86-15,8,8,0,0,1-15.09-5.33,32,32,0,1,1,55.74,29.92L208,136h32A8,8,0,0,1,248,144ZM149.24,74a8,8,0,0,0-11.29.8L92,127.79l-45.95-53A8,8,0,0,0,34,85.24L81.41,140,34,194.76a8,8,0,0,0,12.1,10.48l46-53,45.95,53a8,8,0,1,0,12.1-10.48L102.59,140l47.46-54.76A8,8,0,0,0,149.24,74Z"
|
|
17380
17469
|
},
|
|
17470
|
+
"text-t": {
|
|
17471
|
+
regular: "M208,56V88a8,8,0,0,1-16,0V64H136V192h24a8,8,0,0,1,0,16H96a8,8,0,0,1,0-16h24V64H64V88a8,8,0,0,1-16,0V56a8,8,0,0,1,8-8H200A8,8,0,0,1,208,56Z"
|
|
17472
|
+
},
|
|
17381
17473
|
"text-underline": {
|
|
17382
17474
|
regular: "M200,224a8,8,0,0,1-8,8H64a8,8,0,0,1,0-16H192A8,8,0,0,1,200,224Zm-72-24a64.07,64.07,0,0,0,64-64V56a8,8,0,0,0-16,0v80a48,48,0,0,1-96,0V56a8,8,0,0,0-16,0v80A64.07,64.07,0,0,0,128,200Z"
|
|
17383
17475
|
},
|
|
@@ -17691,5 +17783,5 @@ function registerUi(options = {}) {
|
|
|
17691
17783
|
|
|
17692
17784
|
export { isKeyframesAtRule, pureSchemeOf, intlHelpersClause, PURE_METHOD_OPS, BLESSED_OPERATORS, BLESSED_GLOBALS, isMutating, evaluateExpression, assetUrlFor, PUBLIC_DIR, BUILD_LANES, splitRefSuffix, isNonRelativeRef, normalizeProjectPath, dirOfPath, joinProjectPath, projectPathForRef, encodeProjectPath, mount3, preloadDocument, setSkipServerFunctions, runScoped, setCanvasAssetResolver, buildScope, renderNode, redefineElement, defineElement, openAt, close, showModal, close2, ensureCaret, focusItem, splitModifiersOf, trackOf, selectValue, POPOVER_DEFAULT_MODE, attrs, literalAttr, tagOf, labelOf, isPopover, idOf, walk, popoverIdsIn, documentHasPopover, scalar, findPopoverDefects, popoverDisplayRepair, POPOVER_TAGS, INVOKER_TAGS, KIT_BASE, registerUi, setActiveRegistry, activeRegistry };
|
|
17693
17785
|
|
|
17694
|
-
//# debugId=
|
|
17695
|
-
//# sourceMappingURL=studio-
|
|
17786
|
+
//# debugId=9BF8DDFBCC4943F964756E2164756E21
|
|
17787
|
+
//# sourceMappingURL=studio-3nprwbd9.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatform2
|
|
3
|
-
} from "./studio-
|
|
3
|
+
} from "./studio-6pwn9j8c.js";
|
|
4
4
|
import {
|
|
5
5
|
invalidateUsages2
|
|
6
|
-
} from "./studio-
|
|
6
|
+
} from "./studio-557bmn0x.js";
|
|
7
7
|
import {
|
|
8
8
|
projectState
|
|
9
9
|
} from "./studio-m1p9b6c3.js";
|
|
@@ -391,4 +391,4 @@ function startFsSync2(ctx) {
|
|
|
391
391
|
export { resetIgnoreCache, ensureIgnoreLayers, isIgnoredEntry, markLocalMutation2, isRecentLocal2, startFsSync2 };
|
|
392
392
|
|
|
393
393
|
//# debugId=021BCC8E71B450F764756E2164756E21
|
|
394
|
-
//# sourceMappingURL=studio-
|
|
394
|
+
//# sourceMappingURL=studio-40z39dme.js.map
|
|
@@ -4,16 +4,13 @@ import {
|
|
|
4
4
|
formatForPath2,
|
|
5
5
|
defaultContentFormat2,
|
|
6
6
|
formatSerialize2
|
|
7
|
-
} from "./studio-
|
|
7
|
+
} from "./studio-9vsvz7w7.js";
|
|
8
8
|
import {
|
|
9
9
|
effectScope,
|
|
10
10
|
effect,
|
|
11
11
|
reactive,
|
|
12
12
|
notify2
|
|
13
13
|
} from "./studio-d8z5bajd.js";
|
|
14
|
-
import {
|
|
15
|
-
projectState
|
|
16
|
-
} from "./studio-m1p9b6c3.js";
|
|
17
14
|
import {
|
|
18
15
|
recordDocOp,
|
|
19
16
|
transactDoc,
|
|
@@ -32,24 +29,27 @@ import {
|
|
|
32
29
|
workspace2,
|
|
33
30
|
activeTab2,
|
|
34
31
|
activateTab2
|
|
35
|
-
} from "./studio-
|
|
32
|
+
} from "./studio-dgdm6vvt.js";
|
|
33
|
+
import {
|
|
34
|
+
projectState
|
|
35
|
+
} from "./studio-m1p9b6c3.js";
|
|
36
36
|
import {
|
|
37
37
|
errorMessage2
|
|
38
38
|
} from "./studio-yxa81f45.js";
|
|
39
39
|
import {
|
|
40
40
|
activeRegistry
|
|
41
|
-
} from "./studio-
|
|
41
|
+
} from "./studio-3nprwbd9.js";
|
|
42
42
|
import {
|
|
43
43
|
paneRegion,
|
|
44
44
|
registerSurface,
|
|
45
45
|
mountSurface
|
|
46
|
-
} from "./studio-
|
|
46
|
+
} from "./studio-ag3z6shb.js";
|
|
47
47
|
import {
|
|
48
48
|
registerFormControl,
|
|
49
49
|
referenceTarget,
|
|
50
50
|
mountSchemaForm,
|
|
51
51
|
resolveContextPointer
|
|
52
|
-
} from "./studio-
|
|
52
|
+
} from "./studio-w7gpcvfj.js";
|
|
53
53
|
import {
|
|
54
54
|
DRAFT_FIELD,
|
|
55
55
|
DRAFT_MEANING,
|
|
@@ -57,23 +57,23 @@ import {
|
|
|
57
57
|
hasDraftAxis,
|
|
58
58
|
setIncludeDrafts,
|
|
59
59
|
reloadDraftAwareGrids2
|
|
60
|
-
} from "./studio-
|
|
60
|
+
} from "./studio-ygvr9e4q.js";
|
|
61
61
|
import {
|
|
62
62
|
serializeJson
|
|
63
|
-
} from "./studio-
|
|
63
|
+
} from "./studio-mfkh1q8d.js";
|
|
64
64
|
import {
|
|
65
65
|
notePreviewOverlayEdit
|
|
66
|
-
} from "./studio-
|
|
66
|
+
} from "./studio-y49b6mjv.js";
|
|
67
67
|
import {
|
|
68
68
|
entryCollection,
|
|
69
69
|
entryCollections,
|
|
70
70
|
collectionOfPath,
|
|
71
71
|
seedEntry,
|
|
72
72
|
missingRequired
|
|
73
|
-
} from "./studio-
|
|
73
|
+
} from "./studio-5w26wza5.js";
|
|
74
74
|
import {
|
|
75
75
|
cloneValue2
|
|
76
|
-
} from "./studio-
|
|
76
|
+
} from "./studio-aj9drheq.js";
|
|
77
77
|
import {
|
|
78
78
|
__preload
|
|
79
79
|
} from "./studio-5te5tqng.js";
|
|
@@ -1195,7 +1195,7 @@ function mountSchemaBuilderSurface(host, actions) {
|
|
|
1195
1195
|
var reference_field_default = {
|
|
1196
1196
|
$schema: "https://jxsuite.com/schema/v1",
|
|
1197
1197
|
$id: "StudioReferenceField",
|
|
1198
|
-
$description: 'The `reference` form control — site-architecture.md §6.1\'s `{ "$ref": "#/content/x" }` and §7.4\'s entry picker. Registered once and dispatched to by `ui/schema-form.ts` for any property whose `$ref` names a collection, so the settings forms, the entry editor and an array-of-objects cell all draw the same control without any of them knowing it exists. `ui/form-controls.ts` decides which of the three states the field is in and what each gesture commits; nothing here reads a schema or lists a directory. The three states are drawn as three different controls on purpose: a picker while the entries are known, a TEXT field while they are not — a failed read leaves the value editable with the reason beside it, because swapping it for an empty dropdown would present "no entries" and "could not find out" as the same screen — and a disabled picker saying so while the read is in flight.',
|
|
1198
|
+
$description: 'The `reference` form control — site-architecture.md §6.1\'s `{ "$ref": "#/content/x" }` and site-architecture.md §7.4\'s entry picker. Registered once and dispatched to by `ui/schema-form.ts` for any property whose `$ref` names a collection, so the settings forms, the entry editor and an array-of-objects cell all draw the same control without any of them knowing it exists. `ui/form-controls.ts` decides which of the three states the field is in and what each gesture commits; nothing here reads a schema or lists a directory. The three states are drawn as three different controls on purpose: a picker while the entries are known, a TEXT field while they are not — a failed read leaves the value editable with the reason beside it, because swapping it for an empty dropdown would present "no entries" and "could not find out" as the same screen — and a disabled picker saying so while the read is in flight.',
|
|
1199
1199
|
tagName: "div",
|
|
1200
1200
|
attributes: {
|
|
1201
1201
|
part: "reference",
|
|
@@ -1973,7 +1973,7 @@ function entryIdsFor(collection) {
|
|
|
1973
1973
|
if (known) {
|
|
1974
1974
|
return known;
|
|
1975
1975
|
}
|
|
1976
|
-
const pending = (__preload("
|
|
1976
|
+
const pending = (__preload("jt7rbcbc"), import("./content-source-jt7rbcbc.js")).then((m) => m.listCollectionEntryIds(collection));
|
|
1977
1977
|
entryIdCache.set(collection, pending);
|
|
1978
1978
|
return pending;
|
|
1979
1979
|
}
|
|
@@ -2099,7 +2099,7 @@ registerFormControl("reference", referenceControl);
|
|
|
2099
2099
|
var entry_editor_default = {
|
|
2100
2100
|
$schema: "https://jxsuite.com/schema/v1",
|
|
2101
2101
|
$id: "StudioEntryEditor",
|
|
2102
|
-
$description: "The Entry editor (§7.4) — one content entry's fields, in a pane, as a Jx document over the kit. The adapter (`surfaces/entry-editor.ts`) hands in a projection; `content/entry-editor.ts` decides everything in it — which collection the file belongs to, which record its fields live in, which required keys are absent and what a draft flag commits into. The FORM is an island: a schema is `ui/schema-form.ts`'s subject, so this document renders an empty `fields` node and the flow places the element that engine hands back (studio-ui-guidelines.md §9.3, §9.4). That is the whole of the difference between this and the card the lit version drew, and it is why the engine converting in batch 7 is what unblocked this one.",
|
|
2102
|
+
$description: "The Entry editor (site-architecture.md §7.4) — one content entry's fields, in a pane, as a Jx document over the kit. The adapter (`surfaces/entry-editor.ts`) hands in a projection; `content/entry-editor.ts` decides everything in it — which collection the file belongs to, which record its fields live in, which required keys are absent and what a draft flag commits into. The FORM is an island: a schema is `ui/schema-form.ts`'s subject, so this document renders an empty `fields` node and the flow places the element that engine hands back (studio-ui-guidelines.md §9.3, §9.4). That is the whole of the difference between this and the card the lit version drew, and it is why the engine converting in batch 7 is what unblocked this one.",
|
|
2103
2103
|
tagName: "div",
|
|
2104
2104
|
attributes: {
|
|
2105
2105
|
part: "entry",
|
|
@@ -2641,7 +2641,7 @@ function renderEntryMode(surface, tab) {
|
|
|
2641
2641
|
});
|
|
2642
2642
|
}
|
|
2643
2643
|
async function openEntryEditor(path) {
|
|
2644
|
-
const { openFileInTab } = await (__preload("
|
|
2644
|
+
const { openFileInTab } = await (__preload("egsb0ry8"), import("./files-egsb0ry8.js"));
|
|
2645
2645
|
await openFileInTab(path);
|
|
2646
2646
|
for (const [id, tab] of workspace2.tabs.entries()) {
|
|
2647
2647
|
if (tab.documentPath !== path) {
|
|
@@ -2703,7 +2703,7 @@ async function createEntry2(collectionName, opts = {}) {
|
|
|
2703
2703
|
});
|
|
2704
2704
|
return null;
|
|
2705
2705
|
}
|
|
2706
|
-
const { createFileIn } = await (__preload("
|
|
2706
|
+
const { createFileIn } = await (__preload("egsb0ry8"), import("./files-egsb0ry8.js"));
|
|
2707
2707
|
const created = await createFileIn({
|
|
2708
2708
|
content,
|
|
2709
2709
|
dir: destination,
|
|
@@ -2807,5 +2807,5 @@ function registerContentCommands2(registry) {
|
|
|
2807
2807
|
|
|
2808
2808
|
export { FIELD_TYPES, FORMAT_OPTIONS, detectFieldType, detectFieldFormat, schemaForType, referenceEntryState, entryFields, entryPaneMounted, detachEntryPane, entryDraftPill, renderEntryMode, createEntry2, registerContentCommands2 };
|
|
2809
2809
|
|
|
2810
|
-
//# debugId=
|
|
2811
|
-
//# sourceMappingURL=studio-
|
|
2810
|
+
//# debugId=9B41188183FEB03964756E2164756E21
|
|
2811
|
+
//# sourceMappingURL=studio-482eeazk.js.map
|
|
@@ -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
|