@jxsuite/studio 5.3.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 (389) hide show
  1. package/data/css-meta.json +28 -27
  2. package/dist/chunks/{cf-account-picker-nwnwdm6p.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-4rzvmp0m.js → content-source-jt7rbcbc.js} +22 -22
  6. package/dist/chunks/{convert-to-repeater-jxsv62v7.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-2mrptyek.js → extension-sections-r73an5s6.js} +30 -29
  10. package/dist/chunks/{file-ops-knfqshrm.js → file-ops-3xan8mnj.js} +21 -21
  11. package/dist/chunks/{files-y6fr4he9.js → files-egsb0ry8.js} +28 -28
  12. package/dist/chunks/{format-host-1k4qrcqd.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-2rkrsjva.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-a7b87n2c.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-scpw01h8.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/layers-panel-83a16ytx.js +41 -0
  25. package/dist/chunks/{layers-jnvdbqva.js → layers-s6mc01ry.js} +3 -3
  26. package/dist/chunks/{media-picker-f66nav16.js → media-picker-nhn6rv4w.js} +11 -11
  27. package/dist/chunks/{menu-1dfhry4s.js → menu-8j4qxjrp.js} +4 -4
  28. package/dist/chunks/{monaco-binding-sw6en4dw.js → monaco-binding-e8d9wzyk.js} +3 -3
  29. package/dist/chunks/{monaco-buffer-pykwbm92.js → monaco-buffer-jaq1t9zj.js} +2 -2
  30. package/dist/chunks/{monaco-setup-8vbyqnhr.css → monaco-setup-ey9cjcm3.css} +954 -137
  31. package/dist/chunks/{monaco-setup-km6abc6q.js → monaco-setup-gsjdysze.js} +6 -6
  32. package/dist/chunks/{platform-ts9cg1a4.js → platform-fnchmhy7.js} +5 -3
  33. package/dist/chunks/publish-panel-ak6hxfma.js +27 -0
  34. package/dist/chunks/quick-search-c63mkt3b.js +47 -0
  35. package/dist/chunks/{references-h69xp9zz.js → references-f7bdv3z5.js} +3 -3
  36. package/dist/chunks/right-panel-t5n8wttg.js +45 -0
  37. package/dist/chunks/{studio-ze46gzjh.js → studio-01269reb.js} +7 -7
  38. package/dist/chunks/{studio-rnyf3f8e.js → studio-0a4gncx0.js} +3 -3
  39. package/dist/chunks/{studio-e1f24eff.js → studio-0d4p4wxj.js} +6778 -2993
  40. package/dist/chunks/{studio-4wbb9ct0.js → studio-1tejxvba.js} +3006 -1855
  41. package/dist/chunks/{studio-d1n2bykn.js → studio-3nprwbd9.js} +117 -25
  42. package/dist/chunks/{studio-4c041r8y.js → studio-40z39dme.js} +3 -3
  43. package/dist/chunks/{studio-151w0xnh.js → studio-482eeazk.js} +20 -20
  44. package/dist/chunks/{studio-cgprcdxn.js → studio-4998spet.js} +10 -9
  45. package/dist/chunks/{studio-nq5yf5mp.js → studio-557bmn0x.js} +2 -2
  46. package/dist/chunks/{studio-rtskkm43.js → studio-5w26wza5.js} +3 -3
  47. package/dist/chunks/{studio-6nzaktvy.js → studio-6pwn9j8c.js} +6 -3
  48. package/dist/chunks/{studio-wnsyffg1.js → studio-6vg0x5fz.js} +3 -2
  49. package/dist/chunks/{studio-vn5hske5.js → studio-7d3c1m59.js} +12 -5
  50. package/dist/chunks/{studio-6gryj0sg.js → studio-9vsvz7w7.js} +6 -6
  51. package/dist/chunks/{studio-50wfwy44.js → studio-9wm0xzpf.js} +19 -19
  52. package/dist/chunks/{studio-0j7r7s9g.js → studio-ag3z6shb.js} +10 -4
  53. package/dist/chunks/studio-aj9drheq.js +177 -0
  54. package/dist/chunks/{studio-xajk70w0.js → studio-apv9x70c.js} +189 -130
  55. package/dist/chunks/{studio-c04nzbby.js → studio-b9q3znz8.js} +2 -2
  56. package/dist/chunks/{studio-nfx354t1.js → studio-bh47w0cy.js} +9 -10
  57. package/dist/chunks/{studio-gk2twyh4.js → studio-dgdm6vvt.js} +264 -52
  58. package/dist/chunks/{studio-gtfq1dkz.js → studio-dwdcr2e8.js} +4 -4
  59. package/dist/chunks/{studio-nqgawfks.js → studio-fbcyz234.js} +146 -139
  60. package/dist/chunks/{studio-27q131j3.js → studio-fqpkpq1t.js} +7 -4
  61. package/dist/chunks/{studio-c0qgc3tn.js → studio-fy320dfc.js} +62 -68
  62. package/dist/chunks/{studio-zjjde71a.js → studio-gjj4bbfx.js} +2 -2
  63. package/dist/chunks/{studio-g33v4fe9.js → studio-jfhxy8h3.js} +7 -7
  64. package/dist/chunks/{studio-ab87phj1.js → studio-kwewmhhq.js} +4 -4
  65. package/dist/chunks/{studio-7rrb1esn.js → studio-m58xn8at.js} +25 -24
  66. package/dist/chunks/{studio-fzjx96t2.js → studio-mfkh1q8d.js} +17 -17
  67. package/dist/chunks/{studio-drg8qj9k.js → studio-mrh0a92f.js} +17 -17
  68. package/dist/chunks/{studio-jt27ta6x.js → studio-mt79tn56.js} +3 -3
  69. package/dist/chunks/{studio-b66rsh78.js → studio-ne593z1j.js} +38 -31
  70. package/dist/chunks/{studio-h4nvnjvz.js → studio-ptfcxkz5.js} +418 -232
  71. package/dist/chunks/{studio-dd1qqkry.js → studio-qxye31h7.js} +7 -7
  72. package/dist/chunks/{studio-ye9drbk8.js → studio-rav5bpmp.js} +73 -52
  73. package/dist/chunks/{studio-6kvgrkrp.js → studio-rwmmbrth.js} +6 -6
  74. package/dist/chunks/{studio-b7xacrwe.js → studio-sceg8ws0.js} +8 -8
  75. package/dist/chunks/{studio-msc1ee1m.js → studio-sjas5b3a.js} +19 -13
  76. package/dist/chunks/{studio-a65w20ex.js → studio-vd67b66d.js} +3 -3
  77. package/dist/chunks/{studio-7144epdr.js → studio-w475cbf9.js} +10 -10
  78. package/dist/chunks/{studio-4f3psrk1.js → studio-w7gpcvfj.js} +9 -9
  79. package/dist/chunks/{studio-nsgw7dbk.js → studio-xrbfdxgk.js} +7 -7
  80. package/dist/chunks/{studio-ke09tn9k.js → studio-y49b6mjv.js} +35 -35
  81. package/dist/chunks/{studio-j0w60gft.js → studio-ygvr9e4q.js} +10 -10
  82. package/dist/chunks/{studio-z2smx5ce.js → studio-yxmmjy2a.js} +9 -6
  83. package/dist/chunks/{tsMode-jy4m86rv.js → tsMode-ay4c78ne.js} +4 -4
  84. package/dist/chunks/{tsMode-hnxxb73h.css → tsMode-c72wyz27.css} +954 -137
  85. package/dist/chunks/{workspace-np10mayv.js → workspace-b9k2frks.js} +5 -5
  86. package/dist/chunks/{ws-client-ny4zc51r.js → ws-client-erze4czt.js} +356 -20
  87. package/dist/codicon.ttf +0 -0
  88. package/dist/iframe-entry.js +18 -16
  89. package/dist/studio.css +956 -139
  90. package/dist/studio.js +1453 -830
  91. package/dist/workers/editor.worker.js +196 -107
  92. package/dist/workers/json.worker.js +196 -107
  93. package/dist/workers/ts.worker.js +196 -107
  94. package/package.json +15 -14
  95. package/src/about/about-modal.ts +4 -3
  96. package/src/browse/library-commands.ts +15 -13
  97. package/src/browse/library-pane.ts +2 -2
  98. package/src/canvas/canvas-render.ts +97 -83
  99. package/src/canvas/canvas-surface.ts +2 -2
  100. package/src/canvas/canvas-utils.ts +42 -32
  101. package/src/canvas/diff-toolbar.ts +21 -2
  102. package/src/canvas/diff-view.ts +30 -6
  103. package/src/canvas/iframe-entry.ts +2 -2
  104. package/src/canvas/iframe-host.ts +5 -5
  105. package/src/canvas/iframe-interaction.ts +7 -6
  106. package/src/canvas/iframe-overlay.ts +1 -1
  107. package/src/canvas/iframe-protocol.ts +6 -5
  108. package/src/canvas/iframe-render.ts +3 -3
  109. package/src/canvas/popover-state.ts +1 -1
  110. package/src/canvas/stage-scrollbar.ts +112 -0
  111. package/src/canvas/surface-registry.ts +9 -2
  112. package/src/collab/collab-commands.ts +8 -6
  113. package/src/collab/collab-session.ts +4 -4
  114. package/src/collab/collab-state.ts +4 -4
  115. package/src/collab/presence-chips.ts +3 -3
  116. package/src/commands/app-commands.ts +7 -7
  117. package/src/commands/budget.ts +17 -16
  118. package/src/commands/command-args.ts +10 -9
  119. package/src/commands/context.ts +20 -10
  120. package/src/commands/defaults.ts +30 -29
  121. package/src/commands/levels.ts +8 -6
  122. package/src/commands/live-context.ts +12 -10
  123. package/src/commands/reference.ts +5 -5
  124. package/src/commands/registry.ts +2 -2
  125. package/src/content/draft-state.ts +9 -8
  126. package/src/content/entry-commands.ts +16 -14
  127. package/src/content/entry-editor.ts +2 -2
  128. package/src/content/entry-fields.ts +1 -1
  129. package/src/editor/context-menu.ts +4 -4
  130. package/src/editor/convert-to-component.ts +6 -5
  131. package/src/editor/inline-edit.ts +3 -3
  132. package/src/editor/shortcuts.ts +88 -20
  133. package/src/editor/slash-menu.ts +11 -10
  134. package/src/files/elements.ts +4 -5
  135. package/src/files/file-ops.ts +1 -1
  136. package/src/files/files.ts +21 -17
  137. package/src/files/serialize-document.ts +1 -1
  138. package/src/format/convert-file.ts +5 -5
  139. package/src/github/github-auth-status.ts +107 -0
  140. package/src/github/github-auth.ts +18 -82
  141. package/src/github/github-publish.ts +7 -6
  142. package/src/grid/cell-editors.ts +8 -7
  143. package/src/grid/grid-layout.ts +1 -1
  144. package/src/grid/grid-open.ts +6 -5
  145. package/src/grid/grid-panel.ts +13 -12
  146. package/src/grid/redirects-grid.ts +14 -11
  147. package/src/grid/redirects.ts +10 -5
  148. package/src/grid/sources/content-source.ts +10 -9
  149. package/src/hosting/document.ts +28 -1
  150. package/src/hosting/stage.ts +15 -4
  151. package/src/i18n/i18n-commands.ts +9 -7
  152. package/src/new-project/location-fields.ts +16 -3
  153. package/src/new-project/new-project-modal.ts +23 -7
  154. package/src/page-params.ts +6 -6
  155. package/src/panels/activity-panel.ts +11 -10
  156. package/src/panels/ai-chat/chat-view.ts +27 -14
  157. package/src/panels/ai-chat/composer.ts +10 -3
  158. package/src/panels/ai-panel.ts +87 -29
  159. package/src/panels/block-action-bar.ts +59 -33
  160. package/src/panels/bottom-dock.ts +22 -22
  161. package/src/panels/data-explorer.ts +9 -9
  162. package/src/panels/data-grid.ts +1 -1
  163. package/src/panels/editors.ts +8 -8
  164. package/src/panels/elements-panel.ts +7 -8
  165. package/src/panels/empty-state.ts +1 -1
  166. package/src/panels/events-panel.ts +13 -12
  167. package/src/panels/formula-workspace.ts +8 -5
  168. package/src/panels/frontmatter-fields.ts +4 -1
  169. package/src/panels/frontmatter-panel.ts +18 -18
  170. package/src/panels/git-panel.ts +19 -13
  171. package/src/panels/head-panel.ts +9 -10
  172. package/src/panels/i18n-panel.ts +6 -4
  173. package/src/panels/imports-panel.ts +1 -1
  174. package/src/panels/jump-bar.ts +20 -18
  175. package/src/panels/layers-panel.ts +19 -17
  176. package/src/panels/left-panel.ts +3 -3
  177. package/src/panels/navigator-panels.ts +8 -8
  178. package/src/panels/overlays.ts +1 -1
  179. package/src/panels/pane-context.ts +56 -28
  180. package/src/panels/pane-grid.ts +9 -8
  181. package/src/panels/panel-registry.ts +47 -19
  182. package/src/panels/problems-panel.ts +11 -12
  183. package/src/panels/properties-panel.ts +21 -20
  184. package/src/panels/provenance.ts +3 -3
  185. package/src/panels/quick-search.ts +15 -11
  186. package/src/panels/right-panel.ts +4 -3
  187. package/src/panels/seo-modal.ts +5 -4
  188. package/src/panels/settings-menu.ts +9 -9
  189. package/src/panels/settings-pane.ts +3 -3
  190. package/src/panels/signals-panel.ts +16 -9
  191. package/src/panels/statement-editor.ts +12 -9
  192. package/src/panels/style-panel.ts +45 -41
  193. package/src/panels/stylebook-panel.ts +0 -1
  194. package/src/panels/tab-strip.ts +26 -23
  195. package/src/platform-errors.ts +2 -2
  196. package/src/platform.ts +44 -4
  197. package/src/platforms/cloud.ts +11 -1
  198. package/src/platforms/default-platform.ts +141 -4
  199. package/src/platforms/devserver.ts +23 -3
  200. package/src/publish/deploy-checklist.ts +11 -10
  201. package/src/publish/publish-commands.ts +9 -8
  202. package/src/services/a11y-report.ts +1 -1
  203. package/src/services/ai-ask.ts +39 -16
  204. package/src/services/ai-command-tools.ts +28 -14
  205. package/src/services/ai-import-tools.ts +43 -29
  206. package/src/services/ai-project-tools.ts +20 -38
  207. package/src/services/ai-settings.ts +55 -2
  208. package/src/services/ai-tools.ts +69 -58
  209. package/src/services/ai-write-report.ts +4 -4
  210. package/src/services/ai-writes.ts +74 -55
  211. package/src/services/automation.ts +12 -12
  212. package/src/services/clock.ts +2 -1
  213. package/src/services/connection.ts +2 -2
  214. package/src/services/context-manager.ts +69 -6
  215. package/src/services/directory-picker.ts +93 -27
  216. package/src/services/document-assistant.ts +86 -17
  217. package/src/services/gated-registry.ts +4 -3
  218. package/src/services/idle.ts +5 -4
  219. package/src/services/live-surfaces.ts +2 -1
  220. package/src/services/notify.ts +9 -7
  221. package/src/services/popover-report.ts +3 -3
  222. package/src/services/preview-eval.ts +1 -1
  223. package/src/services/project-adoption.ts +34 -1
  224. package/src/services/project-path.ts +53 -0
  225. package/src/services/settings/kernel.ts +13 -2
  226. package/src/services/tool-executor.ts +135 -30
  227. package/src/services/tool-outcomes.ts +143 -0
  228. package/src/settings/contexts-section.ts +8 -8
  229. package/src/settings/contributed-section.ts +6 -6
  230. package/src/settings/css-vars-editor.ts +6 -5
  231. package/src/settings/extension-commands.ts +19 -18
  232. package/src/settings/extension-sections.ts +7 -7
  233. package/src/settings/extensions-section.ts +3 -3
  234. package/src/settings/general-settings.ts +21 -18
  235. package/src/settings/preferences-accounts.ts +3 -3
  236. package/src/settings/preferences-dialog.ts +9 -8
  237. package/src/settings/preferences-sections.ts +1 -1
  238. package/src/settings/project-sections.ts +2 -2
  239. package/src/settings/section-registry.ts +7 -6
  240. package/src/settings/settings-document.ts +41 -43
  241. package/src/shell/tree.ts +29 -0
  242. package/src/shell.ts +63 -55
  243. package/src/site-context.ts +1 -1
  244. package/src/store.ts +2 -2
  245. package/src/studio.ts +46 -28
  246. package/src/style/live-preview.ts +8 -8
  247. package/src/style/project-styles.ts +8 -9
  248. package/src/style/token-ref.ts +2 -2
  249. package/src/surfaces/about.json +6 -2
  250. package/src/surfaces/add-repo.json +2 -2
  251. package/src/surfaces/add-repo.ts +2 -2
  252. package/src/surfaces/ai-chat.json +14 -6
  253. package/src/surfaces/ai-chat.ts +4 -2
  254. package/src/surfaces/ai-credentials-form.json +53 -49
  255. package/src/surfaces/ai-credentials-form.ts +18 -4
  256. package/src/surfaces/ai-managed-connect.json +4 -4
  257. package/src/surfaces/block-action-bar.json +4 -4
  258. package/src/surfaces/block-action-bar.ts +3 -3
  259. package/src/surfaces/boot-failure.json +228 -0
  260. package/src/surfaces/boot-failure.ts +156 -0
  261. package/src/surfaces/bottom-dock.json +1 -1
  262. package/src/surfaces/canvas-stage.json +9 -40
  263. package/src/surfaces/canvas-stage.ts +9 -9
  264. package/src/surfaces/cf-account-picker.json +11 -8
  265. package/src/surfaces/commandbar.ts +11 -10
  266. package/src/surfaces/convert-repeater.ts +3 -2
  267. package/src/surfaces/dialog.json +7 -1
  268. package/src/surfaces/dialog.ts +2 -2
  269. package/src/surfaces/doc-header.json +6 -13
  270. package/src/surfaces/doc-header.ts +4 -5
  271. package/src/surfaces/entry-editor.json +1 -1
  272. package/src/surfaces/entry-editor.ts +2 -1
  273. package/src/surfaces/expression-editor.json +5 -5
  274. package/src/surfaces/files-panel.json +4 -3
  275. package/src/surfaces/files-panel.ts +1 -1
  276. package/src/surfaces/formula-palette.json +2 -2
  277. package/src/surfaces/formula-palette.ts +1 -1
  278. package/src/surfaces/git-panel.json +167 -109
  279. package/src/surfaces/git-panel.ts +2 -2
  280. package/src/surfaces/github-auth.json +2 -1
  281. package/src/surfaces/github-publish.ts +3 -3
  282. package/src/surfaces/grid-open.json +1 -1
  283. package/src/surfaces/grid-panel.json +2 -2
  284. package/src/surfaces/grid-views.json +1 -1
  285. package/src/surfaces/inspector-dock.json +2 -2
  286. package/src/surfaces/jump-bar.json +1 -1
  287. package/src/surfaces/jump-bar.ts +1 -1
  288. package/src/surfaces/library-pane.ts +2 -1
  289. package/src/surfaces/logic-panel.json +7 -7
  290. package/src/surfaces/logic-panel.ts +6 -4
  291. package/src/surfaces/logic-workspace.json +2 -2
  292. package/src/surfaces/logic-workspace.ts +2 -2
  293. package/src/surfaces/media-browser.ts +3 -3
  294. package/src/surfaces/media-pane.ts +2 -1
  295. package/src/surfaces/menu.ts +5 -5
  296. package/src/surfaces/new-project.json +1 -1
  297. package/src/surfaces/pane-context.json +86 -57
  298. package/src/surfaces/pane-context.ts +2 -1
  299. package/src/surfaces/pane-grid.json +3 -3
  300. package/src/surfaces/panel-activity.json +2 -1
  301. package/src/surfaces/panel-deploy-checklist.json +1 -1
  302. package/src/surfaces/panel-elements.ts +2 -1
  303. package/src/surfaces/panel-i18n.ts +2 -1
  304. package/src/surfaces/panel-outline.json +1 -1
  305. package/src/surfaces/panel-outline.ts +4 -3
  306. package/src/surfaces/panel-page.json +2 -2
  307. package/src/surfaces/panel-page.ts +4 -1
  308. package/src/surfaces/panel-problems.json +4 -3
  309. package/src/surfaces/panel-problems.ts +2 -2
  310. package/src/surfaces/panel-signals.json +23 -8
  311. package/src/surfaces/panel-signals.ts +5 -1
  312. package/src/surfaces/panel-stylebook-layers.json +1 -1
  313. package/src/surfaces/panel-stylebook-layers.ts +2 -2
  314. package/src/surfaces/preferences.json +21 -8
  315. package/src/surfaces/preferences.ts +9 -1
  316. package/src/surfaces/properties-panel.json +4 -4
  317. package/src/surfaces/properties-panel.ts +2 -2
  318. package/src/surfaces/publish.json +1 -1
  319. package/src/surfaces/publish.ts +2 -1
  320. package/src/surfaces/push-plan.json +4 -3
  321. package/src/surfaces/rail.json +2 -2
  322. package/src/surfaces/rail.ts +10 -4
  323. package/src/surfaces/reference-field.json +1 -1
  324. package/src/surfaces/schema-form.json +2 -2
  325. package/src/surfaces/schema-form.ts +1 -1
  326. package/src/surfaces/seo.json +1 -1
  327. package/src/surfaces/seo.ts +2 -2
  328. package/src/surfaces/settings-contributed.ts +2 -1
  329. package/src/surfaces/settings-css-vars.json +4 -4
  330. package/src/surfaces/settings-deploy.json +4 -4
  331. package/src/surfaces/settings-deploy.ts +2 -1
  332. package/src/surfaces/settings-extensions.json +6 -6
  333. package/src/surfaces/settings-extensions.ts +6 -2
  334. package/src/surfaces/settings-locales.json +4 -4
  335. package/src/surfaces/settings-overview.ts +2 -1
  336. package/src/surfaces/settings-pane.ts +3 -2
  337. package/src/surfaces/settings-rawjson.ts +1 -1
  338. package/src/surfaces/slash-menu.ts +4 -4
  339. package/src/surfaces/statements.json +3 -3
  340. package/src/surfaces/statusbar.ts +23 -23
  341. package/src/surfaces/style-panel.json +9 -5
  342. package/src/surfaces/style-panel.ts +3 -3
  343. package/src/surfaces/tab-strip.json +2 -2
  344. package/src/surfaces/target-line.json +1 -1
  345. package/src/surfaces/target-line.ts +12 -10
  346. package/src/surfaces/welcome.json +7 -2
  347. package/src/tabs/doc-op-apply.ts +5 -5
  348. package/src/tabs/patch-ops.ts +3 -3
  349. package/src/tabs/project-config.ts +10 -10
  350. package/src/tabs/selection.ts +1 -1
  351. package/src/tabs/tab.ts +13 -14
  352. package/src/tabs/transact.ts +18 -24
  353. package/src/types.ts +27 -3
  354. package/src/ui/ai-credentials-form.ts +74 -16
  355. package/src/ui/ai-managed-connect.ts +68 -19
  356. package/src/ui/color-selector.ts +1 -1
  357. package/src/ui/expression-editor.ts +3 -3
  358. package/src/ui/form-controls.ts +6 -5
  359. package/src/ui/formula-catalog.ts +4 -4
  360. package/src/ui/formula-chips.ts +2 -2
  361. package/src/ui/layers.ts +20 -18
  362. package/src/ui/panel-resize.ts +5 -5
  363. package/src/ui/popover-surface.ts +2 -2
  364. package/src/ui/progress-modal.ts +3 -3
  365. package/src/ui/regions.ts +14 -9
  366. package/src/ui/schema-form.ts +10 -9
  367. package/src/ui/timing.ts +9 -7
  368. package/src/ui/value-source.ts +4 -4
  369. package/src/ui/virtual-window.ts +1 -1
  370. package/src/utils/base64.ts +20 -1
  371. package/src/utils/canvas-media.ts +1 -1
  372. package/src/utils/studio-utils.ts +0 -31
  373. package/src/view.ts +4 -3
  374. package/src/workspace/pane-derive.ts +14 -13
  375. package/src/workspace/session.ts +7 -6
  376. package/src/workspace/workspace.ts +49 -39
  377. package/styles/canvas.css +1 -27
  378. package/styles/inspector.css +4 -3
  379. package/styles/overlays.css +1 -1
  380. package/styles/tokens.css +17 -1
  381. package/styles/tokens.json +6 -1
  382. package/dist/chunks/entry-commands-1wnsqn5d.js +0 -42
  383. package/dist/chunks/layers-panel-73gfkcga.js +0 -41
  384. package/dist/chunks/publish-panel-z1zd2da1.js +0 -27
  385. package/dist/chunks/quick-search-zdv7h8ht.js +0 -47
  386. package/dist/chunks/right-panel-889vbnm5.js +0 -45
  387. package/dist/chunks/studio-727xh0e3.js +0 -76
  388. package/src/files/json-layout.ts +0 -474
  389. package/src/services/ai-turn-signal.ts +0 -70
@@ -76,7 +76,7 @@
76
76
  text-decoration: underline;
77
77
  }
