@jxsuite/studio 2.0.1 → 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-799jpvhm.js → components-2bpqp4mq.js} +5 -7
  7. package/dist/chunks/{components-799jpvhm.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-8jxwts2p.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-gs6kqdt1.js → studio-adn0z1k3.js} +14 -8
  74. package/dist/chunks/{studio-gs6kqdt1.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-esrewxap.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-v7jkjqng.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-jm0z592w.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 +21080 -32585
  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 +7 -0
  214. package/src/new-project/location-fields.ts +9 -1
  215. package/src/new-project/new-project-modal.ts +221 -245
  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 -53
  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 +30 -1
  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 +7 -1
  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-qr3drkkw.js +0 -531
  363. package/dist/chunks/extension-sections-qr3drkkw.js.map +0 -12
  364. package/dist/chunks/files-j8a1t06k.js +0 -50
  365. package/dist/chunks/files-j8a1t06k.js.map +0 -9
  366. package/dist/chunks/git-panel-xtq5z81x.js +0 -28
  367. package/dist/chunks/git-panel-xtq5z81x.js.map +0 -9
  368. package/dist/chunks/layers-panel-ancn2wpq.js +0 -26
  369. package/dist/chunks/layers-panel-ancn2wpq.js.map +0 -9
  370. package/dist/chunks/settings-modal-17ttr96g.js +0 -29
  371. package/dist/chunks/settings-modal-17ttr96g.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-0xgs7xrs.js +0 -429
  381. package/dist/chunks/studio-0xgs7xrs.js.map +0 -13
  382. package/dist/chunks/studio-4d8hzcz5.js +0 -3427
  383. package/dist/chunks/studio-4d8hzcz5.js.map +0 -26
  384. package/dist/chunks/studio-4k0m4fmp.js.map +0 -13
  385. package/dist/chunks/studio-9smfzqhc.js +0 -19
  386. package/dist/chunks/studio-9smfzqhc.js.map +0 -10
  387. package/dist/chunks/studio-jm0z592w.js.map +0 -115
  388. package/dist/chunks/studio-m2t4mdg5.js +0 -1854
  389. package/dist/chunks/studio-m2t4mdg5.js.map +0 -18
  390. package/dist/chunks/studio-n4p11dfy.js +0 -853
  391. package/dist/chunks/studio-n4p11dfy.js.map +0 -12
  392. package/dist/chunks/studio-qkvt37c0.js.map +0 -9
  393. package/dist/chunks/studio-sjh1wt1a.js +0 -3744
  394. package/dist/chunks/studio-sjh1wt1a.js.map +0 -22
  395. package/dist/chunks/studio-v7jkjqng.js.map +0 -46
  396. package/dist/chunks/studio-xq0t7n5t.js +0 -140
  397. package/dist/chunks/studio-xq0t7n5t.js.map +0 -10
  398. package/dist/chunks/studio-xze4zrs1.js.map +0 -10
  399. package/dist/chunks/studio-yfcstdzy.js +0 -399
  400. package/dist/chunks/studio-yfcstdzy.js.map +0 -12
  401. package/dist/chunks/studio-zp7jncs8.js +0 -469
  402. package/dist/chunks/studio-zp7jncs8.js.map +0 -14
  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-8jxwts2p.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-esrewxap.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
@@ -1,12 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/settings/contributed-section.ts", "../src/panels/data-grid.ts", "../src/settings/extension-sections.ts"],
4
- "sourcesContent": [
5
- "/// <reference lib=\"dom\" />\n/**\n * Contributed settings section — the generic renderer behind `$studio.settings`\n * (specs/extensions.md §9.1). An extension's `project` class declares a settings section and this\n * module renders it over `projectConfig[key]`: layout \"form\" is one schema form over the whole\n * section value; layout \"map\" is master-detail (key list left, entry form right) for `type: object`\n * + `additionalProperties` sections. Persistence mirrors the content-types editor: mutate\n * projectState.projectConfig and rewrite project.json through the platform.\n */\n\nimport { html, nothing, render as litRender } from \"lit-html\";\nimport { getPlatform } from \"../platform\";\nimport { projectState } from \"../store\";\nimport { renderForm } from \"../ui/schema-form\";\nimport { resolveContextPointer } from \"../services/context-resolver\";\nimport { deriveSecretEnvName } from \"../services/data-service\";\n\nimport type { TemplateResult } from \"lit-html\";\nimport type { JsonSchema, SchemaFormContext } from \"../ui/schema-form\";\nimport type { ProjectConfig } from \"@jxsuite/schema/types\";\n\n// ─── Contribution shape ───────────────────────────────────────────────────────\n\n/** A `$studio.settings` contribution paired with the entry schema from the project fragment. */\nexport interface SettingsContribution {\n /** The project.json top-level property the section owns. */\n key: string;\n /** Section heading; falls back to the key. */\n title?: string | undefined;\n /** The `$studio.settings` block from the class descriptor. */\n settings: {\n layout?: \"map\" | \"form\" | undefined;\n entry?:\n | {\n ui?: Record<string, { control?: string; enum?: unknown }> | undefined;\n newEntry?: Record<string, unknown> | undefined;\n }\n | undefined;\n };\n /** JSON Schema for one entry (map layout) or the whole section value (form layout). */\n entrySchema: JsonSchema;\n}\n\n/** Context handed to a host-provided section actions renderer. */\nexport interface SectionActionsContext {\n sectionKey: string;\n /** The selected entry key (map layout), or null. */\n selected: string | null;\n rerender: () => void;\n}\n\n/** Host options threaded to the schema-form context. */\nexport interface ContributedSectionOptions {\n /** Registered formats backing the `$formats` virtual root. */\n formats?: { name: string }[] | undefined;\n /**\n * Optional actions row rendered under the section title — the hook domain modules use to surface\n * section-scoped operations (e.g. the data surface's Test/Push actions) without the generic\n * renderer knowing any extension.\n */\n actions?: ((ctx: SectionActionsContext) => TemplateResult) | undefined;\n}\n\n// ─── Module state ─────────────────────────────────────────────────────────────\n\n/** Selected entry key per section (map layout). */\nconst selectedEntries = new Map<string, string | null>();\n/** Sections whose new-entry form is open (map layout). */\nconst newEntryOpen = new Set<string>();\n/** Pending new-entry names per section (map layout). */\nconst newEntryNames = new Map<string, string>();\n\n/** Reset contributed-section ephemeral UI state (test hook). */\nexport function resetContributedSectionState(): void {\n selectedEntries.clear();\n newEntryOpen.clear();\n newEntryNames.clear();\n}\n\n// ─── Persistence ──────────────────────────────────────────────────────────────\n\nasync function saveProjectConfig() {\n const platform = getPlatform();\n const config = (projectState as { projectConfig: ProjectConfig }).projectConfig;\n await platform.writeFile(\"project.json\", JSON.stringify(config, null, \"\\t\"));\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Apply a schema-form patch onto a record in place; `undefined` values unset the key. */\nfunction applyPatch(target: Record<string, unknown>, patch: Record<string, unknown>) {\n for (const [key, value] of Object.entries(patch)) {\n if (value === undefined) {\n delete target[key];\n } else {\n target[key] = value;\n }\n }\n}\n\n/** Slugify a user-entered entry name — same rules as new content-type names. */\nfunction slugify(name: string): string {\n return name\n .toLowerCase()\n .replaceAll(/\\s+/g, \"-\")\n .replaceAll(/[^a-z0-9-]/g, \"\");\n}\n\n/** Instantiate a newEntry template, substituting `${key}` in every string value. */\nfunction instantiateNewEntry(\n template: Record<string, unknown> | undefined,\n key: string,\n): Record<string, unknown> {\n if (!template) {\n return {};\n }\n const substitute = (value: unknown): unknown => {\n if (typeof value === \"string\") {\n return value.replaceAll(\"${key}\", key);\n }\n if (Array.isArray(value)) {\n return value.map((item) => substitute(item));\n }\n if (value && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n out[k] = substitute(v);\n }\n return out;\n }\n return value;\n };\n return substitute(template) as Record<string, unknown>;\n}\n\n/**\n * Schema-form context resolving `#/$context/…` pointers over the live project config. When the\n * platform has a secrets surface, `commitSecret` backs the \"secret\" control: the VALUE goes to\n * platform.setSecrets under a derived env name; the returned NAME is what lands in project.json.\n */\nfunction buildContext(\n sectionKey: string,\n opts: ContributedSectionOptions,\n entryKey: string | null = null,\n): SchemaFormContext {\n const platform = getPlatform();\n return {\n fieldKeyPrefix: `$settings.${sectionKey}`,\n resolvePointer: (pointer, scope) =>\n resolveContextPointer(pointer, {\n projectConfig: (projectState?.projectConfig ?? {}) as Record<string, unknown>,\n ...(scope !== undefined && { scope }),\n ...(opts.formats !== undefined && { formats: opts.formats }),\n }),\n ...(typeof platform.setSecrets === \"function\"\n ? {\n commitSecret: async (key: string, value: string) => {\n const envName = deriveSecretEnvName(sectionKey, entryKey, key);\n await platform.setSecrets!({ set: { [envName]: value } });\n return envName;\n },\n }\n : {}),\n };\n}\n\n/** The section's value object in the project config, created on demand. */\nfunction sectionValue(key: string): Record<string, unknown> | null {\n const config = projectState?.projectConfig as Record<string, unknown> | null | undefined;\n if (!config) {\n return null;\n }\n const existing = config[key];\n if (existing && typeof existing === \"object\" && !Array.isArray(existing)) {\n return existing as Record<string, unknown>;\n }\n const fresh: Record<string, unknown> = {};\n config[key] = fresh;\n return fresh;\n}\n\n// ─── Render ───────────────────────────────────────────────────────────────────\n\n/**\n * Render a contributed settings section into a settings-modal content container.\n *\n * @param {HTMLElement} container\n * @param {SettingsContribution} contribution\n * @param {ContributedSectionOptions} [opts]\n */\nexport function renderContributedSection(\n container: HTMLElement,\n contribution: SettingsContribution,\n opts: ContributedSectionOptions = {},\n) {\n const rerender = () => renderContributedSection(container, contribution, opts);\n const title = contribution.title ?? contribution.key;\n const layout = contribution.settings.layout ?? \"form\";\n\n const body =\n layout === \"map\"\n ? renderMapLayout(contribution, opts, rerender)\n : renderFormLayout(contribution, opts, rerender);\n\n const selected = layout === \"map\" ? (selectedEntries.get(contribution.key) ?? null) : null;\n const actions = opts.actions\n ? opts.actions({ rerender, sectionKey: contribution.key, selected })\n : nothing;\n\n const tpl = html`\n <div class=\"settings-section contributed-section\">\n <h3 class=\"settings-section-title\">${title}</h3>\n ${actions}${body}\n </div>\n `;\n\n litRender(tpl, container);\n}\n\n/** Layout \"form\" — one schema form over the whole section value. */\nfunction renderFormLayout(\n contribution: SettingsContribution,\n opts: ContributedSectionOptions,\n rerender: () => void,\n): TemplateResult {\n const value = sectionValue(contribution.key) ?? {};\n const ui = contribution.settings.entry?.ui;\n\n return html`\n <div class=\"settings-form-panel\">\n ${renderForm(contribution.entrySchema, value, {\n context: buildContext(contribution.key, opts, null),\n onChange: (patch) => {\n const target = sectionValue(contribution.key);\n if (!target) {\n return;\n }\n applyPatch(target, patch);\n rerender();\n void saveProjectConfig();\n },\n rerender,\n ...(ui !== undefined && { ui }),\n })}\n </div>\n `;\n}\n\n/** Layout \"map\" — master-detail: entry key list left, entry form right. */\nfunction renderMapLayout(\n contribution: SettingsContribution,\n opts: ContributedSectionOptions,\n rerender: () => void,\n): TemplateResult {\n const { key: sectionKey } = contribution;\n const entries = sectionValue(sectionKey) ?? {};\n const entryKeys = Object.keys(entries);\n const selected = selectedEntries.get(sectionKey) ?? null;\n const ui = contribution.settings.entry?.ui;\n\n const handleCreate = () => {\n const slug = slugify(newEntryNames.get(sectionKey) ?? \"\");\n const target = sectionValue(sectionKey);\n if (!slug || !target || target[slug]) {\n return;\n }\n target[slug] = instantiateNewEntry(contribution.settings.entry?.newEntry, slug);\n selectedEntries.set(sectionKey, slug);\n newEntryOpen.delete(sectionKey);\n newEntryNames.delete(sectionKey);\n rerender();\n void saveProjectConfig();\n };\n\n const handleDelete = () => {\n const target = sectionValue(sectionKey);\n if (!selected || !target?.[selected]) {\n return;\n }\n delete target[selected];\n selectedEntries.set(sectionKey, null);\n rerender();\n void saveProjectConfig();\n };\n\n const handleRename = (newName: string) => {\n const target = sectionValue(sectionKey);\n const slug = slugify(newName);\n if (!selected || !target || !slug || slug === selected || target[slug]) {\n return;\n }\n // Rebuild the map to preserve entry order under the new key\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(target)) {\n next[k === selected ? slug : k] = v;\n delete target[k];\n }\n Object.assign(target, next);\n selectedEntries.set(sectionKey, slug);\n rerender();\n void saveProjectConfig();\n };\n\n // Left column — entry key list\n const listTpl = html`\n <div class=\"settings-list-panel\">\n ${entryKeys.map(\n (name) => html`\n <sp-action-button\n size=\"s\"\n ?selected=${selected === name}\n @click=${() => {\n selectedEntries.set(sectionKey, name);\n rerender();\n }}\n >\n ${name}\n </sp-action-button>\n `,\n )}\n ${\n newEntryOpen.has(sectionKey)\n ? html`\n <div class=\"settings-inline-form\">\n <sp-textfield\n size=\"s\"\n placeholder=\"entry-name\"\n .value=${newEntryNames.get(sectionKey) ?? \"\"}\n @input=${(e: Event) => {\n newEntryNames.set(sectionKey, (e.target as HTMLInputElement).value);\n }}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n handleCreate();\n }\n if (e.key === \"Escape\") {\n newEntryOpen.delete(sectionKey);\n rerender();\n }\n }}\n ></sp-textfield>\n <sp-action-button size=\"s\" @click=${handleCreate}>Create</sp-action-button>\n </div>\n `\n : html`\n <sp-action-button\n size=\"s\"\n quiet\n @click=${() => {\n newEntryOpen.add(sectionKey);\n rerender();\n }}\n >\n <sp-icon-add slot=\"icon\"></sp-icon-add> New Entry\n </sp-action-button>\n `\n }\n </div>\n `;\n\n // Right column — entry form\n const selectedEntry = selected ? entries[selected] : undefined;\n const editorTpl: TemplateResult =\n selected && selectedEntry && typeof selectedEntry === \"object\"\n ? html`\n <div class=\"settings-editor-panel\">\n <div class=\"settings-editor-header\">\n <sp-textfield\n size=\"s\"\n quiet\n class=\"entry-name-input\"\n value=${selected}\n @change=${(e: Event) => {\n const target = e.target as HTMLInputElement;\n handleRename(target.value.trim());\n target.value = selectedEntries.get(sectionKey) ?? selected;\n }}\n @keydown=${(e: KeyboardEvent) => {\n const target = e.target as HTMLInputElement;\n if (e.key === \"Enter\") {\n target.blur();\n }\n if (e.key === \"Escape\") {\n target.value = selected;\n target.blur();\n }\n }}\n ></sp-textfield>\n <sp-action-button size=\"xs\" quiet title=\"Delete entry\" @click=${handleDelete}>\n <sp-icon-delete slot=\"icon\"></sp-icon-delete>\n </sp-action-button>\n </div>\n ${renderForm(contribution.entrySchema, selectedEntry as Record<string, unknown>, {\n context: buildContext(sectionKey, opts, selected),\n onChange: (patch) => {\n applyPatch(selectedEntry as Record<string, unknown>, patch);\n rerender();\n void saveProjectConfig();\n },\n rerender,\n ...(ui !== undefined && { ui }),\n })}\n </div>\n `\n : html`<div class=\"settings-empty-state\">Select or create an entry</div>`;\n\n return html` <div class=\"settings-two-col\">${listTpl} ${editorTpl}</div> `;\n}\n",
6
- "/// <reference lib=\"dom\" />\n/**\n * Data section actions — the owner console entry points over the platform's data surface.\n *\n * Integration: the settings modal's contributed sections stay fully generic — extension-sections\n * passes this module's {@link dataSectionActions} into the ContributedSectionOptions.actions slot\n * for the data-domain sections (\"connections\"/\"data\") whenever the platform implements the\n * protocol's data routes. Those actions surface Test Connection, Push Schema (dry-run plan\n * confirmation before apply), and Open Data Grid — which opens the grid-tab source picker; table\n * editing itself lives in the spreadsheet grid tabs (src/grid/), which replaced the old modal grid\n * at feature parity (paging, cell edit, add/delete row) and added batch save with undo.\n */\n\nimport { html, nothing } from \"lit-html\";\nimport { openModal } from \"../ui/layers\";\nimport { dataSurfaceAvailable, pushSchema, testConnection } from \"../services/data-service\";\nimport { openGridSourcePicker } from \"../grid/grid-open\";\nimport type { TemplateResult } from \"lit-html\";\nimport type { DataConnectionTestResult, DataPushResult } from \"../types\";\nimport type { SectionActionsContext } from \"../settings/contributed-section\";\n\n// ─── Grid opening (delegates to the grid-tab source picker) ──────────────────\n\n/** Reset all module UI state and close any open surfaces (test hook / project switch). */\nexport function resetDataGridState(): void {\n actionsState = { pushing: false, testResult: null, testing: null };\n closePushDialog();\n}\n\n/** True when the platform serves the data grid. */\nexport function isDataGridAvailable(): boolean {\n return dataSurfaceAvailable();\n}\n\n// ─── Push dialog (dry-run plan confirmation before apply) ─────────────────────\n\ninterface PushDialogState {\n handle: ReturnType<typeof openModal>;\n connection: string | undefined;\n phase: \"loading\" | \"confirm\" | \"applying\" | \"done\";\n plan: DataPushResult | null;\n result: DataPushResult | null;\n onDone: () => void;\n}\n\nlet pushDialog: PushDialogState | null = null;\n\n/** Close the push dialog (also part of resetDataGridState). */\nfunction closePushDialog(): void {\n pushDialog?.handle.close();\n pushDialog = null;\n}\n\n/** Start a push: dry-run first, then a confirmation dialog gates the apply. */\nexport async function startPush(connection: string | undefined, onDone: () => void) {\n if (pushDialog) {\n return;\n }\n const handle = openModal(html``);\n pushDialog = { connection, handle, onDone, phase: \"loading\", plan: null, result: null };\n renderPushDialog();\n const plan = await pushSchema({\n dryRun: true,\n ...(connection === undefined ? {} : { connection }),\n });\n if (!pushDialog) {\n return;\n }\n pushDialog.plan = plan;\n pushDialog.phase = \"confirm\";\n renderPushDialog();\n}\n\nasync function applyPush(): Promise<void> {\n if (!pushDialog) {\n return;\n }\n pushDialog.phase = \"applying\";\n renderPushDialog();\n const result = await pushSchema(\n pushDialog.connection === undefined ? {} : { connection: pushDialog.connection },\n );\n if (!pushDialog) {\n return;\n }\n pushDialog.result = result;\n pushDialog.phase = \"done\";\n renderPushDialog();\n pushDialog.onDone();\n}\n\nfunction pushDialogBody(state: PushDialogState): TemplateResult {\n if (state.phase === \"loading\" || state.phase === \"applying\") {\n return html`<div class=\"push-dialog-status\">\n ${state.phase === \"loading\" ? \"Compiling plan…\" : \"Applying…\"}\n </div>`;\n }\n const shown = state.phase === \"done\" ? state.result : state.plan;\n const steps = shown?.plan ?? [];\n const warnings = shown?.warnings ?? [];\n const errors = shown?.errors ?? [];\n return html`\n <div class=\"push-dialog-plan\">\n ${\n state.phase === \"done\"\n ? html`<div class=\"push-dialog-status\">\n ${shown?.applied ? \"Schema applied.\" : \"Push failed.\"}\n </div>`\n : steps.length === 0 && errors.length === 0\n ? html`<div class=\"push-dialog-status\">\n Nothing to push — the schema is up to date.\n </div>`\n : nothing\n }\n <ul class=\"push-dialog-steps\">\n ${steps.map(\n (step) => html`<li class=\"push-step push-step-${step.kind}\">${step.summary}</li>`,\n )}\n </ul>\n ${warnings.map((w) => html`<div class=\"push-dialog-warning\">${w}</div>`)}\n ${errors.map((e) => html`<div class=\"push-dialog-error\">${e}</div>`)}\n </div>\n `;\n}\n\nfunction renderPushDialog(): void {\n if (!pushDialog) {\n return;\n }\n const state = pushDialog;\n const confirmable = state.phase === \"confirm\" && (state.plan?.plan.length ?? 0) > 0;\n const tpl = html`\n <sp-underlay open @close=${closePushDialog}></sp-underlay>\n <div class=\"settings-modal push-dialog\">\n <div class=\"settings-modal-header\">\n <h2 class=\"settings-modal-title\">\n Push Schema${state.connection ? html` — ${state.connection}` : nothing}\n </h2>\n </div>\n <div class=\"settings-modal-body\">${pushDialogBody(state)}</div>\n <div class=\"push-dialog-actions\">\n <sp-action-button size=\"s\" class=\"push-cancel\" @click=${closePushDialog}>\n ${state.phase === \"done\" ? \"Close\" : \"Cancel\"}\n </sp-action-button>\n ${\n confirmable\n ? html`<sp-action-button\n size=\"s\"\n emphasized\n class=\"push-apply\"\n @click=${() => void applyPush()}\n >Apply</sp-action-button\n >`\n : nothing\n }\n </div>\n </div>\n `;\n state.handle.update(tpl);\n}\n\n// ─── Contributed-section actions (Test / Push / Open grid) ────────────────────\n\ninterface ActionsState {\n /** Connection currently being tested, when any. */\n testing: string | null;\n testResult: (DataConnectionTestResult & { connection: string }) | null;\n pushing: boolean;\n}\n\nlet actionsState: ActionsState = { pushing: false, testResult: null, testing: null };\n\n/**\n * The actions renderer for a data-domain contributed section, or null when the section is not\n * data-domain or the platform lacks the data routes. Section keys \"connections\"/\"data\" are the\n * connector's host wire contract (the same literals the backend's data routes serve) — the generic\n * contributed-section renderer itself stays extension-agnostic.\n *\n * @param {string} sectionKey\n * @returns {((ctx: SectionActionsContext) => TemplateResult) | null}\n */\nexport function dataSectionActions(\n sectionKey: string,\n): ((ctx: SectionActionsContext) => TemplateResult) | null {\n if ((sectionKey !== \"connections\" && sectionKey !== \"data\") || !dataSurfaceAvailable()) {\n return null;\n }\n return (ctx) => renderSectionActions(sectionKey, ctx);\n}\n\nasync function runTest(connection: string, rerender: () => void): Promise<void> {\n actionsState.testing = connection;\n actionsState.testResult = null;\n rerender();\n const result = await testConnection(connection);\n actionsState.testing = null;\n actionsState.testResult = { ...result, connection };\n rerender();\n}\n\nfunction renderSectionActions(sectionKey: string, ctx: SectionActionsContext): TemplateResult {\n const { selected, rerender } = ctx;\n const { testResult } = actionsState;\n // On the connections section a selected entry scopes both Test and Push to that connection.\n const pushTarget = sectionKey === \"connections\" && selected ? selected : undefined;\n return html`\n <div class=\"data-section-actions\">\n ${\n sectionKey === \"connections\"\n ? html`<sp-action-button\n size=\"s\"\n class=\"data-action-test\"\n ?disabled=${!selected || actionsState.testing !== null}\n @click=${() => {\n if (selected) {\n void runTest(selected, rerender);\n }\n }}\n >\n ${actionsState.testing ? \"Testing…\" : \"Test Connection\"}\n </sp-action-button>`\n : nothing\n }\n <sp-action-button\n size=\"s\"\n class=\"data-action-push\"\n @click=${() => void startPush(pushTarget, rerender)}\n >\n Push Schema\n </sp-action-button>\n <sp-action-button\n size=\"s\"\n class=\"data-action-grid\"\n @click=${() => void openGridSourcePicker()}\n >\n Open Data Grid\n </sp-action-button>\n ${\n testResult\n ? html`<span\n class=\"data-test-result ${testResult.ok ? \"ok\" : \"failed\"}\"\n title=${testResult.error ?? \"\"}\n >\n ${testResult.connection}:\n ${testResult.ok ? \"connected\" : (testResult.error ?? \"failed\")}\n </span>`\n : nothing\n }\n </div>\n `;\n}\n",
7
- "/// <reference lib=\"dom\" />\n/**\n * Extension settings sections — bridges the extensions payload (platform `listExtensions`) into the\n * settings-modal registry. Every project-section contribution whose class declares a\n * `$studio.settings` block (specs/extensions.md §9.1) gets a section rendered generically by\n * renderContributedSection; sections vanish again when their extension is disabled. The studio\n * hard-codes nothing per extension — parser's Content Types section arrives through this exact\n * path.\n */\n\nimport { getFormats, loadExtensions, loadFormats } from \"../format/format-host\";\nimport { registerSettingsSection, unregisterSettingsSection } from \"./settings-modal\";\nimport { renderContributedSection } from \"./contributed-section\";\nimport { dataSectionActions } from \"../panels/data-grid\";\nimport type { ExtensionContributionInfo } from \"../types\";\nimport type { JsonSchema } from \"../ui/schema-form\";\nimport type { SettingsContribution } from \"./contributed-section\";\n\n/** The `$studio.settings` block shape consumed here (nav metadata + the renderer inputs). */\ninterface StudioSettingsBlock {\n icon?: string;\n label?: string;\n order?: number;\n layout?: \"map\" | \"form\";\n entry?: SettingsContribution[\"settings\"][\"entry\"];\n}\n\n/** A contribution resolved into settings-modal registration inputs. */\nexport interface DerivedSettingsSection {\n key: string;\n label: string;\n icon?: string | undefined;\n order: number;\n contribution: SettingsContribution;\n}\n\n/** Default sort position for contributed sections without an explicit `order`. */\nconst DEFAULT_SECTION_ORDER = 100;\n\n/**\n * Derive the settings-modal registration for one contribution, or null when its class declares no\n * `$studio.settings` block. The wire `entrySchema` is the SECTION value schema (`properties[<key>]`\n * of the project fragment); map layouts edit one entry at a time, so their form schema is that\n * section schema's `additionalProperties`.\n *\n * @param {ExtensionContributionInfo} info\n * @returns {DerivedSettingsSection | null}\n */\nexport function deriveSettingsSection(\n info: ExtensionContributionInfo,\n): DerivedSettingsSection | null {\n const studio = info.studio as { settings?: StudioSettingsBlock } | null | undefined;\n const settings = studio?.settings;\n if (!settings) {\n return null;\n }\n const { key } = info.project;\n const layout = settings.layout ?? \"form\";\n const sectionSchema = (info.entrySchema ?? {}) as JsonSchema & {\n additionalProperties?: JsonSchema | boolean;\n };\n const entrySchema =\n layout === \"map\"\n ? typeof sectionSchema.additionalProperties === \"object\"\n ? sectionSchema.additionalProperties\n : {}\n : (sectionSchema as JsonSchema);\n const label = settings.label ?? info.project.title ?? key;\n return {\n contribution: {\n entrySchema,\n key,\n settings: {\n ...(settings.entry === undefined ? {} : { entry: settings.entry }),\n ...(settings.layout === undefined ? {} : { layout: settings.layout }),\n },\n title: label,\n },\n icon: settings.icon,\n key,\n label,\n order: settings.order ?? DEFAULT_SECTION_ORDER,\n };\n}\n\n/** Section keys this module registered, so stale ones unregister on project/extension change. */\nconst registeredKeys = new Set<string>();\n\n/**\n * Load the extensions payload and (re)register a settings section per `$studio.settings`\n * contribution, unregistering sections whose extension is no longer enabled. Formats load alongside\n * so the `$formats` context root has data at render time. Call on project activation and after\n * project.json `extensions` changes; loadExtensions caches, so repeat calls are cheap.\n */\nexport async function syncExtensionSettingsSections(): Promise<void> {\n const [extensions] = await Promise.all([loadExtensions(), loadFormats()]);\n const next = new Set<string>();\n for (const ext of extensions) {\n for (const info of ext.contributions) {\n const derived = deriveSettingsSection(info);\n if (!derived) {\n continue;\n }\n const { contribution } = derived;\n registerSettingsSection({\n icon: derived.icon,\n key: derived.key,\n label: derived.label,\n order: derived.order,\n render: (container) => {\n // Data-domain sections get the Test/Push/Data-grid actions slot when the platform\n // Implements the protocol's data routes; every other section renders actions-free.\n const actions = dataSectionActions(derived.key);\n renderContributedSection(container, contribution, {\n formats: getFormats(),\n ...(actions === null ? {} : { actions }),\n });\n },\n });\n next.add(derived.key);\n }\n }\n for (const key of registeredKeys) {\n if (!next.has(key)) {\n unregisterSettingsSection(key);\n }\n }\n registeredKeys.clear();\n for (const key of next) {\n registeredKeys.add(key);\n }\n}\n\n/** Unregister every section this module added and forget them (project close / tests). */\nexport function resetExtensionSettingsSections(): void {\n for (const key of registeredKeys) {\n unregisterSettingsSection(key);\n }\n registeredKeys.clear();\n}\n\n/** The section keys currently registered by this module (diagnostics/tests). */\nexport function extensionSectionKeys(): string[] {\n return [...registeredKeys];\n}\n"
8
- ],
9
- "mappings": "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",
10
- "debugId": "B810C054A80BCC0264756E2164756E21",
11
- "names": []
12
- }
@@ -1,50 +0,0 @@
1
- import {
2
- findHomePage,
3
- isFileDrag,
4
- loadDirectory,
5
- loadProject,
6
- openFileFromTree,
7
- openFileInTab,
8
- openHomePage,
9
- openProject,
10
- pickAndUploadTo,
11
- registerFileTreeDnD,
12
- reloadCleanTab,
13
- reloadFileInTab,
14
- renderFilesTemplate,
15
- setupTreeKeyboard,
16
- uploadFilesToDir
17
- } from "./studio-4d8hzcz5.js";
18
- import"./studio-v7jkjqng.js";
19
- import"./studio-esrewxap.js";
20
- import"./studio-cx91mnh8.js";
21
- import"./studio-zp7jncs8.js";
22
- import"./studio-0xgs7xrs.js";
23
- import"./studio-sjh1wt1a.js";
24
- import"./studio-4k0m4fmp.js";
25
- import"./studio-5x5774ak.js";
26
- import"./studio-gs6kqdt1.js";
27
- import"./studio-9smfzqhc.js";
28
- import"./studio-5ehhackm.js";
29
- import"./studio-kr88ryr7.js";
30
- import"./studio-md4gps17.js";
31
- export {
32
- uploadFilesToDir,
33
- setupTreeKeyboard,
34
- renderFilesTemplate,
35
- reloadFileInTab,
36
- reloadCleanTab,
37
- registerFileTreeDnD,
38
- pickAndUploadTo,
39
- openProject,
40
- openHomePage,
41
- openFileInTab,
42
- openFileFromTree,
43
- loadProject,
44
- loadDirectory,
45
- isFileDrag,
46
- findHomePage
47
- };
48
-
49
- //# debugId=25D358EDFF4B1C0F64756E2164756E21
50
- //# sourceMappingURL=files-j8a1t06k.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "25D358EDFF4B1C0F64756E2164756E21",
8
- "names": []
9
- }
@@ -1,28 +0,0 @@
1
- import {
2
- cleanupGitPanel,
3
- cloneRepository,
4
- platformSupportsClone,
5
- refreshGitStatus,
6
- renderGitPanel
7
- } from "./studio-n4p11dfy.js";
8
- import"./studio-xq0t7n5t.js";
9
- import"./studio-nqw433kv.js";
10
- import"./studio-zp7jncs8.js";
11
- import"./studio-0xgs7xrs.js";
12
- import"./studio-sjh1wt1a.js";
13
- import"./studio-4k0m4fmp.js";
14
- import"./studio-5x5774ak.js";
15
- import"./studio-gs6kqdt1.js";
16
- import"./studio-9smfzqhc.js";
17
- import"./studio-5ehhackm.js";
18
- import"./studio-md4gps17.js";
19
- export {
20
- renderGitPanel,
21
- refreshGitStatus,
22
- platformSupportsClone,
23
- cloneRepository,
24
- cleanupGitPanel
25
- };
26
-
27
- //# debugId=202FF1FFD392856464756E2164756E21
28
- //# sourceMappingURL=git-panel-xtq5z81x.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "202FF1FFD392856464756E2164756E21",
8
- "names": []
9
- }
@@ -1,26 +0,0 @@
1
- import {
2
- renderLayersTemplate,
3
- startLayerTitleEdit
4
- } from "./studio-jm0z592w.js";
5
- import"./studio-yfcstdzy.js";
6
- import"./studio-v7jkjqng.js";
7
- import"./studio-esrewxap.js";
8
- import"./studio-cx91mnh8.js";
9
- import"./studio-xq0t7n5t.js";
10
- import"./studio-nqw433kv.js";
11
- import"./studio-0xgs7xrs.js";
12
- import"./studio-sjh1wt1a.js";
13
- import"./studio-4k0m4fmp.js";
14
- import"./studio-5x5774ak.js";
15
- import"./studio-gs6kqdt1.js";
16
- import"./studio-9smfzqhc.js";
17
- import"./studio-5ehhackm.js";
18
- import"./studio-kr88ryr7.js";
19
- import"./studio-md4gps17.js";
20
- export {
21
- startLayerTitleEdit,
22
- renderLayersTemplate
23
- };
24
-
25
- //# debugId=9E07C89FC905EE3F64756E2164756E21
26
- //# sourceMappingURL=layers-panel-ancn2wpq.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "9E07C89FC905EE3F64756E2164756E21",
8
- "names": []
9
- }
@@ -1,29 +0,0 @@
1
- import {
2
- closeSettingsModal,
3
- openSettingsModal,
4
- registerSettingsSection,
5
- unregisterSettingsSection
6
- } from "./studio-m2t4mdg5.js";
7
- import"./studio-4d8hzcz5.js";
8
- import"./studio-v7jkjqng.js";
9
- import"./studio-esrewxap.js";
10
- import"./studio-cx91mnh8.js";
11
- import"./studio-zp7jncs8.js";
12
- import"./studio-0xgs7xrs.js";
13
- import"./studio-sjh1wt1a.js";
14
- import"./studio-4k0m4fmp.js";
15
- import"./studio-5x5774ak.js";
16
- import"./studio-gs6kqdt1.js";
17
- import"./studio-9smfzqhc.js";
18
- import"./studio-5ehhackm.js";
19
- import"./studio-kr88ryr7.js";
20
- import"./studio-md4gps17.js";
21
- export {
22
- unregisterSettingsSection,
23
- registerSettingsSection,
24
- openSettingsModal,
25
- closeSettingsModal
26
- };
27
-
28
- //# debugId=FB9DCE1CA4789AFC64756E2164756E21
29
- //# sourceMappingURL=settings-modal-17ttr96g.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "FB9DCE1CA4789AFC64756E2164756E21",
8
- "names": []
9
- }
@@ -1,17 +0,0 @@
1
- import"./studio-9qpspwfn.js";
2
- import"./studio-18j3bmcz.js";
3
- import"./studio-5x6tqqec.js";
4
- import"./studio-ahnzd9rg.js";
5
- import"./studio-9bjwf0d4.js";
6
- import"./studio-z6nw2ek2.js";
7
- import"./studio-8q517dfr.js";
8
- import"./studio-9qr6fq7p.js";
9
- import"./studio-cx91mnh8.js";
10
- import"./studio-xq0t7n5t.js";
11
- import"./studio-nqw433kv.js";
12
- import"./studio-4k0m4fmp.js";
13
- import"./studio-5x5774ak.js";
14
- import"./studio-md4gps17.js";
15
-
16
- //# debugId=18F514E3BA3E1B2064756E2164756E21
17
- //# sourceMappingURL=sp-overlay.dev-earn5as8.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "18F514E3BA3E1B2064756E2164756E21",
8
- "names": []
9
- }
@@ -1,8 +0,0 @@
1
- import"./studio-h3fw0wn8.js";
2
- import"./studio-18j3bmcz.js";
3
- import"./studio-9qr6fq7p.js";
4
- import"./studio-5x5774ak.js";
5
- import"./studio-md4gps17.js";
6
-
7
- //# debugId=5BB1265E0C39CAD664756E2164756E21
8
- //# sourceMappingURL=sp-popover.dev-frxtfejn.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "5BB1265E0C39CAD664756E2164756E21",
8
- "names": []
9
- }
@@ -1,14 +0,0 @@
1
- import"./studio-56v3zwk6.js";
2
- import"./studio-18j3bmcz.js";
3
- import"./studio-ahnzd9rg.js";
4
- import"./studio-9bjwf0d4.js";
5
- import"./studio-9qr6fq7p.js";
6
- import"./studio-cx91mnh8.js";
7
- import"./studio-xq0t7n5t.js";
8
- import"./studio-nqw433kv.js";
9
- import"./studio-4k0m4fmp.js";
10
- import"./studio-5x5774ak.js";
11
- import"./studio-md4gps17.js";
12
-
13
- //# debugId=4FDFA7FE6DB806F664756E2164756E21
14
- //# sourceMappingURL=sp-progress-circle.dev-7tvw34h8.js.map
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "4FDFA7FE6DB806F664756E2164756E21",
8
- "names": []
9
- }
@@ -1,21 +0,0 @@
1
- import {
2
- Tooltip
3
- } from "./studio-7kqe41sa.js";
4
- import {
5
- defineElement
6
- } from "./studio-18j3bmcz.js";
7
- import"./studio-9bjwf0d4.js";
8
- import"./studio-8q517dfr.js";
9
- import"./studio-9qr6fq7p.js";
10
- import"./studio-cx91mnh8.js";
11
- import"./studio-xq0t7n5t.js";
12
- import"./studio-nqw433kv.js";
13
- import"./studio-4k0m4fmp.js";
14
- import"./studio-5x5774ak.js";
15
- import"./studio-md4gps17.js";
16
-
17
- // ../../node_modules/@spectrum-web-components/tooltip/sp-tooltip.dev.js
18
- defineElement("sp-tooltip", Tooltip);
19
-
20
- //# debugId=ECD0D4033F1DB62D64756E2164756E21
21
- //# sourceMappingURL=sp-tooltip.dev-a9fywesm.js.map
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/@spectrum-web-components/tooltip/sp-tooltip.dev.js"],
4
- "sourcesContent": [
5
- "\"use strict\";\nimport { defineElement } from \"@spectrum-web-components/base/src/define-element.js\";\nimport { Tooltip } from \"./src/Tooltip.dev.js\";\ndefineElement(\"sp-tooltip\", Tooltip);\n//# sourceMappingURL=sp-tooltip.dev.js.map\n"
6
- ],
7
- "mappings": ";;;;;;;;;;;;;;;;;AAGA,cAAc,cAAc,OAAO;",
8
- "debugId": "ECD0D4033F1DB62D64756E2164756E21",
9
- "names": []
10
- }