@jxsuite/studio 6.1.0 → 6.1.1
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 +4 -0
- package/dist/chunks/adapter-f93pafd7.js +4 -0
- package/dist/chunks/{cf-account-picker-n8hr38v7.js → cf-account-picker-af1h381v.js} +3 -3
- package/dist/chunks/cf-settings-125tdm0w.js +4 -0
- package/dist/chunks/components-ax2f1fnn.js +4 -0
- package/dist/chunks/content-source-108aqtk1.js +4 -0
- package/dist/chunks/{convert-to-repeater-7wns8kf1.js → convert-to-repeater-ry5rmppr.js} +3 -3
- package/dist/chunks/editor-pfgdmkb0.js +4 -0
- package/dist/chunks/entry-commands-t0k1q0kx.js +4 -0
- package/dist/chunks/{extension-sections-na7rj3nr.js → extension-sections-6mwh2hf8.js} +3 -3
- package/dist/chunks/file-ops-meej5mqf.js +4 -0
- package/dist/chunks/files-44vp8a2s.js +4 -0
- package/dist/chunks/format-host-7q1petb9.js +4 -0
- package/dist/chunks/fs-events-h2mwnxaz.js +4 -0
- package/dist/chunks/git-panel-zngbymvd.js +4 -0
- package/dist/chunks/{grid-view-7tt4bxw1.js → grid-view-sx9vynsp.js} +15 -15
- package/dist/chunks/icons-p44xhjf0.js +4 -0
- package/dist/chunks/iframe-host-qk3ycq87.js +4 -0
- package/dist/chunks/{index-gybvv7a6.js → index-2veqmnhr.js} +3 -3
- package/dist/chunks/index-wkyfjeqz.js +4 -0
- package/dist/chunks/{javascript-rnvdp3k4.js → javascript-8nbvs12s.js} +3 -3
- package/dist/chunks/jsonMode-s8kt9dsj.js +13 -0
- package/dist/chunks/jx-validate-psgd7vsx.js +4 -0
- package/dist/chunks/layers-panel-1kq2jyfk.js +4 -0
- package/dist/chunks/layers-xd92fg8d.js +4 -0
- package/dist/chunks/lit-html-ac4cwwr4.js +4 -0
- package/dist/chunks/media-picker-0svzkdyb.js +4 -0
- package/dist/chunks/menu-5c55ea3d.js +4 -0
- package/dist/chunks/{monaco-binding-2jnhjjvr.js → monaco-binding-z6r70pdt.js} +3 -3
- package/dist/chunks/monaco-buffer-fz6gq5y7.js +4 -0
- package/dist/chunks/monaco-setup-q4axkgj7.js +4 -0
- package/dist/chunks/notify-0xgtn8q1.js +4 -0
- package/dist/chunks/platform-v1qctbe6.js +4 -0
- package/dist/chunks/publish-panel-ym1fmgq5.js +4 -0
- package/dist/chunks/quick-search-a54e6t5n.js +4 -0
- package/dist/chunks/references-gmqp82fs.js +4 -0
- package/dist/chunks/right-panel-v7t9awbk.js +4 -0
- package/dist/chunks/section-registry-vhyf3zsr.js +4 -0
- package/dist/chunks/studio-0bhx5hz6.js +5 -0
- package/dist/chunks/studio-0k1ddnyy.js +6 -0
- package/dist/chunks/studio-1b04pd0j.js +64 -0
- package/dist/chunks/{studio-5g0ag7c0.js → studio-1q1sh2ax.js} +3 -3
- package/dist/chunks/studio-4dwbj6gb.js +5 -0
- package/dist/chunks/studio-4tanh828.js +5 -0
- package/dist/chunks/{studio-vzacdfsc.js → studio-55h4mstj.js} +3 -3
- package/dist/chunks/studio-5tnvjkz4.js +5 -0
- package/dist/chunks/{studio-rggdb3hm.js → studio-60dqgb0c.js} +4 -4
- package/dist/chunks/studio-61dp09qg.js +9 -0
- package/dist/chunks/studio-63epcrj2.js +5 -0
- package/dist/chunks/studio-74k29dy9.js +5 -0
- package/dist/chunks/{studio-qvasen3f.js → studio-7vg6jcd3.js} +4 -4
- package/dist/chunks/studio-7zx31knw.js +9 -0
- package/dist/chunks/studio-8bxk97km.js +5 -0
- package/dist/chunks/{studio-anyrgzvb.js → studio-8grwxtqk.js} +4 -4
- package/dist/chunks/studio-933e30n4.js +5 -0
- package/dist/chunks/{studio-h0xgswew.js → studio-98wnwhbg.js} +4 -4
- package/dist/chunks/studio-9mccjwjh.js +14 -0
- package/dist/chunks/studio-a2ke1e4t.js +5 -0
- package/dist/chunks/studio-e3a2a6v3.js +4 -0
- package/dist/chunks/{studio-vk9ezads.js → studio-e81q1vb9.js} +4 -4
- package/dist/chunks/{studio-z8w183sh.js → studio-epgrmqqm.js} +4 -4
- package/dist/chunks/studio-g1shz58g.js +5 -0
- package/dist/chunks/studio-gf0fz03c.js +5 -0
- package/dist/chunks/studio-gjtpe62q.js +6 -0
- package/dist/chunks/{studio-y78s8r2n.js → studio-gkskhg7m.js} +4 -4
- package/dist/chunks/studio-gx4dnjzd.js +5 -0
- package/dist/chunks/{studio-pxg4ap1e.js → studio-h46vtzk8.js} +4 -4
- package/dist/chunks/studio-j03zga3y.js +9 -0
- package/dist/chunks/{studio-ar8jcf2y.js → studio-jhpxeckz.js} +4 -4
- package/dist/chunks/{studio-w4c0xmrw.js → studio-k01r7ykp.js} +4 -4
- package/dist/chunks/{studio-cpxkgjrj.js → studio-kggey1jt.js} +4 -4
- package/dist/chunks/{studio-zxp13sss.js → studio-kk7h30ne.js} +6 -6
- package/dist/chunks/{studio-ecaz25vk.js → studio-kt1zqney.js} +4 -4
- package/dist/chunks/{studio-zygnmm01.js → studio-m3cwhvye.js} +4 -4
- package/dist/chunks/{studio-2sqcndak.js → studio-mcayt6hz.js} +4 -4
- package/dist/chunks/{studio-qqz8e5gk.js → studio-myjcghv3.js} +4 -4
- package/dist/chunks/studio-n8bxwc3y.js +4 -0
- package/dist/chunks/{studio-wfjqhhbk.js → studio-ngm8gvpb.js} +4 -4
- package/dist/chunks/{studio-zscd9ty4.js → studio-nj5a01jy.js} +196 -196
- package/dist/chunks/{studio-3bpdkq2s.js → studio-pcgz8heb.js} +4 -4
- package/dist/chunks/{studio-v2bvmbjj.js → studio-pre0skq6.js} +4 -4
- package/dist/chunks/{studio-ghkb32r8.js → studio-qcsq0t15.js} +4 -4
- package/dist/chunks/studio-qkstvve9.js +5 -0
- package/dist/chunks/studio-qv1pwd3c.js +5 -0
- package/dist/chunks/{studio-bmn4mn9j.js → studio-rc6dvxjb.js} +5 -5
- package/dist/chunks/{studio-qbj760tx.js → studio-rv11kfwa.js} +7 -7
- package/dist/chunks/studio-s8dmmz66.js +5 -0
- package/dist/chunks/studio-sp5xzbj4.js +6 -0
- package/dist/chunks/{studio-tyasmc39.js → studio-szsjbj0g.js} +4 -4
- package/dist/chunks/studio-t1xzawhr.js +16 -0
- package/dist/chunks/{studio-skprc6ef.js → studio-t6b6qe31.js} +4 -4
- package/dist/chunks/{studio-ghrhy2y7.js → studio-tdcprbqb.js} +4 -4
- package/dist/chunks/{studio-txjjzrsm.js → studio-vrmcjf9g.js} +5 -5
- package/dist/chunks/studio-vyc0b4he.js +10 -0
- package/dist/chunks/{studio-5g4t8v6w.js → studio-w0cgf6jg.js} +4 -4
- package/dist/chunks/{studio-acdksxx6.js → studio-w3hskzqk.js} +4 -4
- package/dist/chunks/{studio-0x3jyb8r.js → studio-wszjyh0j.js} +4 -4
- package/dist/chunks/studio-xgrgcdyh.js +9 -0
- package/dist/chunks/{studio-qpqa7vk3.js → studio-xz2yxfcb.js} +4 -4
- package/dist/chunks/{studio-77kt594t.js → studio-y6n42tgs.js} +4 -4
- package/dist/chunks/{studio-19x1c75w.js → studio-yb560vxr.js} +4 -4
- package/dist/chunks/{studio-wgh5kxpj.js → studio-yn9f8vtx.js} +4 -4
- package/dist/chunks/{studio-a2138x5k.js → studio-yw05w8f0.js} +5 -5
- package/dist/chunks/{studio-h9c4p2tx.js → studio-z16sgavc.js} +4 -4
- package/dist/chunks/studio-zey7zsdw.js +12 -0
- package/dist/chunks/{studio-g7nse7zb.js → studio-zyqn40w4.js} +4 -4
- package/dist/chunks/tsMode-2frah6h1.js +14 -0
- package/dist/chunks/workspace-zt81g1ms.js +4 -0
- package/dist/chunks/ws-client-n2bh4hkf.js +4 -0
- package/dist/iframe-entry.js +13 -13
- package/dist/manifest.json +62 -62
- package/dist/studio.js +77 -77
- package/dist/workers/ts.worker.js +3 -3
- package/package.json +10 -10
- package/src/canvas/canvas-render.ts +4 -1
- package/src/canvas/canvas-utils.ts +73 -15
- package/src/canvas/iframe-host.ts +67 -21
- package/src/canvas/iframe-inline-edit.ts +22 -4
- package/src/canvas/iframe-interaction.ts +7 -1
- package/src/canvas/iframe-protocol.ts +3 -0
- package/src/canvas/iframe-render.ts +5 -2
- package/src/commands/defaults.ts +4 -1
- package/src/commands/live-context.ts +3 -1
- package/src/editor/shortcuts.ts +55 -27
- package/src/files/media-paths.ts +3 -1
- package/src/panels/editors.ts +3 -1
- package/src/panels/style-panel.ts +36 -11
- package/src/platforms/devserver.ts +47 -12
- package/src/studio.ts +14 -2
- package/src/surfaces/library-pane.ts +6 -0
- package/src/surfaces/rail.json +126 -73
- package/src/surfaces/rail.ts +31 -5
- package/src/tabs/typing.ts +31 -0
- package/src/utils/edit-display.ts +30 -1
- package/src/workspace/workspace.ts +7 -0
- package/dist/chunks/2020-nkxms0ay.js +0 -4
- package/dist/chunks/adapter-m948ab5f.js +0 -4
- package/dist/chunks/cf-settings-356xdtne.js +0 -4
- package/dist/chunks/components-yk3t844e.js +0 -4
- package/dist/chunks/content-source-bawmyc09.js +0 -4
- package/dist/chunks/editor-6sc8nacq.js +0 -4
- package/dist/chunks/entry-commands-8ay9fh81.js +0 -4
- package/dist/chunks/file-ops-gye0qw56.js +0 -4
- package/dist/chunks/files-dmc2xvcq.js +0 -4
- package/dist/chunks/format-host-t76b53f8.js +0 -4
- package/dist/chunks/fs-events-cg4tpz06.js +0 -4
- package/dist/chunks/git-panel-yef7bshy.js +0 -4
- package/dist/chunks/icons-qbh8akb1.js +0 -4
- package/dist/chunks/iframe-host-tmz30gfp.js +0 -4
- package/dist/chunks/index-nag78a9h.js +0 -4
- package/dist/chunks/jsonMode-zhwsprqk.js +0 -13
- package/dist/chunks/jx-validate-3gbp5nkn.js +0 -4
- package/dist/chunks/layers-fvz99859.js +0 -4
- package/dist/chunks/layers-panel-gchmbf9p.js +0 -4
- package/dist/chunks/lit-html-9agdspkt.js +0 -4
- package/dist/chunks/media-picker-rhjvyy00.js +0 -4
- package/dist/chunks/menu-2e4y9j7b.js +0 -4
- package/dist/chunks/monaco-buffer-rp21359g.js +0 -4
- package/dist/chunks/monaco-setup-vhh7gayr.js +0 -4
- package/dist/chunks/notify-h3www560.js +0 -4
- package/dist/chunks/platform-hz34wcd7.js +0 -4
- package/dist/chunks/publish-panel-exsmjzyj.js +0 -4
- package/dist/chunks/quick-search-pgaqeh0m.js +0 -4
- package/dist/chunks/references-2cgdxnb8.js +0 -4
- package/dist/chunks/right-panel-jf856w5w.js +0 -4
- package/dist/chunks/section-registry-jnf8r5gy.js +0 -4
- package/dist/chunks/studio-0f55h9ye.js +0 -5
- package/dist/chunks/studio-0sqdhnew.js +0 -12
- package/dist/chunks/studio-3aey7dd3.js +0 -5
- package/dist/chunks/studio-47y6fbpf.js +0 -5
- package/dist/chunks/studio-4m3826v2.js +0 -5
- package/dist/chunks/studio-4nx2dj1g.js +0 -4
- package/dist/chunks/studio-4xv5s47r.js +0 -9
- package/dist/chunks/studio-5py436sf.js +0 -5
- package/dist/chunks/studio-8f87n763.js +0 -10
- package/dist/chunks/studio-8mb00b84.js +0 -5
- package/dist/chunks/studio-8p51gq2h.js +0 -6
- package/dist/chunks/studio-954ds834.js +0 -5
- package/dist/chunks/studio-9ft45c83.js +0 -9
- package/dist/chunks/studio-a9yzstqj.js +0 -5
- package/dist/chunks/studio-e7xxa0sj.js +0 -5
- package/dist/chunks/studio-fzdywr6p.js +0 -9
- package/dist/chunks/studio-g5fmf0c1.js +0 -5
- package/dist/chunks/studio-geq1ea6k.js +0 -14
- package/dist/chunks/studio-grawhey1.js +0 -5
- package/dist/chunks/studio-jyzj5cxs.js +0 -5
- package/dist/chunks/studio-mgx8yhnz.js +0 -64
- package/dist/chunks/studio-mpb04y1d.js +0 -6
- package/dist/chunks/studio-n17mty64.js +0 -5
- package/dist/chunks/studio-nwh2eqsk.js +0 -6
- package/dist/chunks/studio-q1h883bt.js +0 -16
- package/dist/chunks/studio-q4tv82h7.js +0 -9
- package/dist/chunks/studio-sghy936h.js +0 -4
- package/dist/chunks/studio-tt2nactf.js +0 -5
- package/dist/chunks/studio-xasj0796.js +0 -5
- package/dist/chunks/tsMode-gr0m4dzr.js +0 -14
- package/dist/chunks/workspace-m15qtcqp.js +0 -4
- package/dist/chunks/ws-client-nf61frr1.js +0 -4
package/src/surfaces/rail.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://jxsuite.com/schema/v1",
|
|
3
3
|
"$id": "StudioRail",
|
|
4
|
-
"$description": "The Navigator rail: a rendering of the panel registry. The adapter hands in `groups`, every rail-able panel grouped by level with its selected state and badge, and `settingsVisible`/`settingsOpen` for the
|
|
4
|
+
"$description": "The Navigator rail: a rendering of the panel registry. The adapter hands in `groups`, every rail-able panel grouped by level with its selected state and badge, and, for the foot, `libraryVisible`/`libraryOpen` for the Library button and `settingsVisible`/`settingsOpen` for the gear. Nothing here is a list of panels. Each button prints its record's short `railLabel` under the glyph, falling back to `title`, and carries the full `title` as its accessible name and tooltip: the visible words lead the name a reader hears (WCAG 2.5.3), and the tooltip restores what a short label leaves out.",
|
|
5
5
|
"tagName": "div",
|
|
6
6
|
"attributes": {
|
|
7
7
|
"part": "rail"
|
|
@@ -162,94 +162,147 @@
|
|
|
162
162
|
"attributes": {
|
|
163
163
|
"part": "foot"
|
|
164
164
|
},
|
|
165
|
-
"
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
"true": {
|
|
170
|
-
"tagName": "jx-action-button",
|
|
171
|
-
"$props": {
|
|
172
|
-
"label": "Settings",
|
|
173
|
-
"hint": "Settings",
|
|
174
|
-
"icon": "gear",
|
|
175
|
-
"stacked": true,
|
|
176
|
-
"haspopup": "menu",
|
|
177
|
-
"expanded": {
|
|
178
|
-
"$ref": "#/state/settingsOpen"
|
|
179
|
-
}
|
|
165
|
+
"children": [
|
|
166
|
+
{
|
|
167
|
+
"$switch": {
|
|
168
|
+
"$ref": "#/state/libraryVisible"
|
|
180
169
|
},
|
|
170
|
+
"tagName": "div",
|
|
181
171
|
"attributes": {
|
|
182
|
-
"
|
|
183
|
-
"data-expanded": "${state.settingsOpen ? '' : null}"
|
|
172
|
+
"part": "foot-library"
|
|
184
173
|
},
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
|
|
188
|
-
{
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
"
|
|
174
|
+
"cases": {
|
|
175
|
+
"true": {
|
|
176
|
+
"tagName": "jx-action-button",
|
|
177
|
+
"$props": {
|
|
178
|
+
"label": "Library",
|
|
179
|
+
"hint": "Library",
|
|
180
|
+
"icon": "books",
|
|
181
|
+
"stacked": true,
|
|
182
|
+
"selected": {
|
|
183
|
+
"$ref": "#/state/libraryOpen"
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"attributes": {
|
|
187
|
+
"data-rail-action": "library.open"
|
|
188
|
+
},
|
|
189
|
+
"onclick": {
|
|
190
|
+
"$prototype": "Function",
|
|
191
|
+
"body": [
|
|
194
192
|
{
|
|
195
|
-
"
|
|
193
|
+
"operator": "call",
|
|
194
|
+
"target": {
|
|
195
|
+
"$ref": "#/state/openLibrary"
|
|
196
|
+
},
|
|
197
|
+
"value": []
|
|
196
198
|
}
|
|
197
199
|
]
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
+
},
|
|
201
|
+
"children": [
|
|
202
|
+
{
|
|
203
|
+
"tagName": "span",
|
|
204
|
+
"textContent": "Library"
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"tagName": "div",
|
|
212
|
+
"attributes": {
|
|
213
|
+
"part": "foot-settings"
|
|
200
214
|
},
|
|
201
|
-
"
|
|
202
|
-
"$
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
"
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
215
|
+
"$switch": {
|
|
216
|
+
"$ref": "#/state/settingsVisible"
|
|
217
|
+
},
|
|
218
|
+
"cases": {
|
|
219
|
+
"true": {
|
|
220
|
+
"tagName": "jx-action-button",
|
|
221
|
+
"$props": {
|
|
222
|
+
"label": "Settings",
|
|
223
|
+
"hint": "Settings",
|
|
224
|
+
"icon": "gear",
|
|
225
|
+
"stacked": true,
|
|
226
|
+
"haspopup": "menu",
|
|
227
|
+
"expanded": {
|
|
228
|
+
"$ref": "#/state/settingsOpen"
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"attributes": {
|
|
232
|
+
"data-rail-menu": "settings",
|
|
233
|
+
"data-expanded": "${state.settingsOpen ? '' : null}"
|
|
234
|
+
},
|
|
235
|
+
"onclick": {
|
|
236
|
+
"$prototype": "Function",
|
|
237
|
+
"body": [
|
|
238
|
+
{
|
|
239
|
+
"operator": "call",
|
|
240
|
+
"target": {
|
|
241
|
+
"$ref": "#/state/openSettings"
|
|
242
|
+
},
|
|
243
|
+
"value": [
|
|
244
|
+
{
|
|
245
|
+
"$ref": "event#/currentTarget"
|
|
246
|
+
}
|
|
247
|
+
]
|
|
248
|
+
}
|
|
249
|
+
]
|
|
250
|
+
},
|
|
251
|
+
"onkeydown": {
|
|
252
|
+
"$prototype": "Function",
|
|
253
|
+
"body": [
|
|
254
|
+
{
|
|
255
|
+
"$switch": {
|
|
256
|
+
"$ref": "event#/key"
|
|
257
|
+
},
|
|
258
|
+
"cases": {
|
|
259
|
+
"ArrowUp": [
|
|
260
|
+
{
|
|
261
|
+
"operator": "call",
|
|
262
|
+
"target": {
|
|
263
|
+
"$ref": "#/state/openSettings"
|
|
264
|
+
},
|
|
265
|
+
"value": [
|
|
266
|
+
{
|
|
267
|
+
"$ref": "event#/currentTarget"
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
},
|
|
216
271
|
{
|
|
217
|
-
"
|
|
272
|
+
"preventDefault": true
|
|
218
273
|
}
|
|
219
|
-
]
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
274
|
+
],
|
|
275
|
+
"ArrowDown": [
|
|
276
|
+
{
|
|
277
|
+
"operator": "call",
|
|
278
|
+
"target": {
|
|
279
|
+
"$ref": "#/state/openSettings"
|
|
280
|
+
},
|
|
281
|
+
"value": [
|
|
282
|
+
{
|
|
283
|
+
"$ref": "event#/currentTarget"
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
},
|
|
232
287
|
{
|
|
233
|
-
"
|
|
288
|
+
"preventDefault": true
|
|
234
289
|
}
|
|
235
290
|
]
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"preventDefault": true
|
|
239
291
|
}
|
|
240
|
-
|
|
292
|
+
}
|
|
293
|
+
]
|
|
294
|
+
},
|
|
295
|
+
"children": [
|
|
296
|
+
{
|
|
297
|
+
"tagName": "span",
|
|
298
|
+
"textContent": "Settings"
|
|
241
299
|
}
|
|
242
|
-
|
|
243
|
-
]
|
|
244
|
-
},
|
|
245
|
-
"children": [
|
|
246
|
-
{
|
|
247
|
-
"tagName": "span",
|
|
248
|
-
"textContent": "Settings"
|
|
300
|
+
]
|
|
249
301
|
}
|
|
250
|
-
|
|
302
|
+
}
|
|
251
303
|
}
|
|
252
|
-
|
|
304
|
+
],
|
|
305
|
+
"$description": "The two rail buttons that open no Navigator panel: the Library, which is a canvas tab rather than a panel and so sits with the other exception, above the gear."
|
|
253
306
|
}
|
|
254
307
|
]
|
|
255
308
|
}
|
package/src/surfaces/rail.ts
CHANGED
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
* record's `railLabel` when it declares one (Source Control's is "Source", because the full title
|
|
15
15
|
* ellipsed in the 48px label box), and the full `title` stays the accessible name and the tooltip.
|
|
16
16
|
*
|
|
17
|
-
* The foot
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* The foot holds the two buttons that open no Navigator panel. **Library** runs `library.open`: the
|
|
18
|
+
* Library is a canvas tab, not a panel, and its button is pressed while that tab is the focused
|
|
19
|
+
* one. Below it is the ⚙ **Settings** menu, a menu button rendered from the `settings/menu`
|
|
20
|
+
* placement: a record joins the gear by declaring the placement and there is nothing here to update
|
|
21
|
+
* in step. With no registry, or one that declares nothing for either, the foot is empty.
|
|
20
22
|
*
|
|
21
23
|
* What this adapter owns is the projection and the two decisions: which panel a button toggles, and
|
|
22
24
|
* where the gear's menu opens. The scope is reactive, so the surface follows `shell` through one
|
|
@@ -31,6 +33,7 @@ import { refreshGitStatus } from "../panels/git-panel";
|
|
|
31
33
|
import { panelContext, railGroups } from "../panels/panel-registry";
|
|
32
34
|
import { registerNavigatorPanels } from "../panels/navigator-panels";
|
|
33
35
|
import { activeRegistry } from "../commands/active-registry";
|
|
36
|
+
import { runActiveReported } from "../commands/run-reported";
|
|
34
37
|
import {
|
|
35
38
|
dismissSettingsMenu,
|
|
36
39
|
isSettingsMenuOpen,
|
|
@@ -38,6 +41,8 @@ import {
|
|
|
38
41
|
SETTINGS_MENU_PLACEMENT,
|
|
39
42
|
} from "../panels/settings-menu";
|
|
40
43
|
import { mountSurface, registerSurface } from "../ui/surface";
|
|
44
|
+
import { libraryTabId } from "../browse/library-source";
|
|
45
|
+
import { activeTab } from "../workspace/workspace";
|
|
41
46
|
import railDoc from "./rail.json";
|
|
42
47
|
|
|
43
48
|
import type { EffectScope } from "@vue/reactivity";
|
|
@@ -71,6 +76,9 @@ interface RailScope extends Record<string, unknown> {
|
|
|
71
76
|
groups: RailGroupProjection[];
|
|
72
77
|
settingsVisible: boolean;
|
|
73
78
|
settingsOpen: boolean;
|
|
79
|
+
libraryVisible: boolean;
|
|
80
|
+
libraryOpen: boolean;
|
|
81
|
+
openLibrary: () => void;
|
|
74
82
|
toggle: (id: string) => void;
|
|
75
83
|
openSettings: (anchor: unknown) => void;
|
|
76
84
|
}
|
|
@@ -104,7 +112,12 @@ export function toggleRailPanel(panel: PanelRecord): void {
|
|
|
104
112
|
}
|
|
105
113
|
|
|
106
114
|
/** The rail, as the surface reads it, from the registry and the shell as they stand now. */
|
|
107
|
-
function project(): {
|
|
115
|
+
function project(): {
|
|
116
|
+
groups: RailGroupProjection[];
|
|
117
|
+
settingsVisible: boolean;
|
|
118
|
+
libraryVisible: boolean;
|
|
119
|
+
libraryOpen: boolean;
|
|
120
|
+
} {
|
|
108
121
|
const ctx = panelContext();
|
|
109
122
|
const groups = railGroups(ctx).map((group, index) => ({
|
|
110
123
|
dividerAbove: index > 0,
|
|
@@ -122,13 +135,24 @@ function project(): { groups: RailGroupProjection[]; settingsVisible: boolean }
|
|
|
122
135
|
const registry = activeRegistry();
|
|
123
136
|
const settingsVisible =
|
|
124
137
|
registry !== null && registry.forPlacement(SETTINGS_MENU_PLACEMENT).length > 0;
|
|
125
|
-
|
|
138
|
+
const libraryVisible =
|
|
139
|
+
registry?.get(LIBRARY_COMMAND) !== undefined && registry.isVisible(LIBRARY_COMMAND);
|
|
140
|
+
const libraryOpen = activeTab.value?.id === libraryTabId();
|
|
141
|
+
return { groups, libraryOpen, libraryVisible, settingsVisible };
|
|
126
142
|
}
|
|
127
143
|
|
|
144
|
+
/** The command the Library button runs: the record decides when it can, and what opening means. */
|
|
145
|
+
const LIBRARY_COMMAND = "library.open";
|
|
146
|
+
|
|
128
147
|
/** The reactive scope the surface reads, made once. */
|
|
129
148
|
function state(): RailScope {
|
|
130
149
|
_state ??= reactive({
|
|
131
150
|
groups: [],
|
|
151
|
+
libraryOpen: false,
|
|
152
|
+
libraryVisible: false,
|
|
153
|
+
openLibrary: () => {
|
|
154
|
+
void runActiveReported(LIBRARY_COMMAND, undefined, "Navigator rail");
|
|
155
|
+
},
|
|
132
156
|
openSettings: (anchor: unknown) => {
|
|
133
157
|
if (!(anchor instanceof HTMLElement)) {
|
|
134
158
|
return;
|
|
@@ -161,6 +185,8 @@ export function renderActivityBar(): void {
|
|
|
161
185
|
const next = project();
|
|
162
186
|
scope.groups = next.groups;
|
|
163
187
|
scope.settingsVisible = next.settingsVisible;
|
|
188
|
+
scope.libraryVisible = next.libraryVisible;
|
|
189
|
+
scope.libraryOpen = next.libraryOpen;
|
|
164
190
|
scope.settingsOpen = isSettingsMenuOpen();
|
|
165
191
|
ensureMounted();
|
|
166
192
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which tabs hold typing in a source buffer that no save has kept yet.
|
|
3
|
+
*
|
|
4
|
+
* A Monaco buffer reaches its document on a debounce, and a buffer whose text does not parse never
|
|
5
|
+
* reaches it at all. `tab.doc.dirty` deliberately says nothing about either: it is the DOCUMENT's
|
|
6
|
+
* flag, and the close and quit gates ask the buffers themselves (`tabBufferUnsaved`). Save's
|
|
7
|
+
* enablement needs the union, and needs it REACTIVELY, so the Command Bar's Save lights up on the
|
|
8
|
+
* first keystroke rather than when the commit lands. The buffers' own flag is a closure variable no
|
|
9
|
+
* effect can track, so the keystroke handlers note the tab here as well.
|
|
10
|
+
*
|
|
11
|
+
* Kept out of `services/monaco-buffer.ts` because `commands/live-context.ts` reads it, and
|
|
12
|
+
* everything that module reaches has to load in a bare Bun process with no DOM.
|
|
13
|
+
*/
|
|
14
|
+
import { reactive } from "../reactivity";
|
|
15
|
+
|
|
16
|
+
const typing = reactive(new Set<string>());
|
|
17
|
+
|
|
18
|
+
/** A keystroke in one of `tabId`'s source buffers. */
|
|
19
|
+
export function noteTyping(tabId: string): void {
|
|
20
|
+
typing.add(tabId);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** A save kept everything the buffers held, or the tab is gone. */
|
|
24
|
+
export function clearTyping(tabId: string): void {
|
|
25
|
+
typing.delete(tabId);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Whether `tabId` holds typing no save has kept. Tracked by effects. */
|
|
29
|
+
export function hasTyping(tabId: string): boolean {
|
|
30
|
+
return typing.has(tabId);
|
|
31
|
+
}
|
|
@@ -14,9 +14,38 @@ const TRANSPARENT_PX =
|
|
|
14
14
|
// A neutral, visible gray placeholder for image-like bindings in edit mode (e.g. a component `image`
|
|
15
15
|
// Prop bound to ${...}). The component renders <img src={prop}> internally, so a transparent pixel
|
|
16
16
|
// Would collapse to nothing — a gray SVG box reads as an intentional placeholder instead.
|
|
17
|
-
const PLACEHOLDER_IMG =
|
|
17
|
+
export const PLACEHOLDER_IMG =
|
|
18
18
|
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='32'%20height='32'%3E%3Crect%20width='32'%20height='32'%20fill='%23d0d0d0'/%3E%3C/svg%3E";
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Swap every image under `host` that fails to load for {@link PLACEHOLDER_IMG}, until `signal`
|
|
22
|
+
* aborts.
|
|
23
|
+
*
|
|
24
|
+
* For previews drawn in the PARENT realm, where nothing ran {@link prepareForEditMode}: a library
|
|
25
|
+
* card's file, a component whose image prop is a `${}` binding with nothing to bind it, a document
|
|
26
|
+
* whose `src` is empty. The browser drew each as its broken-image glyph. `error` does not bubble,
|
|
27
|
+
* so the listener captures — which also covers images a preview renders after it is mounted. An
|
|
28
|
+
* empty `src` fires `error` too, so it needs no separate test; an image already showing the
|
|
29
|
+
* placeholder is left alone, so a placeholder that cannot load (it always can) does not loop.
|
|
30
|
+
*
|
|
31
|
+
* @param {Element} host
|
|
32
|
+
* @param {AbortSignal} signal
|
|
33
|
+
*/
|
|
34
|
+
export function placeholderBrokenImages(host: Element, signal: AbortSignal): void {
|
|
35
|
+
host.addEventListener(
|
|
36
|
+
"error",
|
|
37
|
+
(event) => {
|
|
38
|
+
const { target } = event;
|
|
39
|
+
if (target instanceof HTMLImageElement && target.getAttribute("src") !== PLACEHOLDER_IMG) {
|
|
40
|
+
target.setAttribute("src", PLACEHOLDER_IMG);
|
|
41
|
+
target.removeAttribute("srcset");
|
|
42
|
+
target.dataset.placeholder = "";
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{ capture: true, signal },
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
20
49
|
// Prop/attribute names that feed an <img>/background, so a ${...} binding would otherwise render a
|
|
21
50
|
// Broken image in edit mode. Matched by exact name or common camelCase suffix (featuredImage, heroBg).
|
|
22
51
|
const IMAGE_KEY_RE =
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { computed, reactive, toRaw } from "../reactivity";
|
|
2
|
+
import { clearTyping, hasTyping, noteTyping } from "../tabs/typing";
|
|
2
3
|
import { commitTabBuffers } from "../services/monaco-buffer";
|
|
3
4
|
import { resetAiWrites } from "../services/ai-writes";
|
|
4
5
|
import { ensureCollab, rekeyCollab } from "../collab/collab-session";
|
|
@@ -1034,6 +1035,8 @@ export function closeTab(tabId: string) {
|
|
|
1034
1035
|
rememberClosedTab(tab);
|
|
1035
1036
|
disposeTab(tab);
|
|
1036
1037
|
workspace.tabs.delete(tabId);
|
|
1038
|
+
// The id comes back when the same file reopens, and it must not come back with Save lit.
|
|
1039
|
+
clearTyping(tabId);
|
|
1037
1040
|
detachTab(tabId);
|
|
1038
1041
|
workspace.mruOrder = workspace.mruOrder.filter((id) => id !== tabId);
|
|
1039
1042
|
resetTabCycle();
|
|
@@ -1270,6 +1273,10 @@ export function renameTab(oldId: string, newId: string, newDocumentPath: string)
|
|
|
1270
1273
|
}
|
|
1271
1274
|
tab.id = newId;
|
|
1272
1275
|
tab.documentPath = newDocumentPath;
|
|
1276
|
+
if (hasTyping(oldId)) {
|
|
1277
|
+
clearTyping(oldId);
|
|
1278
|
+
noteTyping(newId);
|
|
1279
|
+
}
|
|
1273
1280
|
workspace.tabs.delete(oldId);
|
|
1274
1281
|
workspace.tabs.set(newId, tab);
|
|
1275
1282
|
for (const pane of workspace.panes) {
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{Rt,nn,Sl,xf,Mg,_f,By,l_,c_,d_,u_,h_,p_,f_,m_,g_}from"./studio-0sqdhnew.js";import{ae}from"./studio-v2bvmbjj.js";var b=ae(function(M){Object.defineProperty(M,"__esModule",{value:!0});M.dynamicAnchor=void 0;var _=Rt(),ge=Sl(),A=By(),_e=c_(),be={keyword:"$dynamicAnchor",schemaType:"string",code:(e)=>O(e,e.schema)};function O(e,t){let{gen:r,it:o}=e;o.schemaEnv.root.dynamicAnchors[t]=!0;let n=_._`${ge.default.dynamicAnchors}${_.getProperty(t)}`,s=o.errSchemaPath==="#"?o.validateName:ve(e);r.if(_._`!${n}`,()=>r.assign(n,s))}M.dynamicAnchor=O;function ve(e){let{schemaEnv:t,schema:r,self:o}=e.it,{root:n,baseId:s,localRefs:m,meta:c}=t.root,{schemaId:a}=o.opts,u=new A.SchemaEnv({schema:r,schemaId:a,root:n,baseId:s,localRefs:m,meta:c});return A.compileSchema.call(o,u),_e.getValidate(e,u)}M.default=be});var v=ae(function(N){Object.defineProperty(N,"__esModule",{value:!0});N.dynamicRef=void 0;var I=Rt(),qe=Sl(),x=c_(),Pe={keyword:"$dynamicRef",schemaType:"string",code:(e)=>w(e,e.schema)};function w(e,t){let{gen:r,keyword:o,it:n}=e;if(t[0]!=="#")throw Error(`"${o}" only supports hash fragment reference`);let s=t.slice(1);if(n.allErrors)m();else{let a=r.let("valid",!1);m(a),e.ok(a)}function m(a){if(n.schemaEnv.root.dynamicAnchors[s]){let u=r.let("_v",I._`${qe.default.dynamicAnchors}${I.getProperty(s)}`);r.if(u,c(u,a),c(n.validateName,a))}else c(n.validateName,a)()}function c(a,u){return u?()=>r.block(()=>{x.callRef(e,a),r.let(u,!0)}):()=>x.callRef(e,a)}}N.dynamicRef=w;N.default=Pe});var E=ae(function(k){Object.defineProperty(k,"__esModule",{value:!0});var Ae=b(),Oe=nn(),Me={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){if(e.schema)Ae.dynamicAnchor(e,"");else Oe.checkStrictMode(e.it,"$recursiveAnchor: false is ignored")}};k.default=Me});var V=ae(function(C){Object.defineProperty(C,"__esModule",{value:!0});var xe=v(),Ie={keyword:"$recursiveRef",schemaType:"string",code:(e)=>xe.dynamicRef(e,e.schema)};C.default=Ie});var K=ae(function(D){Object.defineProperty(D,"__esModule",{value:!0});var Ne=b(),Te=v(),ke=E(),Ee=V(),Ce=[Ne.default,Te.default,ke.default,Ee.default];D.default=Ce});var L=ae(function(z){Object.defineProperty(z,"__esModule",{value:!0});var G=h_(),De={keyword:"dependentRequired",type:"object",schemaType:"object",error:G.error,code:(e)=>G.validatePropertyDeps(e)};z.default=De});var Z=ae(function(U){Object.defineProperty(U,"__esModule",{value:!0});var Ge=h_(),ze={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(e)=>Ge.validateSchemaDeps(e)};U.default=ze});var H=ae(function(F){Object.defineProperty(F,"__esModule",{value:!0});var Ue=nn(),Ze={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:r}){if(t.contains===void 0)Ue.checkStrictMode(r,`"${e}" without "contains" is ignored`)}};F.default=Ze});var J=ae(function(B){Object.defineProperty(B,"__esModule",{value:!0});var He=L(),Be=Z(),Je=H(),Qe=[He.default,Be.default,Je.default];B.default=Qe});var X=ae(function(W){Object.defineProperty(W,"__esModule",{value:!0});var f=Rt(),Q=nn(),Xe=Sl(),Ye={message:"must NOT have unevaluated properties",params:({params:e})=>f._`{unevaluatedProperty: ${e.unevaluatedProperty}}`},et={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:Ye,code(e){let{gen:t,schema:r,data:o,errsCount:n,it:s}=e;if(!n)throw Error("ajv implementation error");let{allErrors:m,props:c}=s;if(c instanceof f.Name)t.if(f._`${c} !== true`,()=>t.forIn("key",o,(i)=>t.if(u(c,i),()=>a(i))));else if(c!==!0)t.forIn("key",o,(i)=>c===void 0?a(i):t.if(g(c,i),()=>a(i)));s.props=!0,e.ok(f._`${n} === ${Xe.default.errors}`);function a(i){if(r===!1){if(e.setParams({unevaluatedProperty:i}),e.error(),!m)t.break();return}if(!Q.alwaysValidSchema(s,r)){let p=t.name("valid");if(e.subschema({keyword:"unevaluatedProperties",dataProp:i,dataPropType:Q.Type.Str},p),!m)t.if(f.not(p),()=>t.break())}}function u(i,p){return f._`!${i} || !${i}[${p}]`}function g(i,p){let P=[];for(let R in i)if(i[R]===!0)P.push(f._`${p} !== ${R}`);return f.and(...P)}}};W.default=et});var te=ae(function(ee){Object.defineProperty(ee,"__esModule",{value:!0});var l=Rt(),Y=nn(),rt={message:({params:{len:e}})=>l.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>l._`{limit: ${e}}`},at={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:rt,code(e){let{gen:t,schema:r,data:o,it:n}=e,s=n.items||0;if(s===!0)return;let m=t.const("len",l._`${o}.length`);if(r===!1)e.setParams({len:s}),e.fail(l._`${m} > ${s}`);else if(typeof r=="object"&&!Y.alwaysValidSchema(n,r)){let a=t.var("valid",l._`${m} <= ${s}`);t.if(l.not(a),()=>c(a,s)),e.ok(a)}n.items=!0;function c(a,u){t.forRange("i",u,m,(g)=>{if(e.subschema({keyword:"unevaluatedItems",dataProp:g,dataPropType:Y.Type.Num},a),!n.allErrors)t.if(l.not(a),()=>t.break())})}}};ee.default=at});var ne=ae(function(re){Object.defineProperty(re,"__esModule",{value:!0});var ot=X(),st=te(),it=[ot.default,st.default];re.default=it});var ie=ae(function(se){Object.defineProperty(se,"__esModule",{value:!0});var dt=d_(),ut=u_(),mt=p_(),ft=K(),lt=J(),pt=ne(),yt=f_(),oe=m_(),ht=[ft.default,dt.default,ut.default,(0,mt.default)(!0),yt.default,oe.metadataVocabulary,oe.contentVocabulary,lt.default,pt.default];se.default=ht});var ce=ae(function(ir,gt){gt.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var de=ae(function(cr,_t){_t.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var ue=ae(function(dr,bt){bt.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var me=ae(function(ur,vt){vt.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var fe=ae(function(mr,jt){jt.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var le=ae(function(fr,qt){qt.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var pe=ae(function(lr,Pt){Pt.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var ye=ae(function(pr,At){At.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var $e=ae(function(he){Object.defineProperty(he,"__esModule",{value:!0});var Ot=ce(),Mt=de(),St=ue(),xt=me(),It=fe(),wt=le(),Nt=pe(),Tt=ye(),kt=["/properties"];function Et(e){return[Ot,Mt,St,xt,It,t(this,wt),Nt,t(this,Tt)].forEach((r)=>this.addMetaSchema(r,void 0,!1)),this;function t(r,o){return e?r.$dataMetaSchema(o,kt):o}}he.default=Et});var Ht=ae(function(d,q){Object.defineProperty(d,"__esModule",{value:!0});d.MissingRefError=d.ValidationError=d.CodeGen=d.Name=d.nil=d.stringify=d.str=d._=d.KeywordCxt=d.Ajv2020=void 0;var Vt=l_(),Dt=ie(),Kt=g_(),Gt=$e(),j="https://json-schema.org/draft/2020-12/schema";class h extends Vt.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),Dt.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(Kt.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;if(!t)return;Gt.default.call(this,e),this.refs["http://json-schema.org/schema"]=j}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(j)?j:void 0)}}d.Ajv2020=h;q.exports=d=h;q.exports.Ajv2020=h;Object.defineProperty(d,"__esModule",{value:!0});d.default=h;var zt=xf();Object.defineProperty(d,"KeywordCxt",{enumerable:!0,get:function(){return zt.KeywordCxt}});var y=Rt();Object.defineProperty(d,"_",{enumerable:!0,get:function(){return y._}});Object.defineProperty(d,"str",{enumerable:!0,get:function(){return y.str}});Object.defineProperty(d,"stringify",{enumerable:!0,get:function(){return y.stringify}});Object.defineProperty(d,"nil",{enumerable:!0,get:function(){return y.nil}});Object.defineProperty(d,"Name",{enumerable:!0,get:function(){return y.Name}});Object.defineProperty(d,"CodeGen",{enumerable:!0,get:function(){return y.CodeGen}});var Lt=Mg();Object.defineProperty(d,"ValidationError",{enumerable:!0,get:function(){return Lt.default}});var Ut=_f();Object.defineProperty(d,"MissingRefError",{enumerable:!0,get:function(){return Ut.default}})});export default Ht();
|
|
2
|
-
|
|
3
|
-
//# debugId=33C1B4F596220F4464756E2164756E21
|
|
4
|
-
//# sourceMappingURL=2020-nkxms0ay.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{$f,A_,N_,f$,O_}from"./studio-xasj0796.js";import"./studio-5g4t8v6w.js";import"./studio-qpqa7vk3.js";import"./studio-vzacdfsc.js";export{O_ as clearCfConnection,N_ as getCfAccountId,$f as getCfToken,f$ as setCfAccountId,A_ as setCfToken};
|
|
2
|
-
|
|
3
|
-
//# debugId=15C31DBFCBEBDE0164756E2164756E21
|
|
4
|
-
//# sourceMappingURL=cf-settings-356xdtne.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{st,Al,FC,hm,_c}from"./studio-vk9ezads.js";import"./studio-qpqa7vk3.js";export{hm as buildComponentInstance,st as componentRegistry,_c as computeRelativePath,Al as loadComponentRegistry,FC as noteComponentSaved};
|
|
2
|
-
|
|
3
|
-
//# debugId=6E27250E48F2B5B164756E2164756E21
|
|
4
|
-
//# sourceMappingURL=components-yk3t844e.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{bb,jw,R1,$1,D1,A1}from"./studio-g5fmf0c1.js";import"./studio-qvasen3f.js";import"./studio-skprc6ef.js";import"./studio-8p51gq2h.js";import"./studio-9ft45c83.js";import"./studio-a2138x5k.js";import"./studio-ghrhy2y7.js";import"./studio-bmn4mn9j.js";import"./studio-19x1c75w.js";import"./studio-47y6fbpf.js";import"./studio-q1h883bt.js";import"./studio-vk9ezads.js";import"./studio-5g4t8v6w.js";import"./studio-4m3826v2.js";import"./studio-grawhey1.js";import"./studio-3bpdkq2s.js";import"./studio-3aey7dd3.js";import"./studio-z8w183sh.js";import"./studio-qbj760tx.js";import"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";import"./studio-e7xxa0sj.js";import"./studio-5g0ag7c0.js";import"./studio-geq1ea6k.js";import"./studio-g7nse7zb.js";import"./studio-ery42sqr.js";import"./studio-vzacdfsc.js";export{jw as collectionDirs,bb as collectionInfo,D1 as createCollectionSource,A1 as createPagesSource,R1 as listCollectionEntryIds,$1 as reloadDraftAwareGrids};
|
|
2
|
-
|
|
3
|
-
//# debugId=26D0A0D38E2A821E64756E2164756E21
|
|
4
|
-
//# sourceMappingURL=content-source-bawmyc09.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{r$,Wh,s$,a$,l$,bu,c$,d$,Ns,Hy,ac,u$,Tn,pe}from"./studio-zscd9ty4.js";export{r$ as CancellationTokenSource,Wh as Emitter,s$ as KeyCode,a$ as KeyMod,Ns as MarkerSeverity,Hy as MarkerTag,l$ as Position,bu as Range,c$ as Selection,d$ as SelectionDirection,u$ as Token,ac as Uri,Tn as editor,pe as languages};
|
|
2
|
-
|
|
3
|
-
//# debugId=1ADE7C7E43EBB53064756E2164756E21
|
|
4
|
-
//# sourceMappingURL=editor-6sc8nacq.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{Tw,w1}from"./studio-h9c4p2tx.js";import"./studio-jyzj5cxs.js";import"./studio-n17mty64.js";import"./studio-pxg4ap1e.js";import"./studio-g5fmf0c1.js";import"./studio-qvasen3f.js";import"./studio-skprc6ef.js";import"./studio-8p51gq2h.js";import"./studio-9ft45c83.js";import"./studio-a2138x5k.js";import"./studio-ghrhy2y7.js";import"./studio-bmn4mn9j.js";import"./studio-19x1c75w.js";import"./studio-47y6fbpf.js";import"./studio-q1h883bt.js";import"./studio-vk9ezads.js";import"./studio-5g4t8v6w.js";import"./studio-4m3826v2.js";import"./studio-grawhey1.js";import"./studio-3bpdkq2s.js";import"./studio-3aey7dd3.js";import"./studio-z8w183sh.js";import"./studio-qbj760tx.js";import"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";import"./studio-e7xxa0sj.js";import"./studio-5g0ag7c0.js";import"./studio-geq1ea6k.js";import"./studio-g7nse7zb.js";import"./studio-ery42sqr.js";import"./studio-vzacdfsc.js";import"./studio-k1wvtp03.js";export{Tw as createEntry,w1 as registerContentCommands};
|
|
2
|
-
|
|
3
|
-
//# debugId=E50DC71C9BED395364756E2164756E21
|
|
4
|
-
//# sourceMappingURL=entry-commands-8ay9fh81.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{Er,N1,O1,rp,M1,Yf,Zf}from"./studio-qvasen3f.js";import"./studio-skprc6ef.js";import"./studio-8p51gq2h.js";import"./studio-9ft45c83.js";import"./studio-a2138x5k.js";import"./studio-ghrhy2y7.js";import"./studio-bmn4mn9j.js";import"./studio-19x1c75w.js";import"./studio-47y6fbpf.js";import"./studio-q1h883bt.js";import"./studio-vk9ezads.js";import"./studio-5g4t8v6w.js";import"./studio-4m3826v2.js";import"./studio-grawhey1.js";import"./studio-3bpdkq2s.js";import"./studio-3aey7dd3.js";import"./studio-z8w183sh.js";import"./studio-qbj760tx.js";import"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";import"./studio-e7xxa0sj.js";import"./studio-5g0ag7c0.js";import"./studio-geq1ea6k.js";import"./studio-g7nse7zb.js";import"./studio-ery42sqr.js";import"./studio-vzacdfsc.js";export{Yf as confirmFileDelete,M1 as exportFile,N1 as parseCollabSource,Er as parseSourceForPath,Zf as renamePromptMessage,rp as saveFile,O1 as setDocumentSavedListener};
|
|
2
|
-
|
|
3
|
-
//# debugId=62745782F3A869AD64756E2164756E21
|
|
4
|
-
//# sourceMappingURL=file-ops-gye0qw56.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{To,Q_,e1,t1,mw,Hf,n1,i1,gw,uE,i$,Lo,bw,o1,r1,tp,s1}from"./studio-zxp13sss.js";import"./studio-qqz8e5gk.js";import"./studio-txjjzrsm.js";import"./studio-954ds834.js";import"./studio-jyzj5cxs.js";import"./studio-8f87n763.js";import"./studio-pxg4ap1e.js";import"./studio-g5fmf0c1.js";import"./studio-qvasen3f.js";import"./studio-skprc6ef.js";import"./studio-8p51gq2h.js";import"./studio-9ft45c83.js";import"./studio-a2138x5k.js";import"./studio-ghrhy2y7.js";import"./studio-bmn4mn9j.js";import"./studio-19x1c75w.js";import"./studio-47y6fbpf.js";import"./studio-q1h883bt.js";import"./studio-vk9ezads.js";import"./studio-5g4t8v6w.js";import"./studio-4m3826v2.js";import"./studio-grawhey1.js";import"./studio-3bpdkq2s.js";import"./studio-3aey7dd3.js";import"./studio-z8w183sh.js";import"./studio-qbj760tx.js";import"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";import"./studio-e7xxa0sj.js";import"./studio-5g0ag7c0.js";import"./studio-geq1ea6k.js";import"./studio-g7nse7zb.js";import"./studio-ery42sqr.js";import"./studio-vzacdfsc.js";export{gw as createFileIn,mw as findHomePage,t1 as initProjectRepo,To as loadDirectory,Q_ as loadProject,uE as notifyMoveOutcome,bw as openFileInPane,Lo as openFileInTab,Hf as openLastSessionOrHome,e1 as openProject,i1 as registerFileTreeDnD,s1 as registerFilesPanel,o1 as reloadCleanTab,tp as reloadFileInTab,r1 as reloadTabsIfChanged,n1 as renderFilesTemplate,i$ as settleRename};
|
|
2
|
-
|
|
3
|
-
//# debugId=D104D2BFE076639364756E2164756E21
|
|
4
|
-
//# sourceMappingURL=files-dmc2xvcq.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{qt,Pd,Fd,Dm,Iv,Ka,Lp,Vs,wi,Ip,Zt,Ja,Dr,uk,Us,hk}from"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";export{Dr as defaultContentFormat,Ja as documentExtensions,Vs as formatByExtension,wi as formatByName,Zt as formatForPath,uk as formatParse,Us as formatSerialize,Iv as getExtensionCatalog,Dm as getExtensions,Lp as getFormats,Fd as loadExtensions,qt as loadFormats,Ip as noFormatError,Ka as refreshExtensionUi,Pd as refreshFormats,hk as splitFormatDocument};
|
|
2
|
-
|
|
3
|
-
//# debugId=862B0FD67AE9319E64756E2164756E21
|
|
4
|
-
//# sourceMappingURL=format-host-t76b53f8.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{Ps,gc,P1}from"./studio-skprc6ef.js";import"./studio-19x1c75w.js";import"./studio-3bpdkq2s.js";import"./studio-3aey7dd3.js";import"./studio-z8w183sh.js";import"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";import"./studio-g7nse7zb.js";import"./studio-ery42sqr.js";import"./studio-vzacdfsc.js";export{gc as isRecentLocal,Ps as markLocalMutation,P1 as startFsSync};
|
|
2
|
-
|
|
3
|
-
//# debugId=163FFA092C8CFF0964756E2164756E21
|
|
4
|
-
//# sourceMappingURL=fs-events-cg4tpz06.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{uc,c1,_w,Cw,d1,u1,h1,zf,p1}from"./studio-qqz8e5gk.js";import"./studio-txjjzrsm.js";import"./studio-954ds834.js";import"./studio-9ft45c83.js";import"./studio-a2138x5k.js";import"./studio-ghrhy2y7.js";import"./studio-bmn4mn9j.js";import"./studio-19x1c75w.js";import"./studio-47y6fbpf.js";import"./studio-q1h883bt.js";import"./studio-vk9ezads.js";import"./studio-5g4t8v6w.js";import"./studio-4m3826v2.js";import"./studio-grawhey1.js";import"./studio-3bpdkq2s.js";import"./studio-3aey7dd3.js";import"./studio-z8w183sh.js";import"./studio-qbj760tx.js";import"./studio-tt2nactf.js";import"./studio-qpqa7vk3.js";import"./studio-e7xxa0sj.js";import"./studio-5g0ag7c0.js";import"./studio-geq1ea6k.js";import"./studio-g7nse7zb.js";import"./studio-ery42sqr.js";import"./studio-vzacdfsc.js";export{zf as cleanupGitPanel,_w as cloneRepository,d1 as loadDiffForLens,c1 as noteFileSaved,Cw as platformSupportsClone,uc as refreshGitStatus,p1 as registerGitPanel,h1 as registerSourceControlCommands,u1 as renderGitPanel};
|
|
2
|
-
|
|
3
|
-
//# debugId=746254B1AE0A156F64756E2164756E21
|
|
4
|
-
//# sourceMappingURL=git-panel-yef7bshy.js.map
|