@jxsuite/studio 5.2.0 → 5.4.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 (398) hide show
  1. package/data/css-meta.json +28 -27
  2. package/dist/chunks/{cf-account-picker-h4dab9bq.js → cf-account-picker-3f08rry6.js} +21 -18
  3. package/dist/chunks/{cf-settings-adg74qsk.js → cf-settings-m79r7p5y.js} +4 -4
  4. package/dist/chunks/{components-5y78e05d.js → components-xm826zjw.js} +3 -3
  5. package/dist/chunks/{content-source-sgg1sv6n.js → content-source-jt7rbcbc.js} +22 -22
  6. package/dist/chunks/{convert-to-repeater-mf1cxgfn.js → convert-to-repeater-vg38bq99.js} +22 -22
  7. package/dist/chunks/{editor-3qhbg51x.js → editor-ddy019sn.js} +2 -2
  8. package/dist/chunks/entry-commands-64nb2a9a.js +42 -0
  9. package/dist/chunks/{extension-sections-c6zwzbre.js → extension-sections-r73an5s6.js} +31 -30
  10. package/dist/chunks/{file-ops-vrpq1jjk.js → file-ops-3xan8mnj.js} +21 -21
  11. package/dist/chunks/{files-msaf95y6.js → files-egsb0ry8.js} +30 -29
  12. package/dist/chunks/{format-host-f64fnesp.js → format-host-mym8qnd0.js} +3 -3
  13. package/dist/chunks/{fs-events-3y6y0nrm.js → fs-events-z2gg8qjt.js} +4 -4
  14. package/dist/chunks/{git-panel-bv5e22j0.js → git-panel-a05atk6q.js} +20 -20
  15. package/dist/chunks/{grid-view-1p6hsyjx.css → grid-view-3g1h2re8.css} +956 -139
  16. package/dist/chunks/{grid-view-paj67nr5.js → grid-view-qaqer9kr.js} +24 -24
  17. package/dist/chunks/{icons-yy10wk9r.js → icons-drxq9q10.js} +8 -2
  18. package/dist/chunks/{iframe-host-dh5np8vk.js → iframe-host-psetcv20.js} +11 -11
  19. package/dist/chunks/{index-n4j7qxyr.js → index-9yjae3hz.js} +4 -4
  20. package/dist/chunks/{javascript-4abzjcy9.css → javascript-bc9z461d.css} +688 -54
  21. package/dist/chunks/{javascript-xvrfrpkb.js → javascript-hr5sg57n.js} +2 -2
  22. package/dist/chunks/{jsonMode-vvmpmk34.css → jsonMode-qqd9nm1t.css} +1120 -303
  23. package/dist/chunks/{jsonMode-tyx2kj6p.js → jsonMode-zs88v0wr.js} +4 -4
  24. package/dist/chunks/{jx-validate-j0wxk72w.js → jx-validate-epp2z3s3.js} +2 -2
  25. package/dist/chunks/layers-panel-83a16ytx.js +41 -0
  26. package/dist/chunks/{layers-1vcfdbet.js → layers-s6mc01ry.js} +3 -3
  27. package/dist/chunks/{listbox-6v2ac08j.js → listbox-b7jxnhq1.js} +19 -3
  28. package/dist/chunks/{media-picker-p49nhqhs.js → media-picker-nhn6rv4w.js} +11 -11
  29. package/dist/chunks/{menu-qht48vnc.js → menu-8j4qxjrp.js} +4 -4
  30. package/dist/chunks/{monaco-binding-sw6en4dw.js → monaco-binding-e8d9wzyk.js} +3 -3
  31. package/dist/chunks/{monaco-buffer-pykwbm92.js → monaco-buffer-jaq1t9zj.js} +2 -2
  32. package/dist/chunks/{monaco-setup-8vbyqnhr.css → monaco-setup-ey9cjcm3.css} +954 -137
  33. package/dist/chunks/{monaco-setup-8r62fj6y.js → monaco-setup-gsjdysze.js} +7 -7
  34. package/dist/chunks/{platform-ts9cg1a4.js → platform-fnchmhy7.js} +5 -3
  35. package/dist/chunks/publish-panel-ak6hxfma.js +27 -0
  36. package/dist/chunks/quick-search-c63mkt3b.js +47 -0
  37. package/dist/chunks/{references-h69xp9zz.js → references-f7bdv3z5.js} +3 -3
  38. package/dist/chunks/right-panel-t5n8wttg.js +45 -0
  39. package/dist/chunks/{split-g7nm1rgb.js → split-4cz4b6ef.js} +14 -3
  40. package/dist/chunks/{studio-sar8g54p.js → studio-01269reb.js} +8 -8
  41. package/dist/chunks/{studio-rnyf3f8e.js → studio-0a4gncx0.js} +3 -3
  42. package/dist/chunks/{studio-e1f24eff.js → studio-0d4p4wxj.js} +6778 -2993
  43. package/dist/chunks/{studio-4wbb9ct0.js → studio-1tejxvba.js} +3006 -1855
  44. package/dist/chunks/{studio-p6pmwkvh.js → studio-3nprwbd9.js} +147 -28
  45. package/dist/chunks/{studio-4c041r8y.js → studio-40z39dme.js} +3 -3
  46. package/dist/chunks/{studio-68fydsrj.js → studio-482eeazk.js} +20 -20
  47. package/dist/chunks/{studio-y4f9fdge.js → studio-4998spet.js} +10 -9
  48. package/dist/chunks/{studio-nq5yf5mp.js → studio-557bmn0x.js} +2 -2
  49. package/dist/chunks/{studio-hdc2jt3z.js → studio-5w26wza5.js} +3 -3
  50. package/dist/chunks/{studio-6nzaktvy.js → studio-6pwn9j8c.js} +6 -3
  51. package/dist/chunks/{studio-wnsyffg1.js → studio-6vg0x5fz.js} +3 -2
  52. package/dist/chunks/{studio-vn5hske5.js → studio-7d3c1m59.js} +12 -5
  53. package/dist/chunks/{studio-28vs5k2y.js → studio-9vsvz7w7.js} +7 -7
  54. package/dist/chunks/{studio-t3adrr56.js → studio-9wm0xzpf.js} +19 -19
  55. package/dist/chunks/{studio-38emantv.js → studio-a5h5j33a.js} +19 -5
  56. package/dist/chunks/{studio-ympe0n7a.js → studio-ag3z6shb.js} +10 -4
  57. package/dist/chunks/studio-aj9drheq.js +177 -0
  58. package/dist/chunks/{studio-vt0tj32j.js → studio-apv9x70c.js} +189 -130
  59. package/dist/chunks/{studio-c04nzbby.js → studio-b9q3znz8.js} +2 -2
  60. package/dist/chunks/{studio-2mdbbc76.js → studio-bh47w0cy.js} +9 -10
  61. package/dist/chunks/{studio-ez11dmdh.js → studio-dgdm6vvt.js} +264 -52
  62. package/dist/chunks/{studio-5nz00bhh.js → studio-dwdcr2e8.js} +4 -4
  63. package/dist/chunks/{studio-nqgawfks.js → studio-fbcyz234.js} +146 -139
  64. package/dist/chunks/{studio-kcgff4r0.js → studio-fgmfksz8.js} +2 -2
  65. package/dist/chunks/{studio-x72j58vw.js → studio-fqpkpq1t.js} +7 -4
  66. package/dist/chunks/{studio-15f3kxqe.js → studio-fy320dfc.js} +62 -68
  67. package/dist/chunks/{studio-zjjde71a.js → studio-gjj4bbfx.js} +2 -2
  68. package/dist/chunks/{studio-66arbpc2.js → studio-jfhxy8h3.js} +16 -15
  69. package/dist/chunks/{studio-d0300636.js → studio-ks2zzth2.js} +17 -2
  70. package/dist/chunks/{studio-c07s5ckd.js → studio-kwewmhhq.js} +4 -4
  71. package/dist/chunks/{studio-01jeck2y.js → studio-m58xn8at.js} +26 -25
  72. package/dist/chunks/{studio-mpzwze9x.js → studio-mfkh1q8d.js} +17 -17
  73. package/dist/chunks/{studio-etvx9s2g.js → studio-mrh0a92f.js} +17 -17
  74. package/dist/chunks/{studio-qa7fzxan.js → studio-mt79tn56.js} +3 -3
  75. package/dist/chunks/{studio-hhskq2mr.js → studio-ne593z1j.js} +39 -32
  76. package/dist/chunks/{studio-h4nvnjvz.js → studio-ptfcxkz5.js} +418 -232
  77. package/dist/chunks/{studio-4xmjcrg3.js → studio-qxye31h7.js} +7 -7
  78. package/dist/chunks/{studio-a1pswps3.js → studio-rav5bpmp.js} +81 -59
  79. package/dist/chunks/{studio-ncn9e189.js → studio-rwmmbrth.js} +6 -6
  80. package/dist/chunks/{studio-en82c639.js → studio-sceg8ws0.js} +8 -8
  81. package/dist/chunks/{studio-wjpgxywa.js → studio-sjas5b3a.js} +19 -13
  82. package/dist/chunks/{studio-4r14yzyy.js → studio-vd67b66d.js} +3 -3
  83. package/dist/chunks/{studio-14d9tq4d.js → studio-w475cbf9.js} +10 -10
  84. package/dist/chunks/{studio-ctm7bhx5.js → studio-w7gpcvfj.js} +9 -9
  85. package/dist/chunks/{studio-9j6sfeba.js → studio-xrbfdxgk.js} +7 -7
  86. package/dist/chunks/{studio-x10fp4tp.js → studio-y49b6mjv.js} +35 -35
  87. package/dist/chunks/{studio-5t7ena5z.js → studio-ygvr9e4q.js} +10 -10
  88. package/dist/chunks/{studio-z2smx5ce.js → studio-yxmmjy2a.js} +9 -6
  89. package/dist/chunks/{tsMode-jy4m86rv.js → tsMode-ay4c78ne.js} +4 -4
  90. package/dist/chunks/{tsMode-hnxxb73h.css → tsMode-c72wyz27.css} +954 -137
  91. package/dist/chunks/{workspace-bnw54cha.js → workspace-b9k2frks.js} +5 -5
  92. package/dist/chunks/{ws-client-ny4zc51r.js → ws-client-erze4czt.js} +356 -20
  93. package/dist/codicon.ttf +0 -0
  94. package/dist/iframe-entry.js +20 -18
  95. package/dist/studio.css +956 -139
  96. package/dist/studio.js +1511 -851
  97. package/dist/workers/editor.worker.js +196 -107
  98. package/dist/workers/json.worker.js +196 -107
  99. package/dist/workers/ts.worker.js +196 -107
  100. package/package.json +18 -17
  101. package/src/about/about-modal.ts +4 -3
  102. package/src/browse/library-commands.ts +15 -13
  103. package/src/browse/library-pane.ts +2 -2
  104. package/src/canvas/canvas-render.ts +97 -83
  105. package/src/canvas/canvas-surface.ts +2 -2
  106. package/src/canvas/canvas-utils.ts +42 -32
  107. package/src/canvas/diff-toolbar.ts +21 -2
  108. package/src/canvas/diff-view.ts +30 -6
  109. package/src/canvas/iframe-entry.ts +2 -2
  110. package/src/canvas/iframe-host.ts +5 -5
  111. package/src/canvas/iframe-interaction.ts +7 -6
  112. package/src/canvas/iframe-overlay.ts +1 -1
  113. package/src/canvas/iframe-protocol.ts +6 -5
  114. package/src/canvas/iframe-render.ts +3 -3
  115. package/src/canvas/popover-state.ts +1 -1
  116. package/src/canvas/stage-scrollbar.ts +112 -0
  117. package/src/canvas/surface-registry.ts +9 -2
  118. package/src/collab/collab-commands.ts +8 -6
  119. package/src/collab/collab-session.ts +4 -4
  120. package/src/collab/collab-state.ts +4 -4
  121. package/src/collab/presence-chips.ts +3 -3
  122. package/src/commands/app-commands.ts +7 -7
  123. package/src/commands/budget.ts +17 -16
  124. package/src/commands/command-args.ts +10 -9
  125. package/src/commands/context.ts +20 -10
  126. package/src/commands/defaults.ts +30 -29
  127. package/src/commands/levels.ts +8 -6
  128. package/src/commands/live-context.ts +12 -10
  129. package/src/commands/reference.ts +5 -5
  130. package/src/commands/registry.ts +2 -2
  131. package/src/content/draft-state.ts +9 -8
  132. package/src/content/entry-commands.ts +16 -14
  133. package/src/content/entry-editor.ts +2 -2
  134. package/src/content/entry-fields.ts +1 -1
  135. package/src/editor/context-menu.ts +4 -4
  136. package/src/editor/convert-to-component.ts +6 -5
  137. package/src/editor/inline-edit.ts +3 -3
  138. package/src/editor/shortcuts.ts +88 -20
  139. package/src/editor/slash-menu.ts +11 -10
  140. package/src/files/elements.ts +4 -5
  141. package/src/files/file-ops.ts +1 -1
  142. package/src/files/files.ts +21 -17
  143. package/src/files/serialize-document.ts +1 -1
  144. package/src/format/convert-file.ts +5 -5
  145. package/src/github/github-auth-status.ts +107 -0
  146. package/src/github/github-auth.ts +18 -82
  147. package/src/github/github-publish.ts +7 -6
  148. package/src/grid/cell-editors.ts +8 -7
  149. package/src/grid/grid-layout.ts +1 -1
  150. package/src/grid/grid-open.ts +6 -5
  151. package/src/grid/grid-panel.ts +13 -12
  152. package/src/grid/redirects-grid.ts +14 -11
  153. package/src/grid/redirects.ts +10 -5
  154. package/src/grid/sources/content-source.ts +10 -9
  155. package/src/hosting/document.ts +28 -1
  156. package/src/hosting/stage.ts +15 -4
  157. package/src/i18n/i18n-commands.ts +9 -7
  158. package/src/new-project/location-fields.ts +16 -3
  159. package/src/new-project/new-project-modal.ts +23 -7
  160. package/src/page-params.ts +6 -6
  161. package/src/panels/activity-panel.ts +11 -10
  162. package/src/panels/ai-chat/chat-view.ts +27 -14
  163. package/src/panels/ai-chat/composer.ts +10 -3
  164. package/src/panels/ai-panel.ts +87 -29
  165. package/src/panels/block-action-bar.ts +59 -33
  166. package/src/panels/bottom-dock.ts +22 -22
  167. package/src/panels/chat-panel.ts +40 -5
  168. package/src/panels/data-explorer.ts +9 -9
  169. package/src/panels/data-grid.ts +1 -1
  170. package/src/panels/editors.ts +8 -8
  171. package/src/panels/elements-panel.ts +7 -8
  172. package/src/panels/empty-state.ts +1 -1
  173. package/src/panels/events-panel.ts +13 -12
  174. package/src/panels/formula-workspace.ts +8 -5
  175. package/src/panels/frontmatter-fields.ts +4 -1
  176. package/src/panels/frontmatter-panel.ts +18 -18
  177. package/src/panels/git-panel.ts +19 -13
  178. package/src/panels/head-panel.ts +9 -10
  179. package/src/panels/i18n-panel.ts +6 -4
  180. package/src/panels/imports-panel.ts +1 -1
  181. package/src/panels/jump-bar.ts +20 -18
  182. package/src/panels/layers-panel.ts +19 -17
  183. package/src/panels/left-panel.ts +3 -3
  184. package/src/panels/navigator-panels.ts +8 -8
  185. package/src/panels/overlays.ts +1 -1
  186. package/src/panels/pane-context.ts +56 -28
  187. package/src/panels/pane-grid.ts +9 -8
  188. package/src/panels/panel-registry.ts +47 -19
  189. package/src/panels/problems-panel.ts +11 -12
  190. package/src/panels/properties-panel.ts +21 -20
  191. package/src/panels/provenance.ts +3 -3
  192. package/src/panels/quick-search.ts +15 -11
  193. package/src/panels/right-panel.ts +4 -3
  194. package/src/panels/seo-modal.ts +5 -4
  195. package/src/panels/settings-menu.ts +9 -9
  196. package/src/panels/settings-pane.ts +3 -3
  197. package/src/panels/signals-panel.ts +16 -9
  198. package/src/panels/statement-editor.ts +12 -9
  199. package/src/panels/style-panel.ts +45 -41
  200. package/src/panels/stylebook-panel.ts +0 -1
  201. package/src/panels/tab-strip.ts +26 -23
  202. package/src/platform-errors.ts +2 -2
  203. package/src/platform.ts +44 -4
  204. package/src/platforms/cloud.ts +11 -1
  205. package/src/platforms/default-platform.ts +141 -4
  206. package/src/platforms/devserver.ts +23 -3
  207. package/src/publish/deploy-checklist.ts +11 -10
  208. package/src/publish/publish-commands.ts +9 -8
  209. package/src/services/a11y-report.ts +1 -1
  210. package/src/services/ai-ask.ts +39 -16
  211. package/src/services/ai-command-tools.ts +28 -14
  212. package/src/services/ai-import-tools.ts +43 -29
  213. package/src/services/ai-project-tools.ts +20 -38
  214. package/src/services/ai-settings.ts +55 -2
  215. package/src/services/ai-tools.ts +69 -58
  216. package/src/services/ai-write-report.ts +4 -4
  217. package/src/services/ai-writes.ts +74 -55
  218. package/src/services/automation.ts +12 -12
  219. package/src/services/clock.ts +2 -1
  220. package/src/services/connection.ts +2 -2
  221. package/src/services/context-manager.ts +69 -6
  222. package/src/services/directory-picker.ts +93 -27
  223. package/src/services/document-assistant.ts +86 -17
  224. package/src/services/gated-registry.ts +4 -3
  225. package/src/services/idle.ts +5 -4
  226. package/src/services/live-surfaces.ts +2 -1
  227. package/src/services/module-preloads.ts +67 -0
  228. package/src/services/notify.ts +9 -7
  229. package/src/services/popover-report.ts +3 -3
  230. package/src/services/preview-eval.ts +1 -1
  231. package/src/services/project-adoption.ts +34 -1
  232. package/src/services/project-path.ts +53 -0
  233. package/src/services/settings/kernel.ts +13 -2
  234. package/src/services/tool-executor.ts +135 -30
  235. package/src/services/tool-outcomes.ts +143 -0
  236. package/src/settings/contexts-section.ts +8 -8
  237. package/src/settings/contributed-section.ts +6 -6
  238. package/src/settings/css-vars-editor.ts +6 -5
  239. package/src/settings/extension-commands.ts +19 -18
  240. package/src/settings/extension-sections.ts +7 -7
  241. package/src/settings/extensions-section.ts +3 -3
  242. package/src/settings/general-settings.ts +21 -18
  243. package/src/settings/preferences-accounts.ts +3 -3
  244. package/src/settings/preferences-dialog.ts +9 -8
  245. package/src/settings/preferences-sections.ts +1 -1
  246. package/src/settings/project-sections.ts +2 -2
  247. package/src/settings/section-registry.ts +7 -6
  248. package/src/settings/settings-document.ts +41 -43
  249. package/src/shell/tree.ts +29 -0
  250. package/src/shell.ts +63 -55
  251. package/src/site-context.ts +1 -1
  252. package/src/store.ts +2 -2
  253. package/src/studio.ts +52 -28
  254. package/src/style/live-preview.ts +8 -8
  255. package/src/style/project-styles.ts +8 -9
  256. package/src/style/token-ref.ts +2 -2
  257. package/src/surfaces/about.json +6 -2
  258. package/src/surfaces/add-repo.json +2 -2
  259. package/src/surfaces/add-repo.ts +2 -2
  260. package/src/surfaces/ai-chat.json +14 -6
  261. package/src/surfaces/ai-chat.ts +4 -2
  262. package/src/surfaces/ai-credentials-form.json +53 -49
  263. package/src/surfaces/ai-credentials-form.ts +18 -4
  264. package/src/surfaces/ai-managed-connect.json +4 -4
  265. package/src/surfaces/block-action-bar.json +4 -4
  266. package/src/surfaces/block-action-bar.ts +3 -3
  267. package/src/surfaces/boot-failure.json +228 -0
  268. package/src/surfaces/boot-failure.ts +156 -0
  269. package/src/surfaces/bottom-dock.json +1 -1
  270. package/src/surfaces/canvas-stage.json +9 -40
  271. package/src/surfaces/canvas-stage.ts +9 -9
  272. package/src/surfaces/cf-account-picker.json +11 -8
  273. package/src/surfaces/commandbar.ts +11 -10
  274. package/src/surfaces/convert-repeater.ts +3 -2
  275. package/src/surfaces/dialog.json +7 -1
  276. package/src/surfaces/dialog.ts +2 -2
  277. package/src/surfaces/doc-header.json +6 -13
  278. package/src/surfaces/doc-header.ts +4 -5
  279. package/src/surfaces/entry-editor.json +1 -1
  280. package/src/surfaces/entry-editor.ts +2 -1
  281. package/src/surfaces/expression-editor.json +5 -5
  282. package/src/surfaces/files-panel.json +4 -3
  283. package/src/surfaces/files-panel.ts +1 -1
  284. package/src/surfaces/formula-palette.json +10 -9
  285. package/src/surfaces/formula-palette.ts +11 -7
  286. package/src/surfaces/git-panel.json +167 -109
  287. package/src/surfaces/git-panel.ts +2 -2
  288. package/src/surfaces/github-auth.json +2 -1
  289. package/src/surfaces/github-publish.ts +3 -3
  290. package/src/surfaces/grid-open.json +1 -1
  291. package/src/surfaces/grid-panel.json +2 -2
  292. package/src/surfaces/grid-views.json +1 -1
  293. package/src/surfaces/inspector-dock.json +2 -2
  294. package/src/surfaces/jump-bar.json +1 -1
  295. package/src/surfaces/jump-bar.ts +1 -1
  296. package/src/surfaces/library-pane.ts +2 -1
  297. package/src/surfaces/logic-panel.json +7 -7
  298. package/src/surfaces/logic-panel.ts +6 -4
  299. package/src/surfaces/logic-workspace.json +2 -2
  300. package/src/surfaces/logic-workspace.ts +2 -2
  301. package/src/surfaces/media-browser.ts +3 -3
  302. package/src/surfaces/media-pane.ts +2 -1
  303. package/src/surfaces/menu.ts +5 -5
  304. package/src/surfaces/new-project.json +1 -1
  305. package/src/surfaces/palette.json +8 -7
  306. package/src/surfaces/pane-context.json +86 -57
  307. package/src/surfaces/pane-context.ts +2 -1
  308. package/src/surfaces/pane-grid.json +3 -3
  309. package/src/surfaces/panel-activity.json +2 -1
  310. package/src/surfaces/panel-deploy-checklist.json +1 -1
  311. package/src/surfaces/panel-elements.ts +2 -1
  312. package/src/surfaces/panel-i18n.ts +2 -1
  313. package/src/surfaces/panel-outline.json +1 -1
  314. package/src/surfaces/panel-outline.ts +4 -3
  315. package/src/surfaces/panel-page.json +2 -2
  316. package/src/surfaces/panel-page.ts +4 -1
  317. package/src/surfaces/panel-problems.json +4 -3
  318. package/src/surfaces/panel-problems.ts +2 -2
  319. package/src/surfaces/panel-signals.json +23 -8
  320. package/src/surfaces/panel-signals.ts +5 -1
  321. package/src/surfaces/panel-stylebook-layers.json +1 -1
  322. package/src/surfaces/panel-stylebook-layers.ts +2 -2
  323. package/src/surfaces/preferences.json +21 -8
  324. package/src/surfaces/preferences.ts +9 -1
  325. package/src/surfaces/properties-panel.json +4 -4
  326. package/src/surfaces/properties-panel.ts +2 -2
  327. package/src/surfaces/publish.json +1 -1
  328. package/src/surfaces/publish.ts +2 -1
  329. package/src/surfaces/push-plan.json +4 -3
  330. package/src/surfaces/rail.json +2 -2
  331. package/src/surfaces/rail.ts +10 -4
  332. package/src/surfaces/reference-field.json +1 -1
  333. package/src/surfaces/schema-form.json +2 -2
  334. package/src/surfaces/schema-form.ts +1 -1
  335. package/src/surfaces/seo.json +1 -1
  336. package/src/surfaces/seo.ts +2 -2
  337. package/src/surfaces/settings-contributed.ts +2 -1
  338. package/src/surfaces/settings-css-vars.json +4 -4
  339. package/src/surfaces/settings-deploy.json +4 -4
  340. package/src/surfaces/settings-deploy.ts +2 -1
  341. package/src/surfaces/settings-extensions.json +6 -6
  342. package/src/surfaces/settings-extensions.ts +6 -2
  343. package/src/surfaces/settings-locales.json +4 -4
  344. package/src/surfaces/settings-overview.ts +2 -1
  345. package/src/surfaces/settings-pane.ts +3 -2
  346. package/src/surfaces/settings-rawjson.ts +1 -1
  347. package/src/surfaces/slash-menu.ts +4 -4
  348. package/src/surfaces/statements.json +3 -3
  349. package/src/surfaces/statusbar.ts +23 -23
  350. package/src/surfaces/style-panel.json +9 -5
  351. package/src/surfaces/style-panel.ts +3 -3
  352. package/src/surfaces/tab-strip.json +2 -2
  353. package/src/surfaces/target-line.json +1 -1
  354. package/src/surfaces/target-line.ts +12 -10
  355. package/src/surfaces/welcome.json +7 -2
  356. package/src/tabs/doc-op-apply.ts +5 -5
  357. package/src/tabs/patch-ops.ts +3 -3
  358. package/src/tabs/project-config.ts +10 -10
  359. package/src/tabs/selection.ts +1 -1
  360. package/src/tabs/tab.ts +13 -14
  361. package/src/tabs/transact.ts +18 -24
  362. package/src/types.ts +27 -3
  363. package/src/ui/ai-credentials-form.ts +74 -16
  364. package/src/ui/ai-managed-connect.ts +68 -19
  365. package/src/ui/color-selector.ts +1 -1
  366. package/src/ui/expression-editor.ts +3 -3
  367. package/src/ui/form-controls.ts +6 -5
  368. package/src/ui/formula-catalog.ts +4 -4
  369. package/src/ui/formula-chips.ts +2 -2
  370. package/src/ui/layers.ts +20 -18
  371. package/src/ui/panel-resize.ts +8 -28
  372. package/src/ui/popover-surface.ts +2 -2
  373. package/src/ui/progress-modal.ts +3 -3
  374. package/src/ui/regions.ts +14 -9
  375. package/src/ui/schema-form.ts +10 -9
  376. package/src/ui/timing.ts +9 -7
  377. package/src/ui/value-source.ts +4 -4
  378. package/src/ui/virtual-window.ts +58 -5
  379. package/src/utils/base64.ts +20 -1
  380. package/src/utils/canvas-media.ts +1 -1
  381. package/src/utils/studio-utils.ts +0 -31
  382. package/src/view.ts +4 -3
  383. package/src/workspace/pane-derive.ts +14 -13
  384. package/src/workspace/session.ts +7 -6
  385. package/src/workspace/workspace.ts +49 -39
  386. package/styles/canvas.css +1 -27
  387. package/styles/inspector.css +4 -3
  388. package/styles/overlays.css +1 -1
  389. package/styles/tokens.css +17 -1
  390. package/styles/tokens.json +6 -1
  391. package/dist/chunks/entry-commands-w9qsxa6q.js +0 -42
  392. package/dist/chunks/layers-panel-fksbdg4q.js +0 -40
  393. package/dist/chunks/publish-panel-vz23wwmg.js +0 -27
  394. package/dist/chunks/quick-search-e9rp74m8.js +0 -46
  395. package/dist/chunks/right-panel-j97t2yvy.js +0 -45
  396. package/dist/chunks/studio-727xh0e3.js +0 -76
  397. package/src/files/json-layout.ts +0 -474
  398. package/src/services/ai-turn-signal.ts +0 -70
