@jxsuite/studio 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/canvas.html +21 -0
  2. package/dist/chunks/Overlay.dev-qfjzkms8.js +23 -0
  3. package/dist/chunks/{Overlay.dev-cszx7yn5.js.map → Overlay.dev-qfjzkms8.js.map} +1 -1
  4. package/dist/chunks/{adapter-z8fkmbmv.js → adapter-qfnesn5v.js} +2 -2
  5. package/dist/chunks/{cf-settings-mmyv436d.js → cf-settings-73sh5z4p.js} +3 -3
  6. package/dist/chunks/{components-0hzentwq.js → components-2bpqp4mq.js} +5 -7
  7. package/dist/chunks/{components-0hzentwq.js.map → components-2bpqp4mq.js.map} +1 -1
  8. package/dist/chunks/content-source-34gnkbnn.js +38 -0
  9. package/dist/chunks/content-source-34gnkbnn.js.map +9 -0
  10. package/dist/chunks/convert-to-repeater-t8kxre5s.js +258 -0
  11. package/dist/chunks/convert-to-repeater-t8kxre5s.js.map +10 -0
  12. package/dist/chunks/extension-sections-6mqydz35.js +301 -0
  13. package/dist/chunks/extension-sections-6mqydz35.js.map +11 -0
  14. package/dist/chunks/files-8kn321h1.js +70 -0
  15. package/dist/chunks/files-8kn321h1.js.map +9 -0
  16. package/dist/chunks/{format-host-2c188n41.js → format-host-mkwsmt8d.js} +3 -3
  17. package/dist/chunks/git-panel-tjbr191d.js +51 -0
  18. package/dist/chunks/git-panel-tjbr191d.js.map +9 -0
  19. package/dist/chunks/{index-baeg2x3y.js → index-7pxchcce.js} +4 -3
  20. package/dist/chunks/{index-baeg2x3y.js.map → index-7pxchcce.js.map} +3 -3
  21. package/dist/chunks/{jx-validate-qx8degj7.js → jx-validate-v6qgknrs.js} +3 -3
  22. package/dist/chunks/layers-panel-87pb25km.js +58 -0
  23. package/dist/chunks/layers-panel-87pb25km.js.map +9 -0
  24. package/dist/chunks/{monaco-setup-zjdp9zdw.js → monaco-setup-e0yh25j4.js} +4 -75
  25. package/dist/chunks/{monaco-setup-zjdp9zdw.js.map → monaco-setup-e0yh25j4.js.map} +3 -4
  26. package/dist/chunks/publish-panel-m0fcgdrt.js +21 -0
  27. package/dist/chunks/publish-panel-m0fcgdrt.js.map +9 -0
  28. package/dist/chunks/quick-search-rhs6cbsb.js +53 -0
  29. package/dist/chunks/quick-search-rhs6cbsb.js.map +9 -0
  30. package/dist/chunks/right-panel-zpdxd98t.js +37 -0
  31. package/dist/chunks/right-panel-zpdxd98t.js.map +9 -0
  32. package/dist/chunks/section-registry-zmckaxf4.js +30 -0
  33. package/dist/chunks/section-registry-zmckaxf4.js.map +9 -0
  34. package/dist/chunks/sp-overlay.dev-9ran0sfq.js +18 -0
  35. package/dist/chunks/sp-overlay.dev-9ran0sfq.js.map +9 -0
  36. package/dist/chunks/sp-popover.dev-rebmdncr.js +9 -0
  37. package/dist/chunks/sp-popover.dev-rebmdncr.js.map +9 -0
  38. package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js +15 -0
  39. package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js.map +9 -0
  40. package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js +15 -0
  41. package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js.map +9 -0
  42. package/dist/chunks/{sp-tray.dev-pb2fsd65.js → sp-tray.dev-ey59vfh7.js} +10 -8
  43. package/dist/chunks/{sp-tray.dev-pb2fsd65.js.map → sp-tray.dev-ey59vfh7.js.map} +2 -2
  44. package/dist/chunks/{studio-9qr6fq7p.js → studio-0rqqhrdy.js} +10 -378
  45. package/dist/chunks/{studio-9qr6fq7p.js.map → studio-0rqqhrdy.js.map} +4 -14
  46. package/dist/chunks/{studio-5x6tqqec.js → studio-2sj1jj3v.js} +10 -8
  47. package/dist/chunks/{studio-5x6tqqec.js.map → studio-2sj1jj3v.js.map} +2 -2
  48. package/dist/chunks/{studio-h3fw0wn8.js → studio-3fk1ac9z.js} +6 -4
  49. package/dist/chunks/{studio-h3fw0wn8.js.map → studio-3fk1ac9z.js.map} +2 -2
  50. package/dist/chunks/studio-41exgzhq.js +6690 -0
  51. package/dist/chunks/studio-41exgzhq.js.map +38 -0
  52. package/dist/chunks/{studio-7v2bpweq.js → studio-4mqb9a0j.js} +6 -4
  53. package/dist/chunks/{studio-7v2bpweq.js.map → studio-4mqb9a0j.js.map} +2 -2
  54. package/dist/chunks/studio-50k77cca.js +1787 -0
  55. package/dist/chunks/studio-50k77cca.js.map +18 -0
  56. package/dist/chunks/{studio-56v3zwk6.js → studio-6a0h7sne.js} +10 -8
  57. package/dist/chunks/{studio-56v3zwk6.js.map → studio-6a0h7sne.js.map} +2 -2
  58. package/dist/chunks/studio-6f0am8f2.js +53 -0
  59. package/dist/chunks/studio-6f0am8f2.js.map +10 -0
  60. package/dist/chunks/studio-6nmjc5qk.js +7002 -0
  61. package/dist/chunks/studio-6nmjc5qk.js.map +32 -0
  62. package/dist/chunks/studio-7afd21nw.js +67 -0
  63. package/dist/chunks/studio-7afd21nw.js.map +10 -0
  64. package/dist/chunks/{studio-xze4zrs1.js → studio-7bmdvzne.js} +2 -2
  65. package/dist/chunks/studio-7bmdvzne.js.map +10 -0
  66. package/dist/chunks/studio-8jpzqk5s.js +128 -0
  67. package/dist/chunks/studio-8jpzqk5s.js.map +10 -0
  68. package/dist/chunks/studio-94m77tgk.js +1482 -0
  69. package/dist/chunks/studio-94m77tgk.js.map +13 -0
  70. package/dist/chunks/studio-9je6w5sq.js +1000 -0
  71. package/dist/chunks/studio-9je6w5sq.js.map +16 -0
  72. package/dist/chunks/{studio-w7c6kvk7.js → studio-a7pzveq1.js} +2 -2
  73. package/dist/chunks/{studio-97qcgvdn.js → studio-adn0z1k3.js} +14 -8
  74. package/dist/chunks/{studio-97qcgvdn.js.map → studio-adn0z1k3.js.map} +3 -3
  75. package/dist/chunks/{studio-kr88ryr7.js → studio-bsxxx3x2.js} +17 -15
  76. package/dist/chunks/{studio-kr88ryr7.js.map → studio-bsxxx3x2.js.map} +7 -6
  77. package/dist/chunks/studio-bw5dz6km.js +608 -0
  78. package/dist/chunks/studio-bw5dz6km.js.map +21 -0
  79. package/dist/chunks/studio-c6s5getc.js +4232 -0
  80. package/dist/chunks/studio-c6s5getc.js.map +39 -0
  81. package/dist/chunks/studio-cjm7fdjf.js +451 -0
  82. package/dist/chunks/studio-cjm7fdjf.js.map +14 -0
  83. package/dist/chunks/{studio-cx91mnh8.js → studio-ckwz4d3x.js} +53 -53
  84. package/dist/chunks/{studio-cx91mnh8.js.map → studio-ckwz4d3x.js.map} +5 -5
  85. package/dist/chunks/studio-dg7zyt5x.js +28 -0
  86. package/dist/chunks/studio-dg7zyt5x.js.map +10 -0
  87. package/dist/chunks/studio-dzcyvvvz.js +166 -0
  88. package/dist/chunks/studio-dzcyvvvz.js.map +10 -0
  89. package/dist/chunks/{studio-7kqe41sa.js → studio-evkr5d3b.js} +15 -7
  90. package/dist/chunks/{studio-7kqe41sa.js.map → studio-evkr5d3b.js.map} +5 -4
  91. package/dist/chunks/studio-f12h6177.js +411 -0
  92. package/dist/chunks/studio-f12h6177.js.map +13 -0
  93. package/dist/chunks/studio-hbp1s8m9.js +1817 -0
  94. package/dist/chunks/studio-hbp1s8m9.js.map +14 -0
  95. package/dist/chunks/studio-k2sxjph5.js +15295 -0
  96. package/dist/chunks/studio-k2sxjph5.js.map +235 -0
  97. package/dist/chunks/studio-myje51t3.js +385 -0
  98. package/dist/chunks/studio-myje51t3.js.map +12 -0
  99. package/dist/chunks/studio-na6rwzhw.js +353 -0
  100. package/dist/chunks/studio-na6rwzhw.js.map +11 -0
  101. package/dist/chunks/{studio-4k0m4fmp.js → studio-p471gg5n.js} +126 -3
  102. package/dist/chunks/studio-p471gg5n.js.map +14 -0
  103. package/dist/chunks/{studio-9bjwf0d4.js → studio-rgwcpast.js} +5 -46
  104. package/dist/chunks/{studio-9bjwf0d4.js.map → studio-rgwcpast.js.map} +4 -5
  105. package/dist/chunks/{studio-hhj92gcr.js → studio-s519zc99.js} +3 -3
  106. package/dist/chunks/studio-sas7mt3k.js +75 -0
  107. package/dist/chunks/studio-sas7mt3k.js.map +10 -0
  108. package/dist/chunks/studio-t5wqwzdh.js +74 -0
  109. package/dist/chunks/studio-t5wqwzdh.js.map +10 -0
  110. package/dist/chunks/{studio-9qpspwfn.js → studio-temv5bw4.js} +5 -5
  111. package/dist/chunks/{studio-9qpspwfn.js.map → studio-temv5bw4.js.map} +1 -1
  112. package/dist/chunks/{studio-qkvt37c0.js → studio-tr20m8g8.js} +669 -18
  113. package/dist/chunks/studio-tr20m8g8.js.map +9 -0
  114. package/dist/chunks/{studio-ygzav7z5.js → studio-v96qfnww.js} +5514 -4291
  115. package/dist/chunks/studio-v96qfnww.js.map +54 -0
  116. package/dist/chunks/studio-vcetc91k.js +659 -0
  117. package/dist/chunks/studio-vcetc91k.js.map +10 -0
  118. package/dist/chunks/{studio-n9zmpxjg.js → studio-vmymjefp.js} +2972 -4937
  119. package/dist/chunks/studio-vmymjefp.js.map +98 -0
  120. package/dist/chunks/{studio-bghqfmea.js → studio-wwseqyw0.js} +2 -2
  121. package/dist/chunks/studio-x9hmy5kr.js +390 -0
  122. package/dist/chunks/studio-x9hmy5kr.js.map +10 -0
  123. package/dist/chunks/studio-xa0ce0n7.js +335 -0
  124. package/dist/chunks/studio-xa0ce0n7.js.map +10 -0
  125. package/dist/chunks/studio-xm3dbxvn.js +378 -0
  126. package/dist/chunks/studio-xm3dbxvn.js.map +19 -0
  127. package/dist/chunks/{studio-nqw433kv.js → studio-xmvbhg31.js} +2 -2
  128. package/dist/chunks/studio-zv37yrfa.js +1054 -0
  129. package/dist/chunks/studio-zv37yrfa.js.map +13 -0
  130. package/dist/chunks/{ws-client-q7hkz3j9.js → ws-client-654ts66j.js} +6 -4
  131. package/dist/chunks/ws-client-654ts66j.js.map +11 -0
  132. package/dist/iframe-entry.js +668 -230
  133. package/dist/studio.js +23711 -35185
  134. package/index.html +35 -4685
  135. package/package.json +17 -15
  136. package/src/about/about-modal.ts +42 -11
  137. package/src/browse/library-commands.ts +240 -0
  138. package/src/browse/library-layouts.ts +369 -0
  139. package/src/browse/library-model.ts +396 -0
  140. package/src/browse/library-pane.ts +1049 -0
  141. package/src/browse/library-preview.ts +252 -0
  142. package/src/browse/library-source.ts +150 -0
  143. package/src/canvas/canvas-helpers.ts +33 -9
  144. package/src/canvas/canvas-live-render.ts +45 -29
  145. package/src/canvas/canvas-patcher.ts +151 -31
  146. package/src/canvas/canvas-perf.ts +46 -7
  147. package/src/canvas/canvas-render.ts +1092 -220
  148. package/src/canvas/canvas-surface.ts +240 -0
  149. package/src/canvas/canvas-utils.ts +1166 -124
  150. package/src/canvas/iframe-drop.ts +2 -1
  151. package/src/canvas/iframe-entry.ts +241 -4
  152. package/src/canvas/iframe-host.ts +1226 -143
  153. package/src/canvas/iframe-inline-edit.ts +31 -0
  154. package/src/canvas/iframe-interaction.ts +76 -16
  155. package/src/canvas/iframe-keys.ts +107 -45
  156. package/src/canvas/iframe-overlay.ts +38 -1
  157. package/src/canvas/iframe-protocol.ts +137 -2
  158. package/src/canvas/iframe-render.ts +70 -2
  159. package/src/canvas/iframe-slash.ts +6 -0
  160. package/src/canvas/path-mapping.ts +56 -6
  161. package/src/canvas/surface-registry.ts +292 -0
  162. package/src/collab/collab-commands.ts +244 -0
  163. package/src/collab/collab-session.ts +198 -32
  164. package/src/collab/collab-state.ts +28 -2
  165. package/src/collab/presence-chips.ts +100 -9
  166. package/src/commands/active-registry.ts +42 -0
  167. package/src/commands/app-commands.ts +176 -0
  168. package/src/commands/budget.ts +158 -0
  169. package/src/commands/command-args.ts +253 -0
  170. package/src/commands/context.ts +387 -0
  171. package/src/commands/defaults.ts +580 -0
  172. package/src/commands/keymap.ts +571 -0
  173. package/src/commands/levels.ts +345 -0
  174. package/src/commands/live-context.ts +193 -0
  175. package/src/commands/reference.ts +227 -0
  176. package/src/commands/registry.ts +293 -0
  177. package/src/component-props.ts +3 -2
  178. package/src/content/draft-state.ts +106 -0
  179. package/src/content/entry-commands.ts +282 -0
  180. package/src/content/entry-editor.ts +327 -0
  181. package/src/content/entry-fields.ts +116 -0
  182. package/src/content/entry-model.ts +175 -0
  183. package/src/editor/canvas-context-menu.ts +17 -11
  184. package/src/editor/canvas-slash-bridge.ts +11 -4
  185. package/src/editor/context-menu.ts +804 -204
  186. package/src/editor/convert-to-component.ts +31 -10
  187. package/src/editor/convert-to-repeater.ts +3 -2
  188. package/src/editor/inline-edit-apply.ts +5 -5
  189. package/src/editor/inline-edit.ts +86 -50
  190. package/src/editor/insert-zone-action.ts +1 -1
  191. package/src/editor/shortcuts.ts +1043 -329
  192. package/src/editor/slash-menu.ts +1 -0
  193. package/src/files/elements.ts +166 -0
  194. package/src/files/file-ops.ts +178 -31
  195. package/src/files/files.ts +898 -268
  196. package/src/files/fs-events.ts +21 -0
  197. package/src/files/media-meta.ts +203 -0
  198. package/src/files/media-paths.ts +141 -0
  199. package/src/files/media-upload.ts +7 -3
  200. package/src/files/media-usage.ts +189 -0
  201. package/src/github/github-auth.ts +235 -33
  202. package/src/github/github-publish.ts +80 -21
  203. package/src/grid/grid-controller.ts +152 -12
  204. package/src/grid/grid-layout.ts +225 -20
  205. package/src/grid/grid-open.ts +120 -0
  206. package/src/grid/grid-panel.ts +554 -39
  207. package/src/grid/grid-source.ts +27 -1
  208. package/src/grid/redirects-grid.ts +599 -0
  209. package/src/grid/redirects.ts +398 -0
  210. package/src/grid/sources/content-source.ts +108 -2
  211. package/src/i18n/i18n-commands.ts +322 -0
  212. package/src/new-project/add-repo-modal.ts +8 -10
  213. package/src/new-project/import-tab.ts +34 -9
  214. package/src/new-project/location-fields.ts +9 -1
  215. package/src/new-project/new-project-modal.ts +270 -262
  216. package/src/packages/jxsuite-update.ts +97 -48
  217. package/src/packages/pull-package-sync.ts +18 -9
  218. package/src/page-params.ts +2 -1
  219. package/src/panels/activity-bar.ts +152 -91
  220. package/src/panels/activity-panel.ts +481 -0
  221. package/src/panels/ai-chat/chat-markdown.ts +8 -3
  222. package/src/panels/ai-chat/chat-view.ts +245 -18
  223. package/src/panels/ai-chat/composer.ts +31 -5
  224. package/src/panels/ai-chat/sessions-view.ts +17 -10
  225. package/src/panels/ai-panel.ts +279 -120
  226. package/src/panels/block-action-bar.ts +1115 -224
  227. package/src/panels/bottom-dock.ts +337 -0
  228. package/src/panels/canvas-dnd-bridge.ts +37 -8
  229. package/src/panels/chat-panel.ts +29 -12
  230. package/src/panels/data-explorer.ts +254 -112
  231. package/src/panels/data-grid.ts +10 -4
  232. package/src/panels/dnd.ts +28 -51
  233. package/src/panels/editors.ts +434 -107
  234. package/src/panels/elements-panel.ts +66 -2
  235. package/src/panels/empty-state.ts +112 -0
  236. package/src/panels/events-panel.ts +596 -82
  237. package/src/panels/formula-workspace.ts +408 -218
  238. package/src/panels/frontmatter-fields.ts +51 -10
  239. package/src/panels/frontmatter-panel.ts +357 -79
  240. package/src/panels/git-panel.ts +375 -164
  241. package/src/panels/head-panel.ts +791 -85
  242. package/src/panels/i18n-panel.ts +592 -0
  243. package/src/panels/imports-panel.ts +95 -85
  244. package/src/panels/jump-bar.ts +584 -0
  245. package/src/panels/layers-panel.ts +1106 -328
  246. package/src/panels/left-panel.ts +109 -204
  247. package/src/panels/navigator-panels.ts +131 -0
  248. package/src/panels/overlays.ts +7 -2
  249. package/src/panels/pane-context.ts +1477 -0
  250. package/src/panels/pane-grid.ts +406 -0
  251. package/src/panels/panel-registry.ts +340 -0
  252. package/src/panels/panel-scheduler.ts +75 -0
  253. package/src/panels/problems-panel.ts +234 -0
  254. package/src/panels/properties-panel.ts +946 -1139
  255. package/src/panels/provenance.ts +258 -0
  256. package/src/panels/quick-search.ts +791 -122
  257. package/src/panels/right-panel.ts +228 -102
  258. package/src/panels/seo-modal.ts +395 -0
  259. package/src/panels/settings-pane.ts +203 -0
  260. package/src/panels/signals-panel.ts +354 -137
  261. package/src/panels/statement-editor.ts +41 -25
  262. package/src/panels/statusbar.ts +342 -106
  263. package/src/panels/style-panel.ts +974 -463
  264. package/src/panels/style-utils.ts +3 -3
  265. package/src/panels/stylebook-doc.ts +4 -2
  266. package/src/panels/stylebook-layers-panel.ts +3 -2
  267. package/src/panels/stylebook-panel.ts +51 -26
  268. package/src/panels/tab-strip.ts +1058 -78
  269. package/src/panels/target-line.ts +274 -0
  270. package/src/panels/toolbar.ts +631 -484
  271. package/src/panels/welcome-screen.ts +301 -198
  272. package/src/platform-errors.ts +26 -3
  273. package/src/platform.ts +96 -2
  274. package/src/platforms/cloud.ts +71 -8
  275. package/src/platforms/devserver.ts +92 -29
  276. package/src/publish/deploy-checklist.ts +383 -0
  277. package/src/publish/pages-service.ts +10 -1
  278. package/src/publish/publish-commands.ts +218 -0
  279. package/src/publish/publish-panel.ts +110 -16
  280. package/src/recent-projects.ts +3 -2
  281. package/src/services/a11y-report.ts +505 -0
  282. package/src/services/ai-models.ts +75 -2
  283. package/src/services/ai-project-tools.ts +29 -10
  284. package/src/services/ai-system-prompt.ts +53 -14
  285. package/src/services/ai-tools.ts +39 -3
  286. package/src/services/ai-writes.ts +154 -0
  287. package/src/services/announce.ts +97 -0
  288. package/src/services/automation.ts +424 -175
  289. package/src/services/cem-export.ts +9 -4
  290. package/src/services/clock.ts +61 -0
  291. package/src/services/document-assistant.ts +36 -8
  292. package/src/services/idle.ts +179 -0
  293. package/src/services/import-client.ts +26 -0
  294. package/src/services/monaco-buffer.ts +627 -0
  295. package/src/services/monaco-lazy.ts +36 -0
  296. package/src/services/notify.ts +271 -0
  297. package/src/services/profile.ts +155 -0
  298. package/src/services/references.ts +0 -0
  299. package/src/services/token-lint.ts +3 -2
  300. package/src/services/tool-executor.ts +53 -7
  301. package/src/services/trusted-types.ts +123 -0
  302. package/src/settings/contexts-section.ts +427 -0
  303. package/src/settings/contributed-section.ts +149 -11
  304. package/src/settings/css-vars-editor.ts +306 -349
  305. package/src/settings/defs-editor.ts +93 -34
  306. package/src/settings/dependencies-editor.ts +7 -7
  307. package/src/settings/extension-sections.ts +37 -5
  308. package/src/settings/general-settings.ts +204 -121
  309. package/src/settings/locales-section.ts +347 -0
  310. package/src/settings/preferences-accounts.ts +140 -0
  311. package/src/settings/preferences-dialog.ts +620 -0
  312. package/src/settings/preferences-keymap.ts +270 -0
  313. package/src/settings/project-sections.ts +260 -0
  314. package/src/settings/section-registry.ts +169 -0
  315. package/src/settings/settings-document.ts +385 -0
  316. package/src/shell.ts +1549 -0
  317. package/src/site-context.ts +45 -20
  318. package/src/state.ts +14 -275
  319. package/src/store.ts +88 -43
  320. package/src/studio.ts +790 -346
  321. package/src/style/live-preview.ts +36 -0
  322. package/src/style/project-styles.ts +349 -0
  323. package/src/style/token-ref.ts +123 -0
  324. package/src/tabs/patch-ops.ts +16 -4
  325. package/src/tabs/project-config.ts +416 -0
  326. package/src/tabs/selection.ts +323 -0
  327. package/src/tabs/tab.ts +182 -47
  328. package/src/tabs/transact.ts +209 -28
  329. package/src/types.ts +68 -13
  330. package/src/ui/ai-credentials-form.ts +39 -35
  331. package/src/ui/ai-managed-connect.ts +113 -0
  332. package/src/ui/dynamic-slot.ts +224 -81
  333. package/src/ui/expression-editor.ts +71 -63
  334. package/src/ui/field-input.ts +4 -6
  335. package/src/ui/field-row.ts +215 -38
  336. package/src/ui/form-controls.ts +194 -7
  337. package/src/ui/layers.ts +492 -69
  338. package/src/ui/media-picker.ts +115 -25
  339. package/src/ui/panel-resize.ts +109 -91
  340. package/src/ui/progress-modal.ts +131 -50
  341. package/src/ui/regions.ts +462 -0
  342. package/src/ui/schema-form.ts +229 -45
  343. package/src/ui/spectrum.ts +24 -8
  344. package/src/ui/timing.ts +49 -0
  345. package/src/ui/value-selector.ts +20 -0
  346. package/src/ui/value-source.ts +348 -0
  347. package/src/ui/virtual-window.ts +400 -0
  348. package/src/utils/edit-display.ts +3 -2
  349. package/src/utils/inherited-style.ts +67 -37
  350. package/src/view.ts +64 -78
  351. package/src/workspace/pane-derive.ts +1258 -0
  352. package/src/workspace/session.ts +317 -0
  353. package/src/workspace/workspace.ts +1345 -23
  354. package/styles/canvas.css +653 -0
  355. package/styles/forced-colors.css +106 -0
  356. package/styles/inspector.css +1454 -0
  357. package/styles/overlays.css +2704 -0
  358. package/styles/panels.css +1701 -0
  359. package/styles/shell.css +1423 -0
  360. package/styles/tokens.css +151 -0
  361. package/dist/chunks/Overlay.dev-cszx7yn5.js +0 -22
  362. package/dist/chunks/extension-sections-qct0gt8f.js +0 -531
  363. package/dist/chunks/extension-sections-qct0gt8f.js.map +0 -12
  364. package/dist/chunks/files-02zn5y24.js +0 -50
  365. package/dist/chunks/files-02zn5y24.js.map +0 -9
  366. package/dist/chunks/git-panel-mbb0y0hz.js +0 -28
  367. package/dist/chunks/git-panel-mbb0y0hz.js.map +0 -9
  368. package/dist/chunks/layers-panel-9qekmqk1.js +0 -26
  369. package/dist/chunks/layers-panel-9qekmqk1.js.map +0 -9
  370. package/dist/chunks/settings-modal-gj0hrah4.js +0 -29
  371. package/dist/chunks/settings-modal-gj0hrah4.js.map +0 -9
  372. package/dist/chunks/sp-overlay.dev-earn5as8.js +0 -17
  373. package/dist/chunks/sp-overlay.dev-earn5as8.js.map +0 -9
  374. package/dist/chunks/sp-popover.dev-frxtfejn.js +0 -8
  375. package/dist/chunks/sp-popover.dev-frxtfejn.js.map +0 -9
  376. package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js +0 -14
  377. package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js.map +0 -9
  378. package/dist/chunks/sp-tooltip.dev-a9fywesm.js +0 -21
  379. package/dist/chunks/sp-tooltip.dev-a9fywesm.js.map +0 -10
  380. package/dist/chunks/studio-4k0m4fmp.js.map +0 -13
  381. package/dist/chunks/studio-568nx4t5.js +0 -469
  382. package/dist/chunks/studio-568nx4t5.js.map +0 -14
  383. package/dist/chunks/studio-9smfzqhc.js +0 -19
  384. package/dist/chunks/studio-9smfzqhc.js.map +0 -10
  385. package/dist/chunks/studio-asvf0j9e.js +0 -429
  386. package/dist/chunks/studio-asvf0j9e.js.map +0 -13
  387. package/dist/chunks/studio-d77qm3pk.js +0 -3427
  388. package/dist/chunks/studio-d77qm3pk.js.map +0 -26
  389. package/dist/chunks/studio-j6gqyjf4.js +0 -1854
  390. package/dist/chunks/studio-j6gqyjf4.js.map +0 -18
  391. package/dist/chunks/studio-n9zmpxjg.js.map +0 -115
  392. package/dist/chunks/studio-qkvt37c0.js.map +0 -9
  393. package/dist/chunks/studio-rq0vxb19.js +0 -3744
  394. package/dist/chunks/studio-rq0vxb19.js.map +0 -22
  395. package/dist/chunks/studio-wd6ewdvd.js +0 -853
  396. package/dist/chunks/studio-wd6ewdvd.js.map +0 -12
  397. package/dist/chunks/studio-xq0t7n5t.js +0 -140
  398. package/dist/chunks/studio-xq0t7n5t.js.map +0 -10
  399. package/dist/chunks/studio-xze4zrs1.js.map +0 -10
  400. package/dist/chunks/studio-ygzav7z5.js.map +0 -46
  401. package/dist/chunks/studio-zmy7241e.js +0 -399
  402. package/dist/chunks/studio-zmy7241e.js.map +0 -12
  403. package/dist/chunks/ws-client-q7hkz3j9.js.map +0 -11
  404. package/src/browse/browse-modal.ts +0 -69
  405. package/src/browse/browse.ts +0 -904
  406. package/src/canvas/canvas-diff.ts +0 -216
  407. package/src/canvas/nested-site-style.ts +0 -58
  408. package/src/new-project/design-fields.ts +0 -264
  409. package/src/new-project/templates.ts +0 -61
  410. package/src/panels/tab-bar.ts +0 -548
  411. package/src/settings/settings-modal.ts +0 -203
  412. /package/dist/chunks/{adapter-z8fkmbmv.js.map → adapter-qfnesn5v.js.map} +0 -0
  413. /package/dist/chunks/{cf-settings-mmyv436d.js.map → cf-settings-73sh5z4p.js.map} +0 -0
  414. /package/dist/chunks/{format-host-2c188n41.js.map → format-host-mkwsmt8d.js.map} +0 -0
  415. /package/dist/chunks/{jx-validate-qx8degj7.js.map → jx-validate-v6qgknrs.js.map} +0 -0
  416. /package/dist/chunks/{studio-w7c6kvk7.js.map → studio-a7pzveq1.js.map} +0 -0
  417. /package/dist/chunks/{studio-hhj92gcr.js.map → studio-s519zc99.js.map} +0 -0
  418. /package/dist/chunks/{studio-bghqfmea.js.map → studio-wwseqyw0.js.map} +0 -0
  419. /package/dist/chunks/{studio-nqw433kv.js.map → studio-xmvbhg31.js.map} +0 -0
