@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
|
@@ -49,6 +49,7 @@ function freshSurface(paneId) {
|
|
|
49
49
|
prevStylebookFilter: null,
|
|
50
50
|
renderGeneration: 0,
|
|
51
51
|
sourceCollabCleanup: null,
|
|
52
|
+
stageScrollbar: null,
|
|
52
53
|
wrap: null
|
|
53
54
|
};
|
|
54
55
|
}
|
|
@@ -260,5 +261,5 @@ function tabBufferUnsaved2(tab) {
|
|
|
260
261
|
|
|
261
262
|
export { view, nextRenderGeneration, surfaceForPane, allCanvasSurfaces, stageContaining, registerCanvasSurface, createPaneSurface, setSurfaceTeardown, disposePaneSurface, BUFFER_COMMIT2, bufferWrites2, commitBufferWrites2, cancelBufferWrites2, bufferIsLive2, bufferMovedOn2, commitTabBuffers2, tabBufferUnsaved2 };
|
|
262
263
|
|
|
263
|
-
//# debugId=
|
|
264
|
-
//# sourceMappingURL=studio-
|
|
264
|
+
//# debugId=6CCD1AF08CFE601764756E2164756E21
|
|
265
|
+
//# sourceMappingURL=studio-6vg0x5fz.js.map
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatform2
|
|
3
|
-
} from "./studio-
|
|
3
|
+
} from "./studio-6pwn9j8c.js";
|
|
4
4
|
import {
|
|
5
5
|
SETTINGS,
|
|
6
6
|
readStoredSetting,
|
|
7
7
|
hasSetting,
|
|
8
8
|
onSettingsChanged,
|
|
9
|
+
normalizeSetting,
|
|
9
10
|
setSetting,
|
|
10
11
|
setSettings,
|
|
11
12
|
clearSettings
|
|
12
|
-
} from "./studio-
|
|
13
|
+
} from "./studio-yxmmjy2a.js";
|
|
13
14
|
|
|
14
15
|
// src/services/ai-settings.ts
|
|
15
16
|
function getOpenAiKey() {
|
|
@@ -37,6 +38,12 @@ function saveAiProvider(provider) {
|
|
|
37
38
|
[SETTINGS.aiModel, provider.model]
|
|
38
39
|
]);
|
|
39
40
|
}
|
|
41
|
+
function aiProviderDiffers(provider) {
|
|
42
|
+
return !storedEquals(SETTINGS.aiOpenAiKey, provider.apiKey, getOpenAiKey()) || !storedEquals(SETTINGS.aiBaseUrl, provider.baseUrl, getBaseUrl()) || !storedEquals(SETTINGS.aiModel, provider.model, storedModel());
|
|
43
|
+
}
|
|
44
|
+
function storedEquals(definition, draft, stored) {
|
|
45
|
+
return normalizeSetting(definition, draft) === normalizeSetting(definition, stored);
|
|
46
|
+
}
|
|
40
47
|
function clearAiProvider() {
|
|
41
48
|
clearSettings([SETTINGS.aiOpenAiKey, SETTINGS.aiBaseUrl, SETTINGS.aiModel]);
|
|
42
49
|
}
|
|
@@ -195,7 +202,7 @@ async function fetchAvailableModels(opts = {}) {
|
|
|
195
202
|
return cache;
|
|
196
203
|
}
|
|
197
204
|
|
|
198
|
-
export { getOpenAiKey, setOpenAiKey, hasOpenAiKey, getBaseUrl, storedModel, setModel, saveAiProvider, clearAiProvider, aiConnection, resetModelCache, cachedModels, modelToolSupport, modelContextWindow, ensureProxyProbe, hasAiCredentials, isProxyConfigured, isManagedProxy, proxyStateCode, proxyModelsErrorMessage, preferredModel, fetchAvailableModels };
|
|
205
|
+
export { getOpenAiKey, setOpenAiKey, hasOpenAiKey, getBaseUrl, storedModel, setModel, saveAiProvider, aiProviderDiffers, storedEquals, clearAiProvider, aiConnection, resetModelCache, cachedModels, modelToolSupport, modelContextWindow, ensureProxyProbe, hasAiCredentials, isProxyConfigured, isManagedProxy, proxyStateCode, proxyModelsErrorMessage, preferredModel, fetchAvailableModels };
|
|
199
206
|
|
|
200
|
-
//# debugId=
|
|
201
|
-
//# sourceMappingURL=studio-
|
|
207
|
+
//# debugId=19AC3998EBEF80C364756E2164756E21
|
|
208
|
+
//# sourceMappingURL=studio-7d3c1m59.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatform2
|
|
3
|
-
} from "./studio-
|
|
3
|
+
} from "./studio-6pwn9j8c.js";
|
|
4
4
|
import {
|
|
5
5
|
__preload
|
|
6
6
|
} from "./studio-5te5tqng.js";
|
|
@@ -21,7 +21,7 @@ async function applyPendingSchemas() {
|
|
|
21
21
|
}
|
|
22
22
|
_pendingSchemasDirty = false;
|
|
23
23
|
try {
|
|
24
|
-
const { applyProjectSchemas } = await (__preload("
|
|
24
|
+
const { applyProjectSchemas } = await (__preload("gsjdysze"), import("./monaco-setup-gsjdysze.js"));
|
|
25
25
|
applyProjectSchemas(_pendingSchemas);
|
|
26
26
|
} catch {}
|
|
27
27
|
}
|
|
@@ -31,8 +31,8 @@ function loadMonaco() {
|
|
|
31
31
|
}
|
|
32
32
|
_loading ??= (async () => {
|
|
33
33
|
const [monaco] = await Promise.all([
|
|
34
|
-
(__preload("
|
|
35
|
-
(__preload("
|
|
34
|
+
(__preload("ddy019sn"), import("./editor-ddy019sn.js")),
|
|
35
|
+
(__preload("gsjdysze"), import("./monaco-setup-gsjdysze.js"))
|
|
36
36
|
]);
|
|
37
37
|
_monaco = monaco;
|
|
38
38
|
await applyPendingSchemas();
|
|
@@ -124,7 +124,7 @@ async function shareProjectSchemas(platform) {
|
|
|
124
124
|
function refreshExtensionUi2(platform) {
|
|
125
125
|
shareProjectSchemas(platform);
|
|
126
126
|
loadExtensionCatalog();
|
|
127
|
-
(__preload("
|
|
127
|
+
(__preload("r73an5s6"), import("./extension-sections-r73an5s6.js")).then(({ syncExtensionSettingsSections }) => syncExtensionSettingsSections()).catch(() => {});
|
|
128
128
|
}
|
|
129
129
|
function getFormats2() {
|
|
130
130
|
return _formats;
|
|
@@ -239,4 +239,4 @@ function splitFormatDocument2(format, doc) {
|
|
|
239
239
|
export { loadMonaco, loadedMonaco, mountStillWanted, loadFormats2, refreshFormats2, loadExtensions2, getExtensions2, getExtensionCatalog2, refreshExtensionUi2, getFormats2, formatByExtension2, formatByName2, noFormatError2, formatForPath2, documentExtensions2, defaultContentFormat2, formatParse2, formatSerialize2, splitFormatDocument2 };
|
|
240
240
|
|
|
241
241
|
//# debugId=DC4D74E6C120403064756E2164756E21
|
|
242
|
-
//# sourceMappingURL=studio-
|
|
242
|
+
//# sourceMappingURL=studio-9vsvz7w7.js.map
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
reactive
|
|
3
3
|
} from "./studio-d8z5bajd.js";
|
|
4
|
-
import {
|
|
5
|
-
getPlatform2
|
|
6
|
-
} from "./studio-6nzaktvy.js";
|
|
7
|
-
import {
|
|
8
|
-
loadFormats2,
|
|
9
|
-
formatForPath2
|
|
10
|
-
} from "./studio-6gryj0sg.js";
|
|
11
|
-
import {
|
|
12
|
-
projectState
|
|
13
|
-
} from "./studio-m1p9b6c3.js";
|
|
14
4
|
import {
|
|
15
5
|
resolveI18n,
|
|
16
6
|
servedLocaleOfPath,
|
|
@@ -22,20 +12,30 @@ import {
|
|
|
22
12
|
workspace2,
|
|
23
13
|
openTab2,
|
|
24
14
|
activateTab2
|
|
25
|
-
} from "./studio-
|
|
15
|
+
} from "./studio-dgdm6vvt.js";
|
|
16
|
+
import {
|
|
17
|
+
getPlatform2
|
|
18
|
+
} from "./studio-6pwn9j8c.js";
|
|
19
|
+
import {
|
|
20
|
+
loadFormats2,
|
|
21
|
+
formatForPath2
|
|
22
|
+
} from "./studio-9vsvz7w7.js";
|
|
23
|
+
import {
|
|
24
|
+
projectState
|
|
25
|
+
} from "./studio-m1p9b6c3.js";
|
|
26
26
|
import {
|
|
27
27
|
registerSurface,
|
|
28
28
|
mountSurface,
|
|
29
29
|
openDialogSurface,
|
|
30
30
|
layerHost2
|
|
31
|
-
} from "./studio-
|
|
31
|
+
} from "./studio-ag3z6shb.js";
|
|
32
32
|
import {
|
|
33
33
|
errorMessage2
|
|
34
34
|
} from "./studio-yxa81f45.js";
|
|
35
35
|
import {
|
|
36
36
|
markLocalMutation2,
|
|
37
37
|
isRecentLocal2
|
|
38
|
-
} from "./studio-
|
|
38
|
+
} from "./studio-40z39dme.js";
|
|
39
39
|
import {
|
|
40
40
|
makeGridTabId,
|
|
41
41
|
parseGridTabId,
|
|
@@ -44,21 +44,21 @@ import {
|
|
|
44
44
|
coerceCellInput,
|
|
45
45
|
cellToText,
|
|
46
46
|
createGridController
|
|
47
|
-
} from "./studio-
|
|
47
|
+
} from "./studio-y49b6mjv.js";
|
|
48
48
|
import {
|
|
49
49
|
collectionDirs2,
|
|
50
50
|
createCollectionSource2,
|
|
51
51
|
createPagesSource2
|
|
52
|
-
} from "./studio-
|
|
52
|
+
} from "./studio-ygvr9e4q.js";
|
|
53
53
|
import {
|
|
54
54
|
MEDIA_EXTENSIONS,
|
|
55
55
|
extensionOf
|
|
56
|
-
} from "./studio-
|
|
56
|
+
} from "./studio-sceg8ws0.js";
|
|
57
57
|
// src/surfaces/grid-open.json
|
|
58
58
|
var grid_open_default = {
|
|
59
59
|
$schema: "https://jxsuite.com/schema/v1",
|
|
60
60
|
$id: "StudioGridOpen",
|
|
61
|
-
$description: "Every grid-able source a project has, grouped by where it comes from: the project's own pages and content collections first, then each connection's tables. It is the ISLAND of a confirm dialog rather than a dialog of its own — `ui/layers.ts`'s dialog owns the headline, the cancel button, modality and focus, and this document is only the list — because a second answer to \"what is a dialog\" is a defect (§12.5). Group headings are why it is not the kit menu: a menu row can carry a divider above it and cannot carry a name for the run it opens.",
|
|
61
|
+
$description: "Every grid-able source a project has, grouped by where it comes from: the project's own pages and content collections first, then each connection's tables. It is the ISLAND of a confirm dialog rather than a dialog of its own — `ui/layers.ts`'s dialog owns the headline, the cancel button, modality and focus, and this document is only the list — because a second answer to \"what is a dialog\" is a defect (studio-ui-guidelines.md §12.5). Group headings are why it is not the kit menu: a menu row can carry a divider above it and cannot carry a name for the run it opens.",
|
|
62
62
|
tagName: "div",
|
|
63
63
|
attributes: {
|
|
64
64
|
part: "sources"
|
|
@@ -1196,5 +1196,5 @@ function registerGridCommands(registry) {
|
|
|
1196
1196
|
|
|
1197
1197
|
export { dataSurfaceAvailable, testConnection, pushSchema, deriveSecretEnvName, parseCsv, createCsvFileSource, LIBRARY_CATEGORIES, LIBRARY_CATEGORY_KEYS, libraryCategory, uploadDirForCategory, scanLibrary, filterLibrary, LIBRARY_LAYOUTS, LIBRARY_LAYOUT_LABELS, PREVIEW_LAYOUTS, projectLocales, libraryLocales, groupByDate, groupByCategory, libraryColumns, createLibrarySource, openCsvGridTab, openLibraryTab, openPagesGrid, openGridSourcePicker, registerGridCommands };
|
|
1198
1198
|
|
|
1199
|
-
//# debugId=
|
|
1200
|
-
//# sourceMappingURL=studio-
|
|
1199
|
+
//# debugId=70A68BB6D43FFCA764756E2164756E21
|
|
1200
|
+
//# sourceMappingURL=studio-9wm0xzpf.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
selectValue,
|
|
11
11
|
registerUi,
|
|
12
12
|
activeRegistry
|
|
13
|
-
} from "./studio-
|
|
13
|
+
} from "./studio-3nprwbd9.js";
|
|
14
14
|
import {
|
|
15
15
|
effectScope,
|
|
16
16
|
effect,
|
|
@@ -328,11 +328,17 @@ var dialog_default = {
|
|
|
328
328
|
},
|
|
329
329
|
style: {
|
|
330
330
|
'& [part="message"]': {
|
|
331
|
-
|
|
331
|
+
$description: "The one part of a dialog that is text rather than interface, so it opts back in to selection. The root sets `user-select: none` and `styles/tokens.json` restates it on every `dialog`, so the headline, the labels and the buttons around this sentence stay unselectable; a message is often the thing a reader copies into a search or a bug report.",
|
|
332
|
+
margin: "0 0 var(--jx-space-3)",
|
|
333
|
+
userSelect: "text"
|
|
332
334
|
},
|
|
333
335
|
'& [part="message"]:last-child': {
|
|
334
336
|
margin: "0"
|
|
335
337
|
},
|
|
338
|
+
'& [part="island"] > p, & [part="island"] > span, & [part="island"] > strong, & [part="island"] > em, & [part="island"] > code': {
|
|
339
|
+
$description: "The island's own prose is the message's other form — a body richer than a sentence, written straight into the island from a lit template (studio-ui-guidelines.md §9.4) — so it is selectable for the same reason `[part=\"message\"]` is. The opt-in stops at those children because the island is ALSO the mount point for a whole document: the Open Grid picker and Push Schema's plan put their surfaces here, and `user-select` inherits, so a rule on the island itself would hand selection to every heading, source row and button they draw, which is the interface the policy exists to keep unselectable. A mounted surface roots a `div`; a message writes paragraphs and text-level spans, so the two forms are told apart by the child that arrives.",
|
|
340
|
+
userSelect: "text"
|
|
341
|
+
},
|
|
336
342
|
'& [part="island"]:empty': {
|
|
337
343
|
display: "none"
|
|
338
344
|
},
|
|
@@ -1215,5 +1221,5 @@ function unmountToastHost() {
|
|
|
1215
1221
|
|
|
1216
1222
|
export { mountsUsing, mountsOf, registerKit, REGION_ATTR, resolveRegion, REGION_FOR_FOCUS, paneRegion, paneStripRegion, navigatorPanelRegion, inspectorTabRegion, NAVIGATOR_STATEMENTS_REGION, inspectorStatementsRegion, bottomPanelRegion, overlayRegion, registerSurface, surfaceDocument, mountSurface, whenReady, openDialogSurface, runReported, runActiveReported, layerHost2, initLayers2, isModalOpen2, showConfirmDialog2, showSaveDiscardDialog2, showPromptDialog2, getLayerSlot2, clearLayerSlot2, overlayIdleBlockers2 };
|
|
1217
1223
|
|
|
1218
|
-
//# debugId=
|
|
1219
|
-
//# sourceMappingURL=studio-
|
|
1224
|
+
//# debugId=DE102B371B9E6DE864756E2164756E21
|
|
1225
|
+
//# sourceMappingURL=studio-ag3z6shb.js.map
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// ../schema/src/doc-ops.ts
|
|
2
|
+
function jsonClone(value) {
|
|
3
|
+
return JSON.parse(JSON.stringify(value));
|
|
4
|
+
}
|
|
5
|
+
function cloneValue2(v) {
|
|
6
|
+
return v === undefined || v === null ? v : jsonClone(v);
|
|
7
|
+
}
|
|
8
|
+
function getNodeAtPath3(doc, path) {
|
|
9
|
+
let node = doc;
|
|
10
|
+
for (const key of path) {
|
|
11
|
+
if (node == null) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
node = node[key];
|
|
15
|
+
}
|
|
16
|
+
return node;
|
|
17
|
+
}
|
|
18
|
+
function childArray2(node) {
|
|
19
|
+
if (Array.isArray(node)) {
|
|
20
|
+
throw new TypeError("Cannot insert into a children array; parentPath must point at a node");
|
|
21
|
+
}
|
|
22
|
+
if (!node.children) {
|
|
23
|
+
node.children = [];
|
|
24
|
+
}
|
|
25
|
+
if (!Array.isArray(node.children)) {
|
|
26
|
+
throw new TypeError("Cannot insert into mapped-array children; edit the map template instead");
|
|
27
|
+
}
|
|
28
|
+
return node.children;
|
|
29
|
+
}
|
|
30
|
+
function applyDocOpToDoc2(doc, op) {
|
|
31
|
+
switch (op.op) {
|
|
32
|
+
case "set-key": {
|
|
33
|
+
const node = getNodeAtPath3(doc, op.path);
|
|
34
|
+
if (!node) {
|
|
35
|
+
throw new Error(`doc-op-node-not-found:${op.path.join("/")}`);
|
|
36
|
+
}
|
|
37
|
+
const target = node;
|
|
38
|
+
if (op.value === undefined) {
|
|
39
|
+
delete target[op.key];
|
|
40
|
+
} else {
|
|
41
|
+
target[op.key] = cloneValue2(op.value);
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
case "insert-child": {
|
|
46
|
+
const parent = getNodeAtPath3(doc, op.parentPath);
|
|
47
|
+
childArray2(parent).splice(op.index, 0, cloneValue2(op.node));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
case "remove-child": {
|
|
51
|
+
const parent = getNodeAtPath3(doc, op.parentPath);
|
|
52
|
+
childArray2(parent).splice(op.index, 1);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
case "set-child": {
|
|
56
|
+
const parent = getNodeAtPath3(doc, op.parentPath);
|
|
57
|
+
childArray2(parent).splice(op.index, 1, cloneValue2(op.node));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
case "move-child": {
|
|
61
|
+
assertNotIntoOwnSubtree(op);
|
|
62
|
+
const fromParent = getNodeAtPath3(doc, op.fromParentPath);
|
|
63
|
+
const toParent = getNodeAtPath3(doc, op.toParentPath);
|
|
64
|
+
const from = childArray2(fromParent);
|
|
65
|
+
const to = childArray2(toParent);
|
|
66
|
+
const [node] = from.splice(op.fromIndex, 1);
|
|
67
|
+
to.splice(op.toIndex, 0, node);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
default: {
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
throw new Error(`unknown-doc-op:${op.op}`);
|
|
75
|
+
}
|
|
76
|
+
function shiftThroughSplice(parentPath, path, spliceIndex, delta, inclusive) {
|
|
77
|
+
const depth = parentPath.length;
|
|
78
|
+
const isProperPrefix = depth < path.length && parentPath.every((seg, i) => seg === path[i]);
|
|
79
|
+
if (!isProperPrefix || path[depth] !== "children" || typeof path[depth + 1] !== "number") {
|
|
80
|
+
return path;
|
|
81
|
+
}
|
|
82
|
+
const index = path[depth + 1];
|
|
83
|
+
if (inclusive ? index < spliceIndex : index <= spliceIndex) {
|
|
84
|
+
return path;
|
|
85
|
+
}
|
|
86
|
+
const shifted = [...path];
|
|
87
|
+
shifted[depth + 1] = index + delta;
|
|
88
|
+
return shifted;
|
|
89
|
+
}
|
|
90
|
+
function assertNotIntoOwnSubtree(op) {
|
|
91
|
+
const moved = [...op.fromParentPath, "children", op.fromIndex];
|
|
92
|
+
const target = op.toParentPath;
|
|
93
|
+
if (target.length >= moved.length && moved.every((seg, i) => seg === target[i])) {
|
|
94
|
+
throw new Error(`doc-op-move-into-self:${target.join("/")}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function insertionSlot(index, length) {
|
|
98
|
+
return index < 0 ? Math.max(length + index, 0) : Math.min(index, length);
|
|
99
|
+
}
|
|
100
|
+
function inverseOf(doc, op) {
|
|
101
|
+
switch (op.op) {
|
|
102
|
+
case "set-key": {
|
|
103
|
+
const node = getNodeAtPath3(doc, op.path);
|
|
104
|
+
if (!node) {
|
|
105
|
+
throw new Error(`doc-op-node-not-found:${op.path.join("/")}`);
|
|
106
|
+
}
|
|
107
|
+
const before = cloneValue2(node[op.key]);
|
|
108
|
+
return before === undefined ? { key: op.key, op: "set-key", path: op.path } : { key: op.key, op: "set-key", path: op.path, value: before };
|
|
109
|
+
}
|
|
110
|
+
case "insert-child": {
|
|
111
|
+
const { length } = insertableChildren(doc, op.parentPath);
|
|
112
|
+
return {
|
|
113
|
+
index: insertionSlot(op.index, length),
|
|
114
|
+
op: "remove-child",
|
|
115
|
+
parentPath: op.parentPath
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
case "remove-child": {
|
|
119
|
+
const removed = existingChild(doc, op.parentPath, op.index);
|
|
120
|
+
return { index: op.index, node: removed, op: "insert-child", parentPath: op.parentPath };
|
|
121
|
+
}
|
|
122
|
+
case "set-child": {
|
|
123
|
+
const replaced = existingChild(doc, op.parentPath, op.index);
|
|
124
|
+
return { index: op.index, node: replaced, op: "set-child", parentPath: op.parentPath };
|
|
125
|
+
}
|
|
126
|
+
case "move-child": {
|
|
127
|
+
assertNotIntoOwnSubtree(op);
|
|
128
|
+
const source = childrenAt(doc, op.fromParentPath);
|
|
129
|
+
assertIndex(source, op.fromParentPath, op.fromIndex);
|
|
130
|
+
const target = insertableChildren(doc, op.toParentPath);
|
|
131
|
+
const toIndex = insertionSlot(op.toIndex, target.length - (target === source ? 1 : 0));
|
|
132
|
+
return {
|
|
133
|
+
fromIndex: toIndex,
|
|
134
|
+
fromParentPath: shiftThroughSplice(op.fromParentPath, op.toParentPath, op.fromIndex, -1, false),
|
|
135
|
+
op: "move-child",
|
|
136
|
+
toIndex: op.fromIndex,
|
|
137
|
+
toParentPath: shiftThroughSplice(op.toParentPath, op.fromParentPath, toIndex, 1, true)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
default: {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
throw new Error(`unknown-doc-op:${op.op}`);
|
|
145
|
+
}
|
|
146
|
+
function childrenAt(doc, parentPath) {
|
|
147
|
+
const parent = getNodeAtPath3(doc, parentPath);
|
|
148
|
+
return parent && Array.isArray(parent.children) ? parent.children : null;
|
|
149
|
+
}
|
|
150
|
+
function assertIndex(children, parentPath, index) {
|
|
151
|
+
if (!children || index < 0 || index >= children.length) {
|
|
152
|
+
throw new Error(`doc-op-node-not-found:${[...parentPath, "children", index].join("/")}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function existingChild(doc, parentPath, index) {
|
|
156
|
+
const children = childrenAt(doc, parentPath);
|
|
157
|
+
assertIndex(children, parentPath, index);
|
|
158
|
+
return cloneValue2(children[index]);
|
|
159
|
+
}
|
|
160
|
+
function insertableChildren(doc, parentPath) {
|
|
161
|
+
const node = getNodeAtPath3(doc, parentPath);
|
|
162
|
+
if (!node || typeof node !== "object" || Array.isArray(node)) {
|
|
163
|
+
throw new Error(`doc-op-node-not-found:${parentPath.join("/")}`);
|
|
164
|
+
}
|
|
165
|
+
if (node.children === undefined) {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
if (!Array.isArray(node.children)) {
|
|
169
|
+
throw new TypeError(`doc-op-mapped-children:${parentPath.join("/")}`);
|
|
170
|
+
}
|
|
171
|
+
return node.children;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export { cloneValue2, getNodeAtPath3, childArray2, applyDocOpToDoc2, inverseOf };
|
|
175
|
+
|
|
176
|
+
//# debugId=FEDC5B4E1A6763C764756E2164756E21
|
|
177
|
+
//# sourceMappingURL=studio-aj9drheq.js.map
|