@jxsuite/studio 4.0.0 → 5.0.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/README.md +1 -1
- package/data/elements-meta.json +5 -15
- package/data/html-meta.json +51 -6
- package/dist/chunks/{2020-xp8vnwma.js → 2020-g79n01v9.js} +14 -14
- package/dist/chunks/action-group-sp6tna8v.js +118 -0
- package/dist/chunks/adapter-nj7tnjfn.js +13 -0
- package/dist/chunks/cf-account-picker-fyf63pmy.js +495 -0
- package/dist/chunks/cf-settings-71bv5zn9.js +20 -0
- package/dist/chunks/color-area-v17df7b8.js +154 -0
- package/dist/chunks/color-field-anwybnkn.js +208 -0
- package/dist/chunks/color-slider-44ez96fc.js +79 -0
- package/dist/chunks/color-xgg3kfw7.js +35 -0
- package/dist/chunks/combobox-5e7jev23.js +236 -0
- package/dist/chunks/components-2w1f35qs.js +18 -0
- package/dist/chunks/content-source-3wqeas45.js +46 -0
- package/dist/chunks/convert-to-repeater-d0cgnb6d.js +639 -0
- package/dist/chunks/dialog-s890b918.js +85 -0
- package/dist/chunks/editor-3qhbg51x.js +35 -0
- package/dist/chunks/entry-commands-d6g50j7s.js +42 -0
- package/dist/chunks/extension-sections-fy7q4fe9.js +651 -0
- package/dist/chunks/file-ops-3btj6st0.js +47 -0
- package/dist/chunks/files-ef8fgs3w.js +72 -0
- package/dist/chunks/format-host-3c33nwr8.js +40 -0
- package/dist/chunks/fs-events-13tj6sex.js +18 -0
- package/dist/chunks/git-panel-4wp2rn9b.js +49 -0
- package/dist/chunks/icons-yy10wk9r.js +402 -0
- package/dist/chunks/iframe-entry-15g3n6xv.js +114 -0
- package/dist/chunks/iframe-entry-b27vq81n.js +203 -0
- package/dist/chunks/iframe-entry-nbyxee1y.js +154 -0
- package/dist/chunks/iframe-host-jgesd924.js +115 -0
- package/dist/chunks/{index-nj44jpzj.js → index-mdmyx6s2.js} +11 -11
- package/dist/chunks/index-n4j7qxyr.js +109 -0
- package/dist/chunks/{javascript-q8kpmfah.js → javascript-xvrfrpkb.js} +8 -9
- package/dist/chunks/{jsonMode-dkr040ga.js → jsonMode-tyx2kj6p.js} +526 -527
- package/dist/chunks/jx-validate-j0wxk72w.js +15 -0
- package/dist/chunks/layers-1nq5evsh.js +29 -0
- package/dist/chunks/layers-panel-ar2gh90g.js +40 -0
- package/dist/chunks/listbox-6v2ac08j.js +44 -0
- package/dist/chunks/lit-html-m244w9nh.js +17 -0
- package/dist/chunks/media-picker-2qbetq73.js +33 -0
- package/dist/chunks/menu-q99sy9rf.js +285 -0
- package/dist/chunks/menu-rf7n72mf.js +14 -0
- package/dist/chunks/{monaco-binding-rj6xpx9y.js → monaco-binding-sw6en4dw.js} +12 -15
- package/dist/chunks/monaco-buffer-bhy3hb6m.js +24 -0
- package/dist/chunks/{monaco-setup-rws7k4br.js → monaco-setup-8r62fj6y.js} +27 -37
- package/dist/chunks/notify-628t0anh.js +21 -0
- package/dist/chunks/number-field-5cndyft8.js +72 -0
- package/dist/chunks/parse-0zx14y15.js +10 -0
- package/dist/chunks/platform-ts9cg1a4.js +15 -0
- package/dist/chunks/popover-47z3ytva.js +25 -0
- package/dist/chunks/publish-panel-98f7sr3g.js +27 -0
- package/dist/chunks/quick-search-srzz83k2.js +45 -0
- package/dist/chunks/references-n553f0e1.js +26 -0
- package/dist/chunks/right-panel-rrgx2dn3.js +45 -0
- package/dist/chunks/section-registry-5pq32t0q.js +25 -0
- package/dist/chunks/select-2r16ez41.js +49 -0
- package/dist/chunks/split-g7nm1rgb.js +191 -0
- package/dist/chunks/studio-0hqbpbd0.js +62 -0
- package/dist/chunks/studio-18avnhjp.js +2430 -0
- package/dist/chunks/{studio-kryvsw6j.js → studio-1k325pwf.js} +48 -48
- package/dist/chunks/{studio-hbtp0eh1.js → studio-25hkdrkw.js} +356 -85
- package/dist/chunks/studio-26d7myd1.js +258 -0
- package/dist/chunks/{studio-p8j86wag.js → studio-38emantv.js} +22 -5
- package/dist/chunks/studio-3gxv60tn.js +422 -0
- package/dist/chunks/{studio-8swrjbny.js → studio-3hxkd92t.js} +275 -163
- package/dist/chunks/studio-4m0haseg.js +185 -0
- package/dist/chunks/{studio-ynxwkrzd.js → studio-4wbb9ct0.js} +1953 -1785
- package/dist/chunks/{studio-gv8vvshc.js → studio-5523bpzt.js} +11 -11
- package/dist/chunks/{studio-5q69gfag.js → studio-57mf66w2.js} +1753 -2484
- package/dist/chunks/studio-5jy81t3s.js +17463 -0
- package/dist/chunks/studio-5rt7sqa0.js +1168 -0
- package/dist/chunks/studio-5te5tqng.js +81 -0
- package/dist/chunks/{studio-p4ngc046.js → studio-6ewqv390.js} +9 -9
- package/dist/chunks/{studio-9ab8gqsm.js → studio-6nzaktvy.js} +7 -7
- package/dist/chunks/studio-6xa21ej9.js +28 -0
- package/dist/chunks/{studio-5ehhackm.js → studio-727xh0e3.js} +19 -19
- package/dist/chunks/{studio-eenfkt4e.js → studio-79y5sz51.js} +52 -38
- package/dist/chunks/{studio-4q0wznzf.js → studio-7e11jpa9.js} +461 -145
- package/dist/chunks/{studio-q7v10cg2.js → studio-7r42c6ca.js} +17 -7
- package/dist/chunks/studio-7xptrg0j.js +954 -0
- package/dist/chunks/{studio-cft9r4r7.js → studio-81390n6f.js} +22 -22
- package/dist/chunks/{studio-q43a5y9h.js → studio-8jn5yhyn.js} +16 -16
- package/dist/chunks/studio-8qtrpzr3.js +839 -0
- package/dist/chunks/{studio-dg7zyt5x.js → studio-98b3z07n.js} +1 -1
- package/dist/chunks/studio-9xxz1q69.js +1356 -0
- package/dist/chunks/studio-akbww0j5.js +13615 -0
- package/dist/chunks/studio-arfpe389.js +195 -0
- package/dist/chunks/{studio-2zkz8evn.js → studio-az3zd49t.js} +473 -281
- package/dist/chunks/studio-cpvb2ed1.js +1171 -0
- package/dist/chunks/{studio-9r6j5ev1.js → studio-d0300636.js} +5078 -19
- package/dist/chunks/{studio-bgxt93ga.js → studio-d055c37e.js} +13 -13
- package/dist/chunks/studio-d1ja2x9r.js +362 -0
- package/dist/chunks/{studio-b9b6t1dg.js → studio-e1f24eff.js} +5664 -5666
- package/dist/chunks/{studio-4pqqxbrt.js → studio-em9nw8eh.js} +301 -112
- package/dist/chunks/studio-erdatzvp.js +1190 -0
- package/dist/chunks/{studio-g1wdche0.js → studio-esrxgwh6.js} +80 -80
- package/dist/chunks/studio-fabxk6r9.js +2811 -0
- package/dist/chunks/{studio-3n4ndrzh.js → studio-h4nvnjvz.js} +303 -303
- package/dist/chunks/studio-hhvs4sdg.js +195 -0
- package/dist/chunks/{studio-68n67094.js → studio-kcgff4r0.js} +15 -18
- package/dist/chunks/{studio-685s0ytq.js → studio-nqgawfks.js} +572 -572
- package/dist/chunks/{studio-xrapxwwc.js → studio-p1dw8wfw.js} +55 -29
- package/dist/chunks/studio-pm6hgy7r.js +4763 -0
- package/dist/chunks/studio-q0a3yk4n.js +33 -0
- package/dist/chunks/{studio-wcy8trfx.js → studio-q3x06vmj.js} +23 -22
- package/dist/chunks/studio-qahxvnan.js +111 -0
- package/dist/chunks/{studio-53n8bp04.js → studio-r6xmmtfh.js} +1 -1
- package/dist/chunks/{studio-kjjsjak4.js → studio-rkstz940.js} +3661 -6136
- package/dist/chunks/{studio-tvgyw9xw.js → studio-rnyf3f8e.js} +83 -250
- package/dist/chunks/studio-rpyah2ew.js +2805 -0
- package/dist/chunks/studio-rs76k67r.js +12 -0
- package/dist/chunks/{studio-yxrkyv8a.js → studio-s6z853aq.js} +12108 -11766
- package/dist/chunks/{studio-sf7zjgv1.js → studio-sgdc5pfc.js} +8 -8
- package/dist/chunks/studio-tb3ev01j.js +763 -0
- package/dist/chunks/{studio-t5wqwzdh.js → studio-tjjk7jvk.js} +1 -1
- package/dist/chunks/studio-vhv5tgxm.js +51 -0
- package/dist/chunks/{studio-htsf0w6m.js → studio-vz68yn9e.js} +31 -154
- package/dist/chunks/studio-wqpngpsk.js +174 -0
- package/dist/chunks/{studio-eesa1myv.js → studio-x3rty6tr.js} +58 -58
- package/dist/chunks/studio-xsykpvsh.js +8448 -0
- package/dist/chunks/{studio-92ab2jqe.js → studio-y9zedyjn.js} +14 -14
- package/dist/chunks/studio-yxa81f45.js +12 -0
- package/dist/chunks/swatch-group-t0n6h2rn.js +139 -0
- package/dist/chunks/tabs-wbp1cdws.js +156 -0
- package/dist/chunks/textfield-abk6qyee.js +73 -0
- package/dist/chunks/toast-780pvfbv.js +27 -0
- package/dist/chunks/toast-host-3sqv46sn.js +116 -0
- package/dist/chunks/toolbar-xbh5bhtr.js +194 -0
- package/dist/chunks/tooltip-eptb614w.js +369 -0
- package/dist/chunks/tree-a73p0pqm.js +367 -0
- package/dist/chunks/{tsMode-76kr53q0.js → tsMode-jy4m86rv.js} +83 -85
- package/dist/chunks/workspace-wrew8zk4.js +69 -0
- package/dist/chunks/{ws-client-6shc5rze.js → ws-client-ny4zc51r.js} +20 -22
- package/dist/iframe-entry.js +1812 -698
- package/dist/manifest.json +7 -0
- package/dist/studio.js +52900 -36573
- package/dist/workers/editor.worker.js +1040 -1085
- package/dist/workers/json.worker.js +1946 -1991
- package/dist/workers/ts.worker.js +4960 -5005
- package/favicon.ico +0 -0
- package/index.html +2 -0
- package/package.json +22 -55
- package/src/about/about-modal.ts +73 -123
- package/src/browse/library-commands.ts +20 -49
- package/src/browse/library-layouts.ts +87 -218
- package/src/browse/library-pane.ts +406 -438
- package/src/canvas/canvas-helpers.ts +0 -49
- package/src/canvas/canvas-live-render.ts +25 -2
- package/src/canvas/canvas-render.ts +666 -231
- package/src/canvas/canvas-surface.ts +0 -1
- package/src/canvas/canvas-utils.ts +310 -117
- package/src/canvas/dialog-path.ts +76 -0
- package/src/canvas/dialog-state.ts +67 -0
- package/src/canvas/diff-marks.ts +252 -0
- package/src/canvas/diff-toolbar.ts +349 -0
- package/src/canvas/diff-view.ts +123 -0
- package/src/canvas/edit-width-drag.ts +187 -0
- package/src/canvas/edit-width.ts +150 -0
- package/src/canvas/iframe-entry.ts +125 -8
- package/src/canvas/iframe-host.ts +271 -15
- package/src/canvas/iframe-interaction.ts +133 -13
- package/src/canvas/iframe-patch.ts +7 -1
- package/src/canvas/iframe-position.ts +5 -6
- package/src/canvas/iframe-protocol.ts +106 -5
- package/src/canvas/iframe-render.ts +373 -5
- package/src/canvas/iframe-slash.ts +2 -2
- package/src/canvas/iframe-subtree.ts +5 -8
- package/src/canvas/path-mapping.ts +25 -3
- package/src/canvas/popover-path.ts +106 -0
- package/src/canvas/popover-state.ts +155 -0
- package/src/canvas/surface-registry.ts +21 -10
- package/src/collab/presence-chips.ts +51 -73
- package/src/commands/app-commands.ts +10 -0
- package/src/commands/budget.ts +12 -0
- package/src/commands/command-args.ts +369 -6
- package/src/commands/defaults.ts +44 -14
- package/src/commands/live-context.ts +11 -5
- package/src/commands/reference.ts +12 -2
- package/src/commands/registry.ts +165 -8
- package/src/content/entry-commands.ts +16 -23
- package/src/content/entry-editor.ts +144 -101
- package/src/editor/canvas-slash-bridge.ts +2 -2
- package/src/editor/context-menu.ts +49 -200
- package/src/editor/convert-to-component.ts +42 -82
- package/src/editor/convert-to-repeater.ts +132 -173
- package/src/editor/inline-edit.ts +11 -0
- package/src/editor/shortcuts.ts +65 -26
- package/src/editor/slash-menu.ts +150 -157
- package/src/files/file-ops.ts +117 -11
- package/src/files/files.ts +949 -664
- package/src/files/json-layout.ts +474 -0
- package/src/files/media-paths.ts +13 -42
- package/src/files/media-usage.ts +41 -131
- package/src/files/serialize-document.ts +8 -1
- package/src/format/convert-file.ts +16 -10
- package/src/format/format-host.ts +50 -1
- package/src/github/github-auth.ts +71 -29
- package/src/github/github-publish.ts +57 -65
- package/src/grid/cell-editors.ts +46 -4
- package/src/grid/cell-popovers.ts +65 -62
- package/src/grid/grid-open.ts +86 -64
- package/src/grid/grid-panel.ts +390 -469
- package/src/grid/redirects-grid.ts +40 -44
- package/src/hosting/document.ts +2 -0
- package/src/hosting/layout.ts +10 -0
- package/src/i18n/i18n-commands.ts +127 -62
- package/src/media/media-pane.ts +83 -133
- package/src/new-project/add-repo-modal.ts +125 -176
- package/src/new-project/import-tab.ts +201 -250
- package/src/new-project/location-fields.ts +101 -165
- package/src/new-project/new-project-modal.ts +376 -367
- package/src/packages/jxsuite-update.ts +76 -18
- package/src/panels/activity-panel.ts +137 -104
- package/src/panels/ai-chat/chat-markdown.ts +15 -13
- package/src/panels/ai-chat/chat-view.ts +307 -472
- package/src/panels/ai-chat/composer.ts +175 -153
- package/src/panels/ai-chat/sessions-view.ts +31 -62
- package/src/panels/ai-panel.ts +210 -185
- package/src/panels/block-action-bar.ts +437 -643
- package/src/panels/bottom-dock.ts +112 -47
- package/src/panels/chat-panel.ts +19 -14
- package/src/panels/data-explorer.ts +141 -102
- package/src/panels/data-grid.ts +183 -150
- package/src/panels/dnd.ts +75 -20
- package/src/panels/editors.ts +26 -19
- package/src/panels/elements-panel.ts +243 -186
- package/src/panels/empty-state.ts +26 -42
- package/src/panels/events-panel.ts +950 -729
- package/src/panels/formula-workspace.ts +434 -207
- package/src/panels/frontmatter-fields.ts +185 -153
- package/src/panels/frontmatter-panel.ts +411 -187
- package/src/panels/git-diff-open.ts +148 -0
- package/src/panels/git-panel.ts +679 -605
- package/src/panels/head-panel.ts +617 -435
- package/src/panels/i18n-panel.ts +153 -133
- package/src/panels/imports-panel.ts +388 -414
- package/src/panels/jump-bar.ts +174 -147
- package/src/panels/layers-panel.ts +785 -671
- package/src/panels/left-panel.ts +166 -94
- package/src/panels/navigator-panels.ts +1 -1
- package/src/panels/pane-context.ts +529 -677
- package/src/panels/pane-grid.ts +265 -241
- package/src/panels/panel-registry.ts +15 -4
- package/src/panels/problems-panel.ts +177 -99
- package/src/panels/properties-panel.ts +1525 -966
- package/src/panels/provenance.ts +31 -113
- package/src/panels/quick-search.ts +217 -172
- package/src/panels/right-panel.ts +135 -169
- package/src/panels/seo-modal.ts +346 -167
- package/src/panels/settings-menu.ts +109 -646
- package/src/panels/settings-pane.ts +102 -86
- package/src/panels/signals-panel.ts +1318 -1172
- package/src/panels/statement-editor.ts +556 -428
- package/src/panels/style-panel.ts +1367 -630
- package/src/panels/style-utils.ts +36 -32
- package/src/panels/stylebook-doc.ts +30 -73
- package/src/panels/stylebook-layers-panel.ts +202 -109
- package/src/panels/stylebook-panel.ts +124 -88
- package/src/panels/tab-strip.ts +385 -287
- package/src/platforms/cloud.ts +347 -86
- package/src/platforms/devserver.ts +13 -0
- package/src/publish/deploy-checklist.ts +124 -78
- package/src/publish/publish-commands.ts +4 -12
- package/src/publish/publish-panel.ts +165 -299
- package/src/services/a11y-report.ts +100 -43
- package/src/services/ai-command-tools.ts +468 -0
- package/src/services/ai-import-tools.ts +50 -12
- package/src/services/ai-models.ts +108 -1
- package/src/services/ai-session-store.ts +6 -0
- package/src/services/ai-system-prompt.ts +110 -18
- package/src/services/ai-tools.ts +28 -143
- package/src/services/ai-write-report.ts +174 -0
- package/src/services/context-manager.ts +12 -1
- package/src/services/document-assistant.ts +50 -2
- package/src/services/idle.ts +16 -14
- package/src/services/live-surfaces.ts +237 -0
- package/src/services/model-uri.ts +75 -0
- package/src/services/notify.ts +63 -6
- package/src/services/popover-report.ts +325 -0
- package/src/services/surface-registry.ts +56 -0
- package/src/services/tool-executor.ts +17 -0
- package/src/settings/contexts-section.ts +301 -299
- package/src/settings/contributed-section.ts +361 -222
- package/src/settings/css-vars-editor.ts +320 -325
- package/src/settings/defs-editor.ts +572 -535
- package/src/settings/dependencies-editor.ts +79 -107
- package/src/settings/extension-commands.ts +379 -0
- package/src/settings/extension-rows.ts +113 -0
- package/src/settings/extensions-section.ts +287 -0
- package/src/settings/general-settings.ts +130 -181
- package/src/settings/head-editor.ts +10 -305
- package/src/settings/locales-section.ts +146 -196
- package/src/settings/preferences-accounts.ts +193 -12
- package/src/settings/preferences-dialog.ts +384 -307
- package/src/settings/project-sections.ts +108 -181
- package/src/settings/schema-field-ui.ts +11 -399
- package/src/settings/section-registry.ts +8 -1
- package/src/settings/settings-document.ts +31 -29
- package/src/shell/tree.ts +42 -87
- package/src/shell.ts +48 -36
- package/src/studio.ts +90 -67
- package/src/style/token-ref.ts +0 -39
- package/src/surfaces/about.json +263 -0
- package/src/surfaces/about.ts +163 -0
- package/src/surfaces/add-repo.json +486 -0
- package/src/surfaces/add-repo.ts +236 -0
- package/src/surfaces/ai-chat.json +2185 -0
- package/src/surfaces/ai-chat.ts +549 -0
- package/src/surfaces/ai-credentials-form.json +332 -0
- package/src/surfaces/ai-credentials-form.ts +151 -0
- package/src/surfaces/ai-managed-connect.json +108 -0
- package/src/surfaces/ai-managed-connect.ts +123 -0
- package/src/surfaces/ai-model-picker.json +114 -0
- package/src/surfaces/ai-model-picker.ts +139 -0
- package/src/surfaces/block-action-bar.json +640 -0
- package/src/surfaces/block-action-bar.ts +368 -0
- package/src/surfaces/bottom-dock.json +154 -0
- package/src/surfaces/bottom-dock.ts +125 -0
- package/src/surfaces/canvas-stage.json +444 -0
- package/src/surfaces/canvas-stage.ts +253 -0
- package/src/surfaces/cf-account-picker.json +300 -0
- package/src/surfaces/cf-account-picker.ts +214 -0
- package/src/surfaces/commandbar.json +984 -0
- package/src/{panels/toolbar.ts → surfaces/commandbar.ts} +414 -389
- package/src/surfaces/convert-repeater.json +309 -0
- package/src/surfaces/convert-repeater.ts +276 -0
- package/src/surfaces/data-actions.json +157 -0
- package/src/surfaces/data-actions.ts +115 -0
- package/src/surfaces/dialog.json +289 -0
- package/src/surfaces/dialog.ts +343 -0
- package/src/surfaces/diff-toolbar.json +266 -0
- package/src/surfaces/diff-toolbar.ts +139 -0
- package/src/surfaces/doc-header.json +739 -0
- package/src/surfaces/doc-header.ts +223 -0
- package/src/surfaces/empty-state.json +152 -0
- package/src/surfaces/empty-state.ts +173 -0
- package/src/surfaces/entry-editor.json +281 -0
- package/src/surfaces/entry-editor.ts +191 -0
- package/src/surfaces/expression-editor.json +977 -0
- package/src/surfaces/expression-editor.ts +266 -0
- package/src/surfaces/files-panel.json +592 -0
- package/src/surfaces/files-panel.ts +301 -0
- package/src/surfaces/formula-palette.json +364 -0
- package/src/surfaces/formula-palette.ts +340 -0
- package/src/surfaces/git-panel.json +1822 -0
- package/src/surfaces/git-panel.ts +272 -0
- package/src/surfaces/github-auth.json +112 -0
- package/src/surfaces/github-auth.ts +139 -0
- package/src/surfaces/github-publish.json +206 -0
- package/src/surfaces/github-publish.ts +169 -0
- package/src/surfaces/grid-cell.json +218 -0
- package/src/surfaces/grid-cell.ts +120 -0
- package/src/surfaces/grid-open.json +147 -0
- package/src/surfaces/grid-open.ts +87 -0
- package/src/surfaces/grid-panel.json +706 -0
- package/src/surfaces/grid-panel.ts +206 -0
- package/src/surfaces/grid-replace.json +179 -0
- package/src/surfaces/grid-replace.ts +89 -0
- package/src/surfaces/grid-views.json +446 -0
- package/src/surfaces/grid-views.ts +172 -0
- package/src/surfaces/inspector-dock.json +187 -0
- package/src/surfaces/inspector-dock.ts +161 -0
- package/src/surfaces/jump-bar.json +243 -0
- package/src/surfaces/jump-bar.ts +129 -0
- package/src/surfaces/jxsuite-update.json +146 -0
- package/src/surfaces/jxsuite-update.ts +149 -0
- package/src/surfaces/library-pane.json +1509 -0
- package/src/surfaces/library-pane.ts +363 -0
- package/src/surfaces/logic-panel.json +1949 -0
- package/src/surfaces/logic-panel.ts +369 -0
- package/src/surfaces/logic-workspace.json +685 -0
- package/src/surfaces/logic-workspace.ts +238 -0
- package/src/surfaces/media-browser.json +303 -0
- package/src/surfaces/media-browser.ts +145 -0
- package/src/surfaces/media-field.json +163 -0
- package/src/surfaces/media-field.ts +116 -0
- package/src/surfaces/media-pane.json +513 -0
- package/src/surfaces/media-pane.ts +197 -0
- package/src/surfaces/menu.json +232 -0
- package/src/surfaces/menu.ts +375 -0
- package/src/surfaces/navigator-dock.json +113 -0
- package/src/surfaces/navigator-dock.ts +130 -0
- package/src/surfaces/new-project.json +1654 -0
- package/src/surfaces/new-project.ts +411 -0
- package/src/surfaces/palette.json +535 -0
- package/src/surfaces/pane-context.json +1497 -0
- package/src/surfaces/pane-context.ts +513 -0
- package/src/surfaces/pane-grid.json +188 -0
- package/src/surfaces/pane-grid.ts +250 -0
- package/src/surfaces/panel-activity.json +563 -0
- package/src/surfaces/panel-activity.ts +187 -0
- package/src/surfaces/panel-data.json +141 -0
- package/src/surfaces/panel-data.ts +156 -0
- package/src/surfaces/panel-deploy-checklist.json +283 -0
- package/src/surfaces/panel-deploy-checklist.ts +175 -0
- package/src/surfaces/panel-elements.json +367 -0
- package/src/surfaces/panel-elements.ts +175 -0
- package/src/surfaces/panel-i18n.json +569 -0
- package/src/surfaces/panel-i18n.ts +212 -0
- package/src/surfaces/panel-imports.json +780 -0
- package/src/surfaces/panel-imports.ts +209 -0
- package/src/surfaces/panel-outline.json +734 -0
- package/src/surfaces/panel-outline.ts +326 -0
- package/src/surfaces/panel-page.json +1017 -0
- package/src/surfaces/panel-page.ts +240 -0
- package/src/surfaces/panel-problems.json +497 -0
- package/src/surfaces/panel-problems.ts +157 -0
- package/src/surfaces/panel-signals.json +1973 -0
- package/src/surfaces/panel-signals.ts +436 -0
- package/src/surfaces/panel-stylebook-layers.json +317 -0
- package/src/surfaces/panel-stylebook-layers.ts +155 -0
- package/src/surfaces/preferences.json +850 -0
- package/src/surfaces/preferences.ts +332 -0
- package/src/surfaces/progress-modal.json +110 -0
- package/src/surfaces/progress-modal.ts +150 -0
- package/src/surfaces/properties-panel.json +1578 -0
- package/src/surfaces/properties-panel.ts +337 -0
- package/src/surfaces/publish.json +945 -0
- package/src/surfaces/publish.ts +392 -0
- package/src/surfaces/push-plan.json +110 -0
- package/src/surfaces/push-plan.ts +87 -0
- package/src/surfaces/rail.json +255 -0
- package/src/surfaces/rail.ts +206 -0
- package/src/surfaces/reference-field.json +191 -0
- package/src/surfaces/reference-field.ts +168 -0
- package/src/surfaces/schema-builder.json +1011 -0
- package/src/surfaces/schema-builder.ts +181 -0
- package/src/surfaces/schema-form.json +1013 -0
- package/src/surfaces/schema-form.ts +287 -0
- package/src/surfaces/secret-field.json +60 -0
- package/src/surfaces/secret-field.ts +146 -0
- package/src/surfaces/seo.json +932 -0
- package/src/surfaces/seo.ts +334 -0
- package/src/surfaces/settings-contexts.json +538 -0
- package/src/surfaces/settings-contexts.ts +196 -0
- package/src/surfaces/settings-contributed.json +489 -0
- package/src/surfaces/settings-contributed.ts +199 -0
- package/src/surfaces/settings-css-vars.json +820 -0
- package/src/surfaces/settings-css-vars.ts +199 -0
- package/src/surfaces/settings-defs.json +1363 -0
- package/src/surfaces/settings-defs.ts +232 -0
- package/src/surfaces/settings-deploy.json +108 -0
- package/src/surfaces/settings-deploy.ts +135 -0
- package/src/surfaces/settings-extensions.json +486 -0
- package/src/surfaces/settings-extensions.ts +201 -0
- package/src/surfaces/settings-head.json +779 -0
- package/src/surfaces/settings-head.ts +397 -0
- package/src/surfaces/settings-locales.json +420 -0
- package/src/surfaces/settings-locales.ts +137 -0
- package/src/surfaces/settings-overview.json +423 -0
- package/src/surfaces/settings-overview.ts +218 -0
- package/src/surfaces/settings-packages.json +549 -0
- package/src/surfaces/settings-packages.ts +158 -0
- package/src/surfaces/settings-pane.json +147 -0
- package/src/surfaces/settings-pane.ts +150 -0
- package/src/surfaces/settings-rawjson.json +104 -0
- package/src/surfaces/settings-rawjson.ts +107 -0
- package/src/surfaces/shell.json +99 -0
- package/src/surfaces/shell.ts +30 -0
- package/src/surfaces/slash-menu.json +180 -0
- package/src/surfaces/slash-menu.ts +272 -0
- package/src/surfaces/statements.json +607 -0
- package/src/surfaces/statements.ts +238 -0
- package/src/surfaces/statusbar.json +94 -0
- package/src/{panels → surfaces}/statusbar.ts +163 -90
- package/src/surfaces/style-panel.json +1643 -0
- package/src/surfaces/style-panel.ts +338 -0
- package/src/surfaces/stylebook-chrome.json +122 -0
- package/src/surfaces/stylebook-chrome.ts +122 -0
- package/src/surfaces/tab-strip.json +448 -0
- package/src/surfaces/tab-strip.ts +200 -0
- package/src/surfaces/target-line.json +419 -0
- package/src/surfaces/target-line.ts +349 -0
- package/src/surfaces/toasts.json +189 -0
- package/src/surfaces/welcome.json +571 -0
- package/src/surfaces/welcome.ts +338 -0
- package/src/tabs/project-config.ts +71 -15
- package/src/tabs/tab.ts +52 -1
- package/src/types.ts +49 -3
- package/src/ui/ai-credentials-form.ts +104 -100
- package/src/ui/ai-managed-connect.ts +116 -49
- package/src/ui/ai-model-picker.ts +102 -47
- package/src/ui/cf-account-picker.ts +135 -0
- package/src/ui/color-selector.ts +80 -301
- package/src/ui/dynamic-slot.ts +43 -283
- package/src/ui/expression-editor.ts +797 -576
- package/src/ui/field-input.ts +8 -181
- package/src/ui/form-controls.ts +838 -366
- package/src/ui/formula-chips.ts +80 -85
- package/src/ui/kit.ts +33 -0
- package/src/ui/layers.ts +293 -593
- package/src/ui/media-picker.ts +203 -284
- package/src/ui/panel-resize.ts +251 -64
- package/src/ui/popover-surface.ts +153 -0
- package/src/ui/progress-modal.ts +22 -60
- package/src/ui/regions.ts +13 -7
- package/src/ui/schema-form.ts +906 -440
- package/src/ui/surface.ts +122 -0
- package/src/ui/unit-selector.ts +15 -131
- package/src/ui/value-source.ts +14 -0
- package/src/ui/virtual-window.ts +88 -9
- package/src/utils/canvas-media.ts +72 -0
- package/src/utils/edit-display.ts +7 -2
- package/src/utils/element-selectors.ts +69 -0
- package/src/utils/link-target.ts +2 -2
- package/src/utils/studio-utils.ts +0 -10
- package/src/view.ts +15 -0
- package/src/workspace/pane-derive.ts +36 -14
- package/src/workspace/workspace.ts +15 -6
- package/styles/canvas.css +72 -467
- package/styles/forced-colors.css +48 -82
- package/styles/forced-colors.json +41 -0
- package/styles/inspector.css +2 -1301
- package/styles/overlays.css +96 -2823
- package/styles/panels.css +6 -1423
- package/styles/shell-frame.css +272 -0
- package/styles/shell-frame.json +227 -0
- package/styles/shell.css +0 -1532
- package/styles/tokens.css +65 -136
- package/styles/tokens.json +84 -0
- package/dist/chunks/Overlay.dev-723bv0df.js +0 -23
- package/dist/chunks/adapter-jkcyhgtr.js +0 -14
- package/dist/chunks/cf-settings-45fgyx8y.js +0 -21
- package/dist/chunks/components-zmx10t62.js +0 -21
- package/dist/chunks/content-source-t88vb2dr.js +0 -49
- package/dist/chunks/convert-to-repeater-dhw1nrz9.js +0 -268
- package/dist/chunks/editor-cptq5jp1.js +0 -37
- package/dist/chunks/entry-commands-6z6bhxg0.js +0 -46
- package/dist/chunks/extension-sections-3ydgjbdy.js +0 -311
- package/dist/chunks/file-ops-rskmhxyq.js +0 -48
- package/dist/chunks/files-0cratsr0.js +0 -92
- package/dist/chunks/flow-qbfgrpeh.js +0 -634
- package/dist/chunks/focus-trap.esm-ggawf1hy.js +0 -1024
- package/dist/chunks/focus-visible-6eg70z18.js +0 -167
- package/dist/chunks/format-host-tgcmfs4p.js +0 -43
- package/dist/chunks/fs-events-hrrg328g.js +0 -21
- package/dist/chunks/git-panel-0yywyk76.js +0 -58
- package/dist/chunks/index-zqxmqxmh.js +0 -109
- package/dist/chunks/jx-validate-8q2g05x1.js +0 -19
- package/dist/chunks/layers-panel-z3tqe5cd.js +0 -67
- package/dist/chunks/layers-q75tj2mf.js +0 -45
- package/dist/chunks/lit-html-j055mkh8.js +0 -22
- package/dist/chunks/monaco-buffer-dqw0xxpx.js +0 -25
- package/dist/chunks/notify-yjm79n4s.js +0 -30
- package/dist/chunks/parse-24d0gay3.js +0 -19
- package/dist/chunks/platform-ba1j1gbh.js +0 -16
- package/dist/chunks/publish-panel-54jvhskq.js +0 -28
- package/dist/chunks/quick-search-cgfmjwq5.js +0 -65
- package/dist/chunks/references-3qx8fkyp.js +0 -29
- package/dist/chunks/right-panel-cqp8bc4v.js +0 -46
- package/dist/chunks/section-registry-sx1ykvkw.js +0 -30
- package/dist/chunks/sp-overlay.dev-yztmtrs1.js +0 -18
- package/dist/chunks/sp-popover.dev-n2etmqdp.js +0 -9
- package/dist/chunks/sp-progress-circle.dev-hryhj0es.js +0 -15
- package/dist/chunks/sp-tooltip.dev-xcvpnqr0.js +0 -15
- package/dist/chunks/sp-tray.dev-tkbscm06.js +0 -199
- package/dist/chunks/studio-0a5qrh01.js +0 -3
- package/dist/chunks/studio-18j3bmcz.js +0 -14
- package/dist/chunks/studio-1hbqnt19.js +0 -1823
- package/dist/chunks/studio-4rzyrtjz.js +0 -426
- package/dist/chunks/studio-5rywrkxz.js +0 -1903
- package/dist/chunks/studio-7afd21nw.js +0 -67
- package/dist/chunks/studio-7nte2hj4.js +0 -613
- package/dist/chunks/studio-8jpzqk5s.js +0 -128
- package/dist/chunks/studio-8q517dfr.js +0 -24
- package/dist/chunks/studio-9c4k4vhv.js +0 -357
- package/dist/chunks/studio-9n4mrmnb.js +0 -184
- package/dist/chunks/studio-a0tswy0w.js +0 -58
- package/dist/chunks/studio-ahjfdy6e.js +0 -387
- package/dist/chunks/studio-ahnzd9rg.js +0 -23
- package/dist/chunks/studio-bw5dz6km.js +0 -608
- package/dist/chunks/studio-cb12yz9w.js +0 -15055
- package/dist/chunks/studio-d1ks410h.js +0 -175
- package/dist/chunks/studio-eqq1w638.js +0 -113
- package/dist/chunks/studio-ex8zyp98.js +0 -1813
- package/dist/chunks/studio-h4rxscfc.js +0 -10
- package/dist/chunks/studio-kyh9avvv.js +0 -28
- package/dist/chunks/studio-kyk2v92a.js +0 -659
- package/dist/chunks/studio-m3hwn7y1.js +0 -120
- package/dist/chunks/studio-mmv72a27.js +0 -4344
- package/dist/chunks/studio-n8b9wqwy.js +0 -291
- package/dist/chunks/studio-pdfjntbk.js +0 -6939
- package/dist/chunks/studio-qq6jym04.js +0 -53
- package/dist/chunks/studio-r1r7afxx.js +0 -1066
- package/dist/chunks/studio-rdx8jcxy.js +0 -83
- package/dist/chunks/studio-rn9ta2mz.js +0 -111
- package/dist/chunks/studio-t7qb9db8.js +0 -665
- package/dist/chunks/studio-tmc5emrw.js +0 -8
- package/dist/chunks/studio-txwkm6p9.js +0 -12
- package/dist/chunks/studio-v38hmvx1.js +0 -390
- package/dist/chunks/studio-vadzgkrz.js +0 -318
- package/dist/chunks/studio-wx5609xd.js +0 -341
- package/dist/chunks/studio-z6nw2ek2.js +0 -18
- package/dist/chunks/studio-zczps70q.js +0 -378
- package/dist/chunks/workspace-xpres40v.js +0 -89
- package/src/panels/activity-bar.ts +0 -251
- package/src/panels/panel-scheduler.ts +0 -219
- package/src/panels/style-inputs.ts +0 -237
- package/src/panels/target-line.ts +0 -274
- package/src/panels/welcome-screen.ts +0 -346
- package/src/ui/button-group.ts +0 -102
- package/src/ui/choice-field.ts +0 -72
- package/src/ui/field-row.ts +0 -249
- package/src/ui/formula-palette.ts +0 -213
- package/src/ui/icons.ts +0 -52
- package/src/ui/jx-theme.ts +0 -130
- package/src/ui/spectrum.ts +0 -340
- package/src/ui/value-selector.ts +0 -174
- package/src/ui/widgets.ts +0 -172
- /package/dist/chunks/{javascript-s56a8dpk.css → javascript-4abzjcy9.css} +0 -0
- /package/dist/chunks/{jsonMode-zr9sw0c7.css → jsonMode-vvmpmk34.css} +0 -0
- /package/dist/chunks/{monaco-setup-pav68602.css → monaco-setup-8vbyqnhr.css} +0 -0
- /package/dist/chunks/{tsMode-ef187txx.css → tsMode-hnxxb73h.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
2
|
/**
|
|
3
|
-
* Repository picker
|
|
4
|
-
*
|
|
3
|
+
* Repository picker flow — a filterable picker over `platform.listRepos` (every repo the platform's
|
|
4
|
+
* account link can reach, personal and organization). Two modes share the dialog:
|
|
5
5
|
*
|
|
6
6
|
* - "add" (Add Existing Repository): the unfiltered adoption path.
|
|
7
7
|
* - "open" (Open Project on `openProjectPicker: "repo-list"` platforms): only write-access
|
|
@@ -16,9 +16,21 @@
|
|
|
16
16
|
* access footer: per-installation links to widen the App's repository selection, a link to install
|
|
17
17
|
* it on another account, and Refresh — the user grants access in a GitHub tab, comes back, and
|
|
18
18
|
* reloads the list without losing the dialog.
|
|
19
|
+
*
|
|
20
|
+
* **The dialog is a document.** `surfaces/add-repo.json` draws it and `surfaces/add-repo.ts` mounts
|
|
21
|
+
* it; this module keeps the listing, the ordering, the adoption and the promise. What it used to be
|
|
22
|
+
* is worth recording, because it is the shape every converted surface starts from: a whole template
|
|
23
|
+
* re-rendered from module state on every keystroke, inside a fixed card that painted its own panel
|
|
24
|
+
* beside an `<sp-underlay>` and needed `z-index: 1000` to climb back out from under its own scrim.
|
|
25
|
+
* A modal `<dialog>` is in the top layer by construction, so none of that stacking is left to get
|
|
26
|
+
* wrong, and a filter keystroke now moves one binding rather than rebuilding every row.
|
|
27
|
+
*
|
|
28
|
+
* **`closeAddRepoModal` went with it.** It existed because the lit card had to answer its own
|
|
29
|
+
* Escape key, its own underlay click and its own close button, and all three of those belong to the
|
|
30
|
+
* platform now: every way out raises the dialog's `cancel`, which arrives here as `onClosed`. A
|
|
31
|
+
* closer nothing in the app called was left over from drawing the box by hand.
|
|
19
32
|
*/
|
|
20
33
|
|
|
21
|
-
import { html, nothing } from "lit-html";
|
|
22
34
|
import { errorMessage } from "@jxsuite/schema/parse";
|
|
23
35
|
import {
|
|
24
36
|
getAccountStatus,
|
|
@@ -27,12 +39,14 @@ import {
|
|
|
27
39
|
needsAppInstall,
|
|
28
40
|
} from "../account-status";
|
|
29
41
|
import { getPlatform } from "../platform";
|
|
30
|
-
import {
|
|
42
|
+
import { layerHost } from "../ui/layers";
|
|
43
|
+
import { openAddRepoSurface } from "../surfaces/add-repo";
|
|
44
|
+
import type { AddRepoRow, AddRepoSurfaceHandle, AddRepoView } from "../surfaces/add-repo";
|
|
31
45
|
import type { RepoInfo } from "../types";
|
|
32
46
|
|
|
33
47
|
type PickerMode = "add" | "open";
|
|
34
48
|
|
|
35
|
-
let _handle:
|
|
49
|
+
let _handle: AddRepoSurfaceHandle | null = null;
|
|
36
50
|
let _mode: PickerMode = "add";
|
|
37
51
|
let _repos: RepoInfo[] | null = null;
|
|
38
52
|
let _filter = "";
|
|
@@ -70,14 +84,36 @@ function openPicker(mode: PickerMode): Promise<{ root: string } | null> {
|
|
|
70
84
|
return Promise.resolve(null);
|
|
71
85
|
}
|
|
72
86
|
_mode = mode;
|
|
87
|
+
_repos = null;
|
|
73
88
|
_filter = "";
|
|
89
|
+
_error = "";
|
|
74
90
|
_importing = "";
|
|
75
91
|
|
|
76
|
-
loadRepos();
|
|
77
|
-
|
|
78
92
|
return new Promise((resolve) => {
|
|
79
93
|
_resolve = resolve;
|
|
80
|
-
|
|
94
|
+
_handle = openAddRepoSurface({
|
|
95
|
+
layer: layerHost("dialog"),
|
|
96
|
+
onChoose: (fullName) => {
|
|
97
|
+
void chooseRepo(fullName);
|
|
98
|
+
},
|
|
99
|
+
/* Escape, the Cancel button and a programmatic close all arrive here, and all of them mean
|
|
100
|
+
the same thing: nothing was adopted. A native `<dialog>` has already closed by the time it
|
|
101
|
+
says so, which is why this settles rather than deciding whether to allow it — an adoption
|
|
102
|
+
still in flight is dropped on the way out (`chooseRepo` finds the picker gone), exactly as
|
|
103
|
+
a listing that lands after a dismissal is. */
|
|
104
|
+
onClosed: () => {
|
|
105
|
+
settle(null);
|
|
106
|
+
},
|
|
107
|
+
onFilter: (value) => {
|
|
108
|
+
_filter = value;
|
|
109
|
+
redraw();
|
|
110
|
+
},
|
|
111
|
+
onRefresh: () => {
|
|
112
|
+
loadRepos();
|
|
113
|
+
},
|
|
114
|
+
view: viewOf(),
|
|
115
|
+
});
|
|
116
|
+
loadRepos();
|
|
81
117
|
});
|
|
82
118
|
}
|
|
83
119
|
|
|
@@ -88,10 +124,10 @@ function openPicker(mode: PickerMode): Promise<{ root: string } | null> {
|
|
|
88
124
|
function loadRepos(): void {
|
|
89
125
|
_repos = null;
|
|
90
126
|
_error = "";
|
|
91
|
-
// Paints the loading state on a refresh; a no-op on open, where the
|
|
92
|
-
|
|
127
|
+
// Paints the loading state on a refresh; a no-op on open, where the surface opens on this view.
|
|
128
|
+
redraw();
|
|
93
129
|
|
|
94
|
-
void hydrateAccountStatus().then(
|
|
130
|
+
void hydrateAccountStatus().then(redraw);
|
|
95
131
|
|
|
96
132
|
void getPlatform()
|
|
97
133
|
.listRepos?.()
|
|
@@ -103,52 +139,49 @@ function loadRepos(): void {
|
|
|
103
139
|
_error = errorMessage(error);
|
|
104
140
|
})
|
|
105
141
|
.finally(() => {
|
|
106
|
-
|
|
142
|
+
redraw();
|
|
107
143
|
});
|
|
108
144
|
}
|
|
109
145
|
|
|
110
|
-
/**
|
|
111
|
-
function
|
|
112
|
-
|
|
113
|
-
renderModal();
|
|
114
|
-
}
|
|
146
|
+
/** Push the current state at the surface — a no-op once the dialog is gone. */
|
|
147
|
+
function redraw(): void {
|
|
148
|
+
_handle?.update(viewOf());
|
|
115
149
|
}
|
|
116
150
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
151
|
+
/**
|
|
152
|
+
* Resolve the promise once, and take the dialog down with it.
|
|
153
|
+
*
|
|
154
|
+
* The promise is resolved BEFORE the dialog is closed, and the order is load-bearing rather than
|
|
155
|
+
* tidy: closing raises the platform's own `close`, which arrives back here as a dismissal, so a
|
|
156
|
+
* `settle` that closed first would resolve an adopted project's promise with `null` a frame after
|
|
157
|
+
* the adoption succeeded. Clearing `_handle` and `_resolve` first is what makes that second pass a
|
|
158
|
+
* no-op.
|
|
159
|
+
*/
|
|
160
|
+
function settle(result: { root: string } | null): void {
|
|
161
|
+
const handle = _handle;
|
|
162
|
+
const resolve = _resolve;
|
|
122
163
|
_handle = null;
|
|
123
|
-
|
|
124
|
-
_resolve(null);
|
|
125
|
-
_resolve = null;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function finish(result: { root: string }) {
|
|
164
|
+
_resolve = null;
|
|
130
165
|
_importing = "";
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
_handle = null;
|
|
134
|
-
}
|
|
135
|
-
if (_resolve) {
|
|
136
|
-
_resolve(result);
|
|
137
|
-
_resolve = null;
|
|
138
|
-
}
|
|
166
|
+
resolve?.(result);
|
|
167
|
+
handle?.close();
|
|
139
168
|
}
|
|
140
169
|
|
|
141
|
-
async function chooseRepo(
|
|
170
|
+
async function chooseRepo(fullName: string) {
|
|
142
171
|
if (_importing) {
|
|
143
172
|
return;
|
|
144
173
|
}
|
|
174
|
+
const repo = (_repos ?? []).find((candidate) => candidate.fullName === fullName);
|
|
175
|
+
if (!repo) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
145
178
|
_importing = repo.fullName;
|
|
146
179
|
_error = "";
|
|
147
|
-
|
|
180
|
+
redraw();
|
|
148
181
|
try {
|
|
149
182
|
const imported = await getPlatform().importProject?.({ name: repo.name, owner: repo.owner });
|
|
150
183
|
if (imported) {
|
|
151
|
-
|
|
184
|
+
settle(imported);
|
|
152
185
|
return;
|
|
153
186
|
}
|
|
154
187
|
_error = "This platform cannot import repositories.";
|
|
@@ -156,7 +189,7 @@ async function chooseRepo(repo: RepoInfo) {
|
|
|
156
189
|
_error = errorMessage(error);
|
|
157
190
|
}
|
|
158
191
|
_importing = "";
|
|
159
|
-
|
|
192
|
+
redraw();
|
|
160
193
|
}
|
|
161
194
|
|
|
162
195
|
function visibleRepos(): RepoInfo[] {
|
|
@@ -171,68 +204,33 @@ function visibleRepos(): RepoInfo[] {
|
|
|
171
204
|
return query ? repos.filter((r) => r.fullName.toLowerCase().includes(query)) : repos;
|
|
172
205
|
}
|
|
173
206
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
<span class="add-repo-name">${repo.fullName}</span>
|
|
185
|
-
<span class="add-repo-meta">
|
|
186
|
-
${repo.isJxProject ? html`<span class="add-repo-badge">Jx</span>` : nothing}
|
|
187
|
-
${repo.private ? html`<span class="add-repo-badge">private</span>` : nothing}
|
|
188
|
-
<span>${repo.defaultBranch} · ${repo.permission}</span>
|
|
189
|
-
</span>
|
|
190
|
-
${
|
|
191
|
-
_importing === repo.fullName ? html`<span class="add-repo-busy">Importing…</span>` : nothing
|
|
192
|
-
}
|
|
193
|
-
</button>
|
|
194
|
-
`;
|
|
207
|
+
/** One repository as the list draws it: strings and flags, nothing the document has to interpret. */
|
|
208
|
+
function rowOf(repo: RepoInfo): AddRepoRow {
|
|
209
|
+
return {
|
|
210
|
+
disabled: _importing !== "",
|
|
211
|
+
fullName: repo.fullName,
|
|
212
|
+
importing: _importing === repo.fullName,
|
|
213
|
+
isJx: repo.isJxProject,
|
|
214
|
+
isPrivate: repo.private,
|
|
215
|
+
meta: `${repo.defaultBranch} · ${repo.permission}`,
|
|
216
|
+
};
|
|
195
217
|
}
|
|
196
218
|
|
|
197
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Why the list is empty, when it is.
|
|
221
|
+
*
|
|
222
|
+
* Read only once the listing has landed and filtering has taken everything out, and the order is
|
|
223
|
+
* the order the remedies come in: a filter the reader typed, a permission only an admin can widen,
|
|
224
|
+
* an App that was never installed, and an App that is installed and reaches nothing.
|
|
225
|
+
*/
|
|
226
|
+
function emptyStateOf(): AddRepoView["emptyState"] {
|
|
198
227
|
if (_filter) {
|
|
199
|
-
return
|
|
228
|
+
return "filter";
|
|
200
229
|
}
|
|
201
230
|
if (_mode === "open" && (_repos ?? []).length > 0) {
|
|
202
|
-
return
|
|
203
|
-
No repositories with write access. Widen the Jx Suite GitHub App's repository access below, or
|
|
204
|
-
ask a repository admin for write access.
|
|
205
|
-
</div>`;
|
|
206
|
-
}
|
|
207
|
-
if (needsAppInstall()) {
|
|
208
|
-
return html`<div class="add-repo-empty">
|
|
209
|
-
No repositories are reachable yet.
|
|
210
|
-
<a
|
|
211
|
-
class="add-repo-install"
|
|
212
|
-
href=${getAccountStatus()?.appInstallUrl ?? "#"}
|
|
213
|
-
target="_blank"
|
|
214
|
-
rel="noreferrer"
|
|
215
|
-
>
|
|
216
|
-
Install the Jx Suite GitHub App
|
|
217
|
-
</a>
|
|
218
|
-
to grant repository access, then use Refresh below.
|
|
219
|
-
</div>`;
|
|
231
|
+
return "write";
|
|
220
232
|
}
|
|
221
|
-
return
|
|
222
|
-
No repositories are reachable. Install the GitHub App (or widen its repository access) and try
|
|
223
|
-
again.
|
|
224
|
-
</div>`;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
function bodyTpl() {
|
|
228
|
-
if (_repos === null) {
|
|
229
|
-
return html`<div class="add-repo-empty">Loading repositories…</div>`;
|
|
230
|
-
}
|
|
231
|
-
const repos = visibleRepos();
|
|
232
|
-
if (repos.length === 0) {
|
|
233
|
-
return emptyTpl();
|
|
234
|
-
}
|
|
235
|
-
return html`<div class="add-repo-list">${repos.map((repo) => repoRowTpl(repo))}</div>`;
|
|
233
|
+
return needsAppInstall() ? "install" : "none";
|
|
236
234
|
}
|
|
237
235
|
|
|
238
236
|
/**
|
|
@@ -240,88 +238,39 @@ function bodyTpl() {
|
|
|
240
238
|
* offers a way out of that boundary — widen an existing installation, install on another account,
|
|
241
239
|
* then Refresh to pick up the newly reachable repositories.
|
|
242
240
|
*/
|
|
243
|
-
function
|
|
241
|
+
function accessOf(): AddRepoView["access"] {
|
|
244
242
|
const links = getRepoAccessLinks();
|
|
245
243
|
if (!links) {
|
|
246
|
-
return
|
|
244
|
+
return [];
|
|
247
245
|
}
|
|
248
|
-
return
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
</a>
|
|
265
|
-
`,
|
|
266
|
-
)}
|
|
267
|
-
${
|
|
268
|
-
links.installUrl
|
|
269
|
-
? html`<a
|
|
270
|
-
class="add-repo-access-link"
|
|
271
|
-
href=${links.installUrl}
|
|
272
|
-
target="_blank"
|
|
273
|
-
rel="noreferrer"
|
|
274
|
-
title="Install the Jx Suite GitHub App on another account"
|
|
275
|
-
>
|
|
276
|
-
Another account…
|
|
277
|
-
</a>`
|
|
278
|
-
: nothing
|
|
279
|
-
}
|
|
280
|
-
</span>
|
|
281
|
-
<button
|
|
282
|
-
class="add-repo-refresh"
|
|
283
|
-
?disabled=${_repos === null || Boolean(_importing)}
|
|
284
|
-
@click=${() => loadRepos()}
|
|
285
|
-
>
|
|
286
|
-
Refresh
|
|
287
|
-
</button>
|
|
288
|
-
</div>
|
|
289
|
-
`;
|
|
246
|
+
return [
|
|
247
|
+
...links.manage.map((entry) => ({
|
|
248
|
+
label: entry.account,
|
|
249
|
+
title: `Manage repository access for ${entry.account}`,
|
|
250
|
+
url: entry.url,
|
|
251
|
+
})),
|
|
252
|
+
...(links.installUrl
|
|
253
|
+
? [
|
|
254
|
+
{
|
|
255
|
+
label: "Another account…",
|
|
256
|
+
title: "Install the Jx Suite GitHub App on another account",
|
|
257
|
+
url: links.installUrl,
|
|
258
|
+
},
|
|
259
|
+
]
|
|
260
|
+
: []),
|
|
261
|
+
];
|
|
290
262
|
}
|
|
291
263
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
<div class="new-project-modal-body">
|
|
305
|
-
<sp-textfield
|
|
306
|
-
class="add-repo-filter"
|
|
307
|
-
placeholder="Filter repositories…"
|
|
308
|
-
value=${_filter}
|
|
309
|
-
@input=${(e: Event) => {
|
|
310
|
-
_filter = (e.target as HTMLInputElement).value;
|
|
311
|
-
renderModal();
|
|
312
|
-
}}
|
|
313
|
-
></sp-textfield>
|
|
314
|
-
${bodyTpl()} ${_error ? html`<div class="new-project-error">${_error}</div>` : nothing}
|
|
315
|
-
${accessTpl()}
|
|
316
|
-
</div>
|
|
317
|
-
</div>
|
|
318
|
-
`;
|
|
319
|
-
if (_handle) {
|
|
320
|
-
_handle.update(tpl);
|
|
321
|
-
} else {
|
|
322
|
-
_handle = openModal(tpl, {
|
|
323
|
-
label: _mode === "open" ? "Open Project" : "Add existing repository",
|
|
324
|
-
onDismiss: closeAddRepoModal,
|
|
325
|
-
});
|
|
326
|
-
}
|
|
264
|
+
/** Everything the dialog draws, as one record. The only place this module's state becomes a view. */
|
|
265
|
+
function viewOf(): AddRepoView {
|
|
266
|
+
return {
|
|
267
|
+
access: accessOf(),
|
|
268
|
+
emptyState: emptyStateOf(),
|
|
269
|
+
failure: _error,
|
|
270
|
+
filter: _filter,
|
|
271
|
+
installUrl: getAccountStatus()?.appInstallUrl ?? "",
|
|
272
|
+
loading: _repos === null,
|
|
273
|
+
rows: visibleRepos().map((repo) => rowOf(repo)),
|
|
274
|
+
title: _mode === "open" ? "Open Project" : "Add existing repository",
|
|
275
|
+
};
|
|
327
276
|
}
|