@jxsuite/studio 10.3.0 → 10.5.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.
Files changed (275) hide show
  1. package/dist/chunks/2020-7sx2vexa.js +4 -0
  2. package/dist/chunks/adapter-12dxr3z7.js +4 -0
  3. package/dist/chunks/{add-new-flow-3tkn72ey.js → add-new-flow-any4pw2q.js} +3 -3
  4. package/dist/chunks/{cf-account-picker-xb8vvt2h.js → cf-account-picker-ajh60k54.js} +3 -3
  5. package/dist/chunks/cf-settings-hbj16kh3.js +4 -0
  6. package/dist/chunks/{color-area-h8dbasp1.js → color-area-gbcftzh3.js} +2 -2
  7. package/dist/chunks/{color-field-qv5r2b16.js → color-field-85136598.js} +3 -3
  8. package/dist/chunks/{color-slider-nz2mrzky.js → color-slider-w1s3ndd8.js} +2 -2
  9. package/dist/chunks/color-thzpppyc.js +4 -0
  10. package/dist/chunks/{combobox-6hs00996.js → combobox-dk98wc5x.js} +3 -3
  11. package/dist/chunks/components-a98hzqw9.js +4 -0
  12. package/dist/chunks/content-source-jq3fjs3w.js +4 -0
  13. package/dist/chunks/{convert-to-repeater-gwzh9gar.js → convert-to-repeater-g66r6qp1.js} +3 -3
  14. package/dist/chunks/editor-rth1rzj8.js +4 -0
  15. package/dist/chunks/entry-commands-02j0s19w.js +4 -0
  16. package/dist/chunks/{extension-sections-338ee35t.js → extension-sections-rqrs7dr0.js} +3 -3
  17. package/dist/chunks/file-ops-6a49er4c.js +4 -0
  18. package/dist/chunks/files-b2p9y0yz.js +4 -0
  19. package/dist/chunks/format-host-7xe57k1s.js +4 -0
  20. package/dist/chunks/fs-events-0xsy168g.js +4 -0
  21. package/dist/chunks/grid-open-h3q4fjy5.js +4 -0
  22. package/dist/chunks/{grid-view-w9nfy203.js → grid-view-0v4hjspb.js} +17 -17
  23. package/dist/chunks/{icons-gb967qc8.js → icons-j9eksgew.js} +2 -2
  24. package/dist/chunks/{iframe-entry-btck0e9s.js → iframe-entry-4zqtn3ry.js} +4 -4
  25. package/dist/chunks/{iframe-entry-b5qgggyp.js → iframe-entry-54kwwhmg.js} +4 -4
  26. package/dist/chunks/{iframe-entry-42hpmwz5.js → iframe-entry-m24fza30.js} +4 -4
  27. package/dist/chunks/iframe-host-8jcmaktg.js +4 -0
  28. package/dist/chunks/{image-bake-4afr4y6a.js → image-bake-m8gzaan9.js} +3 -3
  29. package/dist/chunks/{image-editor-x7t8jbjn.js → image-editor-0afyws7c.js} +3 -3
  30. package/dist/chunks/{index-yjrfeks8.js → index-2q88g57p.js} +3 -3
  31. package/dist/chunks/index-7nj2375a.js +4 -0
  32. package/dist/chunks/{javascript-hy2mws8v.js → javascript-5sxtr1g7.js} +3 -3
  33. package/dist/chunks/jsonMode-m6sf47hq.js +13 -0
  34. package/dist/chunks/jx-validate-808zgbgy.js +4 -0
  35. package/dist/chunks/layers-0ffdtqjn.js +4 -0
  36. package/dist/chunks/layers-panel-rw62wtvf.js +4 -0
  37. package/dist/chunks/{listbox-7gka1h86.js → listbox-k5p41049.js} +2 -2
  38. package/dist/chunks/lit-html-9bz9rcfv.js +4 -0
  39. package/dist/chunks/media-library-2a5hdbek.js +4 -0
  40. package/dist/chunks/media-open-069kzhj4.js +4 -0
  41. package/dist/chunks/media-picker-4p4pd28y.js +4 -0
  42. package/dist/chunks/menu-26nez152.js +4 -0
  43. package/dist/chunks/{monaco-binding-a51py33c.js → monaco-binding-1s2b8snq.js} +3 -3
  44. package/dist/chunks/monaco-buffer-m9fd2dka.js +4 -0
  45. package/dist/chunks/monaco-setup-e0crh3v6.js +4 -0
  46. package/dist/chunks/notify-re3js157.js +4 -0
  47. package/dist/chunks/platform-rywy3tkg.js +4 -0
  48. package/dist/chunks/popover-fhdnt4be.js +4 -0
  49. package/dist/chunks/publish-panel-czkpg8m4.js +4 -0
  50. package/dist/chunks/{publish-quick-w3nxd7q4.js → publish-quick-b9wbhqj6.js} +3 -3
  51. package/dist/chunks/publish-workspace-yy6d23b7.js +4 -0
  52. package/dist/chunks/quick-search-tp7pjnmv.js +4 -0
  53. package/dist/chunks/references-wd2yj8s1.js +4 -0
  54. package/dist/chunks/right-panel-x971k0zc.js +4 -0
  55. package/dist/chunks/source-control-k4p00hpe.js +4 -0
  56. package/dist/chunks/{split-m5rwn31z.js → split-qh21j2b0.js} +2 -2
  57. package/dist/chunks/{studio-v5wktj6f.js → studio-151kgn69.js} +4 -4
  58. package/dist/chunks/studio-15mfah02.js +10 -0
  59. package/dist/chunks/studio-1a7zshnv.js +5 -0
  60. package/dist/chunks/studio-1d8m5s38.js +16 -0
  61. package/dist/chunks/studio-35pmfjtx.js +5 -0
  62. package/dist/chunks/{studio-3na1r48j.js → studio-3yr1zdp9.js} +8 -8
  63. package/dist/chunks/studio-43pynnhz.js +5 -0
  64. package/dist/chunks/studio-44xqe0b7.js +4 -0
  65. package/dist/chunks/{studio-hh394phe.js → studio-48yzqzqr.js} +4 -4
  66. package/dist/chunks/{studio-nskxe9q1.js → studio-4jy967rj.js} +5 -5
  67. package/dist/chunks/{studio-waekn290.js → studio-4ncxzw5m.js} +4 -4
  68. package/dist/chunks/{studio-pm17wdc4.js → studio-4s5bka8t.js} +4 -4
  69. package/dist/chunks/{studio-5tet77de.js → studio-4z0cdh16.js} +3 -3
  70. package/dist/chunks/studio-5rq3e4q5.js +5 -0
  71. package/dist/chunks/{studio-2ggfzrrd.js → studio-69g6a0jn.js} +4 -4
  72. package/dist/chunks/studio-6hcfm9q3.js +5 -0
  73. package/dist/chunks/studio-6mf31e16.js +5 -0
  74. package/dist/chunks/studio-6sxnqqw8.js +5 -0
  75. package/dist/chunks/{studio-0939t1q1.js → studio-7qqb7hb8.js} +4 -4
  76. package/dist/chunks/{studio-5n193zqd.js → studio-7qr8k0v2.js} +4 -4
  77. package/dist/chunks/{studio-0x6f3nk9.js → studio-8ncm9zwx.js} +4 -4
  78. package/dist/chunks/studio-8w5pa88p.js +7 -0
  79. package/dist/chunks/{studio-3qr08sxq.js → studio-9f5vcb4w.js} +3 -3
  80. package/dist/chunks/studio-aaw7wxv8.js +5 -0
  81. package/dist/chunks/studio-afx9brsc.js +5 -0
  82. package/dist/chunks/studio-ajfq4fmr.js +5 -0
  83. package/dist/chunks/{studio-nn4f9m9c.js → studio-ber1dgte.js} +4 -4
  84. package/dist/chunks/{studio-sce30r7b.js → studio-bk0anq3b.js} +3 -3
  85. package/dist/chunks/{studio-0gvvqj3h.js → studio-bmwgj8ez.js} +4 -4
  86. package/dist/chunks/{studio-321ym1tt.js → studio-bpzwhn88.js} +4 -4
  87. package/dist/chunks/{studio-g9brbewz.js → studio-c72v1kwc.js} +4 -4
  88. package/dist/chunks/{studio-tpxcryf2.js → studio-cv6gnjqd.js} +4 -4
  89. package/dist/chunks/{studio-90zkgne5.js → studio-czpmzs9r.js} +7 -7
  90. package/dist/chunks/{studio-3c10v2q1.js → studio-d5f7sskn.js} +4 -4
  91. package/dist/chunks/studio-dmgh2rrj.js +5 -0
  92. package/dist/chunks/{studio-b68k0z00.js → studio-dst8y8vh.js} +4 -4
  93. package/dist/chunks/studio-ehj3csbm.js +6 -0
  94. package/dist/chunks/{studio-thz5t120.js → studio-ek4fb4eb.js} +4 -4
  95. package/dist/chunks/studio-ep1384t9.js +5 -0
  96. package/dist/chunks/{studio-abh9kfdh.js → studio-eq5vqn1q.js} +4 -4
  97. package/dist/chunks/studio-erjccagy.js +5 -0
  98. package/dist/chunks/studio-ex1644g2.js +5 -0
  99. package/dist/chunks/studio-f3awr5nc.js +12 -0
  100. package/dist/chunks/studio-f69wcajk.js +9 -0
  101. package/dist/chunks/{studio-p2a03pgm.js → studio-g65t6svn.js} +4 -4
  102. package/dist/chunks/{studio-3q7mhbgx.js → studio-gw83z798.js} +5 -5
  103. package/dist/chunks/{studio-nwynxqtb.js → studio-hy936516.js} +4 -4
  104. package/dist/chunks/studio-j3bq30yz.js +5 -0
  105. package/dist/chunks/studio-j52ks8q7.js +5 -0
  106. package/dist/chunks/{studio-g0hxtcga.js → studio-jqvke4ac.js} +4 -4
  107. package/dist/chunks/{studio-bct64zmj.js → studio-k05g7efh.js} +4 -4
  108. package/dist/chunks/studio-kefs4sz4.js +5 -0
  109. package/dist/chunks/{studio-s7t4vp1d.js → studio-ketrgtph.js} +5 -5
  110. package/dist/chunks/studio-m3jrjfhy.js +14 -0
  111. package/dist/chunks/{studio-45mj4jqe.js → studio-m8hesdrw.js} +4 -4
  112. package/dist/chunks/{studio-k0xzrse2.js → studio-n271vdsg.js} +36 -36
  113. package/dist/chunks/studio-n4pnf0sw.js +5 -0
  114. package/dist/chunks/{studio-wfct4h6n.js → studio-ncwx602y.js} +4 -4
  115. package/dist/chunks/{studio-423tfdte.js → studio-nngc45ct.js} +4 -4
  116. package/dist/chunks/{studio-eqcddvc2.js → studio-nv5eq0f7.js} +173 -173
  117. package/dist/chunks/{studio-ea6r1zyr.js → studio-nzp0sqjg.js} +4 -4
  118. package/dist/chunks/{studio-k2evngrj.js → studio-pgze9p34.js} +5 -5
  119. package/dist/chunks/studio-ph17an19.js +5 -0
  120. package/dist/chunks/studio-pte5w7rf.js +9 -0
  121. package/dist/chunks/studio-pv1ts08p.js +6 -0
  122. package/dist/chunks/studio-q509sqt8.js +5 -0
  123. package/dist/chunks/{studio-stahswgb.js → studio-qarg1xf9.js} +6 -6
  124. package/dist/chunks/studio-r5g7fx7q.js +9 -0
  125. package/dist/chunks/studio-s49y6m5b.js +5 -0
  126. package/dist/chunks/studio-s4k1v7dt.js +7 -0
  127. package/dist/chunks/studio-t46rt6gx.js +5 -0
  128. package/dist/chunks/{studio-y1b86ast.js → studio-td3h1644.js} +4 -4
  129. package/dist/chunks/{studio-a65kbs2e.js → studio-thgexj3w.js} +7 -7
  130. package/dist/chunks/{studio-vpevkfxw.js → studio-veh91hjv.js} +4 -4
  131. package/dist/chunks/studio-vswmz40d.js +6 -0
  132. package/dist/chunks/{studio-daksw8kh.js → studio-w3aafbpk.js} +4 -4
  133. package/dist/chunks/studio-w4mfaaam.js +5 -0
  134. package/dist/chunks/{studio-4zd6an2b.js → studio-wn2cmf9q.js} +4 -4
  135. package/dist/chunks/studio-x5ffyssw.js +5 -0
  136. package/dist/chunks/{studio-swedpd82.js → studio-x5py815g.js} +4 -4
  137. package/dist/chunks/{studio-4fnb5648.js → studio-xh6rf05g.js} +4 -4
  138. package/dist/chunks/studio-z6s56dzz.js +5 -0
  139. package/dist/chunks/{studio-nvcn2ykc.js → studio-zav9hgb3.js} +4 -4
  140. package/dist/chunks/{studio-wse1rs8t.js → studio-ze1sm147.js} +6 -6
  141. package/dist/chunks/{studio-hfxttkyr.js → studio-zkkt13qd.js} +4 -4
  142. package/dist/chunks/studio-zn7ysyzb.js +5 -0
  143. package/dist/chunks/{studio-nf8esxxc.js → studio-ztzf8mce.js} +4 -4
  144. package/dist/chunks/{studio-1410q5dw.js → studio-zzgp5yka.js} +4 -4
  145. package/dist/chunks/{tooltip-dj1pvgz7.js → tooltip-gtx40bjg.js} +3 -3
  146. package/dist/chunks/{tree-j0ebwr5s.js → tree-a19s1c05.js} +2 -2
  147. package/dist/chunks/tsMode-3f116hth.js +14 -0
  148. package/dist/chunks/workspace-home-61n1jz3q.js +4 -0
  149. package/dist/chunks/workspace-sheek6zw.js +4 -0
  150. package/dist/chunks/{ws-client-arz2qsy9.js → ws-client-cb49m87s.js} +3 -3
  151. package/dist/iframe-entry.js +14 -14
  152. package/dist/manifest.json +82 -82
  153. package/dist/studio.js +97 -96
  154. package/dist/workers/ts.worker.js +3 -3
  155. package/package.json +11 -11
  156. package/src/browse/library-layouts.ts +9 -12
  157. package/src/browse/library-pane.ts +22 -16
  158. package/src/browse/library-source.ts +3 -4
  159. package/src/canvas/canvas-live-render.ts +2 -5
  160. package/src/canvas/canvas-page-context.ts +5 -0
  161. package/src/content/entry-commands.ts +32 -27
  162. package/src/content/entry-editor.ts +46 -44
  163. package/src/content/entry-inspector.ts +15 -12
  164. package/src/content/entry-model.ts +3 -3
  165. package/src/content/entry-summaries.ts +5 -5
  166. package/src/content/hold-state.ts +172 -0
  167. package/src/content/page-summaries.ts +10 -14
  168. package/src/editor/inline-edit.ts +6 -1
  169. package/src/editor/repeater-scope.ts +333 -74
  170. package/src/grid/sources/content-source.ts +42 -66
  171. package/src/panels/block-action-bar.ts +3 -4
  172. package/src/panels/events-panel.ts +6 -2
  173. package/src/panels/formula-workspace.ts +9 -0
  174. package/src/panels/properties-panel.ts +127 -35
  175. package/src/panels/statement-editor.ts +4 -0
  176. package/src/panels/tab-strip.ts +29 -26
  177. package/src/services/ai-project-tools.ts +3 -3
  178. package/src/services/ai-tools.ts +5 -5
  179. package/src/services/ai-write-report.ts +22 -4
  180. package/src/services/context-manager.ts +110 -2
  181. package/src/services/document-assistant.ts +2 -2
  182. package/src/services/harness/chat-reducer.ts +9 -4
  183. package/src/services/render-critic.ts +234 -12
  184. package/src/services/tool-executor.ts +16 -8
  185. package/src/surfaces/collections-panel.json +1 -1
  186. package/src/surfaces/collections-panel.ts +1 -1
  187. package/src/surfaces/entry-editor.json +10 -10
  188. package/src/surfaces/entry-editor.ts +22 -19
  189. package/src/surfaces/entry-inspector.json +11 -11
  190. package/src/surfaces/entry-inspector.ts +17 -10
  191. package/src/surfaces/inspector-dock.json +3 -3
  192. package/src/surfaces/tab-strip.json +5 -5
  193. package/src/surfaces/tab-strip.ts +2 -2
  194. package/src/types.ts +2 -0
  195. package/src/ui/expression-editor.ts +10 -5
  196. package/src/ui/schema-form.ts +18 -1
  197. package/src/utils/edit-display.ts +27 -1
  198. package/dist/chunks/2020-906vx2dq.js +0 -4
  199. package/dist/chunks/adapter-hnvad61x.js +0 -4
  200. package/dist/chunks/cf-settings-mkbcz4z2.js +0 -4
  201. package/dist/chunks/color-04361ttk.js +0 -4
  202. package/dist/chunks/components-w5zqwva1.js +0 -4
  203. package/dist/chunks/content-source-1vzxq1ba.js +0 -4
  204. package/dist/chunks/editor-wvf5e6j9.js +0 -4
  205. package/dist/chunks/entry-commands-mx2whrjx.js +0 -4
  206. package/dist/chunks/file-ops-9bxvk59j.js +0 -4
  207. package/dist/chunks/files-t07yqqej.js +0 -4
  208. package/dist/chunks/format-host-5ja5gxyk.js +0 -4
  209. package/dist/chunks/fs-events-3424ezp3.js +0 -4
  210. package/dist/chunks/grid-open-1mpq9mzb.js +0 -4
  211. package/dist/chunks/iframe-host-wsg0bn73.js +0 -4
  212. package/dist/chunks/index-f9qr7kzh.js +0 -4
  213. package/dist/chunks/jsonMode-vj30te2h.js +0 -13
  214. package/dist/chunks/jx-validate-ttr5ewf0.js +0 -4
  215. package/dist/chunks/layers-m49nmwvx.js +0 -4
  216. package/dist/chunks/layers-panel-hvy2e549.js +0 -4
  217. package/dist/chunks/lit-html-k2mb9k0r.js +0 -4
  218. package/dist/chunks/media-library-ae67q4at.js +0 -4
  219. package/dist/chunks/media-open-yp9jm834.js +0 -4
  220. package/dist/chunks/media-picker-s41ngdfr.js +0 -4
  221. package/dist/chunks/menu-d2jxpgma.js +0 -4
  222. package/dist/chunks/monaco-buffer-pa0g6ax7.js +0 -4
  223. package/dist/chunks/monaco-setup-g9kterhx.js +0 -4
  224. package/dist/chunks/notify-bwehrp7q.js +0 -4
  225. package/dist/chunks/platform-kv0k65cy.js +0 -4
  226. package/dist/chunks/popover-9tf4cjrk.js +0 -4
  227. package/dist/chunks/publish-panel-gzfxcm0t.js +0 -4
  228. package/dist/chunks/publish-workspace-dppd82tc.js +0 -4
  229. package/dist/chunks/quick-search-tdxaam55.js +0 -4
  230. package/dist/chunks/references-vqyr5s9x.js +0 -4
  231. package/dist/chunks/right-panel-0yrw4cgz.js +0 -4
  232. package/dist/chunks/source-control-6fk72me2.js +0 -4
  233. package/dist/chunks/studio-0khd8xtx.js +0 -4
  234. package/dist/chunks/studio-0w3541dg.js +0 -7
  235. package/dist/chunks/studio-15hwqgd8.js +0 -5
  236. package/dist/chunks/studio-1ks5d9y4.js +0 -5
  237. package/dist/chunks/studio-3xk9zdgb.js +0 -5
  238. package/dist/chunks/studio-4f7thq0p.js +0 -5
  239. package/dist/chunks/studio-53wy9ek3.js +0 -5
  240. package/dist/chunks/studio-7rrdbvex.js +0 -5
  241. package/dist/chunks/studio-8kx6m0rg.js +0 -5
  242. package/dist/chunks/studio-9dq7rwc7.js +0 -5
  243. package/dist/chunks/studio-9qx1ywbv.js +0 -9
  244. package/dist/chunks/studio-aam8zt8z.js +0 -5
  245. package/dist/chunks/studio-b4e0ftkt.js +0 -5
  246. package/dist/chunks/studio-bz0b5brj.js +0 -6
  247. package/dist/chunks/studio-cfnn70h1.js +0 -5
  248. package/dist/chunks/studio-e7vjyp04.js +0 -10
  249. package/dist/chunks/studio-egnjpyde.js +0 -9
  250. package/dist/chunks/studio-ejrypvmq.js +0 -5
  251. package/dist/chunks/studio-f8tyeyzt.js +0 -5
  252. package/dist/chunks/studio-fj6c905s.js +0 -5
  253. package/dist/chunks/studio-fkrr7kgg.js +0 -9
  254. package/dist/chunks/studio-fspe7m9t.js +0 -5
  255. package/dist/chunks/studio-ggx3j7nd.js +0 -5
  256. package/dist/chunks/studio-j0zf5x2x.js +0 -5
  257. package/dist/chunks/studio-jeb7hth3.js +0 -5
  258. package/dist/chunks/studio-k1xqrgm5.js +0 -5
  259. package/dist/chunks/studio-k3we3kqb.js +0 -5
  260. package/dist/chunks/studio-n9qba0gx.js +0 -5
  261. package/dist/chunks/studio-nzemfbkk.js +0 -14
  262. package/dist/chunks/studio-q80fg1d6.js +0 -12
  263. package/dist/chunks/studio-r050sez0.js +0 -6
  264. package/dist/chunks/studio-s9fng7m8.js +0 -7
  265. package/dist/chunks/studio-wgc54sxf.js +0 -5
  266. package/dist/chunks/studio-wqfaqw4m.js +0 -5
  267. package/dist/chunks/studio-x0gsfr1d.js +0 -16
  268. package/dist/chunks/studio-xpx91fby.js +0 -6
  269. package/dist/chunks/studio-yrcrncev.js +0 -5
  270. package/dist/chunks/studio-yzpskb0j.js +0 -5
  271. package/dist/chunks/studio-zfdbmhp3.js +0 -5
  272. package/dist/chunks/tsMode-jg1dtphj.js +0 -14
  273. package/dist/chunks/workspace-9btkc8tk.js +0 -4
  274. package/dist/chunks/workspace-home-qcc4z5ag.js +0 -4
  275. package/src/content/draft-state.ts +0 -108
