@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
@@ -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-d77qm3pk.js";
18
- import"./studio-ygzav7z5.js";
19
- import"./studio-hhj92gcr.js";
20
- import"./studio-cx91mnh8.js";
21
- import"./studio-568nx4t5.js";
22
- import"./studio-asvf0j9e.js";
23
- import"./studio-rq0vxb19.js";
24
- import"./studio-4k0m4fmp.js";
25
- import"./studio-5x5774ak.js";
26
- import"./studio-97qcgvdn.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-02zn5y24.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-wd6ewdvd.js";
8
- import"./studio-xq0t7n5t.js";
9
- import"./studio-nqw433kv.js";
10
- import"./studio-568nx4t5.js";
11
- import"./studio-asvf0j9e.js";
12
- import"./studio-rq0vxb19.js";
13
- import"./studio-4k0m4fmp.js";
14
- import"./studio-5x5774ak.js";
15
- import"./studio-97qcgvdn.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-mbb0y0hz.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-n9zmpxjg.js";
5
- import"./studio-zmy7241e.js";
6
- import"./studio-ygzav7z5.js";
7
- import"./studio-hhj92gcr.js";
8
- import"./studio-cx91mnh8.js";
9
- import"./studio-xq0t7n5t.js";
10
- import"./studio-nqw433kv.js";
11
- import"./studio-asvf0j9e.js";
12
- import"./studio-rq0vxb19.js";
13
- import"./studio-4k0m4fmp.js";
14
- import"./studio-5x5774ak.js";
15
- import"./studio-97qcgvdn.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-9qekmqk1.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-j6gqyjf4.js";
7
- import"./studio-d77qm3pk.js";
8
- import"./studio-ygzav7z5.js";
9
- import"./studio-hhj92gcr.js";
10
- import"./studio-cx91mnh8.js";
11
- import"./studio-568nx4t5.js";
12
- import"./studio-asvf0j9e.js";
13
- import"./studio-rq0vxb19.js";
14
- import"./studio-4k0m4fmp.js";
15
- import"./studio-5x5774ak.js";
16
- import"./studio-97qcgvdn.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-gj0hrah4.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
- }
@@ -1,13 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/lit-html/development/directive-helpers.js", "../../../node_modules/lit-html/development/directive.js", "../../../node_modules/lit-html/development/async-directive.js", "../../../node_modules/lit-html/development/directives/ref.js"],
4
- "sourcesContent": [
5
- "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { _$LH, } from './lit-html.js';\nconst { _ChildPart: ChildPart } = _$LH;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst wrap = ENABLE_SHADYDOM_NOPATCH &&\n window.ShadyDOM?.inUse &&\n window.ShadyDOM?.noPatch === true\n ? window.ShadyDOM.wrap\n : (node) => node;\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value) => value === null || (typeof value != 'object' && typeof value != 'function');\nexport const TemplateResultType = {\n HTML: 1,\n SVG: 2,\n MATHML: 3,\n};\n/**\n * Tests if a value is a TemplateResult or a CompiledTemplateResult.\n */\nexport const isTemplateResult = (value, type) => type === undefined\n ? // This property needs to remain unminified.\n value?.['_$litType$'] !== undefined\n : value?.['_$litType$'] === type;\n/**\n * Tests if a value is a CompiledTemplateResult.\n */\nexport const isCompiledTemplateResult = (value) => {\n return value?.['_$litType$']?.h != null;\n};\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value) => \n// This property needs to remain unminified.\nvalue?.['_$litDirective$'] !== undefined;\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value) => \n// This property needs to remain unminified.\nvalue?.['_$litDirective$'];\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part) => part.strings === undefined;\nconst createMarker = () => document.createComment('');\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n * part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (containerPart, refPart, part) => {\n const container = wrap(containerPart._$startNode).parentNode;\n const refNode = refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n if (part === undefined) {\n const startNode = wrap(container).insertBefore(createMarker(), refNode);\n const endNode = wrap(container).insertBefore(createMarker(), refNode);\n part = new ChildPart(startNode, endNode, containerPart, containerPart.options);\n }\n else {\n const endNode = wrap(part._$endNode).nextSibling;\n const oldParent = part._$parent;\n const parentChanged = oldParent !== containerPart;\n if (parentChanged) {\n part._$reparentDisconnectables?.(containerPart);\n // Note that although `_$reparentDisconnectables` updates the part's\n // `_$parent` reference after unlinking from its current parent, that\n // method only exists if Disconnectables are present, so we need to\n // unconditionally set it here\n part._$parent = containerPart;\n // Since the _$isConnected getter is somewhat costly, only\n // read it once we know the subtree has directives that need\n // to be notified\n let newConnectionState;\n if (part._$notifyConnectionChanged !== undefined &&\n (newConnectionState = containerPart._$isConnected) !==\n oldParent._$isConnected) {\n part._$notifyConnectionChanged(newConnectionState);\n }\n }\n if (endNode !== refNode || parentChanged) {\n let start = part._$startNode;\n while (start !== endNode) {\n const n = wrap(start).nextSibling;\n wrap(container).insertBefore(start, refNode);\n start = n;\n }\n }\n }\n return part;\n};\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = (part, value, directiveParent = part) => {\n part._$setValue(value, directiveParent);\n return part;\n};\n// A sentinel value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part, value = RESET_VALUE) => (part._$committedValue = value);\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being committed.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n * set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part) => part._$committedValue;\n/**\n * Removes a ChildPart from the DOM, including any of its content and markers.\n *\n * Note: The only difference between this and clearPart() is that this also\n * removes the part's start node. This means that the ChildPart must own its\n * start node, ie it must be a marker node specifically for this part and not an\n * anchor from surrounding content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part) => {\n part._$clear();\n part._$startNode.remove();\n};\nexport const clearPart = (part) => {\n part._$clear();\n};\n//# sourceMappingURL=directive-helpers.js.map",
6
- "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport const PartType = {\n ATTRIBUTE: 1,\n CHILD: 2,\n PROPERTY: 3,\n BOOLEAN_ATTRIBUTE: 4,\n EVENT: 5,\n ELEMENT: 6,\n};\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive = (c) => (...values) => ({\n // This property needs to remain unminified.\n ['_$litDirective$']: c,\n values,\n});\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport class Directive {\n constructor(_partInfo) { }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n /** @internal */\n _$initialize(part, parent, attributeIndex) {\n this.__part = part;\n this._$parent = parent;\n this.__attributeIndex = attributeIndex;\n }\n /** @internal */\n _$resolve(part, props) {\n return this.update(part, props);\n }\n update(_part, props) {\n return this.render(...props);\n }\n}\n//# sourceMappingURL=directive.js.map",
7
- "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isSingleExpression } from './directive-helpers.js';\nimport { Directive, PartType } from './directive.js';\nexport * from './directive.js';\nconst DEV_MODE = true;\n/**\n * Recursively walks down the tree of Parts/TemplateInstances/Directives to set\n * the connected state of directives and run `disconnected`/ `reconnected`\n * callbacks.\n *\n * @return True if there were children to disconnect; false otherwise\n */\nconst notifyChildrenConnectedChanged = (parent, isConnected) => {\n const children = parent._$disconnectableChildren;\n if (children === undefined) {\n return false;\n }\n for (const obj of children) {\n // The existence of `_$notifyDirectiveConnectionChanged` is used as a \"brand\" to\n // disambiguate AsyncDirectives from other DisconnectableChildren\n // (as opposed to using an instanceof check to know when to call it); the\n // redundancy of \"Directive\" in the API name is to avoid conflicting with\n // `_$notifyConnectionChanged`, which exists `ChildParts` which are also in\n // this list\n // Disconnect Directive (and any nested directives contained within)\n // This property needs to remain unminified.\n obj['_$notifyDirectiveConnectionChanged']?.(isConnected, false);\n // Disconnect Part/TemplateInstance\n notifyChildrenConnectedChanged(obj, isConnected);\n }\n return true;\n};\n/**\n * Removes the given child from its parent list of disconnectable children, and\n * if the parent list becomes empty as a result, removes the parent from its\n * parent, and so forth up the tree when that causes subsequent parent lists to\n * become empty.\n */\nconst removeDisconnectableFromParent = (obj) => {\n let parent, children;\n do {\n if ((parent = obj._$parent) === undefined) {\n break;\n }\n children = parent._$disconnectableChildren;\n children.delete(obj);\n obj = parent;\n } while (children?.size === 0);\n};\nconst addDisconnectableToParent = (obj) => {\n // Climb the parent tree, creating a sparse tree of children needing\n // disconnection\n for (let parent; (parent = obj._$parent); obj = parent) {\n let children = parent._$disconnectableChildren;\n if (children === undefined) {\n parent._$disconnectableChildren = children = new Set();\n }\n else if (children.has(obj)) {\n // Once we've reached a parent that already contains this child, we\n // can short-circuit\n break;\n }\n children.add(obj);\n installDisconnectAPI(parent);\n }\n};\n/**\n * Changes the parent reference of the ChildPart, and updates the sparse tree of\n * Disconnectable children accordingly.\n *\n * Note, this method will be patched onto ChildPart instances and called from\n * the core code when parts are moved between different parents.\n */\nfunction reparentDisconnectables(newParent) {\n if (this._$disconnectableChildren !== undefined) {\n removeDisconnectableFromParent(this);\n this._$parent = newParent;\n addDisconnectableToParent(this);\n }\n else {\n this._$parent = newParent;\n }\n}\n/**\n * Sets the connected state on any directives contained within the committed\n * value of this part (i.e. within a TemplateInstance or iterable of\n * ChildParts) and runs their `disconnected`/`reconnected`s, as well as within\n * any directives stored on the ChildPart (when `valueOnly` is false).\n *\n * `isClearingValue` should be passed as `true` on a top-level part that is\n * clearing itself, and not as a result of recursively disconnecting directives\n * as part of a `clear` operation higher up the tree. This both ensures that any\n * directive on this ChildPart that produced a value that caused the clear\n * operation is not disconnected, and also serves as a performance optimization\n * to avoid needless bookkeeping when a subtree is going away; when clearing a\n * subtree, only the top-most part need to remove itself from the parent.\n *\n * `fromPartIndex` is passed only in the case of a partial `_clear` running as a\n * result of truncating an iterable.\n *\n * Note, this method will be patched onto ChildPart instances and called from the\n * core code when parts are cleared or the connection state is changed by the\n * user.\n */\nfunction notifyChildPartConnectedChanged(isConnected, isClearingValue = false, fromPartIndex = 0) {\n const value = this._$committedValue;\n const children = this._$disconnectableChildren;\n if (children === undefined || children.size === 0) {\n return;\n }\n if (isClearingValue) {\n if (Array.isArray(value)) {\n // Iterable case: Any ChildParts created by the iterable should be\n // disconnected and removed from this ChildPart's disconnectable\n // children (starting at `fromPartIndex` in the case of truncation)\n for (let i = fromPartIndex; i < value.length; i++) {\n notifyChildrenConnectedChanged(value[i], false);\n removeDisconnectableFromParent(value[i]);\n }\n }\n else if (value != null) {\n // TemplateInstance case: If the value has disconnectable children (will\n // only be in the case that it is a TemplateInstance), we disconnect it\n // and remove it from this ChildPart's disconnectable children\n notifyChildrenConnectedChanged(value, false);\n removeDisconnectableFromParent(value);\n }\n }\n else {\n notifyChildrenConnectedChanged(this, isConnected);\n }\n}\n/**\n * Patches disconnection API onto ChildParts.\n */\nconst installDisconnectAPI = (obj) => {\n if (obj.type == PartType.CHILD) {\n obj._$notifyConnectionChanged ??=\n notifyChildPartConnectedChanged;\n obj._$reparentDisconnectables ??= reparentDisconnectables;\n }\n};\n/**\n * An abstract `Directive` base class whose `disconnected` method will be\n * called when the part containing the directive is cleared as a result of\n * re-rendering, or when the user calls `part.setConnected(false)` on\n * a part that was previously rendered containing the directive (as happens\n * when e.g. a LitElement disconnects from the DOM).\n *\n * If `part.setConnected(true)` is subsequently called on a\n * containing part, the directive's `reconnected` method will be called prior\n * to its next `update`/`render` callbacks. When implementing `disconnected`,\n * `reconnected` should also be implemented to be compatible with reconnection.\n *\n * Note that updates may occur while the directive is disconnected. As such,\n * directives should generally check the `this.isConnected` flag during\n * render/update to determine whether it is safe to subscribe to resources\n * that may prevent garbage collection.\n */\nexport class AsyncDirective extends Directive {\n constructor() {\n super(...arguments);\n // @internal\n this._$disconnectableChildren = undefined;\n }\n /**\n * Initialize the part with internal fields\n * @param part\n * @param parent\n * @param attributeIndex\n */\n _$initialize(part, parent, attributeIndex) {\n super._$initialize(part, parent, attributeIndex);\n addDisconnectableToParent(this);\n this.isConnected = part._$isConnected;\n }\n // This property needs to remain unminified.\n /**\n * Called from the core code when a directive is going away from a part (in\n * which case `shouldRemoveFromParent` should be true), and from the\n * `setChildrenConnected` helper function when recursively changing the\n * connection state of a tree (in which case `shouldRemoveFromParent` should\n * be false).\n *\n * @param isConnected\n * @param isClearingDirective - True when the directive itself is being\n * removed; false when the tree is being disconnected\n * @internal\n */\n ['_$notifyDirectiveConnectionChanged'](isConnected, isClearingDirective = true) {\n if (isConnected !== this.isConnected) {\n this.isConnected = isConnected;\n if (isConnected) {\n this.reconnected?.();\n }\n else {\n this.disconnected?.();\n }\n }\n if (isClearingDirective) {\n notifyChildrenConnectedChanged(this, isConnected);\n removeDisconnectableFromParent(this);\n }\n }\n /**\n * Sets the value of the directive's Part outside the normal `update`/`render`\n * lifecycle of a directive.\n *\n * This method should not be called synchronously from a directive's `update`\n * or `render`.\n *\n * @param directive The directive to update\n * @param value The value to set\n */\n setValue(value) {\n if (isSingleExpression(this.__part)) {\n this.__part._$setValue(value, this);\n }\n else {\n // this.__attributeIndex will be defined in this case, but\n // assert it in dev mode\n if (DEV_MODE && this.__attributeIndex === undefined) {\n throw new Error(`Expected this.__attributeIndex to be a number`);\n }\n const newValues = [...this.__part._$committedValue];\n newValues[this.__attributeIndex] = value;\n this.__part._$setValue(newValues, this, 0);\n }\n }\n /**\n * User callbacks for implementing logic to release any resources/subscriptions\n * that may have been retained by this directive. Since directives may also be\n * re-connected, `reconnected` should also be implemented to restore the\n * working state of the directive prior to the next render.\n */\n disconnected() { }\n reconnected() { }\n}\n//# sourceMappingURL=async-directive.js.map",
8
- "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { nothing } from '../lit-html.js';\nimport { directive, AsyncDirective } from '../async-directive.js';\n/**\n * Creates a new Ref object, which is container for a reference to an element.\n */\nexport const createRef = () => new Ref();\n/**\n * An object that holds a ref value.\n */\nclass Ref {\n}\n// When callbacks are used for refs, this map tracks the last value the callback\n// was called with, for ensuring a directive doesn't clear the ref if the ref\n// has already been rendered to a new spot. It is double-keyed on both the\n// context (`options.host`) and the callback, since we auto-bind class methods\n// to `options.host`.\nconst lastElementForContextAndCallback = new WeakMap();\nclass RefDirective extends AsyncDirective {\n render(_ref) {\n return nothing;\n }\n update(part, [ref]) {\n const refChanged = ref !== this._ref;\n if (refChanged) {\n // The ref passed to the directive has changed;\n // unset the previous ref's value\n this._updateRefValue(undefined);\n }\n if (refChanged || this._lastElementForRef !== this._element) {\n // We either got a new ref or this is the first render;\n // store the ref/element & update the ref value\n this._ref = ref;\n this._context = part.options?.host;\n this._updateRefValue((this._element = part.element));\n }\n return nothing;\n }\n _updateRefValue(element) {\n if (this._ref === undefined) {\n return;\n }\n if (!this.isConnected) {\n element = undefined;\n }\n if (typeof this._ref === 'function') {\n // If the current ref was called with a previous value, call with\n // `undefined`; We do this to ensure callbacks are called in a consistent\n // way regardless of whether a ref might be moving up in the tree (in\n // which case it would otherwise be called with the new value before the\n // previous one unsets it) and down in the tree (where it would be unset\n // before being set). Note that element lookup is keyed by\n // both the context and the callback, since we allow passing unbound\n // functions that are called on options.host, and we want to treat\n // these as unique \"instances\" of a function.\n const context = this._context ?? globalThis;\n let lastElementForCallback = lastElementForContextAndCallback.get(context);\n if (lastElementForCallback === undefined) {\n lastElementForCallback = new WeakMap();\n lastElementForContextAndCallback.set(context, lastElementForCallback);\n }\n if (lastElementForCallback.get(this._ref) !== undefined) {\n this._ref.call(this._context, undefined);\n }\n lastElementForCallback.set(this._ref, element);\n // Call the ref with the new element value\n if (element !== undefined) {\n this._ref.call(this._context, element);\n }\n }\n else {\n this._ref.value = element;\n }\n }\n get _lastElementForRef() {\n return typeof this._ref === 'function'\n ? lastElementForContextAndCallback\n .get(this._context ?? globalThis)\n ?.get(this._ref)\n : this._ref?.value;\n }\n disconnected() {\n // Only clear the box if our element is still the one in it (i.e. another\n // directive instance hasn't rendered its element to it before us); that\n // only happens in the event of the directive being cleared (not via manual\n // disconnection)\n if (this._lastElementForRef === this._element) {\n this._updateRefValue(undefined);\n }\n }\n reconnected() {\n // If we were manually disconnected, we can safely put our element back in\n // the box, since no rendering could have occurred to change its state\n this._updateRefValue(this._element);\n }\n}\n/**\n * Sets the value of a Ref object or calls a ref callback with the element it's\n * bound to.\n *\n * A Ref object acts as a container for a reference to an element. A ref\n * callback is a function that takes an element as its only argument.\n *\n * The ref directive sets the value of the Ref object or calls the ref callback\n * during rendering, if the referenced element changed.\n *\n * Note: If a ref callback is rendered to a different element position or is\n * removed in a subsequent render, it will first be called with `undefined`,\n * followed by another call with the new element it was rendered to (if any).\n *\n * ```js\n * // Using Ref object\n * const inputRef = createRef();\n * render(html`<input ${ref(inputRef)}>`, container);\n * inputRef.value.focus();\n *\n * // Using callback\n * const callback = (inputElement) => inputElement.focus();\n * render(html`<input ${ref(callback)}>`, container);\n * ```\n */\nexport const ref = directive(RefDirective);\n//# sourceMappingURL=ref.js.map"
9
- ],
10
- "mappings": "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",
11
- "debugId": "D29D8124A0D6485D64756E2164756E21",
12
- "names": []
13
- }