@jxsuite/studio 6.1.1 → 6.1.2
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/dist/chunks/{2020-va2wwra4.js → 2020-f2gkpy8d.js} +3 -3
- package/dist/chunks/{action-group-2mqby73c.js → action-group-4aan7g6g.js} +3 -3
- package/dist/chunks/adapter-4912g339.js +4 -0
- package/dist/chunks/cf-account-picker-wccaenh6.js +4 -0
- package/dist/chunks/cf-settings-br6105tr.js +4 -0
- package/dist/chunks/color-28ksk2qm.js +4 -0
- package/dist/chunks/color-area-0fj8a4ga.js +4 -0
- package/dist/chunks/color-field-xch8kx2g.js +4 -0
- package/dist/chunks/color-slider-jxd8v350.js +4 -0
- package/dist/chunks/combobox-p0efwjke.js +4 -0
- package/dist/chunks/components-db68vsn7.js +4 -0
- package/dist/chunks/content-source-1449qesq.js +4 -0
- package/dist/chunks/convert-to-repeater-5h457egj.js +4 -0
- package/dist/chunks/dialog-c4x05vyx.js +4 -0
- package/dist/chunks/editor-x9jn86a7.js +4 -0
- package/dist/chunks/entry-commands-may24cpt.js +4 -0
- package/dist/chunks/extension-sections-pvr14vxr.js +4 -0
- package/dist/chunks/file-ops-x9v54pcj.js +4 -0
- package/dist/chunks/files-j3knqf0s.js +4 -0
- package/dist/chunks/format-host-tyre2trb.js +4 -0
- package/dist/chunks/fs-events-64ma9htc.js +4 -0
- package/dist/chunks/git-panel-84ps5dex.js +4 -0
- package/dist/chunks/grid-view-d2wq9ezg.js +51 -0
- package/dist/chunks/icons-pnfz478q.js +4 -0
- package/dist/chunks/iframe-entry-fvbk89gm.js +5 -0
- package/dist/chunks/iframe-entry-jdcktez8.js +5 -0
- package/dist/chunks/iframe-entry-x0ygf2yr.js +5 -0
- package/dist/chunks/iframe-entry-zap785cw.js +5 -0
- package/dist/chunks/iframe-host-ck6vejt5.js +4 -0
- package/dist/chunks/index-b8xw3vy9.js +4 -0
- package/dist/chunks/{index-2veqmnhr.js → index-zpjmzqfk.js} +3 -3
- package/dist/chunks/{javascript-8nbvs12s.js → javascript-m54mnwp6.js} +3 -3
- package/dist/chunks/{jsonMode-s8kt9dsj.js → jsonMode-w15cmrcm.js} +8 -8
- package/dist/chunks/jx-validate-at3zn8wa.js +4 -0
- package/dist/chunks/layers-h4xp1pss.js +4 -0
- package/dist/chunks/layers-panel-m5hw1d7g.js +4 -0
- package/dist/chunks/listbox-e74qjyq6.js +4 -0
- package/dist/chunks/lit-html-8t8t3dnr.js +4 -0
- package/dist/chunks/media-picker-2cweexc5.js +4 -0
- package/dist/chunks/menu-n6yzswmy.js +4 -0
- package/dist/chunks/menu-ynw13y0s.js +4 -0
- package/dist/chunks/monaco-binding-7gx83x3r.js +4 -0
- package/dist/chunks/monaco-buffer-qzxn567r.js +4 -0
- package/dist/chunks/monaco-setup-gxf6656g.js +4 -0
- package/dist/chunks/notify-cj5zbrs2.js +4 -0
- package/dist/chunks/number-field-y62xq0ty.js +4 -0
- package/dist/chunks/parse-b7ddhr8m.js +4 -0
- package/dist/chunks/platform-3dfws9js.js +4 -0
- package/dist/chunks/popover-jt2gxmzs.js +4 -0
- package/dist/chunks/publish-panel-1gvxbj21.js +4 -0
- package/dist/chunks/quick-search-0dajrwqg.js +4 -0
- package/dist/chunks/references-49qgt404.js +4 -0
- package/dist/chunks/right-panel-jm1bwe53.js +4 -0
- package/dist/chunks/section-registry-6kwc4fky.js +4 -0
- package/dist/chunks/select-rzds841e.js +4 -0
- package/dist/chunks/split-n2gfpm5m.js +4 -0
- package/dist/chunks/{studio-1q1sh2ax.js → studio-0q988f9w.js} +3 -3
- package/dist/chunks/studio-0rt52vpq.js +5 -0
- package/dist/chunks/studio-18vgbhs5.js +5 -0
- package/dist/chunks/{studio-h46vtzk8.js → studio-1fxkaaea.js} +4 -4
- package/dist/chunks/studio-24mccdrj.js +5 -0
- package/dist/chunks/studio-2eh507zk.js +9 -0
- package/dist/chunks/studio-2hcbccfv.js +5 -0
- package/dist/chunks/studio-2j1cb95x.js +5 -0
- package/dist/chunks/studio-2jbs3rxv.js +5 -0
- package/dist/chunks/{studio-rv11kfwa.js → studio-485046te.js} +7 -7
- package/dist/chunks/studio-4h8k4dw9.js +5 -0
- package/dist/chunks/studio-5f6n18kx.js +5 -0
- package/dist/chunks/studio-5gthpky6.js +5 -0
- package/dist/chunks/studio-5ve6bbep.js +5 -0
- package/dist/chunks/studio-6ep3js6b.js +9 -0
- package/dist/chunks/studio-6wkmf3wz.js +9 -0
- package/dist/chunks/studio-841rf3cg.js +5 -0
- package/dist/chunks/studio-8gmwgheg.js +5 -0
- package/dist/chunks/studio-8qm0ep50.js +5 -0
- package/dist/chunks/{studio-8grwxtqk.js → studio-90pq9km1.js} +4 -4
- package/dist/chunks/studio-924p1tm1.js +6 -0
- package/dist/chunks/{studio-pre0skq6.js → studio-a3g98wjr.js} +4 -4
- package/dist/chunks/studio-a3shpz9y.js +5 -0
- package/dist/chunks/studio-amsbaaar.js +6 -0
- package/dist/chunks/studio-at5spjbc.js +7 -0
- package/dist/chunks/studio-b2xv945e.js +5 -0
- package/dist/chunks/studio-bn5nkafw.js +5 -0
- package/dist/chunks/studio-bw6q5xjf.js +9 -0
- package/dist/chunks/studio-c7q0t9x1.js +5 -0
- package/dist/chunks/studio-camnhc96.js +6 -0
- package/dist/chunks/studio-cffqvnzd.js +5 -0
- package/dist/chunks/studio-d81xfh1g.js +5 -0
- package/dist/chunks/studio-dgz8d0c1.js +5 -0
- package/dist/chunks/studio-efvfrsf8.js +5 -0
- package/dist/chunks/studio-er30bpcx.js +5 -0
- package/dist/chunks/studio-ezscgr64.js +5 -0
- package/dist/chunks/studio-ffrrncvz.js +5 -0
- package/dist/chunks/studio-fpphgn8y.js +10 -0
- package/dist/chunks/studio-j1kvhdjk.js +4 -0
- package/dist/chunks/{studio-vrmcjf9g.js → studio-j430n16g.js} +5 -5
- package/dist/chunks/studio-jjkg84nj.js +5 -0
- package/dist/chunks/studio-m0q32ars.js +4 -0
- package/dist/chunks/studio-m6bdst11.js +5 -0
- package/dist/chunks/studio-nv2cptd4.js +64 -0
- package/dist/chunks/studio-nwfrc98n.js +5 -0
- package/dist/chunks/studio-p1wgvp7r.js +5 -0
- package/dist/chunks/studio-pag2wncm.js +5 -0
- package/dist/chunks/studio-qvanvzfd.js +5 -0
- package/dist/chunks/studio-qwa64kt7.js +5 -0
- package/dist/chunks/studio-rk1zc4x3.js +928 -0
- package/dist/chunks/studio-se2r3ptc.js +5 -0
- package/dist/chunks/studio-sg2a0dh0.js +5 -0
- package/dist/chunks/studio-tjzjhe68.js +5 -0
- package/dist/chunks/{studio-wszjyh0j.js → studio-tq0rtfwj.js} +4 -4
- package/dist/chunks/{studio-kggey1jt.js → studio-v0jzqdjm.js} +4 -4
- package/dist/chunks/studio-v2w7q8r1.js +7 -0
- package/dist/chunks/studio-v5vjq1h0.js +4 -0
- package/dist/chunks/studio-v8aga3vp.js +14 -0
- package/dist/chunks/studio-vfcdrfmv.js +5 -0
- package/dist/chunks/studio-vmfkgdjf.js +5 -0
- package/dist/chunks/studio-wt1816jj.js +5 -0
- package/dist/chunks/studio-wz73q5kq.js +4 -0
- package/dist/chunks/studio-y04qtxvp.js +7 -0
- package/dist/chunks/studio-y21g8zzg.js +5 -0
- package/dist/chunks/{studio-zey7zsdw.js → studio-y64hrt8p.js} +7 -7
- package/dist/chunks/studio-ynn90f58.js +16 -0
- package/dist/chunks/studio-yxz682sx.js +5 -0
- package/dist/chunks/studio-zp7snvkq.js +5 -0
- package/dist/chunks/studio-zq4z6tm6.js +5 -0
- package/dist/chunks/swatch-group-ewh24n1f.js +4 -0
- package/dist/chunks/tabs-f5cw3tgp.js +4 -0
- package/dist/chunks/textfield-wewc8rq2.js +4 -0
- package/dist/chunks/toast-c9fn075p.js +4 -0
- package/dist/chunks/toast-host-ke5z4ng7.js +4 -0
- package/dist/chunks/{toolbar-2nnzqhrj.js → toolbar-44cm5cta.js} +3 -3
- package/dist/chunks/tooltip-5v8ngwj2.js +4 -0
- package/dist/chunks/tree-mdq3v5cw.js +4 -0
- package/dist/chunks/{tsMode-2frah6h1.js → tsMode-sf49ee9x.js} +7 -7
- package/dist/chunks/workspace-jtfahpee.js +4 -0
- package/dist/chunks/ws-client-nze0k6mv.js +4 -0
- package/dist/iframe-entry.js +16 -16
- package/dist/manifest.json +63 -63
- package/dist/studio.js +97 -97
- package/package.json +6 -6
- package/src/about/about-modal.ts +4 -3
- package/src/account/action-flow.ts +45 -38
- package/src/account-status.ts +7 -2
- package/src/browse/library-layouts.ts +8 -5
- package/src/browse/library-model.ts +18 -6
- package/src/browse/library-pane.ts +37 -21
- package/src/browse/library-preview.ts +14 -9
- package/src/browse/library-source.ts +1 -1
- package/src/canvas/asset-refs.ts +24 -9
- package/src/canvas/asset-resolve.ts +19 -23
- package/src/canvas/canvas-helpers.ts +7 -6
- package/src/canvas/canvas-live-render.ts +44 -53
- package/src/canvas/canvas-patcher.ts +30 -30
- package/src/canvas/canvas-perf.ts +11 -5
- package/src/canvas/canvas-render.ts +62 -41
- package/src/canvas/canvas-surface.ts +5 -3
- package/src/canvas/canvas-utils.ts +90 -49
- package/src/canvas/dialog-path.ts +9 -4
- package/src/canvas/dialog-state.ts +1 -2
- package/src/canvas/diff-marks.ts +9 -16
- package/src/canvas/diff-toolbar.ts +8 -7
- package/src/canvas/edit-width-drag.ts +4 -1
- package/src/canvas/edit-width.ts +1 -3
- package/src/canvas/iframe-channel.ts +27 -13
- package/src/canvas/iframe-drop.ts +13 -12
- package/src/canvas/iframe-editable-root.ts +29 -16
- package/src/canvas/iframe-entry.ts +80 -63
- package/src/canvas/iframe-eval.ts +73 -49
- package/src/canvas/iframe-host.ts +135 -96
- package/src/canvas/iframe-inline-edit.ts +49 -30
- package/src/canvas/iframe-insert.ts +5 -4
- package/src/canvas/iframe-interaction.ts +30 -25
- package/src/canvas/iframe-overlay.ts +1 -1
- package/src/canvas/iframe-patch.ts +18 -15
- package/src/canvas/iframe-position.ts +12 -6
- package/src/canvas/iframe-protocol.ts +12 -16
- package/src/canvas/iframe-render.ts +36 -34
- package/src/canvas/iframe-slash.ts +24 -11
- package/src/canvas/iframe-subtree.ts +6 -2
- package/src/canvas/path-mapping.ts +19 -12
- package/src/canvas/popover-path.ts +7 -3
- package/src/canvas/popover-state.ts +1 -2
- package/src/canvas/serialize-scope.ts +13 -5
- package/src/canvas/stage-scrollbar.ts +2 -1
- package/src/canvas/surface-registry.ts +21 -3
- package/src/collab/collab-commands.ts +7 -2
- package/src/collab/collab-session.ts +84 -45
- package/src/collab/collab-state.ts +4 -3
- package/src/collab/monaco-binding.ts +16 -13
- package/src/collab/monaco-cursors.ts +5 -2
- package/src/commands/budget.ts +3 -3
- package/src/commands/command-args.ts +103 -71
- package/src/commands/context.ts +22 -20
- package/src/commands/keymap.ts +47 -43
- package/src/commands/levels.ts +3 -3
- package/src/commands/live-context.ts +7 -7
- package/src/commands/reference.ts +2 -1
- package/src/commands/registry.ts +12 -10
- package/src/commands/run-reported.ts +15 -10
- package/src/component-props.ts +46 -30
- package/src/content/collection-match.ts +5 -4
- package/src/content/draft-state.ts +4 -3
- package/src/content/entry-commands.ts +3 -2
- package/src/content/entry-editor.ts +29 -17
- package/src/content/entry-fields.ts +12 -7
- package/src/content/entry-model.ts +21 -12
- package/src/editor/canvas-context-menu.ts +1 -2
- package/src/editor/canvas-slash-bridge.ts +3 -6
- package/src/editor/content-slice.ts +16 -14
- package/src/editor/context-menu.ts +35 -22
- package/src/editor/convert-targets.ts +30 -35
- package/src/editor/convert-to-component.ts +11 -5
- package/src/editor/convert-to-repeater.ts +34 -22
- package/src/editor/editable-tags.ts +17 -2
- package/src/editor/file-drop-action.ts +21 -22
- package/src/editor/inline-edit-apply.ts +35 -17
- package/src/editor/inline-edit.ts +66 -50
- package/src/editor/inline-format.ts +59 -56
- package/src/editor/inline-link.ts +40 -15
- package/src/editor/insert-zone-action.ts +1 -1
- package/src/editor/merge-tags.ts +58 -19
- package/src/editor/repeater-scope.ts +39 -28
- package/src/editor/shortcuts.ts +32 -20
- package/src/editor/slash-menu.ts +1 -6
- package/src/files/asset-versions.ts +4 -4
- package/src/files/components.ts +15 -10
- package/src/files/elements.ts +5 -6
- package/src/files/file-ops.ts +77 -36
- package/src/files/files.ts +90 -95
- package/src/files/media-meta.ts +2 -1
- package/src/files/media-paths.ts +3 -0
- package/src/files/serialize-document.ts +2 -2
- package/src/format/constraints.ts +1 -1
- package/src/format/convert-file.ts +27 -13
- package/src/format/format-choices.ts +2 -1
- package/src/format/format-host.ts +76 -50
- package/src/github/github-auth-status.ts +27 -3
- package/src/github/github-auth.ts +19 -9
- package/src/github/github-publish.ts +24 -20
- package/src/grid/cell-editors.ts +46 -31
- package/src/grid/cell-popovers.ts +5 -3
- package/src/grid/edit-buffer.ts +10 -9
- package/src/grid/grid-controller.ts +20 -22
- package/src/grid/grid-layout.ts +21 -5
- package/src/grid/grid-open.ts +3 -6
- package/src/grid/grid-panel.ts +11 -4
- package/src/grid/grid-source.ts +8 -8
- package/src/grid/grid-view.ts +14 -17
- package/src/grid/redirects-grid.ts +14 -5
- package/src/grid/redirects.ts +16 -14
- package/src/grid/schema-columns.ts +25 -19
- package/src/grid/sources/connector-source.ts +47 -20
- package/src/grid/sources/content-source.ts +25 -24
- package/src/grid/sources/csv-file-source.ts +2 -2
- package/src/grid/tabulator-tables.d.ts +55 -34
- package/src/hosting/stage.ts +7 -7
- package/src/i18n/i18n-commands.ts +1 -2
- package/src/media/media-pane.ts +4 -1
- package/src/new-project/add-repo-modal.ts +20 -19
- package/src/new-project/import-tab.ts +10 -14
- package/src/new-project/location-fields.ts +2 -1
- package/src/new-project/new-project-modal.ts +12 -9
- package/src/packages/jxsuite-update.ts +4 -3
- package/src/packages/pull-package-sync.ts +26 -25
- package/src/page-params.ts +97 -68
- package/src/panels/activity-panel.ts +17 -9
- package/src/panels/ai-chat/attached-context.ts +13 -7
- package/src/panels/ai-chat/chat-view.ts +80 -73
- package/src/panels/ai-chat/composer.ts +30 -33
- package/src/panels/ai-chat/sessions-view.ts +1 -2
- package/src/panels/ai-panel.ts +23 -20
- package/src/panels/block-action-bar.ts +46 -35
- package/src/panels/bottom-dock.ts +5 -3
- package/src/panels/canvas-dnd-bridge.ts +31 -24
- package/src/panels/data-explorer.ts +62 -25
- package/src/panels/data-grid.ts +14 -11
- package/src/panels/dnd.ts +108 -118
- package/src/panels/editors.ts +52 -21
- package/src/panels/elements-panel.ts +10 -3
- package/src/panels/events-panel.ts +84 -69
- package/src/panels/formula-workspace.ts +76 -51
- package/src/panels/frontmatter-fields.ts +24 -19
- package/src/panels/frontmatter-panel.ts +44 -34
- package/src/panels/git-diff-open.ts +4 -4
- package/src/panels/git-panel.ts +49 -61
- package/src/panels/head-panel.ts +131 -111
- package/src/panels/i18n-panel.ts +10 -3
- package/src/panels/imports-panel.ts +23 -47
- package/src/panels/jump-bar.ts +48 -29
- package/src/panels/layers-panel.ts +97 -74
- package/src/panels/left-panel.ts +3 -3
- package/src/panels/pane-context.ts +31 -22
- package/src/panels/pane-grid.ts +49 -20
- package/src/panels/panel-registry.ts +22 -37
- package/src/panels/properties-panel.ts +175 -121
- package/src/panels/quick-search.ts +53 -31
- package/src/panels/right-panel.ts +3 -3
- package/src/panels/seo-modal.ts +13 -17
- package/src/panels/settings-menu.ts +15 -15
- package/src/panels/signals-panel.ts +153 -131
- package/src/panels/statement-editor.ts +230 -140
- package/src/panels/style-panel.ts +218 -205
- package/src/panels/style-utils.ts +114 -51
- package/src/panels/stylebook-doc.ts +57 -54
- package/src/panels/stylebook-layers-panel.ts +9 -9
- package/src/panels/stylebook-panel.ts +13 -17
- package/src/panels/tab-drop.ts +27 -11
- package/src/panels/tab-strip.ts +36 -26
- package/src/platform-errors.ts +57 -43
- package/src/platform.ts +58 -30
- package/src/platforms/cloud.ts +345 -175
- package/src/platforms/default-platform.ts +10 -4
- package/src/platforms/devserver.ts +129 -117
- package/src/platforms/read-batcher.ts +16 -8
- package/src/project-list.ts +2 -1
- package/src/publish/deploy-checklist.ts +8 -2
- package/src/publish/pages-service.ts +28 -13
- package/src/publish/publish-commands.ts +5 -4
- package/src/publish/publish-panel.ts +10 -6
- package/src/recent-projects.ts +15 -8
- package/src/resize-edges.ts +26 -36
- package/src/services/a11y-report.ts +26 -19
- package/src/services/agent-seed.ts +23 -11
- package/src/services/ai-ask.ts +9 -12
- package/src/services/ai-command-tools.ts +68 -62
- package/src/services/ai-import-tools.ts +80 -67
- package/src/services/ai-models.ts +17 -13
- package/src/services/ai-project-tools.ts +68 -32
- package/src/services/ai-session-store.ts +19 -10
- package/src/services/ai-system-prompt.ts +46 -20
- package/src/services/ai-tools.ts +71 -27
- package/src/services/ai-write-report.ts +20 -12
- package/src/services/ai-writes.ts +4 -4
- package/src/services/automation.ts +58 -31
- package/src/services/cem-export.ts +149 -58
- package/src/services/clock.ts +6 -1
- package/src/services/code-services.ts +37 -31
- package/src/services/context-manager.ts +14 -10
- package/src/services/context-resolver.ts +20 -8
- package/src/services/data-service.ts +19 -15
- package/src/services/directory-picker.ts +18 -12
- package/src/services/document-assistant.ts +39 -19
- package/src/services/gated-registry.ts +10 -6
- package/src/services/harness/chat-reducer.ts +23 -1
- package/src/services/import-client.ts +91 -38
- package/src/services/import-seed.ts +8 -2
- package/src/services/jx-validate.ts +28 -31
- package/src/services/live-preview.ts +0 -0
- package/src/services/live-surfaces.ts +6 -3
- package/src/services/model-uri.ts +10 -2
- package/src/services/module-preloads.ts +12 -8
- package/src/services/monaco-buffer.ts +43 -24
- package/src/services/monaco-lazy.ts +7 -8
- package/src/services/monaco-setup.ts +23 -16
- package/src/services/notify.ts +44 -17
- package/src/services/popover-report.ts +25 -10
- package/src/services/preview-eval.ts +20 -8
- package/src/services/profile.ts +13 -6
- package/src/services/project-path.ts +13 -10
- package/src/services/references.ts +0 -0
- package/src/services/render-critic.ts +8 -7
- package/src/services/settings/kernel.ts +13 -4
- package/src/services/settings/write-queue.ts +9 -9
- package/src/services/token-lint.ts +12 -10
- package/src/services/tool-executor.ts +17 -5
- package/src/services/tool-outcomes.ts +44 -24
- package/src/services/trusted-types.ts +24 -7
- package/src/settings/contexts-section.ts +11 -8
- package/src/settings/contributed-section.ts +79 -60
- package/src/settings/css-vars-editor.ts +37 -16
- package/src/settings/defs-editor.ts +38 -35
- package/src/settings/extension-rows.ts +16 -8
- package/src/settings/extension-sections.ts +23 -13
- package/src/settings/extensions-section.ts +4 -1
- package/src/settings/general-settings.ts +11 -8
- package/src/settings/locales-section.ts +20 -12
- package/src/settings/preferences-dialog.ts +9 -6
- package/src/settings/preferences-keymap.ts +7 -5
- package/src/settings/preferences-sections.ts +11 -5
- package/src/settings/project-sections.ts +1 -1
- package/src/settings/schema-field-ui.ts +9 -0
- package/src/settings/settings-document.ts +5 -5
- package/src/shell/tree.ts +6 -5
- package/src/shell.ts +104 -81
- package/src/site-context.ts +37 -22
- package/src/state.ts +41 -49
- package/src/store.ts +54 -34
- package/src/studio.ts +25 -75
- package/src/style/live-preview.ts +1 -1
- package/src/style/project-styles.ts +6 -7
- package/src/style/token-ref.ts +5 -4
- package/src/surfaces/about.ts +18 -19
- package/src/surfaces/add-repo.ts +17 -19
- package/src/surfaces/ai-chat.ts +31 -36
- package/src/surfaces/ai-credentials-form.ts +6 -16
- package/src/surfaces/ai-managed-connect.ts +3 -4
- package/src/surfaces/ai-model-picker.ts +3 -5
- package/src/surfaces/block-action-bar.ts +22 -11
- package/src/surfaces/boot-failure.ts +4 -5
- package/src/surfaces/bottom-dock.ts +9 -18
- package/src/surfaces/canvas-stage.ts +12 -11
- package/src/surfaces/cf-account-picker.ts +17 -18
- package/src/surfaces/commandbar.ts +14 -9
- package/src/surfaces/convert-repeater.ts +17 -19
- package/src/surfaces/data-actions.ts +9 -7
- package/src/surfaces/dialog.ts +26 -28
- package/src/surfaces/diff-toolbar.ts +9 -7
- package/src/surfaces/doc-header.ts +10 -19
- package/src/surfaces/empty-state.ts +7 -10
- package/src/surfaces/entry-editor.ts +14 -11
- package/src/surfaces/expression-editor.ts +11 -25
- package/src/surfaces/files-panel.ts +27 -14
- package/src/surfaces/formula-palette.ts +4 -5
- package/src/surfaces/git-panel.ts +7 -15
- package/src/surfaces/github-auth.ts +16 -20
- package/src/surfaces/github-publish.ts +17 -22
- package/src/surfaces/grid-cell.ts +30 -31
- package/src/surfaces/grid-open.ts +10 -14
- package/src/surfaces/grid-panel.ts +13 -9
- package/src/surfaces/grid-replace.ts +13 -13
- package/src/surfaces/grid-views.ts +15 -18
- package/src/surfaces/inspector-dock.ts +13 -12
- package/src/surfaces/jump-bar.ts +5 -6
- package/src/surfaces/jxsuite-update.ts +16 -22
- package/src/surfaces/library-pane.ts +19 -20
- package/src/surfaces/logic-panel.ts +17 -30
- package/src/surfaces/logic-workspace.ts +13 -15
- package/src/surfaces/media-browser.ts +11 -10
- package/src/surfaces/media-field.ts +4 -5
- package/src/surfaces/media-pane.ts +8 -7
- package/src/surfaces/menu.ts +29 -23
- package/src/surfaces/navigator-dock.ts +11 -12
- package/src/surfaces/new-project.ts +27 -26
- package/src/surfaces/pane-context.ts +20 -25
- package/src/surfaces/pane-grid.ts +15 -10
- package/src/surfaces/panel-activity.ts +5 -6
- package/src/surfaces/panel-data.ts +3 -4
- package/src/surfaces/panel-deploy-checklist.ts +5 -6
- package/src/surfaces/panel-elements.ts +5 -7
- package/src/surfaces/panel-i18n.ts +5 -7
- package/src/surfaces/panel-imports.ts +6 -13
- package/src/surfaces/panel-outline.ts +25 -19
- package/src/surfaces/panel-page.ts +11 -18
- package/src/surfaces/panel-problems.ts +5 -7
- package/src/surfaces/panel-signals.ts +20 -34
- package/src/surfaces/panel-stylebook-layers.ts +5 -8
- package/src/surfaces/preferences.ts +21 -11
- package/src/surfaces/progress-modal.ts +15 -9
- package/src/surfaces/properties-panel.json +1 -1
- package/src/surfaces/properties-panel.ts +20 -42
- package/src/surfaces/publish.ts +18 -18
- package/src/surfaces/push-plan.ts +7 -8
- package/src/surfaces/rail.ts +13 -13
- package/src/surfaces/reference-field.ts +11 -15
- package/src/surfaces/schema-builder.ts +16 -22
- package/src/surfaces/schema-form.ts +15 -25
- package/src/surfaces/secret-field.ts +9 -6
- package/src/surfaces/seo.ts +21 -15
- package/src/surfaces/settings-contexts.ts +9 -7
- package/src/surfaces/settings-contributed.ts +14 -10
- package/src/surfaces/settings-css-vars.ts +5 -12
- package/src/surfaces/settings-defs.json +2 -2
- package/src/surfaces/settings-defs.ts +17 -21
- package/src/surfaces/settings-deploy.ts +8 -15
- package/src/surfaces/settings-extensions.ts +5 -6
- package/src/surfaces/settings-head.ts +33 -39
- package/src/surfaces/settings-locales.ts +8 -20
- package/src/surfaces/settings-overview.ts +5 -6
- package/src/surfaces/settings-packages.ts +8 -7
- package/src/surfaces/settings-pane.ts +9 -18
- package/src/surfaces/settings-rawjson.ts +5 -6
- package/src/surfaces/shell.ts +1 -2
- package/src/surfaces/slash-menu.ts +19 -9
- package/src/surfaces/statements.ts +13 -18
- package/src/surfaces/statusbar.ts +17 -14
- package/src/surfaces/style-panel.ts +18 -31
- package/src/surfaces/stylebook-chrome.ts +3 -5
- package/src/surfaces/tab-strip.ts +14 -13
- package/src/surfaces/target-line.ts +6 -7
- package/src/surfaces/welcome.ts +5 -7
- package/src/tabs/patch-ops.ts +4 -3
- package/src/tabs/project-config.ts +32 -21
- package/src/tabs/selection.ts +36 -8
- package/src/tabs/tab.ts +52 -41
- package/src/tabs/transact.ts +98 -53
- package/src/types.ts +32 -17
- package/src/ui/ai-credentials-form.ts +10 -13
- package/src/ui/ai-model-picker.ts +3 -3
- package/src/ui/cf-account-picker.ts +7 -9
- package/src/ui/color-selector.ts +9 -5
- package/src/ui/dynamic-slot.ts +7 -8
- package/src/ui/expression-editor.ts +112 -105
- package/src/ui/form-controls.ts +57 -48
- package/src/ui/formula-catalog.ts +239 -230
- package/src/ui/formula-chips.ts +33 -18
- package/src/ui/layers.ts +44 -31
- package/src/ui/media-picker.ts +18 -9
- package/src/ui/popover-surface.ts +20 -12
- package/src/ui/progress-modal.ts +13 -8
- package/src/ui/regions.ts +7 -6
- package/src/ui/schema-form.ts +113 -70
- package/src/ui/surface.ts +71 -8
- package/src/ui/timing.ts +9 -0
- package/src/ui/value-source.ts +44 -31
- package/src/ui/virtual-window.ts +3 -2
- package/src/utils/base64.ts +3 -1
- package/src/utils/edit-display.ts +73 -73
- package/src/utils/element-selectors.ts +3 -2
- package/src/utils/google-fonts.ts +15 -14
- package/src/utils/inherited-style.ts +18 -20
- package/src/utils/link-target.ts +1 -1
- package/src/utils/preview-format.ts +25 -3
- package/src/utils/strip-events.ts +49 -22
- package/src/utils/studio-utils.ts +29 -14
- package/src/view.ts +2 -3
- package/src/workspace/pane-derive.ts +10 -12
- package/src/workspace/session.ts +53 -43
- package/src/workspace/workspace.ts +40 -36
- package/dist/chunks/adapter-f93pafd7.js +0 -4
- package/dist/chunks/cf-account-picker-af1h381v.js +0 -4
- package/dist/chunks/cf-settings-125tdm0w.js +0 -4
- package/dist/chunks/color-area-jqhna8zy.js +0 -4
- package/dist/chunks/color-field-embq5ctg.js +0 -4
- package/dist/chunks/color-fpezvnkt.js +0 -4
- package/dist/chunks/color-slider-1qmw7wqy.js +0 -4
- package/dist/chunks/combobox-773hdzyj.js +0 -4
- package/dist/chunks/components-ax2f1fnn.js +0 -4
- package/dist/chunks/content-source-108aqtk1.js +0 -4
- package/dist/chunks/convert-to-repeater-ry5rmppr.js +0 -4
- package/dist/chunks/dialog-mtm9fq5t.js +0 -4
- package/dist/chunks/editor-pfgdmkb0.js +0 -4
- package/dist/chunks/entry-commands-t0k1q0kx.js +0 -4
- package/dist/chunks/extension-sections-6mwh2hf8.js +0 -4
- package/dist/chunks/file-ops-meej5mqf.js +0 -4
- package/dist/chunks/files-44vp8a2s.js +0 -4
- package/dist/chunks/format-host-7q1petb9.js +0 -4
- package/dist/chunks/fs-events-h2mwnxaz.js +0 -4
- package/dist/chunks/git-panel-zngbymvd.js +0 -4
- package/dist/chunks/grid-view-sx9vynsp.js +0 -51
- package/dist/chunks/icons-p44xhjf0.js +0 -4
- package/dist/chunks/iframe-entry-f7mqjwpm.js +0 -5
- package/dist/chunks/iframe-entry-haw7jkvz.js +0 -5
- package/dist/chunks/iframe-entry-z6qrytv3.js +0 -5
- package/dist/chunks/iframe-host-qk3ycq87.js +0 -4
- package/dist/chunks/index-wkyfjeqz.js +0 -4
- package/dist/chunks/jx-validate-psgd7vsx.js +0 -4
- package/dist/chunks/layers-panel-1kq2jyfk.js +0 -4
- package/dist/chunks/layers-xd92fg8d.js +0 -4
- package/dist/chunks/listbox-s8fkmnq8.js +0 -4
- package/dist/chunks/lit-html-ac4cwwr4.js +0 -4
- package/dist/chunks/media-picker-0svzkdyb.js +0 -4
- package/dist/chunks/menu-37d07z9m.js +0 -4
- package/dist/chunks/menu-5c55ea3d.js +0 -4
- package/dist/chunks/monaco-binding-z6r70pdt.js +0 -4
- package/dist/chunks/monaco-buffer-fz6gq5y7.js +0 -4
- package/dist/chunks/monaco-setup-q4axkgj7.js +0 -4
- package/dist/chunks/notify-0xgtn8q1.js +0 -4
- package/dist/chunks/number-field-gw7sq8rn.js +0 -4
- package/dist/chunks/parse-897fvqah.js +0 -4
- package/dist/chunks/platform-v1qctbe6.js +0 -4
- package/dist/chunks/popover-8htra4er.js +0 -4
- package/dist/chunks/publish-panel-ym1fmgq5.js +0 -4
- package/dist/chunks/quick-search-a54e6t5n.js +0 -4
- package/dist/chunks/references-gmqp82fs.js +0 -4
- package/dist/chunks/right-panel-v7t9awbk.js +0 -4
- package/dist/chunks/section-registry-vhyf3zsr.js +0 -4
- package/dist/chunks/select-n3v7gwas.js +0 -4
- package/dist/chunks/split-pff8f3ze.js +0 -4
- package/dist/chunks/studio-0bhx5hz6.js +0 -5
- package/dist/chunks/studio-0k1ddnyy.js +0 -6
- package/dist/chunks/studio-1b04pd0j.js +0 -64
- package/dist/chunks/studio-4dwbj6gb.js +0 -5
- package/dist/chunks/studio-4tanh828.js +0 -5
- package/dist/chunks/studio-55h4mstj.js +0 -4
- package/dist/chunks/studio-5tnvjkz4.js +0 -5
- package/dist/chunks/studio-60dqgb0c.js +0 -5
- package/dist/chunks/studio-61dp09qg.js +0 -9
- package/dist/chunks/studio-63epcrj2.js +0 -5
- package/dist/chunks/studio-74k29dy9.js +0 -5
- package/dist/chunks/studio-7vg6jcd3.js +0 -5
- package/dist/chunks/studio-7zx31knw.js +0 -9
- package/dist/chunks/studio-8bxk97km.js +0 -5
- package/dist/chunks/studio-933e30n4.js +0 -5
- package/dist/chunks/studio-98wnwhbg.js +0 -5
- package/dist/chunks/studio-9mccjwjh.js +0 -14
- package/dist/chunks/studio-a2ke1e4t.js +0 -5
- package/dist/chunks/studio-e3a2a6v3.js +0 -4
- package/dist/chunks/studio-e81q1vb9.js +0 -5
- package/dist/chunks/studio-epgrmqqm.js +0 -5
- package/dist/chunks/studio-ery42sqr.js +0 -4
- package/dist/chunks/studio-g1shz58g.js +0 -5
- package/dist/chunks/studio-gf0fz03c.js +0 -5
- package/dist/chunks/studio-gjtpe62q.js +0 -6
- package/dist/chunks/studio-gkskhg7m.js +0 -5
- package/dist/chunks/studio-gx4dnjzd.js +0 -5
- package/dist/chunks/studio-j03zga3y.js +0 -9
- package/dist/chunks/studio-jhpxeckz.js +0 -5
- package/dist/chunks/studio-k01r7ykp.js +0 -5
- package/dist/chunks/studio-kk7h30ne.js +0 -7
- package/dist/chunks/studio-kt1zqney.js +0 -5
- package/dist/chunks/studio-m3cwhvye.js +0 -5
- package/dist/chunks/studio-mcayt6hz.js +0 -5
- package/dist/chunks/studio-myjcghv3.js +0 -5
- package/dist/chunks/studio-n8bxwc3y.js +0 -4
- package/dist/chunks/studio-ngm8gvpb.js +0 -5
- package/dist/chunks/studio-nj5a01jy.js +0 -928
- package/dist/chunks/studio-pcgz8heb.js +0 -5
- package/dist/chunks/studio-qcsq0t15.js +0 -5
- package/dist/chunks/studio-qkstvve9.js +0 -5
- package/dist/chunks/studio-qv1pwd3c.js +0 -5
- package/dist/chunks/studio-rc6dvxjb.js +0 -7
- package/dist/chunks/studio-s8dmmz66.js +0 -5
- package/dist/chunks/studio-sp5xzbj4.js +0 -6
- package/dist/chunks/studio-szsjbj0g.js +0 -5
- package/dist/chunks/studio-t1xzawhr.js +0 -16
- package/dist/chunks/studio-t6b6qe31.js +0 -5
- package/dist/chunks/studio-tdcprbqb.js +0 -5
- package/dist/chunks/studio-vyc0b4he.js +0 -10
- package/dist/chunks/studio-w0cgf6jg.js +0 -5
- package/dist/chunks/studio-w3hskzqk.js +0 -5
- package/dist/chunks/studio-xgrgcdyh.js +0 -9
- package/dist/chunks/studio-xz2yxfcb.js +0 -5
- package/dist/chunks/studio-y6n42tgs.js +0 -5
- package/dist/chunks/studio-yb560vxr.js +0 -5
- package/dist/chunks/studio-yn9f8vtx.js +0 -5
- package/dist/chunks/studio-yw05w8f0.js +0 -7
- package/dist/chunks/studio-z16sgavc.js +0 -5
- package/dist/chunks/studio-zyqn40w4.js +0 -5
- package/dist/chunks/swatch-group-8qh9a3bm.js +0 -4
- package/dist/chunks/tabs-jwthg40w.js +0 -4
- package/dist/chunks/textfield-spy3hc77.js +0 -4
- package/dist/chunks/toast-4d35zd64.js +0 -4
- package/dist/chunks/toast-host-8sjmfed3.js +0 -4
- package/dist/chunks/tooltip-fd6g9xy3.js +0 -4
- package/dist/chunks/tree-h19v1jfz.js +0 -4
- package/dist/chunks/workspace-zt81g1ms.js +0 -4
- package/dist/chunks/ws-client-n2bh4hkf.js +0 -4
|
@@ -11,15 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { BLESSED_GLOBALS, BLESSED_OPERATORS, PURE_METHOD_OPS } from "@jxsuite/runtime/expression";
|
|
14
|
-
import { catalog
|
|
15
|
-
import { isJsonObject, isNamedFormulaDef } from "@jxsuite/schema/guards";
|
|
14
|
+
import { catalog } from "@jxsuite/formulas";
|
|
15
|
+
import { isJsonObject, isNamedFormulaDef, isNonNullObject, isString } from "@jxsuite/schema/guards";
|
|
16
16
|
|
|
17
|
-
import type {
|
|
18
|
-
CemParameter,
|
|
19
|
-
JxExpressionNode,
|
|
20
|
-
JxExpressionOperand,
|
|
21
|
-
JxStateDefinition,
|
|
22
|
-
} from "@jxsuite/schema/types";
|
|
17
|
+
import type { CemParameter, JxExpressionNode, JxStateDefinition } from "@jxsuite/schema/types";
|
|
23
18
|
import type { JsonValue } from "../types";
|
|
24
19
|
|
|
25
20
|
export interface FormulaParameterInfo {
|
|
@@ -132,171 +127,174 @@ function aggregateMeta(op: string, description: string, withInitial: boolean): O
|
|
|
132
127
|
};
|
|
133
128
|
}
|
|
134
129
|
|
|
135
|
-
const OPERATOR_META
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
"!=="
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
"%"
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
"&&"
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"*"
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
"
|
|
165
|
-
"+"
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
"
|
|
171
|
-
"-"
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
"
|
|
179
|
-
"<"
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
"<="
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
"
|
|
190
|
-
"==="
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
">"
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
">="
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
"??"
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
{
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
"||"
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
{
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
{
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
130
|
+
const OPERATOR_META = new Map<string, OperatorMeta>(
|
|
131
|
+
Object.entries({
|
|
132
|
+
"!": {
|
|
133
|
+
description:
|
|
134
|
+
"Logical NOT operator (ECMA `!`): coerces the operand to boolean and negates it.",
|
|
135
|
+
group: "Unary",
|
|
136
|
+
insert: () => ({ operator: "!", target: null }),
|
|
137
|
+
parameters: [{ description: "Operand to negate", name: "target" }],
|
|
138
|
+
},
|
|
139
|
+
"!==": binaryMeta(
|
|
140
|
+
"Comparison",
|
|
141
|
+
"!==",
|
|
142
|
+
"Strict inequality operator (ECMA `!==`): true when the operands differ without coercion.",
|
|
143
|
+
),
|
|
144
|
+
"%": binaryMeta(
|
|
145
|
+
"Arithmetic",
|
|
146
|
+
"%",
|
|
147
|
+
"Remainder operator (ECMA `%`): remainder of dividing the left operand by the right.",
|
|
148
|
+
),
|
|
149
|
+
"&&": binaryMeta(
|
|
150
|
+
"Logical",
|
|
151
|
+
"&&",
|
|
152
|
+
"Logical AND operator (ECMA `&&`): yields the right operand when the left is truthy.",
|
|
153
|
+
),
|
|
154
|
+
"*": binaryMeta(
|
|
155
|
+
"Arithmetic",
|
|
156
|
+
"*",
|
|
157
|
+
"Multiplication operator (ECMA `*`): numeric product of the operands.",
|
|
158
|
+
),
|
|
159
|
+
"*=": assignMeta("*=", "Multiplication"),
|
|
160
|
+
"+": binaryMeta(
|
|
161
|
+
"Arithmetic",
|
|
162
|
+
"+",
|
|
163
|
+
"Addition operator (ECMA `+`): numeric addition, or string concatenation.",
|
|
164
|
+
),
|
|
165
|
+
"+=": assignMeta("+=", "Addition"),
|
|
166
|
+
"-": binaryMeta(
|
|
167
|
+
"Arithmetic",
|
|
168
|
+
"-",
|
|
169
|
+
"Subtraction operator (ECMA `-`); with no value operand it is unary negation.",
|
|
170
|
+
),
|
|
171
|
+
"-=": assignMeta("-=", "Subtraction"),
|
|
172
|
+
"/": binaryMeta("Arithmetic", "/", "Division operator (ECMA `/`): quotient of the operands."),
|
|
173
|
+
"/=": assignMeta("/=", "Division"),
|
|
174
|
+
"<": binaryMeta(
|
|
175
|
+
"Comparison",
|
|
176
|
+
"<",
|
|
177
|
+
"Less-than operator (ECMA `<`): relational comparison of the operands.",
|
|
178
|
+
),
|
|
179
|
+
"<=": binaryMeta(
|
|
180
|
+
"Comparison",
|
|
181
|
+
"<=",
|
|
182
|
+
"Less-than-or-equal operator (ECMA `<=`): relational comparison of the operands.",
|
|
183
|
+
),
|
|
184
|
+
"=": assignMeta("=", "Simple"),
|
|
185
|
+
"===": binaryMeta(
|
|
186
|
+
"Comparison",
|
|
187
|
+
"===",
|
|
188
|
+
"Strict equality operator (ECMA `===`): true when the operands are equal without coercion.",
|
|
189
|
+
),
|
|
190
|
+
">": binaryMeta(
|
|
191
|
+
"Comparison",
|
|
192
|
+
">",
|
|
193
|
+
"Greater-than operator (ECMA `>`): relational comparison of the operands.",
|
|
194
|
+
),
|
|
195
|
+
">=": binaryMeta(
|
|
196
|
+
"Comparison",
|
|
197
|
+
">=",
|
|
198
|
+
"Greater-than-or-equal operator (ECMA `>=`): relational comparison of the operands.",
|
|
199
|
+
),
|
|
200
|
+
"??": binaryMeta(
|
|
201
|
+
"Logical",
|
|
202
|
+
"??",
|
|
203
|
+
"Nullish coalescing operator (ECMA `??`): yields the right operand when the left is null or undefined.",
|
|
204
|
+
),
|
|
205
|
+
"?:": {
|
|
206
|
+
description:
|
|
207
|
+
"Conditional operator (ECMA `?:`): evaluates the test in target, yielding value when truthy, initial otherwise.",
|
|
208
|
+
group: "Conditional",
|
|
209
|
+
insert: () => ({ initial: null, operator: "?:", target: null, value: null }),
|
|
210
|
+
parameters: [
|
|
211
|
+
{ description: "Test condition", name: "target" },
|
|
212
|
+
{ description: "Result when the test is truthy", name: "value" },
|
|
213
|
+
{ description: "Result when the test is falsy", name: "initial" },
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
"||": binaryMeta(
|
|
217
|
+
"Logical",
|
|
218
|
+
"||",
|
|
219
|
+
"Logical OR operator (ECMA `||`): yields the right operand when the left is falsy.",
|
|
220
|
+
),
|
|
221
|
+
call: {
|
|
222
|
+
description:
|
|
223
|
+
"Function.prototype.call (ECMA): invokes a named formula (#/state/…) or blessed pure global (window#/…) with positional arguments.",
|
|
224
|
+
group: "Function",
|
|
225
|
+
insert: () => ({ operator: "call", target: { $ref: "" }, value: [] }),
|
|
226
|
+
parameters: [
|
|
227
|
+
{ description: "Callee pointer: #/state/<formula> or window#/<global>", name: "target" },
|
|
228
|
+
{ description: "Positional argument list", name: "value" },
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
filter: aggregateMeta(
|
|
232
|
+
"filter",
|
|
233
|
+
"Array.prototype.filter (ECMA): keeps elements whose per-item expression is truthy.",
|
|
234
|
+
false,
|
|
235
|
+
),
|
|
236
|
+
map: aggregateMeta(
|
|
237
|
+
"map",
|
|
238
|
+
"Array.prototype.map (ECMA): transforms each element via the per-item expression.",
|
|
239
|
+
false,
|
|
240
|
+
),
|
|
241
|
+
pop: arrayMeta(
|
|
242
|
+
"pop",
|
|
243
|
+
"Array.prototype.pop (ECMA): removes and returns the last element of the target array.",
|
|
244
|
+
false,
|
|
245
|
+
),
|
|
246
|
+
push: arrayMeta(
|
|
247
|
+
"push",
|
|
248
|
+
"Array.prototype.push (ECMA): appends the value to the target array.",
|
|
249
|
+
true,
|
|
250
|
+
),
|
|
251
|
+
reduce: aggregateMeta(
|
|
252
|
+
"reduce",
|
|
253
|
+
"Array.prototype.reduce (ECMA): folds the array into an accumulator via the per-item expression.",
|
|
254
|
+
true,
|
|
255
|
+
),
|
|
256
|
+
shift: arrayMeta(
|
|
257
|
+
"shift",
|
|
258
|
+
"Array.prototype.shift (ECMA): removes and returns the first element of the target array.",
|
|
259
|
+
false,
|
|
260
|
+
),
|
|
261
|
+
splice: {
|
|
262
|
+
description:
|
|
263
|
+
"Array.prototype.splice (ECMA): removes and/or inserts elements at an index of the target array.",
|
|
264
|
+
group: "Array methods",
|
|
265
|
+
insert: () => ({ operator: "splice", target: { $ref: "" }, value: [null] }),
|
|
266
|
+
parameters: [
|
|
267
|
+
REF_TARGET,
|
|
268
|
+
{ description: "Arguments: start, deleteCount, items…", name: "value" },
|
|
269
|
+
],
|
|
270
|
+
},
|
|
271
|
+
switch: {
|
|
272
|
+
description:
|
|
273
|
+
"Switch selection (ECMA `switch` semantics): matches the target's string form against case keys, falling back to default.",
|
|
274
|
+
group: "Conditional",
|
|
275
|
+
insert: () => ({ cases: {}, default: null, operator: "switch", target: null }),
|
|
276
|
+
parameters: [
|
|
277
|
+
{ description: "Discriminant value", name: "target" },
|
|
278
|
+
{ description: "Matched value → result operand map", name: "cases" },
|
|
279
|
+
{ description: "Result when no case matches", name: "default" },
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
unshift: arrayMeta(
|
|
283
|
+
"unshift",
|
|
284
|
+
"Array.prototype.unshift (ECMA): prepends the value to the target array.",
|
|
285
|
+
true,
|
|
286
|
+
),
|
|
287
|
+
}),
|
|
288
|
+
);
|
|
291
289
|
|
|
292
290
|
/** Catalog entries for every blessed operator, in `BLESSED_OPERATORS` iteration order. */
|
|
293
291
|
export function operatorEntries(): FormulaCatalogEntry[] {
|
|
294
292
|
const out: FormulaCatalogEntry[] = [];
|
|
295
293
|
for (const op of BLESSED_OPERATORS) {
|
|
296
|
-
//
|
|
297
|
-
//
|
|
298
|
-
//
|
|
299
|
-
const meta =
|
|
294
|
+
// A Map lookup is own-entries only: a bare object index would resolve inherited
|
|
295
|
+
// Object.prototype members for ops like "toLocaleString", yielding a bogus meta whose
|
|
296
|
+
// Undefined group/description breaks the palette's substring filter.
|
|
297
|
+
const meta = OPERATOR_META.get(op);
|
|
300
298
|
if (meta) {
|
|
301
299
|
out.push({
|
|
302
300
|
description: meta.description,
|
|
@@ -317,39 +315,41 @@ export function operatorEntries(): FormulaCatalogEntry[] {
|
|
|
317
315
|
// ─── Pure standard-library methods (derived, spec.md §19.4d) ────────────────
|
|
318
316
|
|
|
319
317
|
/** Prototype owner per pure method — drives grouping and the derived description. */
|
|
320
|
-
const PURE_METHOD_PROTO
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
318
|
+
const PURE_METHOD_PROTO = new Map<string, string>(
|
|
319
|
+
Object.entries({
|
|
320
|
+
at: "Array/String",
|
|
321
|
+
charAt: "String",
|
|
322
|
+
concat: "Array/String",
|
|
323
|
+
endsWith: "String",
|
|
324
|
+
flat: "Array",
|
|
325
|
+
includes: "Array/String",
|
|
326
|
+
indexOf: "Array/String",
|
|
327
|
+
join: "Array",
|
|
328
|
+
lastIndexOf: "Array/String",
|
|
329
|
+
normalize: "String",
|
|
330
|
+
padEnd: "String",
|
|
331
|
+
padStart: "String",
|
|
332
|
+
repeat: "String",
|
|
333
|
+
replaceAll: "String",
|
|
334
|
+
slice: "Array/String",
|
|
335
|
+
split: "String",
|
|
336
|
+
startsWith: "String",
|
|
337
|
+
toFixed: "Number",
|
|
338
|
+
toLocaleLowerCase: "String",
|
|
339
|
+
toLocaleString: "Number",
|
|
340
|
+
toLocaleUpperCase: "String",
|
|
341
|
+
toLowerCase: "String",
|
|
342
|
+
toPrecision: "Number",
|
|
343
|
+
toReversed: "Array",
|
|
344
|
+
toSorted: "Array",
|
|
345
|
+
toSpliced: "Array",
|
|
346
|
+
toUpperCase: "String",
|
|
347
|
+
trim: "String",
|
|
348
|
+
trimEnd: "String",
|
|
349
|
+
trimStart: "String",
|
|
350
|
+
with: "Array",
|
|
351
|
+
}),
|
|
352
|
+
);
|
|
353
353
|
|
|
354
354
|
/** Methods that take no argument — their insert seed omits `value`. */
|
|
355
355
|
export const ZERO_ARG_METHODS = new Set([
|
|
@@ -369,7 +369,7 @@ export const ZERO_ARG_METHODS = new Set([
|
|
|
369
369
|
|
|
370
370
|
/** The derived catalog entry for one pure method operator (spec.md §19.4d). */
|
|
371
371
|
function pureMethodEntry(op: string): FormulaCatalogEntry {
|
|
372
|
-
const proto = PURE_METHOD_PROTO
|
|
372
|
+
const proto = PURE_METHOD_PROTO.get(op) ?? "Standard library";
|
|
373
373
|
return {
|
|
374
374
|
description: `${proto}.prototype.${op} (ECMA) — pure: never mutates the receiver. Receiver in target; argument (or argument list) in value.`,
|
|
375
375
|
group: `${proto} methods`,
|
|
@@ -390,14 +390,16 @@ function pureMethodEntry(op: string): FormulaCatalogEntry {
|
|
|
390
390
|
* Synthetic blessed helpers wrap constructor-shaped standard-library APIs (spec.md §19.4c); their
|
|
391
391
|
* catalog descriptions name the wrapped API rather than claiming a literal global exists.
|
|
392
392
|
*/
|
|
393
|
-
const HELPER_DESCRIPTIONS
|
|
394
|
-
|
|
395
|
-
"Intl
|
|
396
|
-
|
|
397
|
-
"Intl
|
|
398
|
-
|
|
399
|
-
"Intl
|
|
400
|
-
|
|
393
|
+
const HELPER_DESCRIPTIONS = new Map<string, string>(
|
|
394
|
+
Object.entries({
|
|
395
|
+
"Intl/formatDate":
|
|
396
|
+
"Intl.formatDate(value, locale?, options?) — blessed helper wrapping new Intl.DateTimeFormat(locale, options).format(new Date(value)).",
|
|
397
|
+
"Intl/formatNumber":
|
|
398
|
+
"Intl.formatNumber(value, locale?, options?) — blessed helper wrapping new Intl.NumberFormat(locale, options).format(value).",
|
|
399
|
+
"Intl/formatRelativeTime":
|
|
400
|
+
"Intl.formatRelativeTime(value, unit, locale?, options?) — blessed helper wrapping new Intl.RelativeTimeFormat(locale, options).format(value, unit).",
|
|
401
|
+
}),
|
|
402
|
+
);
|
|
401
403
|
|
|
402
404
|
/** Catalog entries derived from `BLESSED_GLOBALS`; grouped by namespace (bare → globalThis). */
|
|
403
405
|
export function globalEntries(): FormulaCatalogEntry[] {
|
|
@@ -408,7 +410,7 @@ export function globalEntries(): FormulaCatalogEntry[] {
|
|
|
408
410
|
const label = name.replaceAll("/", ".");
|
|
409
411
|
out.push({
|
|
410
412
|
description:
|
|
411
|
-
HELPER_DESCRIPTIONS
|
|
413
|
+
HELPER_DESCRIPTIONS.get(name) ??
|
|
412
414
|
`${label} — blessed pure global from the ECMAScript standard library, invoked via the call operator (window#/${name}).`,
|
|
413
415
|
group,
|
|
414
416
|
insert: () => ({ operator: "call", target: { $ref: `window#/${name}` }, value: [] }),
|
|
@@ -425,32 +427,43 @@ export function globalEntries(): FormulaCatalogEntry[] {
|
|
|
425
427
|
|
|
426
428
|
/** Normalize a `(string | CemParameter)` parameter declaration to display metadata. */
|
|
427
429
|
function toParameterInfo(p: string | CemParameter): FormulaParameterInfo | null {
|
|
428
|
-
if (
|
|
430
|
+
if (isString(p)) {
|
|
429
431
|
return p ? { name: p } : null;
|
|
430
432
|
}
|
|
431
|
-
|
|
433
|
+
/* Document state is checked here rather than trusted: `isNamedFormulaDef` only proved an array.
|
|
434
|
+
An array entry has no string `name`, so `isNonNullObject` refuses exactly what `isJsonObject`
|
|
435
|
+
did, without intersecting away the optional members' `undefined`. */
|
|
436
|
+
if (!isNonNullObject(p) || !isString(p.name) || !p.name) {
|
|
432
437
|
return null;
|
|
433
438
|
}
|
|
434
439
|
const info: FormulaParameterInfo = { name: p.name };
|
|
435
440
|
const { type } = p;
|
|
436
|
-
if (
|
|
441
|
+
if (isString(type)) {
|
|
437
442
|
info.type = type;
|
|
438
443
|
} else if (isJsonObject(type)) {
|
|
439
|
-
if (
|
|
444
|
+
if (isString(type.text)) {
|
|
440
445
|
info.type = type.text;
|
|
441
|
-
} else if (
|
|
446
|
+
} else if (isString(type.type)) {
|
|
442
447
|
info.type = type.type;
|
|
443
448
|
}
|
|
444
449
|
}
|
|
445
|
-
if (
|
|
450
|
+
if (isString(p.description)) {
|
|
446
451
|
info.description = p.description;
|
|
447
452
|
}
|
|
448
|
-
if (
|
|
449
|
-
info.default = p.default
|
|
453
|
+
if (p.default !== undefined) {
|
|
454
|
+
info.default = p.default;
|
|
450
455
|
}
|
|
451
456
|
return info;
|
|
452
457
|
}
|
|
453
458
|
|
|
459
|
+
/** Display metadata for each well-formed parameter declaration, in declaration order. */
|
|
460
|
+
function parameterInfos(declared: readonly (string | CemParameter)[]): FormulaParameterInfo[] {
|
|
461
|
+
return declared.flatMap((p) => {
|
|
462
|
+
const info = toParameterInfo(p);
|
|
463
|
+
return info === null ? [] : [info];
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
|
|
454
467
|
/** Catalog entries for the document's named formulas (parameterized `$expression` entries). */
|
|
455
468
|
export function namedFormulaEntries(
|
|
456
469
|
state?: Record<string, JxStateDefinition> | null,
|
|
@@ -460,13 +473,11 @@ export function namedFormulaEntries(
|
|
|
460
473
|
if (!isNamedFormulaDef(def)) {
|
|
461
474
|
continue;
|
|
462
475
|
}
|
|
463
|
-
const parameters = (def.parameters
|
|
464
|
-
.map((p) => toParameterInfo(p))
|
|
465
|
-
.filter((p): p is FormulaParameterInfo => p !== null);
|
|
476
|
+
const parameters = parameterInfos(def.parameters);
|
|
466
477
|
const description =
|
|
467
|
-
|
|
478
|
+
isString(def.description) && def.description
|
|
468
479
|
? def.description
|
|
469
|
-
:
|
|
480
|
+
: isString(def.$title) && def.$title
|
|
470
481
|
? def.$title
|
|
471
482
|
: `Named formula "${key}" from document state.`;
|
|
472
483
|
out.push({
|
|
@@ -475,7 +486,7 @@ export function namedFormulaEntries(
|
|
|
475
486
|
insert: () => ({
|
|
476
487
|
operator: "call",
|
|
477
488
|
target: { $ref: `#/state/${key}` },
|
|
478
|
-
value: parameters.map((p) =>
|
|
489
|
+
value: parameters.map((p) => p.default ?? null),
|
|
479
490
|
}),
|
|
480
491
|
kind: "formula",
|
|
481
492
|
label: key,
|
|
@@ -499,13 +510,11 @@ export function packagedFormulaEntries(
|
|
|
499
510
|
state?: Record<string, JxStateDefinition> | null,
|
|
500
511
|
): FormulaCatalogEntry[] {
|
|
501
512
|
const out: FormulaCatalogEntry[] = [];
|
|
502
|
-
for (const formula of
|
|
513
|
+
for (const formula of catalog) {
|
|
503
514
|
if (state?.[formula.name]) {
|
|
504
515
|
continue;
|
|
505
516
|
}
|
|
506
|
-
const parameters = formula.parameters
|
|
507
|
-
.map((p) => toParameterInfo(p))
|
|
508
|
-
.filter((p): p is FormulaParameterInfo => p !== null);
|
|
517
|
+
const parameters = parameterInfos(formula.parameters);
|
|
509
518
|
out.push({
|
|
510
519
|
description: formula.description,
|
|
511
520
|
ensure: {
|
|
@@ -520,7 +529,7 @@ export function packagedFormulaEntries(
|
|
|
520
529
|
insert: () => ({
|
|
521
530
|
operator: "call",
|
|
522
531
|
target: { $ref: `#/state/${formula.name}` },
|
|
523
|
-
value: parameters.map((p) =>
|
|
532
|
+
value: parameters.map((p) => p.default ?? null),
|
|
524
533
|
}),
|
|
525
534
|
kind: "formula",
|
|
526
535
|
label: formula.name,
|