@@ -4,9 +4,8 @@
4
4
  *
5
5
  * This is the adapter. `content/entry-editor.ts` keeps the editor — which pane holds which tab,
6
6
  * which collection a path belongs to, which record the fields live in, which required keys the
7
- * entry does not HAVE, and what the draft switch commits into — and hands this module one
8
- * projection whose every field is already a string or a flag. The document draws it and decides
9
- * nothing.
7
+ * entry does not HAVE, and what the hold switch commits into — and hands this module one projection
8
+ * whose every field is already a string or a flag. The document draws it and decides nothing.
10
9
  *
11
10
  * **The form is an ISLAND, and that is the whole shape of this conversion.** A form built from a
12
11
  * JSON Schema is `ui/schema-form.ts`'s surface rather than this one's, and that engine hands back a
@@ -53,13 +52,15 @@ export interface EntryEditorView {
53
52
  name: string;
54
53
  /** The collection's name, in the chip beside it. */
55
54
  collection: string;
56
- /** Whether this collection has a draft workflow at all; with none, neither state is drawn. */
57
- draftAxis: "hidden" | "shown";
58
- /** Whether the entry is marked a draft. */
59
- draft: boolean;
60
- /** The switch's tooltip: what a draft IS, in `content/draft-state.ts`'s one sentence. */
61
- draftHint: string;
62
- /** Whether the sentence under the header is drawn — only while the entry IS a draft. */
55
+ /** Whether the collection's rules offer a switch: one boolean field. */
56
+ holdSwitch: "hidden" | "shown";
57
+ /** Whether the switch is on. */
58
+ holdOn: boolean;
59
+ /** The word beside the switch: its rule's label. */
60
+ holdLabel: string;
61
+ /** The switch's tooltip: what being held does, in `content/hold-state.ts`'s one sentence. */
62
+ holdHint: string;
63
+ /** Whether the sentence under the header is drawn — only while a rule holds the entry. */
63
64
  noteState: "hidden" | "shown";
64
65
  note: string;
65
66
  /** The `empty` stage's first sentence, naming the document it is about. */
@@ -74,8 +75,8 @@ export interface EntryEditorView {
74
75
 
75
76
  /** What the reader can do here. Both are decisions the editor owns. */
76
77
  export interface EntryEditorActions {
77
- /** The draft switch moved. A setter, never a toggle. */
78
- setDraft: (draft: boolean) => void;
78
+ /** The hold switch moved. A setter, never a toggle. */
79
+ setHold: (on: boolean) => void;
79
80
  /** Open Project Settings › Content types — the door out of the `empty` stage. */
80
81
  openContentTypes: () => void;
81
82
  /** A record: show the file's previous record, its next one, or the whole file in its grid. */
@@ -109,9 +110,10 @@ function project(scope: EntryEditorScope, view: EntryEditorView): void {
109
110
  scope.stage = view.stage;
110
111
  scope.name = view.name;
111
112
  scope.collection = view.collection;
112
- scope.draftAxis = view.draftAxis;
113
- scope.draft = view.draft;
114
- scope.draftHint = view.draftHint;
113
+ scope.holdSwitch = view.holdSwitch;
114
+ scope.holdOn = view.holdOn;
115
+ scope.holdLabel = view.holdLabel;
116
+ scope.holdHint = view.holdHint;
115
117
  scope.noteState = view.noteState;
116
118
  scope.note = view.note;
117
119
  scope.emptyLine = view.emptyLine;
@@ -149,9 +151,10 @@ export function mountEntryEditorSurface(
149
151
  host.replaceChildren();
150
152
  const scope: EntryEditorScope = reactive<EntryEditorScope>({
151
153
  collection: "",
152
- draft: false,
153
- draftAxis: "hidden",
154
- draftHint: "",
154
+ holdHint: "",
155
+ holdLabel: "",
156
+ holdOn: false,
157
+ holdSwitch: "hidden",
155
158
  emptyLine: "",
156
159
  fieldsRegion: "",
157
160
  name: "",
@@ -164,7 +167,7 @@ export function mountEntryEditorSurface(
164
167
  previousDisabled: true,
165
168
  recordNav: "hidden",
166
169
  region: "",
167
- setDraft: actions.setDraft,
170
+ setHold: actions.setHold,
168
171
  showNext: actions.showNext,
169
172
  showPrevious: actions.showPrevious,
170
173
  stage: "empty",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://jxsuite.com/schema/v1",
3
3
  "$id": "StudioEntryInspector",
4
- "$description": "The Inspector's Entry tab (specs/studio.md §6, §22.5): one collection entry's own settings while it is written on the canvas, the Content-Entry board's sidebar. Its status (draft or published), its fields as the collection's schema types them, the URL its collection page publishes it at, and the file it is stored in. `content/entry-inspector.ts` keeps every decision; the field form is an island it fills, `ui/schema-form.ts`'s, the same form the form-only entry editor draws.",
4
+ "$description": "The Inspector's Entry tab (specs/studio.md §6, §22.5): one collection entry's own settings while it is written on the canvas, the Content-Entry board's sidebar. Its status (a hold rule's label, or Published), its fields as the collection's schema types them, the URL its collection page publishes it at, and the file it is stored in. `content/entry-inspector.ts` keeps every decision; the field form is an island it fills, `ui/schema-form.ts`'s, the same form the form-only entry editor draws.",
5
5
  "tagName": "div",
6
6
  "attributes": {
7
7
  "part": "entry",
@@ -42,7 +42,7 @@
42
42
  "fontSize": "var(--jx-text-sm)",
43
43
  "color": "var(--fg-dim)"
44
44
  },
45
- "& [part=\"status\"][data-draft=\"true\"]": {
45
+ "& [part=\"status\"][data-held=\"true\"]": {
46
46
  "color": "var(--warning)"
47
47
  },
48
48
  "& [part=\"note\"]": {
@@ -94,7 +94,7 @@
94
94
  "tagName": "span",
95
95
  "attributes": {
96
96
  "part": "status",
97
- "data-draft": "${state.draft ? 'true' : 'false'}"
97
+ "data-held": "${state.held ? 'true' : 'false'}"
98
98
  },
99
99
  "textContent": "${state.status}"
100
100
  }
@@ -110,27 +110,27 @@
110
110
  {
111
111
  "tagName": "div",
112
112
  "attributes": {
113
- "part": "draft-slot",
113
+ "part": "hold-slot",
114
114
  "role": "none"
115
115
  },
116
116
  "style": {
117
117
  "display": "contents"
118
118
  },
119
119
  "$switch": {
120
- "$ref": "#/state/draftAxis"
120
+ "$ref": "#/state/holdSwitch"
121
121
  },
122
122
  "cases": {
123
123
  "shown": {
124
- "$description": "The entry's draft state, the one field every collection with a draft workflow shares (site-architecture.md §7.6). A setter: the switch names the state it reaches.",
124
+ "$description": "The entry's hold switch, on a collection whose rules offer one: the one field every such collection has in common. The state this shares (site-architecture.md §7.6). A setter: the switch names the state it reaches.",
125
125
  "tagName": "jx-switch",
126
126
  "attributes": {
127
- "part": "draft"
127
+ "part": "hold"
128
128
  },
129
129
  "$props": {
130
130
  "checked": {
131
- "$ref": "#/state/draft"
131
+ "$ref": "#/state/holdOn"
132
132
  },
133
- "hint": "${state.draftHint}",
133
+ "hint": "${state.holdHint}",
134
134
  "size": "sm"
135
135
  },
136
136
  "onchange": {
@@ -139,7 +139,7 @@
139
139
  {
140
140
  "operator": "call",
141
141
  "target": {
142
- "$ref": "#/state/setDraft"
142
+ "$ref": "#/state/setHold"
143
143
  },
144
144
  "value": [
145
145
  {
@@ -152,7 +152,7 @@
152
152
  "children": [
153
153
  {
154
154
  "tagName": "span",
155
- "textContent": "Draft"
155
+ "textContent": "${state.holdLabel}"
156
156
  }
157
157
  ]
158
158
  }
@@ -25,12 +25,17 @@ export interface EntryInspectorView {
25
25
  region: string;
26
26
  /** What the entry is, said in the singular: "Post". */
27
27
  kind: string;
28
- /** "Draft", "Published", or "" for a collection with no draft workflow. */
28
+ /** A `hold` rule's label, "Published", or "" for a collection with no rules. */
29
29
  status: string;
30
- /** Whether the collection has a draft workflow at all. */
31
- draftAxis: "hidden" | "shown";
32
- draft: boolean;
33
- draftHint: string;
30
+ /** Whether the collection's rules offer a switch: one boolean field. */
31
+ holdSwitch: "hidden" | "shown";
32
+ /** Whether a rule holds the entry, whichever it is. */
33
+ held: boolean;
34
+ /** Whether the switch is on. */
35
+ holdOn: boolean;
36
+ /** The word beside the switch: its rule's label. */
37
+ holdLabel: string;
38
+ holdHint: string;
34
39
  /** `form` draws the field form's host; `none` says the collection declares no fields. */
35
40
  fieldsState: "form" | "none";
36
41
  /**
@@ -47,8 +52,8 @@ export interface EntryInspectorView {
47
52
 
48
53
  /** What the tab's controls do. */
49
54
  export interface EntryInspectorActions {
50
- /** The draft switch moved. A setter, never a toggle. */
51
- setDraft: (draft: boolean) => void;
55
+ /** The hold switch moved. A setter, never a toggle. */
56
+ setHold: (on: boolean) => void;
52
57
  /** **Edit** opens Project Settings › Content types on this collection. */
53
58
  openFields: () => void;
54
59
  /** **Search appearance…** runs `document.openSeo` over this entry, as the Page tab's does. */
@@ -76,9 +81,11 @@ function project(scope: EntryInspectorScope, view: EntryInspectorView): void {
76
81
  scope.region = view.region;
77
82
  scope.kind = view.kind;
78
83
  scope.status = view.status;
79
- scope.draftAxis = view.draftAxis;
80
- scope.draft = view.draft;
81
- scope.draftHint = view.draftHint;
84
+ scope.holdSwitch = view.holdSwitch;
85
+ scope.holdOn = view.holdOn;
86
+ scope.holdLabel = view.holdLabel;
87
+ scope.holdHint = view.holdHint;
88
+ scope.held = view.held;
82
89
  scope.fieldsState = view.fieldsState;
83
90
  scope.urlState = view.urlState;
84
91
  scope.url = view.url;
@@ -54,8 +54,8 @@
54
54
  "maxWidth": "none",
55
55
  "padding": "var(--jx-space-1) var(--jx-space-2)"
56
56
  },
57
- "& [part=\"panel\"]": {
58
- "$description": "`#right-panel > .panel-body { flex: 1; min-height: 0; overflow-y: auto }`, now a flex column: Element's sub-switch sits above its leaves and must not scroll away with them. The kit's tab panel pads itself for a dialog; a dock's tab is the whole column and each body pads its own content.",
57
+ "& > [part=\"panel\"]": {
58
+ "$description": "`#right-panel > .panel-body { flex: 1; min-height: 0; overflow-y: auto }`, now a flex column: Element's sub-switch sits above its leaves and must not scroll away with them. The kit's tab panel pads itself for a dialog; a dock's tab is the whole column and each body pads its own content. The child combinator is load-bearing: the leaves mount in this same light DOM, the Style leaf's root and every `jx-color-field`'s picker are also `part=\"panel\"`, and a descendant selector put this `overflow: hidden` on them. The Style root then clipped its own rows, so `panel-body` below saw nothing to scroll and every property past the fold was unreachable.",
59
59
  "display": "flex",
60
60
  "flexDirection": "column",
61
61
  "flex": "1",
@@ -63,7 +63,7 @@
63
63
  "padding": "0",
64
64
  "overflow": "hidden"
65
65
  },
66
- "& [part=\"panel\"][hidden]": {
66
+ "& > [part=\"panel\"][hidden]": {
67
67
  "$description": "Out of sight, out of the layout and out of the accessibility tree, but not `display: none`: a panel that left the box tree is restyled whole when it comes back, and the Inspector shows its Page panel on every deselect and on every close of the Assistant (§6), which made each of those a 300-element style recalculation. `content-visibility: hidden` skips the subtree while keeping its computed style, so a return restyles only what changed while it was away; `visibility: hidden` keeps it unfocusable and unexposed, as `hidden` means.",
68
68
  "display": "flex",
69
69
  "flex": "0 0 0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://jxsuite.com/schema/v1",
3
3
  "$id": "StudioTabStrip",
4
- "$description": "One pane's tab strip, as a Jx document over the kit: a real `tablist` of `jx-tab`s, or — for a pane that owns no document — the derivation chip naming what it is a projection of, and in both cases one trailing button. `panels/tab-strip.ts` keeps every decision: which pane a host is drawing, what each tab is called (the shortest unique suffix, and a page's ROUTE), what its tooltip says, whether closing it needs a prompt, what the overflow chevron lists and what the context menu offers. This document owns the markup, the ARIA, the keyboard and the style, and it holds THREE things the old chip drew by hand and the kit now draws: the tab's own selected state (`aria-selected`, not an `.active` class), its close button, and its dirty dot. The three that are Studio's alone go in `jx-tab`'s slots — the drill-in marker in `icon`, the draft pill in `status`, the pin toggle in `actions` (ui.md §5.4) — which is the gap that kept this strip out of the tab pattern until now. **Drag is `@atlaskit/pragmatic-drag-and-drop`, not native HTML5 DnD**: a chip carries no `draggable` attribute and no `ondrag*` handler, because `panels/tab-strip.ts` registers every chip and every strip as a pragmatic source/target through `onNodeCreated` and resolves a completed drag in `panels/tab-drop.ts`. What is left here is three SCOPE comparisons, exactly as `files-panel.json` marks a row under drag: `data-dragging` on the chip being carried, `data-drop` on the chip a drop would land beside, `data-drop-tail` on the strip when the drop is its empty tail.",
4
+ "$description": "One pane's tab strip, as a Jx document over the kit: a real `tablist` of `jx-tab`s, or — for a pane that owns no document — the derivation chip naming what it is a projection of, and in both cases one trailing button. `panels/tab-strip.ts` keeps every decision: which pane a host is drawing, what each tab is called (the shortest unique suffix, and a page's ROUTE), what its tooltip says, whether closing it needs a prompt, what the overflow chevron lists and what the context menu offers. This document owns the markup, the ARIA, the keyboard and the style, and it holds THREE things the old chip drew by hand and the kit now draws: the tab's own selected state (`aria-selected`, not an `.active` class), its close button, and its dirty dot. The three that are Studio's alone go in `jx-tab`'s slots — the drill-in marker in `icon`, the hold pill in `status`, the pin toggle in `actions` (ui.md §5.4) — which is the gap that kept this strip out of the tab pattern until now. **Drag is `@atlaskit/pragmatic-drag-and-drop`, not native HTML5 DnD**: a chip carries no `draggable` attribute and no `ondrag*` handler, because `panels/tab-strip.ts` registers every chip and every strip as a pragmatic source/target through `onNodeCreated` and resolves a completed drag in `panels/tab-drop.ts`. What is left here is three SCOPE comparisons, exactly as `files-panel.json` marks a row under drag: `data-dragging` on the chip being carried, `data-drop` on the chip a drop would land beside, `data-drop-tail` on the strip when the drop is its empty tail.",
5
5
  "tagName": "div",
6
6
  "attributes": {
7
7
  "part": "strip-row",
@@ -101,7 +101,7 @@
101
101
  "lineHeight": "1"
102
102
  },
103
103
  "& [part=\"pill\"]": {
104
- "$description": "`.entry-pill` — the draft pill (site-architecture.md §7.6), in `jx-tab`'s status slot. It is ON THE CHIP and not only inside the entry editor because the mistake it prevents, publishing something you believed was private, is made while glancing at a row of tabs. \"Published\" is deliberately as visible as \"Draft\": a state you can only see one half of is a state you cannot check. The two Spectrum colours it used to name are `--jx-signal` against `--jx-bg`, which flips with the theme where a fixed yellow and a fixed black did not.",
104
+ "$description": "`.entry-pill` — the hold pill (site-architecture.md §7.6), in `jx-tab`'s status slot. It is ON THE CHIP and not only inside the entry editor because the mistake it prevents, publishing something you believed was private, is made while glancing at a row of tabs. \"Published\" is deliberately as visible as \"Draft\": a state you can only see one half of is a state you cannot check. The two Spectrum colours it used to name are `--jx-signal` against `--jx-bg`, which flips with the theme where a fixed yellow and a fixed black did not.",
105
105
  "padding": "0 5px",
106
106
  "borderRadius": "var(--radius)",
107
107
  "background": "var(--bg)",
@@ -110,7 +110,7 @@
110
110
  "lineHeight": "15px",
111
111
  "whiteSpace": "nowrap"
112
112
  },
113
- "& [part=\"pill\"][data-draft]": {
113
+ "& [part=\"pill\"][data-held]": {
114
114
  "background": "var(--jx-signal)",
115
115
  "color": "var(--jx-bg)"
116
116
  },
@@ -322,13 +322,13 @@
322
322
  "textContent": "↳"
323
323
  },
324
324
  {
325
- "$description": "The draft pill. It is a `<span>` in the status slot rather than a mounted document of its own, which is what kept it a lit fragment inside `content/entry-editor.ts` until the strip converted: a document mounted per chip would be an async mount inside a synchronous rebuild. `entryDraftPill` states the two facts; this draws them.",
325
+ "$description": "The hold pill. It is a `<span>` in the status slot rather than a mounted document of its own, which is what kept it a lit fragment inside `content/entry-editor.ts` until the strip converted: a document mounted per chip would be an async mount inside a synchronous rebuild. `entryHoldPill` states the two facts; this draws them.",
326
326
  "tagName": "span",
327
327
  "attributes": {
328
328
  "slot": "status",
329
329
  "part": "pill",
330
330
  "title": "${$map.item.pillTitle}",
331
- "data-draft": "${$map.item.draft ? '' : null}",
331
+ "data-held": "${$map.item.held ? '' : null}",
332
332
  "hidden": "${$map.item.pill ? null : ''}"
333
333
  },
334
334
  "textContent": "${$map.item.pill}"
@@ -57,10 +57,10 @@ export interface TabChipView {
57
57
  /** "Pin" or "Unpin" — the pin button's whole accessible name. */
58
58
  pinTitle: string;
59
59
  pinGlyph: string;
60
- /** The draft pill's word, or the empty string when this document has no draft axis. */
60
+ /** The hold pill's word, or the empty string when this document's collection has no rules. */
61
61
  pill: string;
62
62
  pillTitle: string;
63
- draft: boolean;
63
+ held: boolean;
64
64
  /** "0" while this is the pane's current tab, "-1" otherwise. The pin's roving stop. */
65
65
  tabindex: string;
66
66
  /** This chip's slot in the pane's order, which is the drop target index. */
package/src/types.ts CHANGED
@@ -904,6 +904,8 @@ export interface ContentSectionEntry {
904
904
  /** The field a file-backed collection's records are identified by (the loader's `idField`). */
905
905
  idField?: string;
906
906
  $elements?: unknown[];
907
+ /** What keeps an entry back from production (site-architecture.md §7.6), read by `hold-state`. */
908
+ hold?: unknown;
907
909
  }
908
910
 
909
911
  export interface CanvasPanel {
@@ -444,6 +444,8 @@ export function expressionHint(node: ExpressionValue | undefined) {
444
444
  export interface ExpressionEditorOpts {
445
445
  stateDefs: string[];
446
446
  allowEventRef: boolean;
447
+ /** Pointers beyond the document's own signals: inside a repeater, its item and that item's fields. */
448
+ extraRefs?: readonly SurfaceOption[] | null | undefined;
447
449
  depth?: number;
448
450
  preview?: ExpressionPreview | null;
449
451
  path?: (string | number)[];
@@ -608,7 +610,7 @@ function walkOperand(
608
610
  commit: (next: ExpressionValue) => void,
609
611
  slot: OperandSlot,
610
612
  ): void {
611
- const { allowEventRef, stateDefs } = walk.opts;
613
+ const { allowEventRef, extraRefs, stateDefs } = walk.opts;
612
614
  const stateRefs = stateDefs.map((k) => `#/state/${k}`);
613
615
  // Shown as written: a malformed (non-string) pointer is coerced the way the picker would show it.
614
616
  const refValue = String(fieldsOf(operand)?.$ref ?? "");
@@ -631,9 +633,12 @@ function walkOperand(
631
633
  leadValue: slot.leadValue ?? "",
632
634
  nested: slot.depth > 0 ? "true" : "false",
633
635
  prop: slot.prop,
634
- refGroups: allowEventRef
635
- ? [{ id: "event", label: "Event", rows: EVENT_REFS.map((r) => ({ label: r, value: r })) }]
636
- : [],
636
+ refGroups: [
637
+ ...(extraRefs?.length ? [{ id: "item", label: "List item", rows: [...extraRefs] }] : []),
638
+ ...(allowEventRef
639
+ ? [{ id: "event", label: "Event", rows: EVENT_REFS.map((r) => ({ label: r, value: r })) }]
640
+ : []),
641
+ ],
637
642
  refOptions: stateRefs.map((r) => ({ label: r.replace("#/state/", ""), value: r })),
638
643
  removable: Boolean(slot.removable),
639
644
  title: slot.title ?? "",
@@ -642,7 +647,7 @@ function walkOperand(
642
647
 
643
648
  /* Nothing to pick and nothing already picked: a picker whose only entry is a disabled "No state
644
649
  defined" is a dead end. Say what a binding IS instead, in the shell's one empty-state voice. */
645
- const nothingToBind = stateRefs.length === 0 && !allowEventRef && !refValue;
650
+ const nothingToBind = stateRefs.length === 0 && !extraRefs?.length && !allowEventRef && !refValue;
646
651
 
647
652
  if (slot.mustBeRef) {
648
653
  walk.plans.set(slot.key, plan);
@@ -708,7 +708,12 @@ function createController(): FormController {
708
708
  are all serialized), where an undefined member is simply omitted. */
709
709
  rows[idx] = {
710
710
  ...target,
711
- [cell]: coerceCell(cellSchema, next, plan.refCells?.has(`${field}/${row}/${cell}`) ?? false),
711
+ [cell]: coerceCell(
712
+ cellSchema,
713
+ next,
714
+ plan.refCells?.has(`${field}/${row}/${cell}`) ?? false,
715
+ target[cell],
716
+ ),
712
717
  } as JsonObject;
713
718
  patchRows(plan, rows);
714
719
  }
@@ -718,6 +723,7 @@ function createController(): FormController {
718
723
  cellSchema: JsonSchema | undefined,
719
724
  next: JsonValue | undefined,
720
725
  isPointer: boolean,
726
+ previous: JsonValue | undefined,
721
727
  ): JsonValue | undefined {
722
728
  if (isBoolean(next)) {
723
729
  return next;
@@ -734,6 +740,17 @@ function createController(): FormController {
734
740
  if (raw === NONE || raw === "") {
735
741
  return undefined;
736
742
  }
743
+ if (cellSchema?.type === "object" || cellSchema?.type === "array") {
744
+ /* The rule a whole JSON field follows: a half-typed object is not a refusal, the last parsable
745
+ value is what the document keeps. Stored as text, it would be a string where the schema asks
746
+ for an object, and the row would be invalid however it read. */
747
+ try {
748
+ // SAFETY: `JSON.parse` with no reviver yields only JSON values, which is all a JsonValue is.
749
+ return JSON.parse(raw) as JsonValue;
750
+ } catch {
751
+ return previous;
752
+ }
753
+ }
737
754
  return raw;
738
755
  }
739
756
 
@@ -15,6 +15,7 @@ import {
15
15
  isNumber,
16
16
  isRef,
17
17
  isString,
18
+ isTemplateString,
18
19
  } from "@jxsuite/schema/guards";
19
20
  import { isDocumentContainer } from "./strip-events";
20
21
  import type { RebuiltNode } from "./strip-events";
@@ -201,6 +202,10 @@ export function computeEmptyPlaceholderClass(node: JxMutableNode): string | null
201
202
  if (Array.isArray(node.children) && node.children.length > 0) {
202
203
  return null;
203
204
  }
205
+ // Computed children: not empty, only not known until the page runs. The canvas names the binding.
206
+ if (isTemplateString(node.children)) {
207
+ return null;
208
+ }
204
209
  if (fixesItsOwnSize(node)) {
205
210
  return null;
206
211
  }
@@ -223,6 +228,16 @@ export function templateToEditDisplay(str: string) {
223
228
  return str.replaceAll(/\$\{([^}]+)\}/g, "\u276A $1 \u276B");
224
229
  }
225
230
 
231
+ /**
232
+ * The binding a node's computed children show in edit mode. An `?? []` fallback is plumbing, so it
233
+ * reads as the field it guards: `❪ item.$children ❫`.
234
+ *
235
+ * @param {string} template
236
+ */
237
+ function computedChildrenDisplay(template: string): string {
238
+ return templateToEditDisplay(template.replaceAll(/\s*\?\?\s*\[\s*\]\s*(?=\})/gu, ""));
239
+ }
240
+
226
241
  /**
227
242
  * Reverse templateToEditDisplay: walk all text nodes in `el` and replace ❪ expr ❫ back to ${expr}
228
243
  * so the user edits raw template syntax.
@@ -543,7 +558,7 @@ function prepareNode(
543
558
  } else if (isNodeObject(v) && v.$prototype === "Array") {
544
559
  // Legacy whole-children repeater → a single perimeter as the sole child.
545
560
  out.children = [prepareNode(v, row)];
546
- } else {
561
+ } else if (!isTemplateString(v)) {
547
562
  out.children = prepareNode(v, row);
548
563
  }
549
564
  } else if (k === "cases" && obj.$switch && isDocumentContainer(v)) {
@@ -631,6 +646,17 @@ function prepareNode(
631
646
  }
632
647
  }
633
648
 
649
+ /* Computed children (spec.md §8.4) are shown as their binding, like text is, but they are not
650
+ text: the words here are a label of what the page draws, and a caret placed in them would
651
+ commit that label as the element's `textContent`. So the label is closed to the caret. */
652
+ if (isTemplateString(obj.children)) {
653
+ out.textContent = computedChildrenDisplay(obj.children);
654
+ const { attributes } = out;
655
+ out.attributes = isDocumentContainer(attributes)
656
+ ? { ...attributes, contenteditable: "false" }
657
+ : { contenteditable: "false" };
658
+ }
659
+
634
660
  // Mark empty elements with placeholder classes for design-mode visibility
635
661
  const placeholderClass = computeEmptyPlaceholderClass(out);
636
662
  if (placeholderClass) {
@@ -1,4 +0,0 @@
1
- import{Bt,yn,Rc,Yg,By,Zg,k_,Pk,Fk,jk,Hk,Bk,zk,Wk,Vk,Uk}from"./studio-q80fg1d6.js";import{pe}from"./studio-0939t1q1.js";var b=pe(function(M){Object.defineProperty(M,"__esModule",{value:!0});M.dynamicAnchor=void 0;var _=Bt(),ge=Rc(),A=k_(),_e=Fk(),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=pe(function(N){Object.defineProperty(N,"__esModule",{value:!0});N.dynamicRef=void 0;var I=Bt(),qe=Rc(),x=Fk(),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=pe(function(k){Object.defineProperty(k,"__esModule",{value:!0});var Ae=b(),Oe=yn(),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=pe(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=pe(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=pe(function(z){Object.defineProperty(z,"__esModule",{value:!0});var G=Bk(),De={keyword:"dependentRequired",type:"object",schemaType:"object",error:G.error,code:(e)=>G.validatePropertyDeps(e)};z.default=De});var Z=pe(function(U){Object.defineProperty(U,"__esModule",{value:!0});var Ge=Bk(),ze={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(e)=>Ge.validateSchemaDeps(e)};U.default=ze});var H=pe(function(F){Object.defineProperty(F,"__esModule",{value:!0});var Ue=yn(),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=pe(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=pe(function(W){Object.defineProperty(W,"__esModule",{value:!0});var f=Bt(),Q=yn(),Xe=Rc(),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=pe(function(ee){Object.defineProperty(ee,"__esModule",{value:!0});var l=Bt(),Y=yn(),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 ae=pe(function(re){Object.defineProperty(re,"__esModule",{value:!0});var ot=X(),st=te(),it=[ot.default,st.default];re.default=it});var se=pe(function(oe){Object.defineProperty(oe,"__esModule",{value:!0});var dt=jk(),ut=Hk(),mt=zk(),ft=K(),lt=J(),pt=ae(),yt=Wk(),ne=Vk(),ht=[ft.default,dt.default,ut.default,(0,mt.default)(!0),yt.default,ne.metadataVocabulary,ne.contentVocabulary,lt.default,pt.default];oe.default=ht});var ie=pe(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 ce=pe(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 de=pe(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 ue=pe(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 me=pe(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 fe=pe(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 le=pe(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=pe(function(pr,Rt){Rt.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=pe(function(he){Object.defineProperty(he,"__esModule",{value:!0});var At=ie(),Ot=ce(),Mt=de(),St=ue(),xt=me(),It=fe(),wt=le(),Nt=ye(),Tt=["/properties"];function kt(e){return[At,Ot,Mt,St,xt,t(this,It),wt,t(this,Nt)].forEach((r)=>this.addMetaSchema(r,void 0,!1)),this;function t(r,o){return e?r.$dataMetaSchema(o,Tt):o}}he.default=kt});var Ft=pe(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 Ct=Pk(),Vt=se(),Dt=Uk(),Kt=$e(),j="https://json-schema.org/draft/2020-12/schema";class h extends Ct.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),Vt.default.forEach((e)=>this.addVocabulary(e)),this.opts.discriminator)this.addKeyword(Dt.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;if(!t)return;Kt.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 Gt=Yg();Object.defineProperty(d,"KeywordCxt",{enumerable:!0,get:function(){return Gt.KeywordCxt}});var y=Bt();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 zt=By();Object.defineProperty(d,"ValidationError",{enumerable:!0,get:function(){return zt.default}});var Lt=Zg();Object.defineProperty(d,"MissingRefError",{enumerable:!0,get:function(){return Lt.default}})});export default Ft();
2
-
3
- //# debugId=1694415B4E0D0BE564756E2164756E21
4
- //# sourceMappingURL=2020-906vx2dq.js.map
@@ -1,4 +0,0 @@
1
- import{Ks,Js,zr}from"./studio-90zkgne5.js";export{zr as draggable,Ks as dropTargetForElements,Js as monitorForElements};
2
-
3
- //# debugId=55377EFB712CCBE264756E2164756E21
4
- //# sourceMappingURL=adapter-hnvad61x.js.map
@@ -1,4 +0,0 @@
1
- import{hb,AE,OE,dF,ME}from"./studio-k1xqrgm5.js";import"./studio-g9brbewz.js";import"./studio-sce30r7b.js";import"./studio-4fnb5648.js";export{ME as clearCfConnection,OE as getCfAccountId,hb as getCfToken,dF as setCfAccountId,AE as setCfToken};
2
-
3
- //# debugId=B9CE9137D6E3A82B64756E2164756E21
4
- //# sourceMappingURL=cf-settings-mkbcz4z2.js.map
@@ -1,4 +0,0 @@
1
- import{o,m,h,K,d,g,T,H,N,B,O,_,V,M,ee}from"./iframe-entry-btck0e9s.js";export{m as ARROW_SIGN,o as clamp,V as contrastRatio,g as formatHex,O as formatOklch,H as hsvToRgb,ee as inkOn,B as oklchToSrgb,d as parseColor,K as parseHex,M as preferredInk,_ as relativeLuminance,T as rgbToHsv,h as snapToStep,N as srgbToOklch};
2
-
3
- //# debugId=A19EC30F547D156964756E2164756E21
4
- //# sourceMappingURL=color-04361ttk.js.map
@@ -1,4 +0,0 @@
1
- import{Ne,wx,Ea,ev,Uc,qc}from"./studio-n9qba0gx.js";import"./studio-4fnb5648.js";export{wx as _componentRegistryLoaded,Uc as buildComponentInstance,Ne as componentRegistry,qc as computeRelativePath,Ea as loadComponentRegistry,ev as noteComponentSaved};
2
-
3
- //# debugId=AB580B225AC82FEB64756E2164756E21
4
- //# sourceMappingURL=components-w5zqwva1.js.map
@@ -1,4 +0,0 @@
1
- import{Rb,BS,zS,Db,VT,UT,qT}from"./studio-e7vjyp04.js";import"./studio-thz5t120.js";import"./studio-nskxe9q1.js";import"./studio-a65kbs2e.js";import"./studio-ggx3j7nd.js";import"./studio-stahswgb.js";import"./studio-xpx91fby.js";import"./studio-3q7mhbgx.js";import"./studio-53wy9ek3.js";import"./studio-n9qba0gx.js";import"./studio-x0gsfr1d.js";import"./studio-g9brbewz.js";import"./studio-90zkgne5.js";import"./studio-y1b86ast.js";import"./studio-tpxcryf2.js";import"./studio-5tet77de.js";import"./studio-bct64zmj.js";import"./studio-4zd6an2b.js";import"./studio-zfdbmhp3.js";import"./studio-wqfaqw4m.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-9dq7rwc7.js";import"./studio-nzemfbkk.js";import"./studio-nvcn2ykc.js";import"./studio-1410q5dw.js";import"./studio-1ks5d9y4.js";export{BS as collectionDirs,Rb as collectionInfo,zS as collectionSourceDirs,UT as createCollectionSource,qT as createPagesSource,Db as listCollectionEntryIds,VT as reloadDraftAwareGrids};
2
-
3
- //# debugId=F2D54FA9607F75D364756E2164756E21
4
- //# sourceMappingURL=content-source-1vzxq1ba.js.map
@@ -1,4 +0,0 @@
1
- import{eF,tm,tF,nF,iF,hp,oF,rF,wa,C_,Ed,sF,Un,xe}from"./studio-eqcddvc2.js";export{eF as CancellationTokenSource,tm as Emitter,tF as KeyCode,nF as KeyMod,wa as MarkerSeverity,C_ as MarkerTag,iF as Position,hp as Range,oF as Selection,rF as SelectionDirection,sF as Token,Ed as Uri,Un as editor,xe as languages};
2
-
3
- //# debugId=46ABB4AB57AE889864756E2164756E21
4
- //# sourceMappingURL=editor-wvf5e6j9.js.map
@@ -1,4 +0,0 @@
1
- import{bS,fF,oT}from"./studio-b4e0ftkt.js";import"./studio-423tfdte.js";import"./studio-321ym1tt.js";import"./studio-jeb7hth3.js";import"./studio-9qx1ywbv.js";import"./studio-yzpskb0j.js";import"./studio-waekn290.js";import"./studio-wgc54sxf.js";import"./studio-daksw8kh.js";import"./studio-e7vjyp04.js";import"./studio-thz5t120.js";import"./studio-nskxe9q1.js";import"./studio-a65kbs2e.js";import"./studio-ggx3j7nd.js";import"./studio-stahswgb.js";import"./studio-xpx91fby.js";import"./studio-3q7mhbgx.js";import"./studio-53wy9ek3.js";import"./studio-n9qba0gx.js";import"./studio-x0gsfr1d.js";import"./studio-g9brbewz.js";import"./studio-90zkgne5.js";import"./studio-y1b86ast.js";import"./studio-tpxcryf2.js";import"./studio-5tet77de.js";import"./studio-bct64zmj.js";import"./studio-4zd6an2b.js";import"./studio-zfdbmhp3.js";import"./studio-wqfaqw4m.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-9dq7rwc7.js";import"./studio-nzemfbkk.js";import"./studio-nvcn2ykc.js";import"./studio-1410q5dw.js";import"./studio-1ks5d9y4.js";import"./studio-k1wvtp03.js";export{fF as createEntry,bS as entryFormatName,oT as registerContentCommands};
2
-
3
- //# debugId=8E1975D2E5C4E26A64756E2164756E21
4
- //# sourceMappingURL=entry-commands-mx2whrjx.js.map
@@ -1,4 +0,0 @@
1
- import{GN,Fr,KT,vF,JT,Ip,YT,Ab,Ob}from"./studio-thz5t120.js";import"./studio-nskxe9q1.js";import"./studio-a65kbs2e.js";import"./studio-ggx3j7nd.js";import"./studio-stahswgb.js";import"./studio-xpx91fby.js";import"./studio-3q7mhbgx.js";import"./studio-53wy9ek3.js";import"./studio-n9qba0gx.js";import"./studio-x0gsfr1d.js";import"./studio-g9brbewz.js";import"./studio-90zkgne5.js";import"./studio-y1b86ast.js";import"./studio-tpxcryf2.js";import"./studio-5tet77de.js";import"./studio-bct64zmj.js";import"./studio-4zd6an2b.js";import"./studio-zfdbmhp3.js";import"./studio-wqfaqw4m.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-9dq7rwc7.js";import"./studio-nzemfbkk.js";import"./studio-nvcn2ykc.js";import"./studio-1410q5dw.js";import"./studio-1ks5d9y4.js";export{Ab as confirmFileDelete,YT as exportFile,vF as openFile,KT as parseCollabSource,GN as parseFormatSource,Fr as parseSourceForPath,Ob as renamePromptMessage,Ip as saveFile,JT as setDocumentSavedListener};
2
-
3
- //# debugId=E2BEBE96F17F6E2864756E2164756E21
4
- //# sourceMappingURL=file-ops-9bxvk59j.js.map
@@ -1,4 +0,0 @@
1
- import{rl,Em,TT,LT,VP,$T,IT,RT,DS,UP,Ib,DT,qP,GP,NT,ON,KP,JP,Ow,NS,AS,Mw,Tm,YP,Pw,OS,_i,MS,AT,OT,Lm,MT,ZP,XP}from"./studio-wse1rs8t.js";import"./studio-wgc54sxf.js";import"./studio-fspe7m9t.js";import"./studio-daksw8kh.js";import"./studio-e7vjyp04.js";import"./studio-thz5t120.js";import"./studio-nskxe9q1.js";import"./studio-8kx6m0rg.js";import"./studio-k2evngrj.js";import"./studio-p2a03pgm.js";import"./studio-a65kbs2e.js";import"./studio-ggx3j7nd.js";import"./studio-stahswgb.js";import"./studio-xpx91fby.js";import"./studio-3q7mhbgx.js";import"./studio-53wy9ek3.js";import"./studio-n9qba0gx.js";import"./studio-x0gsfr1d.js";import"./studio-g9brbewz.js";import"./studio-90zkgne5.js";import"./studio-y1b86ast.js";import"./studio-tpxcryf2.js";import"./studio-5tet77de.js";import"./studio-bct64zmj.js";import"./studio-4zd6an2b.js";import"./studio-zfdbmhp3.js";import"./studio-wqfaqw4m.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-9dq7rwc7.js";import"./studio-nzemfbkk.js";import"./studio-nvcn2ykc.js";import"./studio-1410q5dw.js";import"./studio-1ks5d9y4.js";export{qP as FILE_ROW_HEIGHT,NT as canMoveInto,Pw as commitRename,JP as createFileIn,DS as findHomePage,RT as initProjectRepo,GP as isFileDrag,OS as listRenameSiblings,Ow as listTakenNames,rl as loadDirectory,$T as loadProject,Em as loadProjectDirectories,ZP as mountFilesPanel,Mw as notifyMoveOutcome,MS as openFileInPane,_i as openFileInTab,UP as openHomePage,Ib as openLastSessionOrHome,IT as openProject,Tm as parentDirOf,KP as pickAndUploadTo,TT as refreshProjectDirectoriesFor,MT as registerFilesPanel,AT as reloadCleanTab,Lm as reloadFileInTab,OT as reloadTabsIfChanged,AS as renameStatus,DT as setSessionWorkspaceShow,VP as setShowIgnoredFiles,YP as settleRename,LT as showIgnoredFiles,XP as unmountFilesPanel,ON as uploadFilesToDir,NS as writeNewFile};
2
-
3
- //# debugId=111BEFF0F4BA348F64756E2164756E21
4
- //# sourceMappingURL=files-t07yqqej.js.map
@@ -1,4 +0,0 @@
1
- import{jt,Ih,od,Dv,l0,sc,ou,Aa,Wi,lf,fn,wl,Nv,lr,AI,Oa,OI}from"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";export{lr as defaultContentFormat,wl as documentExtensions,Aa as formatByExtension,Wi as formatByName,fn as formatForPath,AI as formatParse,Oa as formatSerialize,l0 as getExtensionCatalog,Dv as getExtensions,ou as getFormats,od as loadExtensions,jt as loadFormats,lf as noFormatError,sc as refreshExtensionUi,Ih as refreshFormats,Nv as routedPageExtensions,OI as splitFormatDocument};
2
-
3
- //# debugId=0F1A7F7E2811057864756E2164756E21
4
- //# sourceMappingURL=format-host-5ja5gxyk.js.map
@@ -1,4 +0,0 @@
1
- import{Ls,Ud,tI}from"./studio-bct64zmj.js";import"./studio-4zd6an2b.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-nvcn2ykc.js";export{Ud as isRecentLocal,Ls as markLocalMutation,tI as startFsSync};
2
-
3
- //# debugId=013F41851DCDF49064756E2164756E21
4
- //# sourceMappingURL=fs-events-3424ezp3.js.map
@@ -1,4 +0,0 @@
1
- import{HT,BN,HS,BT,zT}from"./studio-fspe7m9t.js";import"./studio-e7vjyp04.js";import"./studio-thz5t120.js";import"./studio-nskxe9q1.js";import"./studio-a65kbs2e.js";import"./studio-ggx3j7nd.js";import"./studio-stahswgb.js";import"./studio-xpx91fby.js";import"./studio-3q7mhbgx.js";import"./studio-53wy9ek3.js";import"./studio-n9qba0gx.js";import"./studio-x0gsfr1d.js";import"./studio-g9brbewz.js";import"./studio-90zkgne5.js";import"./studio-y1b86ast.js";import"./studio-tpxcryf2.js";import"./studio-5tet77de.js";import"./studio-bct64zmj.js";import"./studio-4zd6an2b.js";import"./studio-zfdbmhp3.js";import"./studio-wqfaqw4m.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-9dq7rwc7.js";import"./studio-nzemfbkk.js";import"./studio-nvcn2ykc.js";import"./studio-1410q5dw.js";import"./studio-1ks5d9y4.js";export{BN as openCollectionGrid,HT as openCsvGridTab,BT as openGridSourcePicker,HS as openPagesGrid,zT as registerGridCommands};
2
-
3
- //# debugId=D02FED0E1E7282FF64756E2164756E21
4
- //# sourceMappingURL=grid-open-1mpq9mzb.js.map
@@ -1,4 +0,0 @@
1
- import{o$,r$,s$,a$,DC,Yb,Zb,NC,tc,l$,c$,d$,Xb,QP,yF,u$,Vc,gx,bx,h$,p$,f$,m$,g$,b$,v$,y$,w$,x$,_$,S$,AC,C$,Qb,k$,E$,T$,L$,$$,I$,vx,R$,nc,D$,dh,N$,yx,OC}from"./studio-53wy9ek3.js";import"./studio-n9qba0gx.js";import"./studio-x0gsfr1d.js";import"./studio-g9brbewz.js";import"./studio-90zkgne5.js";import"./studio-zfdbmhp3.js";import"./studio-wqfaqw4m.js";import"./studio-hh394phe.js";import"./studio-yrcrncev.js";import"./studio-swedpd82.js";import"./studio-9c6cbq2c.js";import"./studio-sce30r7b.js";import"./studio-aam8zt8z.js";import"./studio-4fnb5648.js";import"./studio-nzemfbkk.js";import"./studio-nvcn2ykc.js";import"./studio-1ks5d9y4.js";export{u$ as adoptCanvasPreviewMode,r$ as allowAutoRequestsOnNextRender,Zb as beginDragSession,l$ as canvasIdleBlockers,d$ as canvasPointAt,bx as clearDropIndicator,yx as commitActiveEditSession,NC as currentDragSession,C$ as dragHostTab,gx as endDragSession,a$ as flushCanvasEdits,OC as getEditBarAnchorRect,nc as getEditSnapshot,tc as hostDragGeometry,DC as hostForCanvas,v$ as isCaretActive,Yb as liveDragHostAt,yF as measureInCanvas,k$ as mountIframeCanvas,E$ as mountStylebookCanvas,R$ as panToStylebookTag,c$ as pointerAnchor,dh as postApplyFormat,T$ as postColorSchemeToLiveHosts,S$ as postDialogOpen,Vc as postDragMessage,L$ as postLocaleToLiveHosts,N$ as postOpenSlash,AC as postPatchToHosts,_$ as postPopoverOpen,$$ as postRedefineElementToLiveHosts,I$ as postSiteStyleToLiveHosts,vx as postStyleUpdateToStylebookHosts,Qb as releaseCanvasHosts,s$ as requestCanvasEval,Xb as revealCanvasPath,QP as revealCanvasPathIn,o$ as sawIframeDragOver,g$ as setCanvasContextMenuHandler,w$ as setCanvasPointerDownHandler,m$ as setCanvasSlashHandler,f$ as setFileDropHandler,x$ as setIframePatchEscalation,p$ as setInsertZoneClickHandler,D$ as setKeymapSource,h$ as setNativeDragEnterHandler,b$ as setStylebookHitHandler,y$ as setToolbarRefresh};
2
-
3
- //# debugId=4D45A8DE30CBB6C764756E2164756E21
4
- //# sourceMappingURL=iframe-host-wsg0bn73.js.map
@@ -1,4 +0,0 @@
1
- import{OR,MR,PR,FR,jR,Tu,HR,Xg,BR,nm,zR,im,CP,E_,qk,kP,EP,TP,LP,Lu,$P,IP,RP,Gk,Kk,DP,NP,AP,OP,Jk,MP}from"./studio-0khd8xtx.js";import{Td,T_,Qg,PP,qR,GR,KR,JR,eb,Xk,Qk}from"./studio-3na1r48j.js";import{Vs,bF}from"./studio-j0zf5x2x.js";import{Ce,oe,Ov,Mv}from"./studio-v5wktj6f.js";export{jR as COLLAB_SCHEMA_VERSION,Lu as CollabPathError,eb as EnvelopeError,GR as FRAME_AWARENESS,JR as FRAME_CONTROL,KR as FRAME_DOC_CLOSE,qR as FRAME_DOC_SYNC,MR as FRONTMATTER_KEY,EP as LOCAL_ORIGIN,OR as META_KEY,TP as MIRROR_ORIGIN,Jk as PRESENCE_PALETTE,LP as SEED_ORIGIN,FR as SOURCE_KEY,PR as STRUCTURE_KEY,PP as UndoManager,Td as YDoc,DP as acquireSourceCanonical,Mv as applyDocOpToDoc,$P as applyDocOpsToY,Gk as canonicalOf,Kk as canonicalRevOf,Ov as childArray,Ce as cloneValue,MP as colorForKey,Qg as createAbsolutePositionFromRelativePosition,T_ as createRelativePositionFromTypeIndex,Qk as decodeFrame,Vs as deepEqual,bF as diffDocs,Xk as encodeFrame,HR as frontmatterMap,oe as getNodeAtPath,OP as isSourceReconciler,Tu as metaMap,AP as otherSourceEditors,NP as releaseSourceCanonical,RP as replaceYStructure,E_ as resolveYPath,kP as seedStructure,BR as sourceText,Xg as structureMap,nm as toYChildren,zR as toYNode,qk as updateSourceText,CP as yDocToJson,IP as yEventsToDocOps,im as yValueToJson};
2
-
3
- //# debugId=94CCAD635D2A7C1964756E2164756E21
4
- //# sourceMappingURL=index-f9qr7kzh.js.map