@jxsuite/studio 6.0.0 → 6.1.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/dist/chunks/{2020-cs2sb9t1.js → 2020-nkxms0ay.js} +3 -3
- package/dist/chunks/adapter-m948ab5f.js +4 -0
- package/dist/chunks/{cf-account-picker-bb2yq946.js → cf-account-picker-n8hr38v7.js} +3 -3
- package/dist/chunks/cf-settings-356xdtne.js +4 -0
- package/dist/chunks/components-yk3t844e.js +4 -0
- package/dist/chunks/content-source-bawmyc09.js +4 -0
- package/dist/chunks/{convert-to-repeater-vqkt7s3s.js → convert-to-repeater-7wns8kf1.js} +3 -3
- package/dist/chunks/editor-6sc8nacq.js +4 -0
- package/dist/chunks/entry-commands-8ay9fh81.js +4 -0
- package/dist/chunks/{extension-sections-8beq9ac3.js → extension-sections-na7rj3nr.js} +3 -3
- package/dist/chunks/file-ops-gye0qw56.js +4 -0
- package/dist/chunks/files-dmc2xvcq.js +4 -0
- package/dist/chunks/format-host-t76b53f8.js +4 -0
- package/dist/chunks/fs-events-cg4tpz06.js +4 -0
- package/dist/chunks/git-panel-yef7bshy.js +4 -0
- package/dist/chunks/{grid-view-ca10def6.js → grid-view-7tt4bxw1.js} +6 -6
- package/dist/chunks/iframe-host-tmz30gfp.js +4 -0
- package/dist/chunks/{index-9ydfe04y.js → index-gybvv7a6.js} +3 -3
- package/dist/chunks/index-nag78a9h.js +4 -0
- package/dist/chunks/{javascript-d9pqgc2p.js → javascript-rnvdp3k4.js} +2 -2
- package/dist/chunks/{jsonMode-800yvbem.js → jsonMode-zhwsprqk.js} +5 -5
- package/dist/chunks/jx-validate-3gbp5nkn.js +4 -0
- package/dist/chunks/layers-fvz99859.js +4 -0
- package/dist/chunks/layers-panel-gchmbf9p.js +4 -0
- package/dist/chunks/lit-html-9agdspkt.js +4 -0
- package/dist/chunks/media-picker-rhjvyy00.js +4 -0
- package/dist/chunks/menu-2e4y9j7b.js +4 -0
- package/dist/chunks/{monaco-binding-62dtmgbf.js → monaco-binding-2jnhjjvr.js} +3 -3
- package/dist/chunks/monaco-buffer-rp21359g.js +4 -0
- package/dist/chunks/{monaco-setup-tj13ndtm.js → monaco-setup-vhh7gayr.js} +3 -3
- package/dist/chunks/notify-h3www560.js +4 -0
- package/dist/chunks/platform-hz34wcd7.js +4 -0
- package/dist/chunks/publish-panel-exsmjzyj.js +4 -0
- package/dist/chunks/quick-search-pgaqeh0m.js +4 -0
- package/dist/chunks/references-2cgdxnb8.js +4 -0
- package/dist/chunks/right-panel-jf856w5w.js +4 -0
- package/dist/chunks/section-registry-jnf8r5gy.js +4 -0
- package/dist/chunks/studio-0f55h9ye.js +5 -0
- package/dist/chunks/{studio-hjbg8d5y.js → studio-0sqdhnew.js} +7 -7
- package/dist/chunks/{studio-1wvfxkyy.js → studio-0x3jyb8r.js} +4 -4
- package/dist/chunks/{studio-yr04mv2j.js → studio-19x1c75w.js} +4 -4
- package/dist/chunks/{studio-evwgp1ym.js → studio-2sqcndak.js} +4 -4
- package/dist/chunks/{studio-x5g1xk77.js → studio-3aey7dd3.js} +4 -4
- package/dist/chunks/{studio-xkfs0dp2.js → studio-3bpdkq2s.js} +4 -4
- package/dist/chunks/{studio-5gs9th4b.js → studio-47y6fbpf.js} +4 -4
- package/dist/chunks/{studio-e47215hh.js → studio-4m3826v2.js} +4 -4
- package/dist/chunks/studio-4nx2dj1g.js +4 -0
- package/dist/chunks/{studio-gjknvzam.js → studio-4xv5s47r.js} +5 -5
- package/dist/chunks/{studio-sxc0zvpt.js → studio-5g0ag7c0.js} +3 -3
- package/dist/chunks/{studio-semd1s8s.js → studio-5g4t8v6w.js} +4 -4
- package/dist/chunks/studio-5py436sf.js +5 -0
- package/dist/chunks/{studio-aje966s9.js → studio-77kt594t.js} +4 -4
- package/dist/chunks/{studio-3ck2a5c4.js → studio-8f87n763.js} +6 -6
- package/dist/chunks/studio-8mb00b84.js +5 -0
- package/dist/chunks/studio-8p51gq2h.js +6 -0
- package/dist/chunks/studio-954ds834.js +5 -0
- package/dist/chunks/{studio-capk0583.js → studio-9ft45c83.js} +6 -6
- package/dist/chunks/studio-a2138x5k.js +7 -0
- package/dist/chunks/studio-a9yzstqj.js +5 -0
- package/dist/chunks/{studio-gp02nqnw.js → studio-acdksxx6.js} +4 -4
- package/dist/chunks/{studio-edbtvcd1.js → studio-anyrgzvb.js} +4 -4
- package/dist/chunks/{studio-4r0sjtx8.js → studio-ar8jcf2y.js} +4 -4
- package/dist/chunks/{studio-rmn2dz59.js → studio-bmn4mn9j.js} +5 -5
- package/dist/chunks/{studio-03wwfvyt.js → studio-cpxkgjrj.js} +4 -4
- package/dist/chunks/{studio-7qvs7v0m.js → studio-e7xxa0sj.js} +4 -4
- package/dist/chunks/{studio-01qza1n3.js → studio-ecaz25vk.js} +4 -4
- package/dist/chunks/{studio-5e9zsamh.js → studio-fzdywr6p.js} +6 -6
- package/dist/chunks/{studio-xg1942as.js → studio-g5fmf0c1.js} +4 -4
- package/dist/chunks/{studio-1q6amtph.js → studio-g7nse7zb.js} +4 -4
- package/dist/chunks/studio-geq1ea6k.js +14 -0
- package/dist/chunks/{studio-n78gjfy8.js → studio-ghkb32r8.js} +4 -4
- package/dist/chunks/{studio-bftp4n4b.js → studio-ghrhy2y7.js} +4 -4
- package/dist/chunks/{studio-5d7wfmnp.js → studio-grawhey1.js} +4 -4
- package/dist/chunks/{studio-rr4xkv81.js → studio-h0xgswew.js} +4 -4
- package/dist/chunks/{studio-cbr9czkn.js → studio-h9c4p2tx.js} +4 -4
- package/dist/chunks/studio-jyzj5cxs.js +5 -0
- package/dist/chunks/{studio-x92tgnee.js → studio-mgx8yhnz.js} +31 -31
- package/dist/chunks/{studio-g8dsj3d2.js → studio-mpb04y1d.js} +5 -5
- package/dist/chunks/{studio-zev8ssp1.js → studio-n17mty64.js} +4 -4
- package/dist/chunks/{studio-4jj9gme2.js → studio-nwh2eqsk.js} +5 -5
- package/dist/chunks/{studio-8xcwewjq.js → studio-pxg4ap1e.js} +3 -3
- package/dist/chunks/{studio-4m50vh74.js → studio-q1h883bt.js} +5 -5
- package/dist/chunks/{studio-c6zdm25z.js → studio-q4tv82h7.js} +6 -6
- package/dist/chunks/{studio-st75kn99.js → studio-qbj760tx.js} +5 -5
- package/dist/chunks/{studio-y7jehjrp.js → studio-qpqa7vk3.js} +4 -4
- package/dist/chunks/{studio-5vy2wfm5.js → studio-qqz8e5gk.js} +4 -4
- package/dist/chunks/{studio-qa73881a.js → studio-qvasen3f.js} +4 -4
- package/dist/chunks/studio-rggdb3hm.js +5 -0
- package/dist/chunks/{studio-4xppwncr.js → studio-sghy936h.js} +3 -3
- package/dist/chunks/{studio-mk00zd5d.js → studio-skprc6ef.js} +4 -4
- package/dist/chunks/{studio-cqmtbg2p.js → studio-tt2nactf.js} +4 -4
- package/dist/chunks/{studio-ge5fqjth.js → studio-txjjzrsm.js} +5 -5
- package/dist/chunks/{studio-tmeq6mjb.js → studio-tyasmc39.js} +4 -4
- package/dist/chunks/{studio-0bbxhhce.js → studio-v2bvmbjj.js} +4 -4
- package/dist/chunks/{studio-pwqfmt4p.js → studio-vk9ezads.js} +4 -4
- package/dist/chunks/{studio-fqq890ap.js → studio-vzacdfsc.js} +3 -3
- package/dist/chunks/{studio-zd4kayn2.js → studio-w4c0xmrw.js} +4 -4
- package/dist/chunks/{studio-ztvcxm3w.js → studio-wfjqhhbk.js} +4 -4
- package/dist/chunks/{studio-tp642n5g.js → studio-wgh5kxpj.js} +4 -4
- package/dist/chunks/studio-xasj0796.js +5 -0
- package/dist/chunks/{studio-tzegmy4w.js → studio-y78s8r2n.js} +4 -4
- package/dist/chunks/{studio-7pgy3xaf.js → studio-z8w183sh.js} +4 -4
- package/dist/chunks/{studio-01kbbqg3.js → studio-zscd9ty4.js} +124 -124
- package/dist/chunks/{studio-hnvnfbdv.js → studio-zxp13sss.js} +6 -6
- package/dist/chunks/{studio-r3kaka4d.js → studio-zygnmm01.js} +4 -4
- package/dist/chunks/{tsMode-k9s9fcag.js → tsMode-gr0m4dzr.js} +5 -5
- package/dist/chunks/workspace-m15qtcqp.js +4 -0
- package/dist/chunks/{ws-client-0ja08haa.js → ws-client-nf61frr1.js} +3 -3
- package/dist/manifest.json +62 -62
- package/dist/studio.js +83 -83
- package/package.json +2 -2
- package/src/new-project/add-repo-modal.ts +459 -59
- package/src/platforms/cloud.ts +95 -18
- package/src/publish/pages-service.ts +7 -0
- package/src/publish/publish-panel.ts +16 -2
- package/src/surfaces/add-repo.json +721 -224
- package/src/surfaces/add-repo.ts +196 -31
- package/src/types.ts +42 -3
- package/src/utils/project-dir.ts +24 -0
- package/dist/chunks/adapter-y5gdq19c.js +0 -4
- package/dist/chunks/cf-settings-20dznc3j.js +0 -4
- package/dist/chunks/components-q037dya7.js +0 -4
- package/dist/chunks/content-source-t0q184js.js +0 -4
- package/dist/chunks/editor-j5sq149q.js +0 -4
- package/dist/chunks/entry-commands-fxzgcc4k.js +0 -4
- package/dist/chunks/file-ops-2n77759h.js +0 -4
- package/dist/chunks/files-fjy7zpxt.js +0 -4
- package/dist/chunks/format-host-wj3mf3n8.js +0 -4
- package/dist/chunks/fs-events-7kcgn4e9.js +0 -4
- package/dist/chunks/git-panel-7z2mpt2d.js +0 -4
- package/dist/chunks/iframe-host-a0zjd6xp.js +0 -4
- package/dist/chunks/index-m0x5ztax.js +0 -4
- package/dist/chunks/jx-validate-zc9zp77s.js +0 -4
- package/dist/chunks/layers-p677nrh5.js +0 -4
- package/dist/chunks/layers-panel-y4w1dq90.js +0 -4
- package/dist/chunks/lit-html-cfn61dn7.js +0 -4
- package/dist/chunks/media-picker-xg7yjpz9.js +0 -4
- package/dist/chunks/menu-fpekzj6w.js +0 -4
- package/dist/chunks/monaco-buffer-nn4dtx27.js +0 -4
- package/dist/chunks/notify-ahs57a2z.js +0 -4
- package/dist/chunks/platform-v9xyfkbx.js +0 -4
- package/dist/chunks/publish-panel-xtbfgg2r.js +0 -4
- package/dist/chunks/quick-search-d3a6m7j3.js +0 -4
- package/dist/chunks/references-99ws0b0m.js +0 -4
- package/dist/chunks/right-panel-31vbk5xp.js +0 -4
- package/dist/chunks/section-registry-b2yzp9sw.js +0 -4
- package/dist/chunks/studio-1a99w39s.js +0 -5
- package/dist/chunks/studio-4fde4a0x.js +0 -5
- package/dist/chunks/studio-84rtc120.js +0 -5
- package/dist/chunks/studio-aekhcdzw.js +0 -7
- package/dist/chunks/studio-aqmph6k4.js +0 -5
- package/dist/chunks/studio-chdmwwzw.js +0 -5
- package/dist/chunks/studio-cp1gbff9.js +0 -14
- package/dist/chunks/studio-fbx6twps.js +0 -6
- package/dist/chunks/studio-fthwn4kf.js +0 -5
- package/dist/chunks/studio-nbxqcgvf.js +0 -5
- package/dist/chunks/studio-t1eedsyx.js +0 -4
- package/dist/chunks/studio-vavmwshr.js +0 -5
- package/dist/chunks/workspace-5vmgsagj.js +0 -4
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioAddRepo",
|
|
4
|
-
"$description": "The repository picker: every
|
|
4
|
+
"$description": "The repository picker: every repository the platform's account link can reach, narrowed by name and account, and — once one is chosen — the folders it holds a project.json in, so a project that lives in a subfolder opens as itself. Two flows share it — Add existing repository, and Open Project on a platform whose projects ARE repositories — so the headline and the primary answer are state rather than text. A `jx-dialog`, so the platform owns modality, Escape, focus restoration and the backdrop. Choosing is two steps now, a repository and then its folder, so the dialog has a confirming button again; a double-click on a row still opens it in one gesture when the folder is unambiguous. Nothing here knows what `not_jx_project` means, which permission counts as write, which folder to preselect or that a Jx-tagged repository sorts first — `new-project/add-repo-modal.ts` keeps the listing, the ordering, the scan and the adoption, and hands over rows that are already strings and booleans.",
|
|
5
5
|
"tagName": "jx-dialog",
|
|
6
6
|
"$props": {
|
|
7
7
|
"headline": {
|
|
8
8
|
"$ref": "#/state/title"
|
|
9
9
|
},
|
|
10
|
-
"confirmLabel":
|
|
10
|
+
"confirmLabel": {
|
|
11
|
+
"$ref": "#/state/confirmLabel"
|
|
12
|
+
},
|
|
13
|
+
"confirmDisabled": {
|
|
14
|
+
"$ref": "#/state/confirmDisabled"
|
|
15
|
+
},
|
|
11
16
|
"cancelLabel": "Cancel",
|
|
12
|
-
"size": "
|
|
17
|
+
"size": "xl"
|
|
13
18
|
},
|
|
14
19
|
"attributes": {
|
|
15
20
|
"part": "add-repo"
|
|
16
21
|
},
|
|
22
|
+
"onconfirm": {
|
|
23
|
+
"$prototype": "Function",
|
|
24
|
+
"body": [
|
|
25
|
+
{
|
|
26
|
+
"operator": "call",
|
|
27
|
+
"target": {
|
|
28
|
+
"$ref": "#/state/confirm"
|
|
29
|
+
},
|
|
30
|
+
"value": []
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
17
34
|
"oncancel": {
|
|
18
35
|
"$prototype": "Function",
|
|
19
36
|
"body": [
|
|
@@ -39,85 +56,142 @@
|
|
|
39
56
|
]
|
|
40
57
|
},
|
|
41
58
|
"style": {
|
|
42
|
-
"$description": "
|
|
43
|
-
"& [part=\"
|
|
59
|
+
"$description": "The dialog is wide enough for two panes — the repositories on the left, the chosen repository's projects on the right — and the PANES scroll, never the dialog: `jx-dialog` pins its header and footer and scrolls its body, and this surface turns the body into a column the picker fills, so the filter above the lists, the summary under them and the access footer at the bottom all stay on screen however long a list is. That is what retired the two scrollbars the old picker drew side by side, its own 320px list inside a dialog that also scrolled. Below 40rem the panes stack.",
|
|
60
|
+
"& > [part=\"dialog\"] > [part=\"body\"]": {
|
|
61
|
+
"$description": "The kit's body scrolls by default; here the picker is the body's only child and does its own scrolling inside two panes, so the body becomes the column it fills.",
|
|
44
62
|
"display": "flex",
|
|
45
63
|
"flexDirection": "column",
|
|
46
|
-
"
|
|
64
|
+
"overflow": "hidden"
|
|
47
65
|
},
|
|
48
|
-
"& [part=\"
|
|
49
|
-
"$description": "The list scrolls, not the dialog. `jx-dialog` already scrolls its own body, so a cap here looks redundant — it is not: the filter above the list and the access footer below it are the two things that widen a listing that is missing what the reader came for, and a dialog that scrolls as one takes both of them off screen exactly when the list is long enough to need them.",
|
|
66
|
+
"& [part=\"picker\"]": {
|
|
50
67
|
"display": "flex",
|
|
51
68
|
"flexDirection": "column",
|
|
52
|
-
"
|
|
53
|
-
"
|
|
69
|
+
"gap": "var(--jx-space-3)",
|
|
70
|
+
"flex": "0 1 30rem",
|
|
71
|
+
"minHeight": "0",
|
|
72
|
+
"containerType": "inline-size",
|
|
73
|
+
"containerName": "add-repo"
|
|
54
74
|
},
|
|
55
|
-
"& [part=\"
|
|
56
|
-
"$description": "A whole row is the button, because the answer is the repository rather than a control inside it. `baseline` rather than `center`: the name and the metadata beside it are different sizes, and aligning their boxes leaves the two strings visibly off each other.",
|
|
75
|
+
"& [part=\"toolbar\"]": {
|
|
57
76
|
"display": "flex",
|
|
58
|
-
"alignItems": "
|
|
77
|
+
"alignItems": "center",
|
|
78
|
+
"gap": "var(--jx-space-2)",
|
|
79
|
+
"flex": "none"
|
|
80
|
+
},
|
|
81
|
+
"& [part=\"filter\"]": {
|
|
82
|
+
"flex": "1 1 auto",
|
|
83
|
+
"minWidth": "0"
|
|
84
|
+
},
|
|
85
|
+
"& [part=\"owner\"]": {
|
|
86
|
+
"flex": "0 0 12rem"
|
|
87
|
+
},
|
|
88
|
+
"& [part=\"owner-slot\"], & [part=\"list-slot\"], & [part=\"detail-slot\"], & [part=\"locations-slot\"], & [part=\"failure-slot\"], & [part=\"access-slot\"], & [part=\"tag-slot\"], & [part=\"private-slot\"]": {
|
|
89
|
+
"display": "contents"
|
|
90
|
+
},
|
|
91
|
+
"& [part=\"panes\"]": {
|
|
92
|
+
"display": "grid",
|
|
93
|
+
"gridTemplateColumns": "minmax(0, 1fr) minmax(0, 1fr)",
|
|
59
94
|
"gap": "var(--jx-space-3)",
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
95
|
+
"flex": "1 1 auto",
|
|
96
|
+
"minHeight": "0"
|
|
97
|
+
},
|
|
98
|
+
"& [part=\"repos\"], & [part=\"detail\"]": {
|
|
99
|
+
"$description": "Each pane is a framed box of its own height that scrolls its own content, so choosing a repository far down the list never scrolls its projects out of view.",
|
|
100
|
+
"display": "flex",
|
|
101
|
+
"flexDirection": "column",
|
|
102
|
+
"minHeight": "0",
|
|
103
|
+
"border": "1px solid var(--border)",
|
|
64
104
|
"borderRadius": "var(--radius)",
|
|
65
|
-
"
|
|
66
|
-
"color": "var(--fg)",
|
|
67
|
-
"cursor": "pointer",
|
|
68
|
-
"textAlign": "left",
|
|
69
|
-
"&:hover:not([disabled])": {
|
|
70
|
-
"background": "var(--hover-bg)"
|
|
71
|
-
},
|
|
72
|
-
"&[disabled]": {
|
|
73
|
-
"$description": "Every row goes quiet while any one of them is importing: one adoption at a time, and the row that is running says so itself rather than the list going grey around it.",
|
|
74
|
-
"opacity": "0.6",
|
|
75
|
-
"cursor": "default"
|
|
76
|
-
}
|
|
105
|
+
"overflow": "hidden"
|
|
77
106
|
},
|
|
78
|
-
"& [part=\"
|
|
79
|
-
"
|
|
107
|
+
"& [part=\"repo-list\"]": {
|
|
108
|
+
"flex": "1 1 auto",
|
|
109
|
+
"minHeight": "0",
|
|
110
|
+
"overflowY": "auto",
|
|
111
|
+
"padding": "var(--jx-space-1)"
|
|
80
112
|
},
|
|
81
|
-
"& [part=\"
|
|
113
|
+
"& [part=\"location-list\"]": {
|
|
114
|
+
"margin": "0 calc(-1 * var(--jx-space-2))"
|
|
115
|
+
},
|
|
116
|
+
"& [part=\"detail-body\"]": {
|
|
82
117
|
"display": "flex",
|
|
83
|
-
"
|
|
84
|
-
"gap": "var(--jx-space-
|
|
118
|
+
"flexDirection": "column",
|
|
119
|
+
"gap": "var(--jx-space-3)",
|
|
120
|
+
"flex": "1 1 auto",
|
|
121
|
+
"minHeight": "0",
|
|
122
|
+
"overflowY": "auto",
|
|
123
|
+
"padding": "var(--jx-space-3)"
|
|
124
|
+
},
|
|
125
|
+
"& [part=\"detail-head\"]": {
|
|
126
|
+
"display": "flex",
|
|
127
|
+
"flexDirection": "column",
|
|
128
|
+
"gap": "var(--jx-space-1)",
|
|
129
|
+
"flex": "none",
|
|
130
|
+
"minWidth": "0"
|
|
131
|
+
},
|
|
132
|
+
"& [part=\"detail-name\"]": {
|
|
133
|
+
"fontWeight": "600",
|
|
134
|
+
"overflow": "hidden",
|
|
135
|
+
"textOverflow": "ellipsis",
|
|
136
|
+
"whiteSpace": "nowrap"
|
|
137
|
+
},
|
|
138
|
+
"& [part=\"detail-meta\"]": {
|
|
85
139
|
"fontSize": "var(--jx-text-sm)",
|
|
86
140
|
"color": "var(--fg-dim)"
|
|
87
141
|
},
|
|
142
|
+
"& [part=\"folder-row\"]": {
|
|
143
|
+
"flex": "none"
|
|
144
|
+
},
|
|
145
|
+
"& [part=\"repo\"] [part=\"description\"], & [part=\"location\"] [part=\"description\"]": {
|
|
146
|
+
"$description": "The note gives way before the name does: a repository is found by its name, and a branch or a path cut short is still recognisable where a name cut short is not.",
|
|
147
|
+
"flexShrink": "4"
|
|
148
|
+
},
|
|
149
|
+
"& [part=\"badges\"]": {
|
|
150
|
+
"display": "inline-flex",
|
|
151
|
+
"gap": "var(--jx-space-1)"
|
|
152
|
+
},
|
|
88
153
|
"& [part=\"badge\"]": {
|
|
89
154
|
"padding": "0 var(--jx-space-2)",
|
|
90
|
-
"border": "1px solid
|
|
91
|
-
"borderRadius": "var(--jx-radius-lg)"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"$description": "Pushed to the far end of the row it belongs to, so \"Importing…\" reads as this repository's state rather than as another piece of its metadata.",
|
|
95
|
-
"marginLeft": "auto",
|
|
96
|
-
"fontSize": "var(--jx-text-sm)",
|
|
97
|
-
"color": "var(--fg-dim)"
|
|
155
|
+
"border": "1px solid currentColor",
|
|
156
|
+
"borderRadius": "var(--jx-radius-lg)",
|
|
157
|
+
"fontSize": "var(--jx-text-xs)",
|
|
158
|
+
"opacity": "0.8"
|
|
98
159
|
},
|
|
99
|
-
"& [part=\"empty\"]": {
|
|
160
|
+
"& [part=\"empty\"], & [part=\"note\"]": {
|
|
100
161
|
"margin": "0",
|
|
101
162
|
"padding": "var(--jx-space-4) var(--jx-space-3)",
|
|
102
163
|
"fontSize": "var(--jx-text-md)",
|
|
103
164
|
"color": "var(--fg-dim)"
|
|
104
165
|
},
|
|
166
|
+
"& [part=\"note\"]": {
|
|
167
|
+
"padding": "0"
|
|
168
|
+
},
|
|
169
|
+
"& [part=\"summary\"]": {
|
|
170
|
+
"$description": "What confirming will do, in words: which repository, which folder, which branch. Polite and live, because the arrows in both fields change it without moving focus, and this is how a reader who cannot see the panes hears where they are.",
|
|
171
|
+
"margin": "0",
|
|
172
|
+
"flex": "none",
|
|
173
|
+
"minHeight": "var(--jx-leading-md)",
|
|
174
|
+
"fontSize": "var(--jx-text-sm)",
|
|
175
|
+
"color": "var(--fg-dim)"
|
|
176
|
+
},
|
|
105
177
|
"& [part=\"install\"], & [part=\"access-link\"]": {
|
|
106
178
|
"color": "var(--accent)",
|
|
107
179
|
"textDecoration": "underline"
|
|
108
180
|
},
|
|
109
181
|
"& [part=\"failure\"]": {
|
|
110
|
-
"$description": "The refusal from the last adoption, said above the
|
|
182
|
+
"$description": "The refusal from the last adoption, said above the footer the reader is still looking at, because the panes survive it: a folder with no readable project.json is a fact about that folder, and the rest are still on offer. It is `failure` rather than `error` because `jx-textfield` draws a `[part=\"error\"]` of its own inside this same tree.",
|
|
111
183
|
"margin": "0",
|
|
184
|
+
"flex": "none",
|
|
112
185
|
"fontSize": "var(--jx-text-md)",
|
|
113
186
|
"color": "var(--danger)"
|
|
114
187
|
},
|
|
115
188
|
"& [part=\"access\"]": {
|
|
116
|
-
"$description": "The listing is bounded by what the Jx Suite GitHub App was granted, so the dialog always offers a way out of that boundary rather than only saying the list is short. `center`, not `baseline`:
|
|
189
|
+
"$description": "The listing is bounded by what the Jx Suite GitHub App was granted, so the dialog always offers a way out of that boundary rather than only saying the list is short. `center`, not `baseline`: a small kit button exports no baseline (surface-baseline-rows.test.ts).",
|
|
117
190
|
"display": "flex",
|
|
118
191
|
"flexWrap": "wrap",
|
|
119
192
|
"alignItems": "center",
|
|
120
193
|
"gap": "var(--jx-space-2)",
|
|
194
|
+
"flex": "none",
|
|
121
195
|
"paddingTop": "var(--jx-space-3)",
|
|
122
196
|
"borderTop": "1px solid var(--border)",
|
|
123
197
|
"fontSize": "var(--jx-text-sm)",
|
|
@@ -130,6 +204,15 @@
|
|
|
130
204
|
"display": "flex",
|
|
131
205
|
"flexWrap": "wrap",
|
|
132
206
|
"gap": "var(--jx-space-3)"
|
|
207
|
+
},
|
|
208
|
+
"@container add-repo (max-width: 40rem)": {
|
|
209
|
+
"& [part=\"panes\"]": {
|
|
210
|
+
"gridTemplateColumns": "minmax(0, 1fr)",
|
|
211
|
+
"gridTemplateRows": "minmax(0, 1fr) minmax(0, 1fr)"
|
|
212
|
+
},
|
|
213
|
+
"& [part=\"owner\"]": {
|
|
214
|
+
"flexBasis": "9rem"
|
|
215
|
+
}
|
|
133
216
|
}
|
|
134
217
|
},
|
|
135
218
|
"children": [
|
|
@@ -140,235 +223,649 @@
|
|
|
140
223
|
},
|
|
141
224
|
"children": [
|
|
142
225
|
{
|
|
143
|
-
"tagName": "
|
|
226
|
+
"tagName": "div",
|
|
144
227
|
"attributes": {
|
|
145
|
-
"part": "
|
|
146
|
-
},
|
|
147
|
-
"$props": {
|
|
148
|
-
"label": "Filter repositories",
|
|
149
|
-
"placeholder": "Filter repositories…",
|
|
150
|
-
"size": "sm",
|
|
151
|
-
"value": {
|
|
152
|
-
"$ref": "#/state/filter"
|
|
153
|
-
}
|
|
228
|
+
"part": "toolbar"
|
|
154
229
|
},
|
|
155
|
-
"
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
{
|
|
159
|
-
"
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
"
|
|
230
|
+
"children": [
|
|
231
|
+
{
|
|
232
|
+
"tagName": "jx-textfield",
|
|
233
|
+
"attributes": {
|
|
234
|
+
"part": "filter"
|
|
235
|
+
},
|
|
236
|
+
"$props": {
|
|
237
|
+
"label": "Filter repositories",
|
|
238
|
+
"placeholder": "Filter repositories…",
|
|
239
|
+
"type": "search",
|
|
240
|
+
"size": "sm",
|
|
241
|
+
"value": {
|
|
242
|
+
"$ref": "#/state/filter"
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
"oninput": {
|
|
246
|
+
"$prototype": "Function",
|
|
247
|
+
"body": [
|
|
248
|
+
{
|
|
249
|
+
"operator": "call",
|
|
250
|
+
"target": {
|
|
251
|
+
"$ref": "#/state/setFilter"
|
|
252
|
+
},
|
|
253
|
+
"value": [
|
|
254
|
+
{
|
|
255
|
+
"$ref": "event#/target/value"
|
|
256
|
+
}
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
"onkeydown": {
|
|
262
|
+
"$prototype": "Function",
|
|
263
|
+
"body": [
|
|
164
264
|
{
|
|
165
|
-
"$
|
|
265
|
+
"$switch": {
|
|
266
|
+
"$ref": "event#/key"
|
|
267
|
+
},
|
|
268
|
+
"cases": {
|
|
269
|
+
"ArrowDown": [
|
|
270
|
+
{
|
|
271
|
+
"preventDefault": true
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"operator": "call",
|
|
275
|
+
"target": {
|
|
276
|
+
"$ref": "#/state/move"
|
|
277
|
+
},
|
|
278
|
+
"value": [1]
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
"ArrowUp": [
|
|
282
|
+
{
|
|
283
|
+
"preventDefault": true
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"operator": "call",
|
|
287
|
+
"target": {
|
|
288
|
+
"$ref": "#/state/move"
|
|
289
|
+
},
|
|
290
|
+
"value": [-1]
|
|
291
|
+
}
|
|
292
|
+
],
|
|
293
|
+
"Enter": [
|
|
294
|
+
{
|
|
295
|
+
"preventDefault": true
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"operator": "call",
|
|
299
|
+
"target": {
|
|
300
|
+
"$ref": "#/state/confirm"
|
|
301
|
+
},
|
|
302
|
+
"value": []
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
}
|
|
166
306
|
}
|
|
167
307
|
]
|
|
168
308
|
}
|
|
169
|
-
]
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
"tagName": "div",
|
|
174
|
-
"attributes": {
|
|
175
|
-
"part": "body-slot",
|
|
176
|
-
"role": "none"
|
|
177
|
-
},
|
|
178
|
-
"style": {
|
|
179
|
-
"display": "contents"
|
|
180
|
-
},
|
|
181
|
-
"$switch": {
|
|
182
|
-
"$ref": "#/state/listState"
|
|
183
|
-
},
|
|
184
|
-
"cases": {
|
|
185
|
-
"loading": {
|
|
186
|
-
"tagName": "p",
|
|
187
|
-
"attributes": {
|
|
188
|
-
"part": "empty"
|
|
189
|
-
},
|
|
190
|
-
"textContent": "Loading repositories…"
|
|
191
309
|
},
|
|
192
|
-
|
|
193
|
-
"tagName": "
|
|
310
|
+
{
|
|
311
|
+
"tagName": "div",
|
|
194
312
|
"attributes": {
|
|
195
|
-
"part": "
|
|
313
|
+
"part": "owner-slot",
|
|
314
|
+
"role": "none"
|
|
196
315
|
},
|
|
197
|
-
"
|
|
198
|
-
|
|
199
|
-
"empty-write": {
|
|
200
|
-
"tagName": "p",
|
|
201
|
-
"attributes": {
|
|
202
|
-
"part": "empty"
|
|
316
|
+
"style": {
|
|
317
|
+
"display": "contents"
|
|
203
318
|
},
|
|
204
|
-
"
|
|
205
|
-
|
|
206
|
-
"empty-install": {
|
|
207
|
-
"tagName": "p",
|
|
208
|
-
"attributes": {
|
|
209
|
-
"part": "empty"
|
|
319
|
+
"$switch": {
|
|
320
|
+
"$ref": "#/state/hasOwners"
|
|
210
321
|
},
|
|
211
|
-
"
|
|
212
|
-
{
|
|
213
|
-
"tagName": "
|
|
214
|
-
"textContent": "No repositories are reachable yet. "
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
"tagName": "a",
|
|
322
|
+
"cases": {
|
|
323
|
+
"true": {
|
|
324
|
+
"tagName": "jx-select",
|
|
218
325
|
"attributes": {
|
|
219
|
-
"part": "
|
|
220
|
-
"href": "${state.installUrl}",
|
|
221
|
-
"target": "_blank",
|
|
222
|
-
"rel": "noreferrer"
|
|
326
|
+
"part": "owner"
|
|
223
327
|
},
|
|
224
|
-
"
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
328
|
+
"$props": {
|
|
329
|
+
"label": "Account",
|
|
330
|
+
"size": "sm",
|
|
331
|
+
"options": {
|
|
332
|
+
"$ref": "#/state/owners"
|
|
333
|
+
},
|
|
334
|
+
"value": {
|
|
335
|
+
"$ref": "#/state/owner"
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"onchange": {
|
|
339
|
+
"$prototype": "Function",
|
|
340
|
+
"body": [
|
|
341
|
+
{
|
|
342
|
+
"operator": "call",
|
|
343
|
+
"target": {
|
|
344
|
+
"$ref": "#/state/setOwner"
|
|
345
|
+
},
|
|
346
|
+
"value": [
|
|
347
|
+
{
|
|
348
|
+
"$ref": "event#/target/value"
|
|
349
|
+
}
|
|
350
|
+
]
|
|
351
|
+
}
|
|
352
|
+
]
|
|
353
|
+
}
|
|
229
354
|
}
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"tagName": "div",
|
|
361
|
+
"attributes": {
|
|
362
|
+
"part": "panes"
|
|
363
|
+
},
|
|
364
|
+
"children": [
|
|
365
|
+
{
|
|
366
|
+
"tagName": "section",
|
|
241
367
|
"attributes": {
|
|
242
|
-
"part": "
|
|
368
|
+
"part": "repos",
|
|
369
|
+
"aria-label": "Repositories"
|
|
243
370
|
},
|
|
244
371
|
"children": [
|
|
245
372
|
{
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
373
|
+
"tagName": "div",
|
|
374
|
+
"attributes": {
|
|
375
|
+
"part": "list-slot",
|
|
376
|
+
"role": "none"
|
|
249
377
|
},
|
|
250
|
-
"
|
|
251
|
-
"
|
|
378
|
+
"style": {
|
|
379
|
+
"display": "contents"
|
|
252
380
|
},
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
"
|
|
259
|
-
"
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
381
|
+
"$switch": {
|
|
382
|
+
"$ref": "#/state/listState"
|
|
383
|
+
},
|
|
384
|
+
"cases": {
|
|
385
|
+
"loading": {
|
|
386
|
+
"tagName": "p",
|
|
387
|
+
"attributes": {
|
|
388
|
+
"part": "empty"
|
|
389
|
+
},
|
|
390
|
+
"textContent": "Loading repositories…"
|
|
391
|
+
},
|
|
392
|
+
"empty-filter": {
|
|
393
|
+
"tagName": "p",
|
|
394
|
+
"attributes": {
|
|
395
|
+
"part": "empty"
|
|
396
|
+
},
|
|
397
|
+
"textContent": "No repositories match the filter."
|
|
398
|
+
},
|
|
399
|
+
"empty-write": {
|
|
400
|
+
"tagName": "p",
|
|
401
|
+
"attributes": {
|
|
402
|
+
"part": "empty"
|
|
403
|
+
},
|
|
404
|
+
"textContent": "Repositories you can write to are listed here. Widen the Jx Suite GitHub App's repository access below, or ask a repository admin for write access."
|
|
263
405
|
},
|
|
264
|
-
"
|
|
265
|
-
"
|
|
266
|
-
"
|
|
406
|
+
"empty-install": {
|
|
407
|
+
"tagName": "p",
|
|
408
|
+
"attributes": {
|
|
409
|
+
"part": "empty"
|
|
410
|
+
},
|
|
411
|
+
"children": [
|
|
267
412
|
{
|
|
268
|
-
"
|
|
269
|
-
"
|
|
270
|
-
|
|
413
|
+
"tagName": "span",
|
|
414
|
+
"textContent": "Repositories the Jx Suite GitHub App can reach are listed here. "
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"tagName": "a",
|
|
418
|
+
"attributes": {
|
|
419
|
+
"part": "install",
|
|
420
|
+
"href": "${state.installUrl}",
|
|
421
|
+
"target": "_blank",
|
|
422
|
+
"rel": "noreferrer"
|
|
271
423
|
},
|
|
272
|
-
"
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
424
|
+
"textContent": "Install the Jx Suite GitHub App"
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"tagName": "span",
|
|
428
|
+
"textContent": " to grant repository access, then use Refresh below."
|
|
277
429
|
}
|
|
278
430
|
]
|
|
279
431
|
},
|
|
280
|
-
"
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
"
|
|
284
|
-
"part": "name"
|
|
285
|
-
},
|
|
286
|
-
"textContent": "${$map.item.fullName}"
|
|
432
|
+
"empty-none": {
|
|
433
|
+
"tagName": "p",
|
|
434
|
+
"attributes": {
|
|
435
|
+
"part": "empty"
|
|
287
436
|
},
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
"
|
|
437
|
+
"textContent": "Repositories the Jx Suite GitHub App can reach are listed here. Install the App, or widen its repository access, and try again."
|
|
438
|
+
},
|
|
439
|
+
"listed": {
|
|
440
|
+
"tagName": "jx-listbox",
|
|
441
|
+
"attributes": {
|
|
442
|
+
"part": "repo-list",
|
|
443
|
+
"id": "add-repo-repos"
|
|
444
|
+
},
|
|
445
|
+
"$props": {
|
|
446
|
+
"label": "Repositories",
|
|
447
|
+
"active": "${state.activeRepoId}"
|
|
448
|
+
},
|
|
449
|
+
"onselect": {
|
|
450
|
+
"$prototype": "Function",
|
|
451
|
+
"body": [
|
|
294
452
|
{
|
|
295
|
-
"
|
|
296
|
-
"
|
|
297
|
-
"
|
|
298
|
-
"role": "none"
|
|
299
|
-
},
|
|
300
|
-
"style": {
|
|
301
|
-
"display": "contents"
|
|
453
|
+
"operator": "call",
|
|
454
|
+
"target": {
|
|
455
|
+
"$ref": "#/state/select"
|
|
302
456
|
},
|
|
303
|
-
"
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
"cases": {
|
|
307
|
-
"true": {
|
|
308
|
-
"tagName": "span",
|
|
309
|
-
"attributes": {
|
|
310
|
-
"part": "badge"
|
|
311
|
-
},
|
|
312
|
-
"textContent": "Jx"
|
|
457
|
+
"value": [
|
|
458
|
+
{
|
|
459
|
+
"$ref": "event#/detail"
|
|
313
460
|
}
|
|
314
|
-
|
|
461
|
+
]
|
|
462
|
+
}
|
|
463
|
+
],
|
|
464
|
+
"description": "One handler for every row, because a row's `select` bubbles; its detail is the row's value, the repository's full name."
|
|
465
|
+
},
|
|
466
|
+
"children": [
|
|
467
|
+
{
|
|
468
|
+
"$prototype": "Array",
|
|
469
|
+
"items": {
|
|
470
|
+
"$ref": "#/state/rows"
|
|
315
471
|
},
|
|
316
|
-
{
|
|
317
|
-
"
|
|
472
|
+
"key": {
|
|
473
|
+
"$ref": "$map/item/fullName"
|
|
474
|
+
},
|
|
475
|
+
"map": {
|
|
476
|
+
"tagName": "jx-option",
|
|
318
477
|
"attributes": {
|
|
319
|
-
"part": "
|
|
320
|
-
"
|
|
478
|
+
"part": "repo",
|
|
479
|
+
"id": "${$map.item.id}",
|
|
480
|
+
"data-repo": "${$map.item.fullName}",
|
|
481
|
+
"title": "${$map.item.fullName}"
|
|
321
482
|
},
|
|
322
|
-
"
|
|
323
|
-
"
|
|
483
|
+
"$props": {
|
|
484
|
+
"value": {
|
|
485
|
+
"$ref": "$map/item/fullName"
|
|
486
|
+
},
|
|
487
|
+
"label": {
|
|
488
|
+
"$ref": "$map/item/fullName"
|
|
489
|
+
},
|
|
490
|
+
"description": {
|
|
491
|
+
"$ref": "$map/item/meta"
|
|
492
|
+
}
|
|
324
493
|
},
|
|
325
|
-
"
|
|
326
|
-
"$
|
|
494
|
+
"ondblclick": {
|
|
495
|
+
"$prototype": "Function",
|
|
496
|
+
"body": [
|
|
497
|
+
{
|
|
498
|
+
"operator": "call",
|
|
499
|
+
"target": {
|
|
500
|
+
"$ref": "#/state/openRepo"
|
|
501
|
+
},
|
|
502
|
+
"value": [
|
|
503
|
+
{
|
|
504
|
+
"$ref": "$map/item/fullName"
|
|
505
|
+
}
|
|
506
|
+
]
|
|
507
|
+
}
|
|
508
|
+
]
|
|
327
509
|
},
|
|
328
|
-
"
|
|
329
|
-
|
|
510
|
+
"children": [
|
|
511
|
+
{
|
|
330
512
|
"tagName": "span",
|
|
331
513
|
"attributes": {
|
|
332
|
-
"part": "
|
|
514
|
+
"part": "badges",
|
|
515
|
+
"slot": "end"
|
|
333
516
|
},
|
|
334
|
-
"
|
|
517
|
+
"children": [
|
|
518
|
+
{
|
|
519
|
+
"tagName": "span",
|
|
520
|
+
"attributes": {
|
|
521
|
+
"part": "tag-slot",
|
|
522
|
+
"role": "none"
|
|
523
|
+
},
|
|
524
|
+
"style": {
|
|
525
|
+
"display": "contents"
|
|
526
|
+
},
|
|
527
|
+
"$switch": {
|
|
528
|
+
"$ref": "$map/item/isJx"
|
|
529
|
+
},
|
|
530
|
+
"cases": {
|
|
531
|
+
"true": {
|
|
532
|
+
"tagName": "span",
|
|
533
|
+
"attributes": {
|
|
534
|
+
"part": "badge"
|
|
535
|
+
},
|
|
536
|
+
"textContent": "Jx"
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"tagName": "span",
|
|
542
|
+
"attributes": {
|
|
543
|
+
"part": "private-slot",
|
|
544
|
+
"role": "none"
|
|
545
|
+
},
|
|
546
|
+
"style": {
|
|
547
|
+
"display": "contents"
|
|
548
|
+
},
|
|
549
|
+
"$switch": {
|
|
550
|
+
"$ref": "$map/item/isPrivate"
|
|
551
|
+
},
|
|
552
|
+
"cases": {
|
|
553
|
+
"true": {
|
|
554
|
+
"tagName": "span",
|
|
555
|
+
"attributes": {
|
|
556
|
+
"part": "badge"
|
|
557
|
+
},
|
|
558
|
+
"textContent": "private"
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
]
|
|
335
563
|
}
|
|
336
|
-
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
"tagName": "span",
|
|
340
|
-
"textContent": "${$map.item.meta}"
|
|
564
|
+
]
|
|
341
565
|
}
|
|
342
|
-
|
|
566
|
+
}
|
|
567
|
+
]
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"tagName": "section",
|
|
575
|
+
"attributes": {
|
|
576
|
+
"part": "detail",
|
|
577
|
+
"aria-label": "Project"
|
|
578
|
+
},
|
|
579
|
+
"children": [
|
|
580
|
+
{
|
|
581
|
+
"tagName": "div",
|
|
582
|
+
"attributes": {
|
|
583
|
+
"part": "detail-slot",
|
|
584
|
+
"role": "none"
|
|
585
|
+
},
|
|
586
|
+
"style": {
|
|
587
|
+
"display": "contents"
|
|
588
|
+
},
|
|
589
|
+
"$switch": {
|
|
590
|
+
"$ref": "#/state/hasDetail"
|
|
591
|
+
},
|
|
592
|
+
"cases": {
|
|
593
|
+
"false": {
|
|
594
|
+
"tagName": "p",
|
|
595
|
+
"attributes": {
|
|
596
|
+
"part": "empty"
|
|
343
597
|
},
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
598
|
+
"textContent": "Choose a repository to see the Jx projects it holds and pick the one to open."
|
|
599
|
+
},
|
|
600
|
+
"true": {
|
|
601
|
+
"tagName": "div",
|
|
602
|
+
"attributes": {
|
|
603
|
+
"part": "detail-body"
|
|
604
|
+
},
|
|
605
|
+
"children": [
|
|
606
|
+
{
|
|
607
|
+
"tagName": "div",
|
|
608
|
+
"attributes": {
|
|
609
|
+
"part": "detail-head"
|
|
610
|
+
},
|
|
611
|
+
"children": [
|
|
612
|
+
{
|
|
613
|
+
"tagName": "span",
|
|
614
|
+
"attributes": {
|
|
615
|
+
"part": "detail-name"
|
|
616
|
+
},
|
|
617
|
+
"textContent": "${state.detailName}"
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"tagName": "span",
|
|
621
|
+
"attributes": {
|
|
622
|
+
"part": "detail-meta"
|
|
623
|
+
},
|
|
624
|
+
"textContent": "${state.detailMeta}"
|
|
625
|
+
}
|
|
626
|
+
]
|
|
352
627
|
},
|
|
353
|
-
|
|
354
|
-
"
|
|
628
|
+
{
|
|
629
|
+
"tagName": "jx-field",
|
|
630
|
+
"attributes": {
|
|
631
|
+
"part": "folder-row"
|
|
632
|
+
},
|
|
633
|
+
"$props": {
|
|
634
|
+
"span": true,
|
|
635
|
+
"label": "Project Folder",
|
|
636
|
+
"description": {
|
|
637
|
+
"$ref": "#/state/folderHelp"
|
|
638
|
+
},
|
|
639
|
+
"invalid": {
|
|
640
|
+
"$ref": "#/state/folderInvalid"
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
"children": [
|
|
644
|
+
{
|
|
645
|
+
"tagName": "jx-textfield",
|
|
646
|
+
"attributes": {
|
|
647
|
+
"part": "folder"
|
|
648
|
+
},
|
|
649
|
+
"$props": {
|
|
650
|
+
"placeholder": "Repository root",
|
|
651
|
+
"size": "sm",
|
|
652
|
+
"mono": true,
|
|
653
|
+
"value": {
|
|
654
|
+
"$ref": "#/state/folder"
|
|
655
|
+
},
|
|
656
|
+
"invalid": {
|
|
657
|
+
"$ref": "#/state/folderInvalid"
|
|
658
|
+
},
|
|
659
|
+
"error": {
|
|
660
|
+
"$ref": "#/state/folderError"
|
|
661
|
+
}
|
|
662
|
+
},
|
|
663
|
+
"oninput": {
|
|
664
|
+
"$prototype": "Function",
|
|
665
|
+
"body": [
|
|
666
|
+
{
|
|
667
|
+
"operator": "call",
|
|
668
|
+
"target": {
|
|
669
|
+
"$ref": "#/state/setFolder"
|
|
670
|
+
},
|
|
671
|
+
"value": [
|
|
672
|
+
{
|
|
673
|
+
"$ref": "event#/target/value"
|
|
674
|
+
}
|
|
675
|
+
]
|
|
676
|
+
}
|
|
677
|
+
]
|
|
678
|
+
},
|
|
679
|
+
"onkeydown": {
|
|
680
|
+
"$prototype": "Function",
|
|
681
|
+
"body": [
|
|
682
|
+
{
|
|
683
|
+
"$switch": {
|
|
684
|
+
"$ref": "event#/key"
|
|
685
|
+
},
|
|
686
|
+
"cases": {
|
|
687
|
+
"ArrowDown": [
|
|
688
|
+
{
|
|
689
|
+
"preventDefault": true
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
"operator": "call",
|
|
693
|
+
"target": {
|
|
694
|
+
"$ref": "#/state/moveLocation"
|
|
695
|
+
},
|
|
696
|
+
"value": [1]
|
|
697
|
+
}
|
|
698
|
+
],
|
|
699
|
+
"ArrowUp": [
|
|
700
|
+
{
|
|
701
|
+
"preventDefault": true
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
"operator": "call",
|
|
705
|
+
"target": {
|
|
706
|
+
"$ref": "#/state/moveLocation"
|
|
707
|
+
},
|
|
708
|
+
"value": [-1]
|
|
709
|
+
}
|
|
710
|
+
],
|
|
711
|
+
"Enter": [
|
|
712
|
+
{
|
|
713
|
+
"preventDefault": true
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
"operator": "call",
|
|
717
|
+
"target": {
|
|
718
|
+
"$ref": "#/state/confirm"
|
|
719
|
+
},
|
|
720
|
+
"value": []
|
|
721
|
+
}
|
|
722
|
+
]
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
]
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
]
|
|
355
729
|
},
|
|
356
|
-
|
|
357
|
-
"
|
|
358
|
-
|
|
359
|
-
"
|
|
360
|
-
|
|
730
|
+
{
|
|
731
|
+
"tagName": "div",
|
|
732
|
+
"attributes": {
|
|
733
|
+
"part": "locations-slot",
|
|
734
|
+
"role": "none"
|
|
735
|
+
},
|
|
736
|
+
"style": {
|
|
737
|
+
"display": "contents"
|
|
738
|
+
},
|
|
739
|
+
"$switch": {
|
|
740
|
+
"$ref": "#/state/detailState"
|
|
741
|
+
},
|
|
742
|
+
"cases": {
|
|
743
|
+
"loading": {
|
|
744
|
+
"tagName": "p",
|
|
745
|
+
"attributes": {
|
|
746
|
+
"part": "note"
|
|
747
|
+
},
|
|
748
|
+
"textContent": "Looking for project.json files…"
|
|
749
|
+
},
|
|
750
|
+
"listed": {
|
|
751
|
+
"tagName": "jx-listbox",
|
|
752
|
+
"attributes": {
|
|
753
|
+
"part": "location-list",
|
|
754
|
+
"id": "add-repo-locations"
|
|
755
|
+
},
|
|
756
|
+
"$props": {
|
|
757
|
+
"label": "Projects in this repository",
|
|
758
|
+
"active": "${state.activeLocationId}"
|
|
759
|
+
},
|
|
760
|
+
"onselect": {
|
|
761
|
+
"$prototype": "Function",
|
|
762
|
+
"body": [
|
|
763
|
+
{
|
|
764
|
+
"operator": "call",
|
|
765
|
+
"target": {
|
|
766
|
+
"$ref": "#/state/pickLocation"
|
|
767
|
+
},
|
|
768
|
+
"value": [
|
|
769
|
+
{
|
|
770
|
+
"$ref": "event#/detail"
|
|
771
|
+
}
|
|
772
|
+
]
|
|
773
|
+
}
|
|
774
|
+
]
|
|
775
|
+
},
|
|
776
|
+
"children": [
|
|
777
|
+
{
|
|
778
|
+
"$prototype": "Array",
|
|
779
|
+
"items": {
|
|
780
|
+
"$ref": "#/state/locations"
|
|
781
|
+
},
|
|
782
|
+
"key": {
|
|
783
|
+
"$ref": "$map/item/dir"
|
|
784
|
+
},
|
|
785
|
+
"map": {
|
|
786
|
+
"tagName": "jx-option",
|
|
787
|
+
"attributes": {
|
|
788
|
+
"part": "location",
|
|
789
|
+
"id": "${$map.item.id}",
|
|
790
|
+
"data-dir": "${$map.item.dir}",
|
|
791
|
+
"title": "${$map.item.path}"
|
|
792
|
+
},
|
|
793
|
+
"$props": {
|
|
794
|
+
"value": {
|
|
795
|
+
"$ref": "$map/item/dir"
|
|
796
|
+
},
|
|
797
|
+
"label": {
|
|
798
|
+
"$ref": "$map/item/label"
|
|
799
|
+
},
|
|
800
|
+
"description": {
|
|
801
|
+
"$ref": "$map/item/path"
|
|
802
|
+
}
|
|
803
|
+
},
|
|
804
|
+
"ondblclick": {
|
|
805
|
+
"$prototype": "Function",
|
|
806
|
+
"body": [
|
|
807
|
+
{
|
|
808
|
+
"operator": "call",
|
|
809
|
+
"target": {
|
|
810
|
+
"$ref": "#/state/confirm"
|
|
811
|
+
},
|
|
812
|
+
"value": []
|
|
813
|
+
}
|
|
814
|
+
]
|
|
815
|
+
},
|
|
816
|
+
"children": [
|
|
817
|
+
{
|
|
818
|
+
"tagName": "jx-icon",
|
|
819
|
+
"attributes": {
|
|
820
|
+
"slot": "icon"
|
|
821
|
+
},
|
|
822
|
+
"$props": {
|
|
823
|
+
"name": "folder"
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
]
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
]
|
|
830
|
+
},
|
|
831
|
+
"empty": {
|
|
832
|
+
"tagName": "p",
|
|
833
|
+
"attributes": {
|
|
834
|
+
"part": "note"
|
|
835
|
+
},
|
|
836
|
+
"textContent": "No folder in this repository holds a project.json yet. Name one above if it does, or create a new project instead."
|
|
361
837
|
},
|
|
362
|
-
"
|
|
838
|
+
"unlisted": {
|
|
839
|
+
"tagName": "p",
|
|
840
|
+
"attributes": {
|
|
841
|
+
"part": "note"
|
|
842
|
+
},
|
|
843
|
+
"textContent": "Name the folder that holds the project's project.json, or leave the field empty to open the repository root."
|
|
844
|
+
},
|
|
845
|
+
"failed": {
|
|
846
|
+
"tagName": "p",
|
|
847
|
+
"attributes": {
|
|
848
|
+
"part": "note"
|
|
849
|
+
},
|
|
850
|
+
"textContent": "Studio couldn't list this repository's projects. Name the folder that holds the project.json instead."
|
|
851
|
+
}
|
|
363
852
|
}
|
|
364
853
|
}
|
|
365
|
-
|
|
366
|
-
|
|
854
|
+
]
|
|
855
|
+
}
|
|
367
856
|
}
|
|
368
857
|
}
|
|
369
858
|
]
|
|
370
859
|
}
|
|
371
|
-
|
|
860
|
+
]
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
"tagName": "p",
|
|
864
|
+
"attributes": {
|
|
865
|
+
"part": "summary",
|
|
866
|
+
"aria-live": "polite"
|
|
867
|
+
},
|
|
868
|
+
"textContent": "${state.summary}"
|
|
372
869
|
},
|
|
373
870
|
{
|
|
374
871
|
"tagName": "div",
|