78
78
 
79
- /* ─── Provenance dots on a section heading (plan §6.2) ────────────────────────
79
+ /* ─── Provenance dots on a section heading (§6.7) ─────────────────────────────
80
80
  The chip itself is styled with the rest of the row vocabulary further down —
81
81
  one block, because Style and Component Props are the same chip in two
82
82
  cascades. What is only needed here is the DOT form: a collapsed accordion
@@ -93,7 +93,7 @@
93
93
  border: none;
94
94
  cursor: default;
95
95
  }
96
- /* `mixed` (§6.5) — the multi-selection's own state. Neutral on purpose: unlike the other three it
96
+ /* `mixed` (§6.7) — the multi-selection's own state. Neutral on purpose: unlike the other three it
97
97
  says nothing about WHERE the value came from, only that the selected elements disagree, so it
98
98
  must not borrow the accent that means "set here" or the amber that means "inherited". */
99
99
  .set-dot.provenance-chip--mixed {
@@ -146,7 +146,8 @@
146
146
  }
147
147
 
148
148
  /* ─── The Layout-element card ───────────────────────────────────────────────
149
- What the inspector says when you click page chrome — §8.2's first click. */
149
+ What the inspector says when you click page chrome — the first click a new author makes
150
+ (docs/studio/design/properties.md, "Layout elements"). */
150
151
  .layout-origin {
151
152
  display: flex;
152
153
  align-items: center;
@@ -232,7 +232,7 @@
232
232
  color: var(--danger);
233
233
  }