@@ -21,17 +21,17 @@ import {
21
21
  activateTab2,
22
22
  moveTabToPane2,
23
23
  renameTab2
24
- } from "./studio-ez11dmdh.js";
24
+ } from "./studio-dgdm6vvt.js";
25
25
  import {
26
26
  registerSurface,
27
27
  mountSurface,
28
28
  runReported,
29
29
  runActiveReported,
30
30
  showPromptDialog2
31
- } from "./studio-ympe0n7a.js";
31
+ } from "./studio-ag3z6shb.js";
32
32
  import {
33
33
  activeRegistry
34
- } from "./studio-p6pmwkvh.js";
34
+ } from "./studio-3nprwbd9.js";
35
35
  import {
36
36
  reactive,
37
37
  now,
@@ -45,7 +45,7 @@ import {
45
45
  import {
46
46
  getPlatform2,
47
47
  hasPlatform2
48
- } from "./studio-6nzaktvy.js";
48
+ } from "./studio-6pwn9j8c.js";
49
49
  import {
50
50
  loadFormats2,
51
51
  refreshFormats2,
@@ -55,16 +55,16 @@ import {
55
55
  noFormatError2,
56
56
  formatForPath2,
57
57
  documentExtensions2
58
- } from "./studio-28vs5k2y.js";
58
+ } from "./studio-9vsvz7w7.js";
59
59
  import {
60
60
  resetIgnoreCache,
61
61
  ensureIgnoreLayers,
62
62
  isIgnoredEntry,
63
63
  markLocalMutation2
64
- } from "./studio-4c041r8y.js";
64
+ } from "./studio-40z39dme.js";
65
65
  import {
66
66
  invalidateUsages2
67
- } from "./studio-nq5yf5mp.js";
67
+ } from "./studio-557bmn0x.js";
68
68
  import {
69
69
  parseJsonDocument,
70
70
  restoreSession,
@@ -72,27 +72,27 @@ import {
72
72
  markSessionRestored,
73
73
  setActivityTab,
74
74
  resetProjectShell
75
- } from "./studio-mpzwze9x.js";
75
+ } from "./studio-mfkh1q8d.js";
76
76
  import {
77
77
  SETTINGS,
78
78
  readStoredSetting,
79
79
  setSetting
80
- } from "./studio-z2smx5ce.js";
80
+ } from "./studio-yxmmjy2a.js";
81
81
  import {
82
82
  showProgressModal
83
- } from "./studio-y4f9fdge.js";
83
+ } from "./studio-4998spet.js";
84
84
  import {
85
85
  registerPanel
86
- } from "./studio-x72j58vw.js";
86
+ } from "./studio-fqpkpq1t.js";
87
87
  import {
88
88
  disarmPreviewOverlay,
89
89
  parseSourceForPath2,
90
90
  confirmFileDelete2,
91
91
  renamePromptMessage2
92
- } from "./studio-x10fp4tp.js";
92
+ } from "./studio-y49b6mjv.js";
93
93
  import {
94
94
  loadComponentRegistry2
95
- } from "./studio-zjjde71a.js";
95
+ } from "./studio-gjj4bbfx.js";
96
96
  import {
97
97
  combine,
98
98
  dropTargetForElements2,
@@ -106,27 +106,27 @@ import {
106
106
  isViewableMedia,
107
107
  openMediaTab,
108
108
  cleanupGitPanel2
109
- } from "./studio-vt0tj32j.js";
109
+ } from "./studio-apv9x70c.js";
110
110
  import {
111
111
  uploadAccept,
112
112
  isImage,
113
113
  uploadAssets
114
- } from "./studio-en82c639.js";
114
+ } from "./studio-sceg8ws0.js";
115
115
  import {
116
116
  openCsvGridTab,
117
117
  openPagesGrid
118
- } from "./studio-t3adrr56.js";
118
+ } from "./studio-9wm0xzpf.js";
119
119
  import {
120
120
  openMenu2
121
- } from "./studio-qa7fzxan.js";
121
+ } from "./studio-mt79tn56.js";
122
122
  import {
123
123
  listWindow,
124
124
  revealListRow,
125
125
  watchListWindow
126
- } from "./studio-38emantv.js";
126
+ } from "./studio-a5h5j33a.js";
127
127
  import {
128
128
  collectionOfPath
129
- } from "./studio-hdc2jt3z.js";
129
+ } from "./studio-5w26wza5.js";
130
130
  import {
131
131
  __preload
132
132
  } from "./studio-5te5tqng.js";