@@ -0,0 +1,348 @@
1
+ /**
2
+ * Value Source — the one vocabulary for "how is this value produced", and the derivation that says
3
+ * which productions a given document position actually permits (plan §6.3).
4
+ *
5
+ * Six controls used to answer that question in six dialects: `abc / $ref / ${} / fx` on the dynamic
6
+ * slot, `inline / $expression / ref` on the Events tab, `lit / $ref / expr` on every expression
7
+ * operand, and `Static value / route param / Custom…` in the schema-driven forms. They are the same
8
+ * four rungs of the Rule of Least Power ladder (spec §2.2) wearing four costumes, and a user who
9
+ * learned one learned none of the others. {@link VALUE_SOURCE_LABELS} is the single vocabulary;
10
+ * every surface that offers the choice spells it the same way.
11
+ *
12
+ * **The rungs are derived, not declared.** Each call site used to hand-write the array of rungs it
13
+ * believed legal — four arrays, none of which included `expression`, so the `fx` rung the UI drew
14
+ * was unreachable from every Properties and Style field. {@link deriveSlotCaps} walks the real
15
+ * subschema from `@jxsuite/schema/defs` instead, so the rungs on offer are exactly the shapes the
16
+ * document schema (and therefore `jx validate` and the compiler) accepts at that position:
17
+ *
18
+ * - An attribute, a component prop or an element property → fixed / from-data / mixed-text;
19
+ * - A CSS declaration → fixed / mixed-text, because `JxStyle` has no `$ref` branch at all;
20
+ * - An event handler → from-data / formula / inline-function, and never a fixed value;
21
+ * - A repeater's filter or sort, and a `$switch` discriminant → from-data and nothing else, because
22
+ * `ArrayNamespace` and `SwitchDef` declare a `RefObject` there and no other branch.
23
+ *
24
+ * The walker imports the _source_ def modules rather than the generated `schema.json`, which is
25
+ * half a megabyte of webref data that `services/monaco-lazy.ts` deliberately keeps out of the cold
26
+ * start. The one position the generator synthesises rather than declares — the `on*` handler
27
+ * property — is mirrored here as {@link EVENT_HANDLER_SCHEMA} and pinned to the generated schema by
28
+ * a test, so the mirror cannot drift in silence.
29
+ */
30
+
31
+ import {
32
+ arrayNamespaceSchema,
33
+ attributesObjectSchema,
34
+ elementPropertyValueSchema,
35
+ elementTagNameSchema,
36
+ expressionEntrySchema,
37
+ functionDefSchema,
38
+ propsObjectSchema,
39
+ refObjectSchema,
40
+ stringOrRefSchema,
41
+ styleObjectSchema,
42
+ switchDefSchema,
43
+ tagNameSchema,
44
+ } from "@jxsuite/schema/defs";
45
+ import { isFunctionDef, isRef, isTemplateString } from "@jxsuite/schema/guards";
46
+
47
+ /** A rung of the value ladder — one way a document position can produce its value. */
48
+ export type SlotMode = "literal" | "ref" | "template" | "expression" | "function";
49
+
50
+ /** Ladder order, least powerful first (spec §2.2). Every rung list is sorted by this. */
51
+ export const SLOT_MODE_ORDER: SlotMode[] = ["literal", "ref", "template", "expression", "function"];
52
+
53
+ /**
54
+ * The user-facing name of each rung — the whole point of §6.3. `ref` keeps its ellipsis because
55
+ * choosing it opens a picker rather than committing a value.
56
+ */
57
+ export const VALUE_SOURCE_LABELS: Record<SlotMode, string> = {
58
+ expression: "Formula",
59
+ function: "Inline function",
60
+ literal: "Fixed value",
61
+ ref: "From data…",
62
+ template: "Mixed text",
63
+ };
64
+
65
+ /** One line of plain language per rung, shown beside its name in the picker. */
66
+ export const VALUE_SOURCE_HINTS: Record<SlotMode, string> = {
67
+ expression: "Computed from other values, built up operator by operator.",
68
+ function: "Code that runs when this fires.",
69
+ literal: "A value you type here, the same every time.",
70
+ ref: "The current value of a signal, picked from a list.",
71
+ template: "Text with ${…} placeholders that fill in from signals.",
72
+ };
73
+
74
+ /** Detect which rung of the ladder a raw document value occupies. */
75
+ export function slotMode(value: unknown): SlotMode {
76
+ if (isRef(value)) {
77
+ return "ref";
78
+ }
79
+ if (isFunctionDef(value)) {
80
+ return "function";
81
+ }
82
+ if (isTemplateString(value)) {
83
+ return "template";
84
+ }
85
+ if (value && typeof value === "object" && "$expression" in value) {
86
+ return "expression";
87
+ }
88
+ return "literal";
89
+ }
90
+
91
+ // ─── Schema walk ────────────────────────────────────────────────────────────
92
+
93
+ type SchemaNode = Record<string, unknown>;
94
+
95
+ /**
96
+ * The `on*` property shape that `@jxsuite/schema`'s generator synthesises for every EventHandler
97
+ * IDL attribute (`buildEventHandlerProperties`). It is the only slot position with no declared
98
+ * module in `defs/`; `tests/value-source.test.ts` asserts it still equals the generated one.
99
+ */
100
+ export const EVENT_HANDLER_SCHEMA = {
101
+ oneOf: [
102
+ { $ref: "#/$defs/RefObject" },
103
+ { $ref: "#/$defs/ExpressionEntry" },
104
+ { $ref: "#/$defs/FunctionDef" },
105
+ ],
106
+ } as const;
107
+
108
+ /** The `$defs` a slot position can actually reach. Anything else is a bug, not a silent no-rung. */
109
+ const REACHABLE_DEFS: Record<string, SchemaNode> = {
110
+ ExpressionEntry: expressionEntrySchema as unknown as SchemaNode,
111
+ FunctionDef: functionDefSchema as unknown as SchemaNode,
112
+ RefObject: refObjectSchema as unknown as SchemaNode,
113
+ StyleObject: styleObjectSchema as unknown as SchemaNode,
114
+ };
115
+
116
+ /** A `{ $ref: … }` binding object: `required: ["$ref"]` with a `$ref` property. */
117
+ function isRefObjectSchema(node: SchemaNode): boolean {
118
+ const { required } = node;
119
+ return (
120
+ Array.isArray(required) &&
121
+ required.includes("$ref") &&
122
+ Boolean((node.properties as SchemaNode | undefined)?.$ref)
123
+ );
124
+ }
125
+
126
+ /** A `{ $expression: … }` entry. */
127
+ function isExpressionEntrySchema(node: SchemaNode): boolean {
128
+ const { required } = node;
129
+ return Array.isArray(required) && required.includes("$expression");
130
+ }
131
+
132
+ /** A `$prototype: "Function"` declaration. */
133
+ function isFunctionDefSchema(node: SchemaNode): boolean {
134
+ const proto = (node.properties as SchemaNode | undefined)?.$prototype as SchemaNode | undefined;
135
+ return proto?.const === "Function";
136
+ }
137
+
138
+ /**
139
+ * A string branch that will accept `${…}`. A pattern/enum/const-constrained string will not — a
140
+ * `TagName` or a `#/state/…` pointer is a string, but not a place a template may be typed.
141
+ */
142
+ function isFreeStringSchema(node: SchemaNode): boolean {
143
+ return (
144
+ node.type === "string" &&
145
+ node.pattern === undefined &&
146
+ node.enum === undefined &&
147
+ node.const === undefined
148
+ );
149
+ }
150
+
151
+ const SCALAR_TYPES = new Set(["array", "boolean", "integer", "null", "number", "object", "string"]);
152
+
153
+ interface WalkState {
154
+ found: Set<SlotMode>;
155
+ /** Pointers the walk could not resolve — surfaced so a schema move fails loudly. */
156
+ unresolved: Set<string>;
157
+ seen: Set<SchemaNode>;
158
+ }
159
+
160
+ function walk(node: unknown, state: WalkState): void {
161
+ if (!node || typeof node !== "object") {
162
+ return;
163
+ }
164
+ const schema = node as SchemaNode;
165
+ if (state.seen.has(schema)) {
166
+ return;
167
+ }
168
+ state.seen.add(schema);
169
+
170
+ const pointer = typeof schema.$ref === "string" ? schema.$ref : undefined;
171
+ if (pointer !== undefined && Object.keys(schema).length === 1) {
172
+ const name = pointer.startsWith("#/$defs/") ? pointer.slice("#/$defs/".length) : pointer;
173
+ const target = REACHABLE_DEFS[name];
174
+ if (target) {
175
+ walk(target, state);
176
+ } else {
177
+ state.unresolved.add(pointer);
178
+ }
179
+ return;
180
+ }
181
+
182
+ /* Recognise a rung BEFORE descending: a RefObject's own `$ref` property is a pointer string,
183
+ not another rung, and an ExpressionEntry's body is the expression grammar, not a ladder. */
184
+ if (isRefObjectSchema(schema)) {
185
+ state.found.add("ref");
186
+ return;
187
+ }
188
+ if (isExpressionEntrySchema(schema)) {
189
+ state.found.add("expression");
190
+ return;
191
+ }
192
+ if (isFunctionDefSchema(schema)) {
193
+ state.found.add("function");
194
+ return;
195
+ }
196
+
197
+ let composed = false;
198
+ for (const key of ["oneOf", "anyOf", "allOf"]) {
199
+ const branches = schema[key];
200
+ if (Array.isArray(branches)) {
201
+ composed = true;
202
+ for (const branch of branches) {
203
+ walk(branch, state);
204
+ }
205
+ }
206
+ }
207
+ if (composed) {
208
+ return;
209
+ }
210
+
211
+ if (isFreeStringSchema(schema)) {
212
+ state.found.add("literal");
213
+ state.found.add("template");
214
+ return;
215
+ }
216
+ if (schema.enum !== undefined || schema.const !== undefined) {
217
+ state.found.add("literal");
218
+ return;
219
+ }
220
+ if (typeof schema.type === "string" && SCALAR_TYPES.has(schema.type)) {
221
+ state.found.add("literal");
222
+ }
223
+ }
224
+
225
+ /** Result of a derivation, including the pointers it could not follow. */
226
+ export interface DerivedCaps {
227
+ caps: SlotMode[];
228
+ unresolved: string[];
229
+ }
230
+
231
+ /** Derive the rungs a subschema permits, and report any pointer the walk could not follow. */
232
+ export function deriveSlotCapsDetailed(schema: unknown): DerivedCaps {
233
+ const state: WalkState = { found: new Set(), seen: new Set(), unresolved: new Set() };
234
+ walk(schema, state);
235
+ return {
236
+ caps: SLOT_MODE_ORDER.filter((m) => state.found.has(m)),
237
+ unresolved: [...state.unresolved].toSorted(),
238
+ };
239
+ }
240
+
241
+ /** Derive the rungs a subschema permits, in ladder order. */
242
+ export function deriveSlotCaps(schema: unknown): SlotMode[] {
243
+ return deriveSlotCapsDetailed(schema).caps;
244
+ }
245
+
246
+ // ─── Named positions ────────────────────────────────────────────────────────
247
+
248
+ /**
249
+ * `ElementTagName`, with `TagName` INLINED so the walk can see it.
250
+ *
251
+ * The shipped def points at `#/$defs/TagName`, and this walker resolves no pointer into the core
252
+ * schema — `deriveSlotCapsDetailed` reports it as unresolved, and the position derived to Formula
253
+ * alone, silently losing the Fixed-value rung. Substituting the def keeps one source of truth for
254
+ * the branches while giving the derivation something it can actually walk.
255
+ *
256
+ * Note what the pattern buys here for free: `isFreeStringSchema` refuses a constrained string, so
257
+ * no `template` rung is offered — and a `${…}` in tag position is exactly what that pattern exists
258
+ * to reject.
259
+ */
260
+ const ELEMENT_TAG_SCHEMA = {
261
+ anyOf: [tagNameSchema, ...elementTagNameSchema.anyOf.slice(1)],
262
+ } as const;
263
+
264
+ /**
265
+ * The document positions a bindable slot can occupy. A panel names the position it is editing; the
266
+ * rungs follow from the schema, so a panel can no longer offer a rung the compiler would reject —
267
+ * nor withhold one it would accept.
268
+ */
269
+ export const SLOT_POSITION_SCHEMAS = {
270
+ /** `attributes: { … }` — `AttributesObject.additionalProperties`. */
271
+ attribute: attributesObjectSchema.additionalProperties,
272
+ /** `$props: { … }` — `PropsObject.additionalProperties`. */
273
+ componentProp: propsObjectSchema.additionalProperties,
274
+ /** An unlisted element property — `ElementDef.additionalProperties`. */
275
+ elementProperty: elementPropertyValueSchema,
276
+ /** An `on*` handler — the generator's synthesised property shape. */
277
+ eventHandler: EVENT_HANDLER_SCHEMA,
278
+ /** A repeater's `filter` — `ArrayNamespace.properties.filter`. */
279
+ repeaterFilter: arrayNamespaceSchema.properties.filter,
280
+ /** A repeater's `items` — `ArrayNamespace.properties.items`. */
281
+ repeaterItems: arrayNamespaceSchema.properties.items,
282
+ /** A repeater's `sort` — `ArrayNamespace.properties.sort`. */
283
+ repeaterSort: arrayNamespaceSchema.properties.sort,
284
+ /** A declaration inside `style: { … }` — `StyleObject.additionalProperties`. */
285
+ styleProperty: styleObjectSchema.additionalProperties,
286
+ /** A `$switch` discriminant — `SwitchDef`, which is a `$ref` and nothing else. */
287
+ switchDiscriminant: switchDefSchema,
288
+ /**
289
+ * An element's `tagName` — `ElementTagName`: a literal name, or a `TagExpression` choosing
290
+ * between names. The rungs derive to Fixed value + Formula, which is the whole point of naming
291
+ * the position rather than hand-rolling a control: the `TagName` branch carries a `pattern`, so
292
+ * `isFreeStringSchema` correctly refuses to offer a template rung here — a `${…}` in tag position
293
+ * is exactly what the pattern exists to reject.
294
+ */
295
+ elementTag: ELEMENT_TAG_SCHEMA,
296
+ /** A declared string-valued element property (`textContent`, `href`, …) — `StringOrRef`. */
297
+ textProperty: stringOrRefSchema,
298
+ } as const;
299
+
300
+ /** Name of a document position a bindable slot can occupy. */
301
+ export type SlotPosition = keyof typeof SLOT_POSITION_SCHEMAS;
302
+
303
+ /**
304
+ * Where a slot's rungs come from. A named {@link SlotPosition} for every position the document
305
+ * schema declares; a schema handed in directly for the one that cannot be named ahead of time — a
306
+ * field in an extension's own config form, whose schema arrives at runtime from the extension.
307
+ *
308
+ * There is deliberately no third form. A caller may not state which rungs it wants: the rungs are
309
+ * derived from a schema or they are not derived at all.
310
+ */
311
+ export type SlotCapsSource = SlotPosition | { schema: unknown };
312
+
313
+ const capsCache = new Map<SlotPosition, SlotMode[]>();
314
+
315
+ /** The rungs legal at a named document position, derived once and cached. */
316
+ export function capsForPosition(position: SlotPosition): SlotMode[] {
317
+ const hit = capsCache.get(position);
318
+ if (hit) {
319
+ return hit;
320
+ }
321
+ const derived = deriveSlotCaps(SLOT_POSITION_SCHEMAS[position]);
322
+ capsCache.set(position, derived);
323
+ return derived;
324
+ }
325
+
326
+ /** The rungs on offer for a {@link SlotCapsSource} — a named position, or a schema handed in. */
327
+ export function slotCaps(source: SlotCapsSource): SlotMode[] {
328
+ return typeof source === "string" ? capsForPosition(source) : deriveSlotCaps(source.schema);
329
+ }
330
+
331
+ /**
332
+ * The schema of one field in an extension's config form, as something the derivation can walk.
333
+ *
334
+ * Two things a plugin's own fragment does not say, and the form must. An untyped field accepts
335
+ * anything, which for a form control means the free string its widget already draws. And every
336
+ * config value additionally accepts a reactive `$ref` — a data source resolves the pointers in its
337
+ * own config at runtime — which no plugin schema declares because it is not the plugin's to
338
+ * declare. Both are stated here, once, rather than assumed at each form.
339
+ */
340
+ export function configFieldSchema(field: unknown): { anyOf: unknown[] } {
341
+ const declared = deriveSlotCaps(field).length > 0 ? field : { type: "string" };
342
+ return { anyOf: [declared, { $ref: "#/$defs/RefObject" }] };
343
+ }
344
+
345
+ /** Test hook: drop the derivation cache. */
346
+ export function resetCapsCache(): void {
347
+ capsCache.clear();
348
+ }