234
234
 
235
- /* ─── ④ The toast host — the fourth overlay layer ─────────────────────────── */
235
+ /* ─── The toast host — the fourth overlay layer ───────────────────────────── */
236
236
  /* The consequence line inside a destructive confirmation — what this delete or rename breaks, and
237
237
  what survives it. Set apart from the question above it, because the question is a sentence the
238
238
  user already wrote in their head and this is the part they have not thought about. */
package/styles/tokens.css CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
  The four --canvas-* steps are the exception and are meant to be: they colour surfaces that
14
14
  render as a light DOCUMENT in both chromes, so they are mixed from the black and white keywords
15
- and do not follow the theme. See tokens.json for what else moved here out of styles/spectrum.css. */
15
+ and do not follow the theme. See tokens.json for what else moved here out of styles/spectrum.css.
16
+
17
+ user-select: none on :root is Studio's selection policy: the chrome is not text. Every surface
18
+ inherits it, a modal dialog restates it below, and a part whose text the reader must copy opts
19
+ back in from its own surface document, against the list tests/selection-policy.test.ts holds. */
16
20
 
17
21
  :root {
18
22
  box-sizing: border-box;
@@ -24,6 +28,7 @@
24
28
  font-family: var(--jx-font-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif);
25
29
  font-size: var(--jx-text-md, 12px);
26
30
  line-height: 1.5;
31
+ user-select: none;
27
32
  --panel-w-left: 240px;
28
33
  --panel-w-right: 280px;
29
34
  --bg: var(--jx-bg, #111114);
@@ -89,6 +94,17 @@
89
94
  overflow: hidden;
90
95
  background: var(--jx-bg, #111114);
91
96
  }
97
+ /* The root's `user-select: none` restated, because a modal dialog would otherwise take it back:
98
+ Chromium's UA sheet gives a MODAL dialog `user-select: text` (measured: `auto` while closed or
99
+ after show(), `text` after showModal()), and Blink inherits that into every node inside. Every
100
+ Studio modal is a jx-dialog opened with showModal(), so without this rule the headline, labels
101
+ and buttons of every dialog would be selectable whatever the root says. An author rule beats the
102
+ UA one at any specificity, since it is not `!important`. A dialog's MESSAGE opts back in from
103
+ its own surface document (`surfaces/dialog.json`), and an input inside one stays selectable
104
+ without help. */
105
+ :root dialog {
106
+ user-select: none;
107
+ }
92
108
  :root[data-theme="light"],
93
109
  :root[data-theme="light"] body {
94
110
  background: var(--jx-bg, #f7f7f9);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://jxsuite.com/schema/v1",
3
3
  "$id": "StudioTokens",
4
- "$description": "Studio's global base and its semantic token layer, as a Jx style block. `styles/tokens.css` is GENERATED from this by `scripts/build-styles.ts`; edit this file and run `bun run styles:sync`. It stays a linked stylesheet because every declaration in it is pre-paint: the kit's own theme is adopted from JavaScript, so these hex fallbacks are what paints the shell before that lands. THE LAST OF `styles/spectrum.css` IS HERE. That file was the whole of what was declared ON the `sp-theme` element, where Spectrum's own ramp was in scope and `:root` was not, and its header said it would be deleted whole when that element went. It has: the box is `#shell-root` in `shell-frame.json`, the typography is the four declarations above (the sans stack is the kit's and 12px is `--jx-text-md`, which is what `--spectrum-font-size-75` resolved to), and `--case-c`/`--slot-c` are aliases in the same idiom as `--switch-c`, at the values `panel-outline.json` had already written down as their fallbacks. THE FOUR `--canvas-*` STEPS DO NOT FOLLOW THE THEME, and that is the point of them rather than an oversight: they colour surfaces that render as a light DOCUMENT in both chromes — the stylebook, the element-card previews, the empty-slot placeholder on the canvas — so they are mixed from the `black` and `white` KEYWORDS, which is what `var(--spectrum-black)`/`var(--spectrum-white)` were. Seven more steps were declared beside them and no rule in the package ever read one, so those are not here. The four `--data-*` syntax colours are not here either, for a reason `panel-data.json` states outright: nothing read them, they were declared for a palette nobody wrote, and `data-tone` still carries the type on every value for the day somebody does.",
4
+ "$description": "Studio's global base and its semantic token layer, as a Jx style block. `styles/tokens.css` is GENERATED from this by `scripts/build-styles.ts`; edit this file and run `bun run styles:sync`. It stays a linked stylesheet because every declaration in it is pre-paint: the kit's own theme is adopted from JavaScript, so these hex fallbacks are what paints the shell before that lands. THE LAST OF `styles/spectrum.css` IS HERE. That file was the whole of what was declared ON the `sp-theme` element, where Spectrum's own ramp was in scope and `:root` was not, and its header said it would be deleted whole when that element went. It has: the box is `#shell-root` in `shell-frame.json`, the typography is the four declarations above (the sans stack is the kit's and 12px is `--jx-text-md`, which is what `--spectrum-font-size-75` resolved to), and `--case-c`/`--slot-c` are aliases in the same idiom as `--switch-c`, at the values `panel-outline.json` had already written down as their fallbacks. THE FOUR `--canvas-*` STEPS DO NOT FOLLOW THE THEME, and that is the point of them rather than an oversight: they colour surfaces that render as a light DOCUMENT in both chromes — the stylebook, the element-card previews, the empty-slot placeholder on the canvas — so they are mixed from the `black` and `white` KEYWORDS, which is what `var(--spectrum-black)`/`var(--spectrum-white)` were. Seven more steps were declared beside them and no rule in the package ever read one, so those are not here. The four `--data-*` syntax colours are not here either, for a reason `panel-data.json` states outright: nothing read them, they were declared for a palette nobody wrote, and `data-tone` still carries the type on every value for the day somebody does. THE CHROME IS NOT TEXT: `user-select: none` on the root is Studio's selection policy, stated once so a drag across the window highlights no label, button or heading; every surface inherits it, `& dialog` restates it where the UA sheet would reopen it, and a part whose text the reader must copy opts back in on that part alone, from its own surface document, against the list `tests/selection-policy.test.ts` holds. Editable controls, Monaco and the canvas iframe keep their own selection and need nothing.",
5
5
  "tagName": "html",
6
6
  "style": {
7
7
  "box-sizing": "border-box",
@@ -13,6 +13,7 @@
13
13
  "font-family": "var(--jx-font-sans, -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif)",
14
14
  "font-size": "var(--jx-text-md, 12px)",
15
15
  "line-height": "1.5",
16
+ "user-select": "none",
16
17
  "--panel-w-left": "240px",
17
18
  "--panel-w-right": "280px",
18
19
  "--bg": "var(--jx-bg, #111114)",
@@ -77,6 +78,10 @@
77
78
  "overflow": "hidden",
78
79
  "background": "var(--jx-bg, #111114)"
79
80
  },
81
+ "& dialog": {
82
+ "$description": "The root's `user-select: none` restated, because a modal dialog would otherwise take it back: Chromium's UA sheet gives a MODAL dialog `user-select: text` (measured: `auto` while closed or after show(), `text` after showModal()), and Blink inherits that into every node inside. Every Studio modal is a jx-dialog opened with showModal(), so without this rule the headline, labels and buttons of every dialog would be selectable whatever the root says. An author rule beats the UA one at any specificity, since it is not `!important`. A dialog's MESSAGE opts back in from its own surface document (`surfaces/dialog.json`), and an input inside one stays selectable without help.",
83
+ "user-select": "none"
84
+ },
80
85
  "&[data-theme=\"light\"], &[data-theme=\"light\"] body": {
81
86
  "background": "var(--jx-bg, #f7f7f9)"
82
87
  }
@@ -1,42 +0,0 @@
1
- import {
2
- createEntry2,
3
- registerContentCommands2
4
- } from "./studio-151w0xnh.js";
5
- import"./studio-rtskkm43.js";
6
- import"./studio-4f3psrk1.js";
7
- import"./studio-j0w60gft.js";
8
- import"./studio-ke09tn9k.js";
9
- import"./studio-4c041r8y.js";
10
- import"./studio-q0a3yk4n.js";
11
- import"./studio-a65w20ex.js";
12
- import"./studio-cgprcdxn.js";
13
- import"./studio-nsgw7dbk.js";
14
- import"./studio-27q131j3.js";
15
- import"./studio-nq5yf5mp.js";
16
- import"./studio-drg8qj9k.js";
17
- import"./studio-fzjx96t2.js";
18
- import"./studio-zjjde71a.js";
19
- import"./studio-z2smx5ce.js";
20
- import"./studio-b7xacrwe.js";
21
- import"./studio-ab87phj1.js";
22
- import"./studio-gk2twyh4.js";
23
- import"./studio-wnsyffg1.js";
24
- import"./studio-m1p9b6c3.js";
25
- import"./studio-esrxgwh6.js";
26
- import"./studio-6gryj0sg.js";
27
- import"./studio-6nzaktvy.js";
28
- import"./studio-jt27ta6x.js";
29
- import"./studio-0j7r7s9g.js";
30
- import"./studio-1k325pwf.js";
31
- import"./studio-d1n2bykn.js";
32
- import"./studio-yxa81f45.js";
33
- import"./studio-3ntvq6cg.js";
34
- import"./studio-d8z5bajd.js";
35
- import"./studio-tjjk7jvk.js";
36
- export {
37
- createEntry2 as createEntry,
38
- registerContentCommands2 as registerContentCommands
39
- };
40
-
41
- //# debugId=474288D19E3E71A764756E2164756E21
42
- //# sourceMappingURL=entry-commands-1wnsqn5d.js.map
@@ -1,41 +0,0 @@
1
- import {
2
- startLayerTitleEdit2,
3
- registerLayersPanel2
4
- } from "./studio-b66rsh78.js";
5
- import"./studio-nfx354t1.js";
6
- import"./studio-ye9drbk8.js";
7
- import"./studio-6kvgrkrp.js";
8
- import"./studio-a5h5j33a.js";
9
- import"./studio-gtfq1dkz.js";
10
- import"./studio-4f3psrk1.js";
11
- import"./studio-q0a3yk4n.js";
12
- import"./studio-a65w20ex.js";
13
- import"./studio-27q131j3.js";
14
- import"./studio-nq5yf5mp.js";
15
- import"./studio-drg8qj9k.js";
16
- import"./studio-fzjx96t2.js";
17
- import"./studio-zjjde71a.js";
18
- import"./studio-z2smx5ce.js";
19
- import"./studio-b7xacrwe.js";
20
- import"./studio-ab87phj1.js";
21
- import"./studio-gk2twyh4.js";
22
- import"./studio-wnsyffg1.js";
23
- import"./studio-m1p9b6c3.js";
24
- import"./studio-esrxgwh6.js";
25
- import"./studio-6gryj0sg.js";
26
- import"./studio-6nzaktvy.js";
27
- import"./studio-jt27ta6x.js";
28
- import"./studio-0j7r7s9g.js";
29
- import"./studio-1k325pwf.js";
30
- import"./studio-d1n2bykn.js";
31
- import"./studio-yxa81f45.js";
32
- import"./studio-3ntvq6cg.js";
33
- import"./studio-d8z5bajd.js";
34
- import"./studio-tjjk7jvk.js";
35
- export {
36
- registerLayersPanel2 as registerLayersPanel,
37
- startLayerTitleEdit2 as startLayerTitleEdit
38
- };
39
-
40
- //# debugId=CE19FDE5A143AAD964756E2164756E21
41
- //# sourceMappingURL=layers-panel-73gfkcga.js.map
@@ -1,27 +0,0 @@
1
- import {
2
- seedPublishConnected2,
3
- openPublishPanel2
4
- } from "./studio-7144epdr.js";
5
- import"./studio-vn5hske5.js";
6
- import"./studio-c04nzbby.js";
7
- import"./studio-nsgw7dbk.js";
8
- import"./studio-fzjx96t2.js";
9
- import"./studio-z2smx5ce.js";
10
- import"./studio-gk2twyh4.js";
11
- import"./studio-wnsyffg1.js";
12
- import"./studio-m1p9b6c3.js";
13
- import"./studio-6gryj0sg.js";
14
- import"./studio-6nzaktvy.js";
15
- import"./studio-0j7r7s9g.js";
16
- import"./studio-1k325pwf.js";
17
- import"./studio-d1n2bykn.js";
18
- import"./studio-yxa81f45.js";
19
- import"./studio-3ntvq6cg.js";
20
- import"./studio-d8z5bajd.js";
21
- export {
22
- openPublishPanel2 as openPublishPanel,
23
- seedPublishConnected2 as seedPublishConnected
24
- };
25
-
26
- //# debugId=6014AB98C3074CCB64756E2164756E21
27
- //# sourceMappingURL=publish-panel-z1zd2da1.js.map
@@ -1,47 +0,0 @@
1
- import {
2
- initQuickSearch2,
3
- openQuickSearch2
4
- } from "./studio-g33v4fe9.js";
5
- import"./studio-7rrb1esn.js";
6
- import"./studio-a5h5j33a.js";
7
- import"./studio-xajk70w0.js";
8
- import"./studio-msc1ee1m.js";
9
- import"./studio-t171hxhe.js";
10
- import"./studio-gtfq1dkz.js";
11
- import"./studio-rtskkm43.js";
12
- import"./studio-50wfwy44.js";
13
- import"./studio-j0w60gft.js";
14
- import"./studio-ke09tn9k.js";
15
- import"./studio-4c041r8y.js";
16
- import"./studio-q0a3yk4n.js";
17
- import"./studio-a65w20ex.js";
18
- import"./studio-cgprcdxn.js";
19
- import"./studio-nsgw7dbk.js";
20
- import"./studio-27q131j3.js";
21
- import"./studio-nq5yf5mp.js";
22
- import"./studio-drg8qj9k.js";
23
- import"./studio-fzjx96t2.js";
24
- import"./studio-zjjde71a.js";
25
- import"./studio-z2smx5ce.js";
26
- import"./studio-b7xacrwe.js";
27
- import"./studio-ab87phj1.js";
28
- import"./studio-gk2twyh4.js";
29
- import"./studio-wnsyffg1.js";
30
- import"./studio-m1p9b6c3.js";
31
- import"./studio-esrxgwh6.js";
32
- import"./studio-6gryj0sg.js";
33
- import"./studio-6nzaktvy.js";
34
- import"./studio-jt27ta6x.js";
35
- import"./studio-0j7r7s9g.js";
36
- import"./studio-1k325pwf.js";
37
- import"./studio-d1n2bykn.js";
38
- import"./studio-yxa81f45.js";
39
- import"./studio-3ntvq6cg.js";
40
- import"./studio-d8z5bajd.js";
41
- export {
42
- initQuickSearch2 as initQuickSearch,
43
- openQuickSearch2 as openQuickSearch
44
- };
45
-
46
- //# debugId=671F3AA898CB9C9E64756E2164756E21
47
- //# sourceMappingURL=quick-search-zdv7h8ht.js.map
@@ -1,45 +0,0 @@
1
- import {
2
- mount2,
3
- unmount2,
4
- render2,
5
- inspectorTab2,
6
- setInspectorTab2
7
- } from "./studio-c0qgc3tn.js";
8
- import"./studio-nfx354t1.js";
9
- import"./studio-ye9drbk8.js";
10
- import"./studio-6kvgrkrp.js";
11
- import"./studio-gtfq1dkz.js";
12
- import"./studio-4f3psrk1.js";
13
- import"./studio-a65w20ex.js";
14
- import"./studio-27q131j3.js";
15
- import"./studio-nq5yf5mp.js";
16
- import"./studio-drg8qj9k.js";
17
- import"./studio-fzjx96t2.js";
18
- import"./studio-zjjde71a.js";
19
- import"./studio-z2smx5ce.js";
20
- import"./studio-b7xacrwe.js";
21
- import"./studio-ab87phj1.js";
22
- import"./studio-gk2twyh4.js";
23
- import"./studio-wnsyffg1.js";
24
- import"./studio-m1p9b6c3.js";
25
- import"./studio-esrxgwh6.js";
26
- import"./studio-6gryj0sg.js";
27
- import"./studio-6nzaktvy.js";
28
- import"./studio-jt27ta6x.js";
29
- import"./studio-0j7r7s9g.js";
30
- import"./studio-1k325pwf.js";
31
- import"./studio-d1n2bykn.js";
32
- import"./studio-yxa81f45.js";
33
- import"./studio-3ntvq6cg.js";
34
- import"./studio-d8z5bajd.js";
35
- import"./studio-tjjk7jvk.js";
36
- export {
37
- inspectorTab2 as inspectorTab,
38
- mount2 as mount,
39
- render2 as render,
40
- setInspectorTab2 as setInspectorTab,
41
- unmount2 as unmount
42
- };
43
-
44
- //# debugId=ACC2FC3785A3466764756E2164756E21
45
- //# sourceMappingURL=right-panel-889vbnm5.js.map
@@ -1,76 +0,0 @@
1
- // ../collab/src/ops.ts
2
- function jsonClone(value) {
3
- return JSON.parse(JSON.stringify(value));
4
- }
5
- function cloneValue2(v) {
6
- return v === undefined || v === null ? v : jsonClone(v);
7
- }
8
- function getNodeAtPath3(doc, path) {
9
- let node = doc;
10
- for (const key of path) {
11
- if (node == null) {
12
- return;
13
- }
14
- node = node[key];
15
- }
16
- return node;
17
- }
18
- function childArray2(node) {
19
- if (Array.isArray(node)) {
20
- throw new TypeError("Cannot insert into a children array; parentPath must point at a node");
21
- }
22
- if (!node.children) {
23
- node.children = [];
24
- }
25
- if (!Array.isArray(node.children)) {
26
- throw new TypeError("Cannot insert into mapped-array children; edit the map template instead");
27
- }
28
- return node.children;
29
- }
30
- function applyDocOpToDoc2(doc, op) {
31
- switch (op.op) {
32
- case "set-key": {
33
- const node = getNodeAtPath3(doc, op.path);
34
- if (!node) {
35
- throw new Error(`doc-op-node-not-found:${op.path.join("/")}`);
36
- }
37
- const target = node;
38
- if (op.value === undefined) {
39
- delete target[op.key];
40
- } else {
41
- target[op.key] = cloneValue2(op.value);
42
- }
43
- return;
44
- }
45
- case "insert-child": {
46
- const parent = getNodeAtPath3(doc, op.parentPath);
47
- childArray2(parent).splice(op.index, 0, cloneValue2(op.node));
48
- return;
49
- }
50
- case "remove-child": {
51
- const parent = getNodeAtPath3(doc, op.parentPath);
52
- childArray2(parent).splice(op.index, 1);
53
- return;
54
- }
55
- case "set-child": {
56
- const parent = getNodeAtPath3(doc, op.parentPath);
57
- childArray2(parent).splice(op.index, 1, cloneValue2(op.node));
58
- return;
59
- }
60
- case "move-child": {
61
- const fromParent = getNodeAtPath3(doc, op.fromParentPath);
62
- const toParent = getNodeAtPath3(doc, op.toParentPath);
63
- const [node] = childArray2(fromParent).splice(op.fromIndex, 1);
64
- childArray2(toParent).splice(op.toIndex, 0, node);
65
- return;
66
- }
67
- default: {
68
- throw new Error(`unknown-doc-op:${op.op}`);
69
- }
70
- }
71
- }
72
-
73
- export { cloneValue2, getNodeAtPath3, childArray2, applyDocOpToDoc2 };
74
-
75
- //# debugId=32556033BC6FC83D64756E2164756E21
76
- //# sourceMappingURL=studio-727xh0e3.js.map