@@ -366,7 +366,7 @@ var files_panel_default = {
366
366
  fontSize: "var(--jx-text-md)",
367
367
  color: "var(--fg)",
368
368
  '& [part="empty"]': {
369
- $description: "The two states that are not a tree. They are two states and not one sentence: a window with no project at all and a monorepo root that has not been pointed at a site are different situations, and only the second has anything to offer (§11).",
369
+ $description: "The two states that are not a tree. They are two states and not one sentence: a window with no project at all and a monorepo root that has not been pointed at a site are different situations, and only the second has anything to offer (studio-ui-guidelines.md §11).",
370
370
  padding: "var(--jx-space-6)",
371
371
  textAlign: "center",
372
372
  color: "var(--fg-dim)",
@@ -515,7 +515,7 @@ var files_panel_default = {
515
515
  value: []
516
516
  }
517
517
  ],
518
- description: "The declared `project.open` command, run through the registry — not a second opener of this surface's own. It is the one the chord, the palette and the status bar's PROJECT field already run, so a window that opens a project from here reports the outcome the same way they do (§12.5)."
518
+ description: "The declared `project.open` command, run through the registry — not a second opener of this surface's own. It is the one the chord, the palette and the status bar's PROJECT field already run, so a window that opens a project from here reports the outcome the same way they do (studio-ui-guidelines.md §12.5)."
519
519
  },
520
520
  children: [
521
521
  {
@@ -567,12 +567,13 @@ var files_panel_default = {
567
567
  },
568
568
  children: [
569
569
  {
570
+ $description: "A row of quiet tools, so NOT compact. A compact group draws every member's frame and fill whatever its quiet says, which is the segmented look a choice wants and not the borderless one a toolbar wants; Spectrum's group here was `compact quiet`, a combination the kit spells as compact=false with its members' default quiet.",
570
571
  tagName: "jx-action-group",
571
572
  attributes: {
572
573
  part: "toolbar-actions"
573
574
  },
574
575
  $props: {
575
- compact: true,
576
+ compact: false,
576
577
  label: "File tree actions"
577
578
  },
578
579
  children: [
@@ -2083,7 +2084,7 @@ async function createNewFile(dirPath, renderLeftPanel) {
2083
2084
  const seedable = constrained && collection.isSourceRoot && collection.def.schema !== undefined;
2084
2085
  let created;
2085
2086
  if (seedable) {
2086
- const { createEntry } = await (__preload("w9qsxa6q"), import("./entry-commands-w9qsxa6q.js"));
2087
+ const { createEntry } = await (__preload("64nb2a9a"), import("./entry-commands-64nb2a9a.js"));
2087
2088
  created = await createEntry(collection.name, { dir: dirPath });
2088
2089
  } else {
2089
2090
  created = await createFileIn2({
@@ -2432,5 +2433,5 @@ function unmountFilesPanel() {
2432
2433
 
2433
2434
  export { ensureDependenciesInstalled, convertTargets, convertTargetExtensions, hydrateRecentProjects, getRecentProjects, addRecentProject, removeRecentProject, clearRecentProjects, getRecentFiles, trackRecentFile, loadDirectory2, loadProject2, openProject2, initProjectRepo2, findHomePage2, openLastSessionOrHome2, renderFilesTemplate2, registerFileTreeDnD2, createFileIn2, notifyMoveOutcome2, settleRename2, openFileInTab2, openFileInPane2, reloadCleanTab2, reloadFileInTab2, registerFilesPanel2 };
2434
2435
 
2435
- //# debugId=7C9C999E902E1E2C64756E2164756E21
2436
- //# sourceMappingURL=studio-01jeck2y.js.map
2436
+ //# debugId=3E1906DE2DC8E43564756E2164756E21
2437
+ //# sourceMappingURL=studio-m58xn8at.js.map
@@ -6,17 +6,6 @@ import {
6
6
  pinClock,
7
7
  notify2
8
8
  } from "./studio-d8z5bajd.js";
9
- import {
10
- getPlatform2
11
- } from "./studio-6nzaktvy.js";
12
- import {
13
- loadedMonaco
14
- } from "./studio-28vs5k2y.js";
15
- import {
16
- projectState,
17
- setProjectState,
18
- requireProjectState
19
- } from "./studio-m1p9b6c3.js";
20
9
  import {
21
10
  isWellFormedLocale,
22
11
  resolveI18n,
@@ -36,12 +25,23 @@ import {
36
25
  workspace2,
37
26
  focusPane2,
38
27
  setWorkspaceProject2
39
- } from "./studio-ez11dmdh.js";
28
+ } from "./studio-dgdm6vvt.js";
29
+ import {
30
+ getPlatform2
31
+ } from "./studio-6pwn9j8c.js";
32
+ import {
33
+ loadedMonaco
34
+ } from "./studio-9vsvz7w7.js";
35
+ import {
36
+ projectState,
37
+ setProjectState,
38
+ requireProjectState
39
+ } from "./studio-m1p9b6c3.js";
40
40
  import {
41
41
  SETTINGS,
42
42
  readStoredSetting,
43
43
  setSetting
44
- } from "./studio-z2smx5ce.js";
44
+ } from "./studio-yxmmjy2a.js";
45
45
  import {
46
46
  errorMessage2
47
47
  } from "./studio-yxa81f45.js";
@@ -49,7 +49,7 @@ import {
49
49
  __preload
50
50
  } from "./studio-5te5tqng.js";
51
51
 
52
- // src/files/json-layout.ts
52
+ // ../schema/src/json-layout.ts
53
53
  function segment(key) {
54
54
  return key.replaceAll("~", "~0").replaceAll("/", "~1");
55
55
  }
@@ -1345,7 +1345,7 @@ function extensionsKey(config) {
1345
1345
  return JSON.stringify(config.extensions ?? null);
1346
1346
  }
1347
1347
  async function refreshExtensionSurfaces() {
1348
- const { loadFormats, refreshExtensionUi, refreshFormats } = await (__preload("f64fnesp"), import("./format-host-f64fnesp.js"));
1348
+ const { loadFormats, refreshExtensionUi, refreshFormats } = await (__preload("mym8qnd0"), import("./format-host-mym8qnd0.js"));
1349
1349
  refreshFormats();
1350
1350
  loadFormats();
1351
1351
  refreshExtensionUi(getPlatform2());
@@ -1582,5 +1582,5 @@ async function updateSiteConfig(patch) {
1582
1582
 
1583
1583
  export { parseJsonDocument, serializeJson, serializeProjectConfig, lendProjectConfigLayout, commitProjectConfig, adoptProjectConfig, getEffectiveMedia, getEffectiveStyle, getEffectiveImports, getEffectiveElements, getEffectiveHead, getEffectiveLocales, invalidateLayoutCache, getEffectiveLayoutPath, resolveLayoutDoc, distributePageIntoLayout, updateSiteConfig, restoreSession, requireNavigatorPanelId, DEFAULT_INSPECTOR_TAB, isInspectorTabId, BOTTOM_TAB_IDS, DEFAULT_BOTTOM_TAB, isBottomTabId, CHROME_THEMES, DOCK_IDS, DOCK_DEFAULT_SIZES, DEFAULT_PANE_SPLIT, PANE_SPLIT_MIN, PANE_SPLIT_MAX, setPaneSplit, shell, persistDocks, persistedSession, markSessionRestored, flushSession, monacoTheme, registerShellSurface, mountShell, setDockCollapsed, setDockSize, setActivityTab, setBottomTab, setChromeTheme, toggleActivityTab, setLayoutSelection, resetProjectShell, registerShellViewCommands };
1584
1584
 
1585
- //# debugId=41F1C61D2E957DBB64756E2164756E21
1586
- //# sourceMappingURL=studio-mpzwze9x.js.map
1585
+ //# debugId=36304E8671DE0A5564756E2164756E21
1586
+ //# sourceMappingURL=studio-mfkh1q8d.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getPlatform2,
3
3
  hasPlatform2
4
- } from "./studio-6nzaktvy.js";
4
+ } from "./studio-6pwn9j8c.js";
5
5
  import {
6
6
  displayTagName,
7
7
  isPrivateStateKey
@@ -29,11 +29,7 @@ import {
29
29
  surfaceForPane,
30
30
  allCanvasSurfaces,
31
31
  stageContaining
32
- } from "./studio-wnsyffg1.js";
33
- import {
34
- loadExtensions2,
35
- formatByName2
36
- } from "./studio-28vs5k2y.js";
32
+ } from "./studio-6vg0x5fz.js";
37
33
  import {
38
34
  localeDirection,
39
35
  primarySelection,
@@ -62,7 +58,11 @@ import {
62
58
  paneById2,
63
59
  focusPane2,
64
60
  isTabActive2
65
- } from "./studio-ez11dmdh.js";
61
+ } from "./studio-dgdm6vvt.js";
62
+ import {
63
+ loadExtensions2,
64
+ formatByName2
65
+ } from "./studio-9vsvz7w7.js";
66
66
  import {
67
67
  getEffectiveMedia,
68
68
  getEffectiveImports,
@@ -74,12 +74,12 @@ import {
74
74
  distributePageIntoLayout,
75
75
  shell,
76
76
  setLayoutSelection
77
- } from "./studio-mpzwze9x.js";
77
+ } from "./studio-mfkh1q8d.js";
78
78
  import {
79
79
  componentRegistry2,
80
80
  buildComponentInstance2,
81
81
  computeRelativePath2
82
- } from "./studio-zjjde71a.js";
82
+ } from "./studio-gjj4bbfx.js";
83
83
  import {
84
84
  pureSchemeOf,
85
85
  setSkipServerFunctions,
@@ -97,7 +97,7 @@ import {
97
97
  POPOVER_TAGS,
98
98
  INVOKER_TAGS,
99
99
  activeRegistry
100
- } from "./studio-p6pmwkvh.js";
100
+ } from "./studio-3nprwbd9.js";
101
101
  import {
102
102
  _defineProperty,
103
103
  combine,
@@ -109,7 +109,7 @@ import {
109
109
  canvasBaseOrigin,
110
110
  documentBase,
111
111
  assetContextFor
112
- } from "./studio-c07s5ckd.js";
112
+ } from "./studio-kwewmhhq.js";
113
113
  import {
114
114
  rectOf,
115
115
  elementAtPoint
@@ -2815,9 +2815,9 @@ function resetZoom(surface = activeCanvasSurface()) {
2815
2815
  applyTransform(surface);
2816
2816
  }
2817
2817
  function centeringOffset(surface, rect) {
2818
- const wrapRect = rectOf(surface.wrap);
2819
- const elCenterY = rect.top + rect.height / 2 - wrapRect.top;
2820
- return wrapRect.height / 2 - elCenterY;
2818
+ const viewport = rectOf(revealScroller(surface) ?? surface.wrap);
2819
+ const elCenterY = rect.top + rect.height / 2 - viewport.top;
2820
+ return viewport.height / 2 - elCenterY;
2821
2821
  }
2822
2822
  function revealScroller(surface) {
2823
2823
  return panelOfSurface(surface)?.scrollContainer ?? null;
@@ -5733,7 +5733,7 @@ function getEditBarAnchorRect2() {
5733
5733
  return null;
5734
5734
  }
5735
5735
 
5736
- export { activeCanvasSurface, tabOfPane, derivationOfPane, surfacesShowingTab, canvasModeOfTab, canvasModeOfPane, activeMediaOfPane, paneOfContainer, tabOfContainer, findDialogDefects, getPreviewNavigateHandler, documentUrlPattern, dynamicRouteParams, pagePathsDef, invalidateParamValues, loadParamValues, isComponentDoc, componentPropEntries, SPAN_FULL_RENDER, SPAN_MOUNT_CANVAS, SPAN_PATCH_BATCH, canvasPerf, recordEscalation, timeSpan, timeSpanAsync, mediaDisplayName, defaultDef, parentCursorToIframe, serializeJxPath, elements_meta_default, getInlineActions, isInlineElement, isEditing, bubbleInlinePath, isSchemeQuery, schemeOfQuery, parseMediaEntries, snapEditWidth, EDIT_WIDTH_MIN, EDIT_WIDTH_SNAP_TOLERANCE, EDIT_CANVAS_GUTTER, declaredWidthOfTab, resolveEditColumnWidth, clearEditWidth, snapTargetsOfTab, setEditWidth, ancestorPopoverPath, ancestorDialogPath, dialogPathFor, stageZoom, canvasPanelEntry, bindCanvasPanels, activateCanvasPanel, observeCenterUntilStable, applyTransform, applyEditZoom, setEditZoom, requestEditZoom, fitToScreen, getFit, setFit, markExplicitZoom, setUserZoom, fitOnCanvasEntry, resetZoom, panToParentRect, canvasBaseViewsFor, canvasBaseViewOf, previewStateOf, setCanvasView, registerCanvasViewCommands, updateActivePanelHeaders, setDragGhost, moveDragGhost, clearDragGhost, disableNativeDragPreview, attachInstruction, extractInstruction, hasElement, enableElement, disableElement, removePackageElements, removeElementRef, renderComponentPreview, registerLayersDnD, registerComponentsDnD, registerElementsDnD, applyDropInstruction, sawIframeDragOver2, allowAutoRequestsOnNextRender2, requestCanvasEval2, flushCanvasEdits2, hostForCanvas2, liveDragHostAt2, beginDragSession2, currentDragSession2, hostDragGeometry2, canvasIdleBlockers2, canvasPointAt2, revealCanvasPath2, revealCanvasPathIn2, measureInCanvas2, adoptCanvasPreviewMode2, postDragMessage2, endDragSession2, clearDropIndicator2, setNativeDragEnterHandler2, setInsertZoneClickHandler2, setFileDropHandler2, setCanvasSlashHandler2, setCanvasContextMenuHandler2, setStylebookHitHandler2, isCaretActive2, setToolbarRefresh2, setCanvasPointerDownHandler2, setIframePatchEscalation2, postPopoverOpen2, postDialogOpen2, postPatchToHosts2, dragHostTab2, releaseCanvasHosts2, mountIframeCanvas2, mountStylebookCanvas2, postColorSchemeToLiveHosts2, postLocaleToLiveHosts2, postRedefineElementToLiveHosts2, postSiteStyleToLiveHosts2, postStyleUpdateToStylebookHosts2, panToStylebookTag2, getEditSnapshot2, setKeymapSource2, postApplyFormat2, postOpenSlash2, commitActiveEditSession2, getEditBarAnchorRect2 };
5736
+ export { activeCanvasSurface, tabOfPane, derivationOfPane, surfacesShowingTab, canvasModeOfTab, canvasModeOfPane, activeMediaOfPane, paneOfContainer, tabOfContainer, findDialogDefects, getPreviewNavigateHandler, documentUrlPattern, dynamicRouteParams, pagePathsDef, invalidateParamValues, loadParamValues, isComponentDoc, componentPropEntries, SPAN_FULL_RENDER, SPAN_MOUNT_CANVAS, SPAN_PATCH_BATCH, canvasPerf, recordEscalation, timeSpan, timeSpanAsync, mediaDisplayName, defaultDef, parentCursorToIframe, serializeJxPath, elements_meta_default, getInlineActions, isInlineElement, isEditing, panelOfSurface, bubbleInlinePath, isSchemeQuery, schemeOfQuery, parseMediaEntries, snapEditWidth, EDIT_WIDTH_MIN, EDIT_WIDTH_SNAP_TOLERANCE, EDIT_CANVAS_GUTTER, declaredWidthOfTab, resolveEditColumnWidth, clearEditWidth, snapTargetsOfTab, setEditWidth, ancestorPopoverPath, ancestorDialogPath, dialogPathFor, stageZoom, canvasPanelEntry, bindCanvasPanels, activateCanvasPanel, observeCenterUntilStable, applyTransform, applyEditZoom, setEditZoom, requestEditZoom, fitToScreen, getFit, setFit, markExplicitZoom, setUserZoom, fitOnCanvasEntry, resetZoom, panToParentRect, canvasBaseViewsFor, canvasBaseViewOf, previewStateOf, setCanvasView, registerCanvasViewCommands, updateActivePanelHeaders, setDragGhost, moveDragGhost, clearDragGhost, disableNativeDragPreview, attachInstruction, extractInstruction, hasElement, enableElement, disableElement, removePackageElements, removeElementRef, renderComponentPreview, registerLayersDnD, registerComponentsDnD, registerElementsDnD, applyDropInstruction, sawIframeDragOver2, allowAutoRequestsOnNextRender2, requestCanvasEval2, flushCanvasEdits2, hostForCanvas2, liveDragHostAt2, beginDragSession2, currentDragSession2, hostDragGeometry2, canvasIdleBlockers2, canvasPointAt2, revealCanvasPath2, revealCanvasPathIn2, measureInCanvas2, adoptCanvasPreviewMode2, postDragMessage2, endDragSession2, clearDropIndicator2, setNativeDragEnterHandler2, setInsertZoneClickHandler2, setFileDropHandler2, setCanvasSlashHandler2, setCanvasContextMenuHandler2, setStylebookHitHandler2, isCaretActive2, setToolbarRefresh2, setCanvasPointerDownHandler2, setIframePatchEscalation2, postPopoverOpen2, postDialogOpen2, postPatchToHosts2, dragHostTab2, releaseCanvasHosts2, mountIframeCanvas2, mountStylebookCanvas2, postColorSchemeToLiveHosts2, postLocaleToLiveHosts2, postRedefineElementToLiveHosts2, postSiteStyleToLiveHosts2, postStyleUpdateToStylebookHosts2, panToStylebookTag2, getEditSnapshot2, setKeymapSource2, postApplyFormat2, postOpenSlash2, commitActiveEditSession2, getEditBarAnchorRect2 };
5737
5737
 
5738
- //# debugId=138206C03AA4653064756E2164756E21
5739
- //# sourceMappingURL=studio-etvx9s2g.js.map
5738
+ //# debugId=A910716DEA4764AB64756E2164756E21
5739
+ //# sourceMappingURL=studio-mrh0a92f.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ensureCaret
3
- } from "./studio-p6pmwkvh.js";
3
+ } from "./studio-3nprwbd9.js";
4
4
  import {
5
5
  registerSurface,
6
6
  mountSurface,
7
7
  getLayerSlot2,
8
8
  clearLayerSlot2
9
- } from "./studio-ympe0n7a.js";
9
+ } from "./studio-ag3z6shb.js";
10
10
  import {
11
11
  reactive
12
12
  } from "./studio-d8z5bajd.js";
@@ -419,4 +419,4 @@ function restoreFocus(opener) {
419
419
  export { openMenu2 };
420
420
 
421
421
  //# debugId=AF40C481EA74291464756E2164756E21
422
- //# sourceMappingURL=studio-qa7fzxan.js.map
422
+ //# sourceMappingURL=studio-mt79tn56.js.map
@@ -30,10 +30,7 @@ import {
30
30
  import {
31
31
  view,
32
32
  stageContaining
33
- } from "./studio-wnsyffg1.js";
34
- import {
35
- getPlatform2
36
- } from "./studio-6nzaktvy.js";
33
+ } from "./studio-6vg0x5fz.js";
37
34
  import {
38
35
  editorKindForMode,
39
36
  hasSelection,
@@ -61,26 +58,29 @@ import {
61
58
  jsonClone,
62
59
  workspace2,
63
60
  activeTab2
64
- } from "./studio-ez11dmdh.js";
61
+ } from "./studio-dgdm6vvt.js";
62
+ import {
63
+ getPlatform2
64
+ } from "./studio-6pwn9j8c.js";
65
65
  import {
66
66
  serializeJson,
67
67
  shell,
68
68
  setActivityTab
69
- } from "./studio-mpzwze9x.js";
69
+ } from "./studio-mfkh1q8d.js";
70
70
  import {
71
71
  KEY_SCOPES,
72
72
  checkRecordPlacements,
73
73
  registerPanel
74
- } from "./studio-x72j58vw.js";
74
+ } from "./studio-fqpkpq1t.js";
75
75
  import {
76
76
  componentRegistry2,
77
77
  loadComponentRegistry2,
78
78
  computeRelativePath2
79
- } from "./studio-zjjde71a.js";
79
+ } from "./studio-gjj4bbfx.js";
80
80
  import {
81
81
  focusItem,
82
82
  activeRegistry
83
- } from "./studio-p6pmwkvh.js";
83
+ } from "./studio-3nprwbd9.js";
84
84
  import {
85
85
  REGION_ATTR,
86
86
  overlayRegion,
@@ -91,13 +91,13 @@ import {
91
91
  showPromptDialog2,
92
92
  getLayerSlot2,
93
93
  clearLayerSlot2
94
- } from "./studio-ympe0n7a.js";
94
+ } from "./studio-ag3z6shb.js";
95
95
  import {
96
96
  stylebook_meta_default,
97
97
  selectStylebookTag,
98
98
  noopCommandDeps,
99
99
  defaultCommands
100
- } from "./studio-2mdbbc76.js";
100
+ } from "./studio-bh47w0cy.js";
101
101
  import {
102
102
  errorMessage2
103
103
  } from "./studio-yxa81f45.js";
@@ -106,6 +106,7 @@ import {
106
106
  elements_meta_default,
107
107
  getInlineActions,
108
108
  isInlineElement,
109
+ panelOfSurface,
109
110
  ancestorPopoverPath,
110
111
  ancestorDialogPath,
111
112
  disableNativeDragPreview,
@@ -115,7 +116,7 @@ import {
115
116
  getEditSnapshot2,
116
117
  postApplyFormat2,
117
118
  getEditBarAnchorRect2
118
- } from "./studio-etvx9s2g.js";
119
+ } from "./studio-mrh0a92f.js";
119
120
  import {
120
121
  draggable2
121
122
  } from "./studio-esrxgwh6.js";
@@ -124,19 +125,19 @@ import {
124
125
  dataTypeLabel,
125
126
  inspectorCommands,
126
127
  defCategory
127
- } from "./studio-a1pswps3.js";
128
+ } from "./studio-rav5bpmp.js";
128
129
  import {
129
130
  openMenu2
130
- } from "./studio-qa7fzxan.js";
131
+ } from "./studio-mt79tn56.js";
131
132
  import {
132
133
  usagesSupported2
133
- } from "./studio-nq5yf5mp.js";
134
+ } from "./studio-557bmn0x.js";
134
135
  import {
135
136
  listWindow,
136
137
  revealListRow,
137
138
  measuredRowHeight,
138
139
  watchListWindow
139
- } from "./studio-38emantv.js";
140
+ } from "./studio-a5h5j33a.js";
140
141
  import {
141
142
  validateComponentSlots
142
143
  } from "./studio-q0a3yk4n.js";
@@ -245,7 +246,7 @@ var panel_stylebook_layers_default = {
245
246
  whiteSpace: "nowrap"
246
247
  },
247
248
  '& [part="empty"]': {
248
- $description: "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (§11): one sentence saying what the region is for, then where its content comes from.",
249
+ $description: "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (studio-ui-guidelines.md §11): one sentence saying what the region is for, then where its content comes from.",
249
250
  display: "flex",
250
251
  flexDirection: "column",
251
252
  alignItems: "center",
@@ -11857,14 +11858,14 @@ function getConvertTargets(currentTag, isEmpty) {
11857
11858
  var block_action_bar_default = {
11858
11859
  $schema: "https://jxsuite.com/schema/v1",
11859
11860
  $id: "StudioBlockActionBar",
11860
- $description: "The floating action bar over the canvas selection (plan §3.2 region ⑩, studio-ui-guidelines.md §8.6), as a Jx document over the kit. ONE SHAPE is the whole rule this markup exists to keep: the parent selector, the element badge, the drag handle and every verb are drawn on every selection, and a control that cannot act is DISABLED rather than removed — a toolbar whose buttons move under the cursor is worse than one with a greyed button. Nothing here decides what a verb is called, whether it can act or what its chord reads: `panels/block-action-bar.ts` projects the command registry into `verbs` and `formats`, already resolved to a glyph, a name, a tooltip and a refusal, and this document draws them. The toolbar role, the roving caret and the arrow keys are `jx-action-group`'s, so no keyboard code rides along; Escape is the one key this document claims, because leaving the bar means going back to the canvas and only the host knows where that is. The drag handle is an ISLAND (§9.4): the document draws the node and `surfaces/block-action-bar.ts` attaches the pragmatic-dnd registration to it through `onNodeCreated`. Position is a DECISION measured against the selection rect, so it arrives as two numbers the flow projects — `barX` and `barY` — rather than as a layout this document could compute; the `style` object below binds them, because a style declaration may read state like any other value (spec §9.1).",
11861
+ $description: "The floating action bar over the canvas selection (studio.md §4.4, studio-ui-guidelines.md §8.6), as a Jx document over the kit. ONE SHAPE is the whole rule this markup exists to keep: the parent selector, the element badge, the drag handle and every verb are drawn on every selection, and a control that cannot act is DISABLED rather than removed — a toolbar whose buttons move under the cursor is worse than one with a greyed button. Nothing here decides what a verb is called, whether it can act or what its chord reads: `panels/block-action-bar.ts` projects the command registry into `verbs` and `formats`, already resolved to a glyph, a name, a tooltip and a refusal, and this document draws them. The toolbar role, the roving caret and the arrow keys are `jx-action-group`'s, so no keyboard code rides along; Escape is the one key this document claims, because leaving the bar means going back to the canvas and only the host knows where that is. The drag handle is an ISLAND (studio-ui-guidelines.md §9.4): the document draws the node and `surfaces/block-action-bar.ts` attaches the pragmatic-dnd registration to it through `onNodeCreated`. Position is a DECISION measured against the selection rect, so it arrives as two numbers the flow projects — `barX` and `barY` — rather than as a layout this document could compute; the `style` object below binds them, because a style declaration may read state like any other value (spec.md §9.1).",
11861
11862
  tagName: "div",
11862
11863
  attributes: {
11863
11864
  part: "root",
11864
11865
  role: "none"
11865
11866
  },
11866
11867
  style: {
11867
- $description: "The `.block-action-bar` rules that used to live in `styles/canvas.css`, re-valued onto the kit's tokens. The bar is `position: fixed` because its anchor is a rect in viewport space that crossed the iframe bridge; the layer it sits in has no clipping, which is why the host clamps it rather than letting overflow do it.\n\nThe two placement properties are declared HERE, bound to the flow's measured numbers. They used to travel as a `style` ATTRIBUTE the flow assembled into one string, on the belief that a document cannot bind a style declaration to state. It can, and always could: a reactive value on a custom property in a rule targeting the element itself is written inline under the author's own name (spec §9.1), which is precisely the attribute that string was hand-writing. The bar reads them by name through the ordinary cascade — the root is `display: contents`, so a custom property set on it inherits down — and `panels/block-action-bar.ts` overrides `--jx-bar-x` on the bar itself when it clamps, because a value set on an element beats one it inherits — which is also why that clamp releases its own previous write before it measures, or the bar would be pinned at the right edge for the rest of the session.",
11868
+ $description: "The `.block-action-bar` rules that used to live in `styles/canvas.css`, re-valued onto the kit's tokens. The bar is `position: fixed` because its anchor is a rect in viewport space that crossed the iframe bridge; the layer it sits in has no clipping, which is why the host clamps it rather than letting overflow do it.\n\nThe two placement properties are declared HERE, bound to the flow's measured numbers. They used to travel as a `style` ATTRIBUTE the flow assembled into one string, on the belief that a document cannot bind a style declaration to state. It can, and always could: a reactive value on a custom property in a rule targeting the element itself is written inline under the author's own name (spec.md §9.1), which is precisely the attribute that string was hand-writing. The bar reads them by name through the ordinary cascade — the root is `display: contents`, so a custom property set on it inherits down — and `panels/block-action-bar.ts` overrides `--jx-bar-x` on the bar itself when it clamps, because a value set on an element beats one it inherits — which is also why that clamp releases its own previous write before it measures, or the bar would be pinned at the right edge for the rest of the session.",
11868
11869
  display: "contents",
11869
11870
  "--jx-bar-x": "${state.barX}px",
11870
11871
  "--jx-bar-y": "${state.barY}px",
@@ -11895,7 +11896,7 @@ var block_action_bar_default = {
11895
11896
  gap: "2px"
11896
11897
  },
11897
11898
  '& [part="tag"] > [part="control"]': {
11898
- $description: "The element badge. It is a button on every selection and disabled where the tag cannot be changed — a component instance, a repeater — which is §8.6's rule applied to the one control that used to change shape.",
11899
+ $description: "The element badge. It is a button on every selection and disabled where the tag cannot be changed — a component instance, a repeater — which is studio-ui-guidelines.md §8.6's rule applied to the one control that used to change shape.",
11899
11900
  minWidth: "0",
11900
11901
  minHeight: "0",
11901
11902
  maxWidth: "140px",
@@ -11940,7 +11941,7 @@ var block_action_bar_default = {
11940
11941
  }
11941
11942
  },
11942
11943
  '& [part="drag-handle"][aria-disabled="true"]': {
11943
- $description: "ONE shape (§8.6): the handle is greyed on the document root, never removed — a toolbar whose controls move under the cursor is worse than one with a dead affordance.",
11944
+ $description: "ONE shape (studio-ui-guidelines.md §8.6): the handle is greyed on the document root, never removed — a toolbar whose controls move under the cursor is worse than one with a dead affordance.",
11944
11945
  cursor: "default",
11945
11946
  opacity: "0.3"
11946
11947
  },
@@ -12713,17 +12714,23 @@ function repositionBlockActionBar() {
12713
12714
  }
12714
12715
  });
12715
12716
  }
12717
+ var BAR_CLEARANCE = 38;
12716
12718
  function barPosition(anchor) {
12717
- const stage = activeCanvasSurface().wrap;
12718
- if (stage) {
12719
- const wrap = rectOf(stage);
12720
- if (anchor.top + anchor.height < wrap.top || anchor.top > wrap.bottom) {
12721
- return null;
12722
- }
12719
+ const surface = activeCanvasSurface();
12720
+ const viewport = panelOfSurface(surface)?.scrollContainer ?? surface.wrap;
12721
+ const box = viewport ? rectOf(viewport) : null;
12722
+ if (box && (anchor.top + anchor.height < box.top || anchor.top > box.bottom)) {
12723
+ return null;
12724
+ }
12725
+ const ceiling = box ? box.top : 80 - BAR_CLEARANCE;
12726
+ const above = anchor.top - BAR_CLEARANCE;
12727
+ if (above >= ceiling) {
12728
+ return { left: anchor.left, top: above };
12723
12729
  }
12730
+ const below = anchor.top + anchor.height + 4;
12724
12731
  return {
12725
12732
  left: anchor.left,
12726
- top: anchor.top < 80 ? anchor.top + anchor.height + 4 : anchor.top - 38
12733
+ top: box ? Math.max(box.top, Math.min(below, box.bottom - BAR_CLEARANCE)) : below
12727
12734
  };
12728
12735
  }
12729
12736
  function clampBarToWindow(bar) {
@@ -13738,7 +13745,7 @@ function elementCommands(deps) {
13738
13745
  if (!target?.rerender) {
13739
13746
  return;
13740
13747
  }
13741
- const { startLayerTitleEdit } = await (__preload("fksbdg4q"), import("./layers-panel-fksbdg4q.js"));
13748
+ const { startLayerTitleEdit } = await (__preload("83a16ytx"), import("./layers-panel-83a16ytx.js"));
13742
13749
  startLayerTitleEdit(target.path, target.rerender);
13743
13750
  }
13744
13751
  }
@@ -14723,7 +14730,7 @@ var panel_outline_default = {
14723
14730
  ]
14724
14731
  },
14725
14732
  empty: {
14726
- $description: "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (guidelines §11): one sentence saying what the region is for, then the one action that fills it.",
14733
+ $description: "Drawn here rather than borrowed from `panels/empty-state.ts`, which is a lit template a document cannot call. What is kept is the pattern's rules (studio-ui-guidelines.md §11): one sentence saying what the region is for, then the one action that fills it.",
14727
14734
  tagName: "div",
14728
14735
  attributes: {
14729
14736
  part: "empty"
@@ -15527,5 +15534,5 @@ function registerLayersPanel2() {
15527
15534
 
15528
15535
  export { findEnclosingRepeater, convertToComponent, showSlashMenu, showSlashMenuAtRect, dismissSlashMenu, handleSlashMenuKey, parseChord, normalizeChord, chordFromEvent, formatChord, overlappingScopes, chordsInScopes, createCommandRegistry, initBlockActionBar, formatCommands, registerSelectionCommands, dismissLinkPopover, dismissBlockActionBar, suppressBlockActionBar, releaseBlockActionBar, isEditChromeTarget, renderBlockActionBar, ok, find, html2, svg, stringify, stringify2, stringifyPosition, VFile, whitespace, setOpenDialog, setOpenPopover, ensurePopoverRevealWatch, startLayerTitleEdit2, registerLayersPanel2, pasteNode, clipboardCommands, setContextMenuNavigate, liveElementCommands, dismissContextMenu, showContextMenu };
15529
15536
 
15530
- //# debugId=7893C37B2DF2B56864756E2164756E21
15531
- //# sourceMappingURL=studio-hhskq2mr.js.map
15537
+ //# debugId=8CEAD773C5C8735E64756E2164756E21
15538
+ //# sourceMappingURL=studio-ne593z1j.js.map