@svgrid/grid 2.2.32 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +199 -199
  2. package/dist/DockNodeView.svelte +1 -1
  3. package/dist/FlexRender.svelte +96 -96
  4. package/dist/GridFooter.svelte +178 -179
  5. package/dist/GridMenus.svelte +705 -782
  6. package/dist/SvAutoComplete.svelte +165 -165
  7. package/dist/SvAvatar.svelte +75 -75
  8. package/dist/SvCalendar.svelte +503 -503
  9. package/dist/SvCarousel.svelte +141 -141
  10. package/dist/SvCheckBox.svelte +102 -102
  11. package/dist/SvCircularProgress.svelte +109 -109
  12. package/dist/SvColorInput.svelte +181 -181
  13. package/dist/SvComboBox.svelte +275 -275
  14. package/dist/SvContextMenu.svelte +116 -116
  15. package/dist/SvCountryInput.svelte +160 -160
  16. package/dist/SvDateRangeInput.svelte +1 -1
  17. package/dist/SvDrawer.svelte +254 -254
  18. package/dist/SvDropDownList.svelte +374 -374
  19. package/dist/SvDurationInput.svelte +126 -126
  20. package/dist/SvField.svelte +293 -293
  21. package/dist/SvForm.svelte +437 -437
  22. package/dist/SvGrid.css +2814 -2804
  23. package/dist/SvGrid.svelte +3490 -3513
  24. package/dist/SvGridChart.svelte +1716 -1724
  25. package/dist/SvGridChartPanel.svelte +485 -485
  26. package/dist/SvGridChartView.svelte +70 -70
  27. package/dist/SvGridDropdown.svelte +728 -728
  28. package/dist/SvGridSelect.svelte +266 -268
  29. package/dist/SvGroupCell.svelte +116 -116
  30. package/dist/SvKbd.svelte +1 -1
  31. package/dist/SvList.svelte +1 -1
  32. package/dist/SvListBox.svelte +326 -326
  33. package/dist/SvMaskedInput.svelte +122 -122
  34. package/dist/SvMenu.svelte +124 -124
  35. package/dist/SvMenuList.svelte +146 -146
  36. package/dist/SvMenubar.svelte +1 -1
  37. package/dist/SvMultiSelect.svelte +289 -290
  38. package/dist/SvNumberInput.svelte +168 -168
  39. package/dist/SvOtpInput.svelte +158 -158
  40. package/dist/SvPasswordInput.svelte +151 -151
  41. package/dist/SvPhoneInput.svelte +133 -133
  42. package/dist/SvPopover.svelte +197 -197
  43. package/dist/SvProgress.svelte +116 -116
  44. package/dist/SvRadioGroup.svelte +107 -107
  45. package/dist/SvRating.svelte +112 -112
  46. package/dist/SvResult.svelte +73 -73
  47. package/dist/SvRichText.svelte +211 -207
  48. package/dist/SvRowGroupPanel.svelte +170 -170
  49. package/dist/SvScrollArea.svelte +61 -61
  50. package/dist/SvSlider.svelte +200 -200
  51. package/dist/SvSwitchButton.svelte +108 -108
  52. package/dist/SvTagsInput.svelte +112 -112
  53. package/dist/SvTextInput.svelte +147 -147
  54. package/dist/SvTimePicker.svelte +245 -245
  55. package/dist/SvToaster.svelte +159 -159
  56. package/dist/SvToggleButton.svelte +85 -85
  57. package/dist/SvTooltip.svelte +161 -161
  58. package/dist/SvTour.svelte +208 -204
  59. package/dist/SvTree.svelte +444 -444
  60. package/dist/SvTreeSelect.svelte +235 -237
  61. package/dist/cdn/{GridMenus-C6ixSGWW.js → GridMenus-BpVcKyUr.js} +5 -7
  62. package/dist/cdn/{GridMenus-Cyk3qpJ7.js → GridMenus-CeXL5IW4.js} +153 -152
  63. package/dist/cdn/{SvDateTimePicker-ClqtVIj3.js → SvDateTimePicker-DSUhIta8.js} +165 -165
  64. package/dist/cdn/{SvDateTimePicker-CdqaP61H.js → SvDateTimePicker-h9kPyszT.js} +572 -555
  65. package/dist/cdn/{SvGridChart-BcLCYvw9.js → SvGridChart-Bs2GIR2Q.js} +28 -21
  66. package/dist/cdn/{SvGridChart-BhnFdLd0.js → SvGridChart-CwhFz7GV.js} +2 -2
  67. package/dist/cdn/{SvGridChartPanel-Cmx9DHAS.js → SvGridChartPanel-1WXuStzM.js} +2 -2
  68. package/dist/cdn/{SvGridChartPanel-DvjwxLvK.js → SvGridChartPanel-e5_nqNP9.js} +22 -14
  69. package/dist/cdn/{SvGridChartView-PwqI4s02.js → SvGridChartView-SmPW10dI.js} +3 -3
  70. package/dist/cdn/{SvGridChartView-B40DTJSX.js → SvGridChartView-eSPuJE6g.js} +2 -2
  71. package/dist/cdn/{SvGridDropdown-D0VdjeR8.js → SvGridDropdown-B1ZcLpgs.js} +1 -1
  72. package/dist/cdn/{SvGridDropdown-Dh-2ej8j.js → SvGridDropdown-CtdbHcIS.js} +6 -5
  73. package/dist/cdn/{chart-T1usDN0o.js → chart-i4XcXyHJ.js} +12 -10
  74. package/dist/cdn/disclose-version-Dr7rEVv-.js +2866 -0
  75. package/dist/cdn/{export-format-JT5pWVT8.js → export-format-Cv1Dll6k.js} +66 -245
  76. package/dist/cdn/{src-CgD-wiuS.js → src-DbeN1ReZ.js} +9223 -8944
  77. package/dist/cdn/{src-BgHjWF0Q.js → src-DmEQFW5_.js} +9023 -8828
  78. package/dist/cdn/svgrid.js +9 -9
  79. package/dist/cdn/svgrid.svelte-external.js +9 -9
  80. package/dist/chart-export.js +8 -8
  81. package/dist/chart.d.ts +2 -0
  82. package/dist/chart.js +1 -4
  83. package/dist/columns.js +9 -2
  84. package/dist/createMenu.svelte.js +0 -1
  85. package/dist/createPopoverSelect.svelte.d.ts +2 -2
  86. package/dist/editing.js +1 -1
  87. package/dist/export-format.js +3 -0
  88. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/_svelte_metadata.json +1 -0
  89. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/_metadata.json +178 -0
  90. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js +3843 -0
  91. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js.map +1 -0
  92. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js +23 -0
  93. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js.map +1 -0
  94. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js +1925 -0
  95. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js.map +1 -0
  96. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js +206 -0
  97. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js.map +1 -0
  98. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js +20 -0
  99. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js.map +1 -0
  100. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js +264 -0
  101. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js.map +1 -0
  102. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js +698 -0
  103. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js.map +1 -0
  104. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/package.json +3 -0
  105. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js +135 -0
  106. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js.map +1 -0
  107. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js +57 -0
  108. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js.map +1 -0
  109. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_attachments.js +2 -0
  110. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js +46691 -0
  111. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js.map +1 -0
  112. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js +239 -0
  113. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js.map +1 -0
  114. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_events.js +2 -0
  115. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js +6 -0
  116. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js.map +1 -0
  117. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_client.js +7 -0
  118. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js +6 -0
  119. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
  120. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js +7 -0
  121. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
  122. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js +7 -0
  123. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
  124. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js +7 -0
  125. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
  126. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_server.js +6 -0
  127. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js +85 -0
  128. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js.map +1 -0
  129. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js +561 -0
  130. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js.map +1 -0
  131. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js +26 -0
  132. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js.map +1 -0
  133. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js +124 -0
  134. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js.map +1 -0
  135. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_server.js +2 -0
  136. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js +91 -0
  137. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js.map +1 -0
  138. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js +242 -0
  139. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js.map +1 -0
  140. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js +497 -0
  141. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js.map +1 -0
  142. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js +4929 -0
  143. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js.map +1 -0
  144. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js +192 -0
  145. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js.map +1 -0
  146. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js +10 -0
  147. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js.map +1 -0
  148. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js +140 -0
  149. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js.map +1 -0
  150. package/dist/selection.js +0 -1
  151. package/package.json +11 -10
  152. package/src/DockNodeView.svelte +1 -1
  153. package/src/FlexRender.svelte +96 -96
  154. package/src/GridFooter.svelte +178 -179
  155. package/src/GridMenus.svelte +705 -782
  156. package/src/SvAutoComplete.svelte +165 -165
  157. package/src/SvAvatar.svelte +75 -75
  158. package/src/SvCalendar.svelte +503 -503
  159. package/src/SvCalendar.test.ts +226 -226
  160. package/src/SvCarousel.svelte +141 -141
  161. package/src/SvCheckBox.svelte +102 -102
  162. package/src/SvCircularProgress.svelte +109 -109
  163. package/src/SvColorInput.svelte +181 -181
  164. package/src/SvComboBox.svelte +275 -275
  165. package/src/SvContextMenu.svelte +116 -116
  166. package/src/SvCountryInput.svelte +160 -160
  167. package/src/SvDateRangeInput.svelte +1 -1
  168. package/src/SvDrawer.svelte +254 -254
  169. package/src/SvDropDownList.svelte +374 -374
  170. package/src/SvDurationInput.svelte +126 -126
  171. package/src/SvField.svelte +293 -293
  172. package/src/SvForm.svelte +437 -437
  173. package/src/SvForm.test.ts +411 -411
  174. package/src/SvGrid.controller.svelte.ts +3680 -3685
  175. package/src/SvGrid.css +2814 -2804
  176. package/src/SvGrid.svelte +3490 -3513
  177. package/src/SvGrid.types.ts +1708 -1709
  178. package/src/SvGridChart.svelte +1716 -1724
  179. package/src/SvGridChartPanel.svelte +485 -485
  180. package/src/SvGridChartView.svelte +70 -70
  181. package/src/SvGridDropdown.svelte +728 -728
  182. package/src/SvGridSelect.svelte +266 -268
  183. package/src/SvGroupCell.svelte +116 -116
  184. package/src/SvKbd.svelte +1 -1
  185. package/src/SvList.svelte +1 -1
  186. package/src/SvListBox.svelte +326 -326
  187. package/src/SvMaskedInput.svelte +122 -122
  188. package/src/SvMenu.svelte +124 -124
  189. package/src/SvMenu.test.ts +97 -97
  190. package/src/SvMenuList.svelte +146 -146
  191. package/src/SvMenubar.svelte +1 -1
  192. package/src/SvMultiSelect.svelte +289 -290
  193. package/src/SvNumberInput.svelte +168 -168
  194. package/src/SvOtpInput.svelte +158 -158
  195. package/src/SvPasswordInput.svelte +151 -151
  196. package/src/SvPhoneInput.svelte +133 -133
  197. package/src/SvPopover.svelte +197 -197
  198. package/src/SvProgress.svelte +116 -116
  199. package/src/SvRadioGroup.svelte +107 -107
  200. package/src/SvRating.svelte +112 -112
  201. package/src/SvResult.svelte +73 -73
  202. package/src/SvRichText.svelte +211 -207
  203. package/src/SvRowGroupPanel.svelte +170 -170
  204. package/src/SvScrollArea.svelte +61 -61
  205. package/src/SvSlider.svelte +200 -200
  206. package/src/SvSwitchButton.svelte +108 -108
  207. package/src/SvTagsInput.svelte +112 -112
  208. package/src/SvTextInput.svelte +147 -147
  209. package/src/SvTimePicker.svelte +245 -245
  210. package/src/SvToaster.svelte +159 -159
  211. package/src/SvToaster.test.ts +95 -95
  212. package/src/SvToggleButton.svelte +85 -85
  213. package/src/SvTooltip.svelte +161 -161
  214. package/src/SvTour.svelte +208 -204
  215. package/src/SvTree.svelte +444 -444
  216. package/src/SvTreeSelect.svelte +235 -237
  217. package/src/a11y/dismissable.test.ts +119 -119
  218. package/src/a11y/dismissable.ts +114 -114
  219. package/src/a11y.contract.test.ts +49 -49
  220. package/src/a11y.test.ts +59 -59
  221. package/src/a11y.ts +61 -61
  222. package/src/ai.test.ts +502 -502
  223. package/src/ai.ts +1391 -1391
  224. package/src/build-api.coverage.test.ts +633 -633
  225. package/src/build-api.ts +805 -910
  226. package/src/builtin-editors.grid.test.ts +85 -85
  227. package/src/cell-formatting.test.ts +1 -1
  228. package/src/cell-formatting.ts +169 -169
  229. package/src/cell-render.test.ts +513 -513
  230. package/src/cell-render.ts +496 -590
  231. package/src/cell-values.ts +118 -118
  232. package/src/chart-export.ts +201 -201
  233. package/src/chart-view.svelte.ts +36 -36
  234. package/src/chart.ts +2295 -2296
  235. package/src/clipboard.ts +0 -102
  236. package/src/collaboration.test.ts +104 -104
  237. package/src/collaboration.ts +167 -167
  238. package/src/columns.ts +7 -117
  239. package/src/core.performance.test.ts +30 -30
  240. package/src/core.ts +1261 -1261
  241. package/src/createAutocomplete.svelte.ts +132 -132
  242. package/src/createCombobox.svelte.ts +191 -191
  243. package/src/createCountryInput.svelte.ts +157 -157
  244. package/src/createDropdownList.svelte.ts +168 -168
  245. package/src/createForm.svelte.ts +386 -386
  246. package/src/createGrid.svelte.ts +42 -42
  247. package/src/createGrid.test.ts +10 -10
  248. package/src/createGridState.svelte.ts +17 -17
  249. package/src/createListbox.svelte.ts +250 -250
  250. package/src/createMenu.svelte.ts +224 -225
  251. package/src/createPopoverSelect.svelte.ts +213 -213
  252. package/src/createSlider.svelte.ts +191 -191
  253. package/src/createTooltip.svelte.ts +144 -144
  254. package/src/createTree.svelte.ts +319 -319
  255. package/src/editing.test.ts +949 -949
  256. package/src/editing.ts +606 -709
  257. package/src/editor-contract.ts +164 -164
  258. package/src/editor-registry.grid.test.ts +144 -146
  259. package/src/editor-registry.ts +122 -122
  260. package/src/export-data-api.test.ts +126 -126
  261. package/src/export-format.test.ts +107 -107
  262. package/src/export-format.ts +601 -598
  263. package/src/features.ts +0 -90
  264. package/src/filter-operators.ts +157 -157
  265. package/src/flex-render.ts +3 -3
  266. package/src/form-field.ts +127 -127
  267. package/src/group-display.test.ts +167 -167
  268. package/src/group-display.ts +200 -200
  269. package/src/index.ts +724 -724
  270. package/src/js-scroller.svelte.ts +173 -173
  271. package/src/keyboard-handlers.coverage.test.ts +1 -1
  272. package/src/keyboard-handlers.ts +270 -390
  273. package/src/keyboard.test.ts +59 -59
  274. package/src/keyboard.ts +97 -97
  275. package/src/list-nav.test.ts +49 -49
  276. package/src/list-nav.ts +29 -29
  277. package/src/list-option.test.ts +56 -56
  278. package/src/list-option.ts +172 -172
  279. package/src/menus.test.ts +0 -1
  280. package/src/menus.ts +567 -679
  281. package/src/merge-objects.ts +48 -48
  282. package/src/new-features.test.ts +3 -1
  283. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/_svelte_metadata.json +1 -0
  284. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/_metadata.json +178 -0
  285. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js +3843 -0
  286. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js.map +1 -0
  287. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js +23 -0
  288. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js.map +1 -0
  289. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js +1925 -0
  290. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js.map +1 -0
  291. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js +206 -0
  292. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js.map +1 -0
  293. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js +20 -0
  294. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js.map +1 -0
  295. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js +264 -0
  296. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js.map +1 -0
  297. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js +698 -0
  298. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js.map +1 -0
  299. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/package.json +3 -0
  300. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js +135 -0
  301. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js.map +1 -0
  302. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js +57 -0
  303. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js.map +1 -0
  304. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_attachments.js +2 -0
  305. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js +46691 -0
  306. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js.map +1 -0
  307. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js +239 -0
  308. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js.map +1 -0
  309. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_events.js +2 -0
  310. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js +6 -0
  311. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js.map +1 -0
  312. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_client.js +7 -0
  313. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js +6 -0
  314. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
  315. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js +7 -0
  316. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
  317. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js +7 -0
  318. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
  319. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js +7 -0
  320. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
  321. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_server.js +6 -0
  322. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js +85 -0
  323. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js.map +1 -0
  324. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js +561 -0
  325. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js.map +1 -0
  326. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js +26 -0
  327. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js.map +1 -0
  328. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js +124 -0
  329. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js.map +1 -0
  330. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_server.js +2 -0
  331. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js +91 -0
  332. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js.map +1 -0
  333. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js +242 -0
  334. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js.map +1 -0
  335. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js +497 -0
  336. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js.map +1 -0
  337. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js +4929 -0
  338. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js.map +1 -0
  339. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js +192 -0
  340. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js.map +1 -0
  341. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js +10 -0
  342. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js.map +1 -0
  343. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js +140 -0
  344. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js.map +1 -0
  345. package/src/overlays.test.ts +90 -90
  346. package/src/render-component.ts +28 -28
  347. package/src/row-drag.test.ts +1 -1
  348. package/src/row-resize.test.ts +1 -2
  349. package/src/row-resize.ts +210 -210
  350. package/src/scheduler-model.test.ts +562 -562
  351. package/src/scheduler-model.ts +872 -872
  352. package/src/scroll-sync.test.ts +4 -7
  353. package/src/scroll-sync.ts +0 -122
  354. package/src/selection.test.ts +754 -754
  355. package/src/selection.ts +491 -600
  356. package/src/server-data-source.test.ts +289 -289
  357. package/src/server-data-source.ts +413 -413
  358. package/src/server-group-model.test.ts +2 -2
  359. package/src/sparkline.test.ts +68 -68
  360. package/src/sparkline.ts +169 -169
  361. package/src/spreadsheet.test.ts +488 -488
  362. package/src/spreadsheet.ts +312 -312
  363. package/src/static-functions.ts +11 -11
  364. package/src/subscribe.ts +38 -38
  365. package/src/summaries.ts +0 -112
  366. package/src/svgrid-wrapper.types.ts +526 -526
  367. package/src/svgrid.async-editor-options.test.ts +271 -271
  368. package/src/svgrid.auto-row-height.test.ts +204 -204
  369. package/src/svgrid.behavior.test.ts +705 -706
  370. package/src/svgrid.charting.test.ts +534 -534
  371. package/src/svgrid.column-reorder.test.ts +0 -8
  372. package/src/svgrid.comments-autocomplete.test.ts +123 -123
  373. package/src/svgrid.context-menu.test.ts +147 -147
  374. package/src/svgrid.features.test.ts +157 -157
  375. package/src/svgrid.filter-depth.test.ts +163 -163
  376. package/src/svgrid.filter-menu-listbox.svelte.test.ts +322 -322
  377. package/src/svgrid.filter-menu-scroll.test.ts +112 -112
  378. package/src/svgrid.footer-pagesize.svelte.test.ts +86 -0
  379. package/src/svgrid.grand-total.test.ts +188 -188
  380. package/src/svgrid.group-display-mode.test.ts +171 -171
  381. package/src/svgrid.group-footers.test.ts +121 -121
  382. package/src/svgrid.group-pagination.test.ts +153 -153
  383. package/src/svgrid.new-features.wrapper.test.ts +251 -251
  384. package/src/svgrid.tree-data.test.ts +186 -186
  385. package/src/svgrid.wrapper.test.ts +40 -40
  386. package/src/svgriddropdown.async-panel.svelte.test.ts +195 -195
  387. package/src/test-setup.ts +62 -62
  388. package/src/themes/index.ts +257 -257
  389. package/src/toast-store.svelte.ts +246 -246
  390. package/src/toast-store.test.ts +147 -147
  391. package/src/tree-row-model.test.ts +168 -169
  392. package/src/ui-buttons.test.ts +144 -144
  393. package/src/ui-inputs.test.ts +118 -118
  394. package/src/ui-localization.test.ts +113 -113
  395. package/src/ui-range.test.ts +70 -70
  396. package/src/ui-selection.test.ts +155 -155
  397. package/src/ui-tier1.test.ts +142 -142
  398. package/src/virtual.test.ts +88 -88
  399. package/src/virtualization/column-virtualizer.test.ts +27 -27
  400. package/src/virtualization/column-virtualizer.ts +30 -30
  401. package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
  402. package/src/virtualization/types.ts +30 -30
  403. package/src/virtualization/virtualizer.test.ts +47 -47
  404. package/src/virtualization/virtualizer.ts +296 -296
  405. package/dist/cdn/disclose-version-DoD9AFD_.js +0 -2958
@@ -0,0 +1,1925 @@
1
+ import { $n as STALE_REACTION, Cr as lifecycle_outside_component, Rn as get_stack, Sr as invalid_snippet_arguments, dr as has_own_property, hr as noop, ir as deferred, mr as is_promise, t as subscribe_to_store, wr as missing_context } from "./utils-mR9mAWyK.js";
2
+ import { t as async_mode_flag } from "./flags-BD-lYX7s.js";
3
+ import { l as UNINITIALIZED, n as FILENAME } from "./constants-RLNOXCpz.js";
4
+ import { i as EMPTY_COMMENT, n as BLOCK_OPEN, o as is_tag_valid_with_ancestor, r as BLOCK_OPEN_ELSE, s as is_tag_valid_with_parent, t as BLOCK_CLOSE } from "./hydration-D3UBU2t8.js";
5
+ import { _ as is_void, a as is_boolean_attribute, b as escape_html, f as is_raw_text_element, i as hash, t as REGEX_VALID_TAG_NAME } from "./utils-lObbumRX.js";
6
+ import { a as attr, c as to_style, o as clsx, r as validate_store, s as to_class } from "./validate-CezNmRkM.js";
7
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/errors.js
8
+ /**
9
+ * The node API `AsyncLocalStorage` is not available, but is required to use async server rendering.
10
+ * @returns {never}
11
+ */
12
+ function async_local_storage_unavailable() {
13
+ const error = /* @__PURE__ */ new Error(`async_local_storage_unavailable\nThe node API \`AsyncLocalStorage\` is not available, but is required to use async server rendering.\nhttps://svelte.dev/e/async_local_storage_unavailable`);
14
+ error.name = "Svelte error";
15
+ throw error;
16
+ }
17
+ /**
18
+ * Encountered asynchronous work while rendering synchronously.
19
+ * @returns {never}
20
+ */
21
+ function await_invalid() {
22
+ const error = /* @__PURE__ */ new Error(`await_invalid\nEncountered asynchronous work while rendering synchronously.\nhttps://svelte.dev/e/await_invalid`);
23
+ error.name = "Svelte error";
24
+ throw error;
25
+ }
26
+ /**
27
+ * `<svelte:element this="%tag%">` is not a valid element name — the element will not be rendered
28
+ * @param {string} tag
29
+ * @returns {never}
30
+ */
31
+ function dynamic_element_invalid_tag(tag) {
32
+ const error = /* @__PURE__ */ new Error(`dynamic_element_invalid_tag\n\`<svelte:element this="${tag}">\` is not a valid element name — the element will not be rendered\nhttps://svelte.dev/e/dynamic_element_invalid_tag`);
33
+ error.name = "Svelte error";
34
+ throw error;
35
+ }
36
+ /**
37
+ * The `html` property of server render results has been deprecated. Use `body` instead.
38
+ * @returns {never}
39
+ */
40
+ function html_deprecated() {
41
+ const error = /* @__PURE__ */ new Error(`html_deprecated\nThe \`html\` property of server render results has been deprecated. Use \`body\` instead.\nhttps://svelte.dev/e/html_deprecated`);
42
+ error.name = "Svelte error";
43
+ throw error;
44
+ }
45
+ /**
46
+ * Attempted to set `hydratable` with key `%key%` twice with different values.
47
+ *
48
+ * %stack%
49
+ * @param {string} key
50
+ * @param {string} stack
51
+ * @returns {never}
52
+ */
53
+ function hydratable_clobbering(key, stack) {
54
+ const error = /* @__PURE__ */ new Error(`hydratable_clobbering\nAttempted to set \`hydratable\` with key \`${key}\` twice with different values.
55
+
56
+ ${stack}\nhttps://svelte.dev/e/hydratable_clobbering`);
57
+ error.name = "Svelte error";
58
+ throw error;
59
+ }
60
+ /**
61
+ * Failed to serialize `hydratable` data for key `%key%`.
62
+ *
63
+ * `hydratable` can serialize anything [`uneval` from `devalue`](https://npmjs.com/package/uneval) can, plus Promises.
64
+ *
65
+ * Cause:
66
+ * %stack%
67
+ * @param {string} key
68
+ * @param {string} stack
69
+ * @returns {never}
70
+ */
71
+ function hydratable_serialization_failed(key, stack) {
72
+ const error = /* @__PURE__ */ new Error(`hydratable_serialization_failed\nFailed to serialize \`hydratable\` data for key \`${key}\`.
73
+
74
+ \`hydratable\` can serialize anything [\`uneval\` from \`devalue\`](https://npmjs.com/package/uneval) can, plus Promises.
75
+
76
+ Cause:
77
+ ${stack}\nhttps://svelte.dev/e/hydratable_serialization_failed`);
78
+ error.name = "Svelte error";
79
+ throw error;
80
+ }
81
+ /**
82
+ * `csp.nonce` was set while `csp.hash` was `true`. These options cannot be used simultaneously.
83
+ * @returns {never}
84
+ */
85
+ function invalid_csp() {
86
+ const error = /* @__PURE__ */ new Error(`invalid_csp\n\`csp.nonce\` was set while \`csp.hash\` was \`true\`. These options cannot be used simultaneously.\nhttps://svelte.dev/e/invalid_csp`);
87
+ error.name = "Svelte error";
88
+ throw error;
89
+ }
90
+ /**
91
+ * The `idPrefix` option cannot include `--`.
92
+ * @returns {never}
93
+ */
94
+ function invalid_id_prefix() {
95
+ const error = /* @__PURE__ */ new Error(`invalid_id_prefix\nThe \`idPrefix\` option cannot include \`--\`.\nhttps://svelte.dev/e/invalid_id_prefix`);
96
+ error.name = "Svelte error";
97
+ throw error;
98
+ }
99
+ /**
100
+ * `%name%(...)` is not available on the server
101
+ * @param {string} name
102
+ * @returns {never}
103
+ */
104
+ function lifecycle_function_unavailable(name) {
105
+ const error = /* @__PURE__ */ new Error(`lifecycle_function_unavailable\n\`${name}(...)\` is not available on the server\nhttps://svelte.dev/e/lifecycle_function_unavailable`);
106
+ error.name = "Svelte error";
107
+ throw error;
108
+ }
109
+ /**
110
+ * Could not resolve `render` context.
111
+ * @returns {never}
112
+ */
113
+ function server_context_required() {
114
+ const error = /* @__PURE__ */ new Error(`server_context_required\nCould not resolve \`render\` context.\nhttps://svelte.dev/e/server_context_required`);
115
+ error.name = "Svelte error";
116
+ throw error;
117
+ }
118
+ //#endregion
119
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/context.js
120
+ /** @import { SSRContext } from '#server' */
121
+ /** @type {SSRContext | null} */
122
+ var ssr_context = null;
123
+ /** @param {SSRContext | null} v */
124
+ function set_ssr_context(v) {
125
+ ssr_context = v;
126
+ }
127
+ /**
128
+ * @template T
129
+ * @returns {[() => T, (context: T) => T]}
130
+ * @since 5.40.0
131
+ */
132
+ function createContext() {
133
+ const key = {};
134
+ return [() => {
135
+ if (!hasContext(key)) missing_context();
136
+ return getContext(key);
137
+ }, (context) => setContext(key, context)];
138
+ }
139
+ /**
140
+ * @template T
141
+ * @param {any} key
142
+ * @returns {T}
143
+ */
144
+ function getContext(key) {
145
+ return get_or_init_context_map("getContext").get(key);
146
+ }
147
+ /**
148
+ * @template T
149
+ * @param {any} key
150
+ * @param {T} context
151
+ * @returns {T}
152
+ */
153
+ function setContext(key, context) {
154
+ get_or_init_context_map("setContext").set(key, context);
155
+ return context;
156
+ }
157
+ /**
158
+ * @param {any} key
159
+ * @returns {boolean}
160
+ */
161
+ function hasContext(key) {
162
+ return get_or_init_context_map("hasContext").has(key);
163
+ }
164
+ /** @returns {Map<any, any>} */
165
+ function getAllContexts() {
166
+ return get_or_init_context_map("getAllContexts");
167
+ }
168
+ /**
169
+ * @param {string} name
170
+ * @returns {Map<unknown, unknown>}
171
+ */
172
+ function get_or_init_context_map(name) {
173
+ if (ssr_context === null) lifecycle_outside_component(name);
174
+ return ssr_context.c ??= new Map(get_parent_context(ssr_context) || void 0);
175
+ }
176
+ /**
177
+ * @param {Function} [fn]
178
+ */
179
+ function push(fn) {
180
+ ssr_context = {
181
+ p: ssr_context,
182
+ c: null,
183
+ r: null
184
+ };
185
+ ssr_context.function = fn;
186
+ ssr_context.element = ssr_context.p?.element;
187
+ }
188
+ function pop() {
189
+ ssr_context = ssr_context.p;
190
+ }
191
+ /**
192
+ * @param {SSRContext} ssr_context
193
+ * @returns {Map<unknown, unknown> | null}
194
+ */
195
+ function get_parent_context(ssr_context) {
196
+ let parent = ssr_context.p;
197
+ while (parent !== null) {
198
+ const context_map = parent.c;
199
+ if (context_map !== null) return context_map;
200
+ parent = parent.p;
201
+ }
202
+ return null;
203
+ }
204
+ /**
205
+ * Wraps an `await` expression in such a way that the component context that was
206
+ * active before the expression evaluated can be reapplied afterwards —
207
+ * `await a + b()` becomes `(await $.save(a))() + b()`, meaning `b()` will have access
208
+ * to the context of its component.
209
+ * @template T
210
+ * @param {Promise<T>} promise
211
+ * @returns {Promise<() => T>}
212
+ */
213
+ async function save(promise) {
214
+ var previous_context = ssr_context;
215
+ var value = await promise;
216
+ return () => {
217
+ ssr_context = previous_context;
218
+ return value;
219
+ };
220
+ }
221
+ //#endregion
222
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/abort-signal.js
223
+ /** @type {AbortController | null} */
224
+ var controller = null;
225
+ function abort() {
226
+ controller?.abort(STALE_REACTION);
227
+ controller = null;
228
+ }
229
+ function getAbortSignal() {
230
+ return (controller ??= new AbortController()).signal;
231
+ }
232
+ //#endregion
233
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/render-context.js
234
+ /** @import { AsyncLocalStorage } from 'node:async_hooks' */
235
+ /** @import { RenderContext } from '#server' */
236
+ /** @type {Promise<void> | null} */
237
+ var current_render = null;
238
+ /** @type {RenderContext | null} */
239
+ var context = null;
240
+ /** @returns {RenderContext} */
241
+ function get_render_context() {
242
+ const store = context ?? als?.getStore();
243
+ if (!store) server_context_required();
244
+ return store;
245
+ }
246
+ /**
247
+ * @template T
248
+ * @param {() => Promise<T>} fn
249
+ * @returns {Promise<T>}
250
+ */
251
+ async function with_render_context(fn) {
252
+ context = { hydratable: {
253
+ lookup: /* @__PURE__ */ new Map(),
254
+ comparisons: [],
255
+ unresolved_promises: /* @__PURE__ */ new Map()
256
+ } };
257
+ if (in_webcontainer()) {
258
+ const { promise, resolve } = deferred();
259
+ const previous_render = current_render;
260
+ current_render = promise;
261
+ await previous_render;
262
+ return fn().finally(resolve);
263
+ }
264
+ try {
265
+ if (als === null) async_local_storage_unavailable();
266
+ return als.run(context, fn);
267
+ } finally {
268
+ context = null;
269
+ }
270
+ }
271
+ /** @type {AsyncLocalStorage<RenderContext | null> | null} */
272
+ var als = null;
273
+ /** @type {Promise<void> | null} */
274
+ var als_import = null;
275
+ /**
276
+ *
277
+ * @returns {Promise<void>}
278
+ */
279
+ function init_render_context() {
280
+ als_import ??= import("node:async_hooks").then((hooks) => {
281
+ als = new hooks.AsyncLocalStorage();
282
+ }).then(noop, noop);
283
+ return als_import;
284
+ }
285
+ function in_webcontainer() {
286
+ return !!globalThis.process?.versions?.webcontainer;
287
+ }
288
+ var MAX_ARRAY_INDEX = 2 ** 32 - 1 - 1;
289
+ //#endregion
290
+ //#region ../../../node_modules/.pnpm/devalue@5.8.1/node_modules/devalue/src/utils.js
291
+ /** @type {Record<string, string>} */
292
+ var escaped = {
293
+ "<": "\\u003C",
294
+ "\\": "\\\\",
295
+ "\b": "\\b",
296
+ "\f": "\\f",
297
+ "\n": "\\n",
298
+ "\r": "\\r",
299
+ " ": "\\t",
300
+ "\u2028": "\\u2028",
301
+ "\u2029": "\\u2029"
302
+ };
303
+ var DevalueError = class extends Error {
304
+ /**
305
+ * @param {string} message
306
+ * @param {string[]} keys
307
+ * @param {any} [value] - The value that failed to be serialized
308
+ * @param {any} [root] - The root value being serialized
309
+ */
310
+ constructor(message, keys, value, root) {
311
+ super(message);
312
+ this.name = "DevalueError";
313
+ this.path = keys.join("");
314
+ this.value = value;
315
+ this.root = root;
316
+ }
317
+ };
318
+ /** @param {any} thing */
319
+ function is_primitive(thing) {
320
+ return thing === null || typeof thing !== "object" && typeof thing !== "function";
321
+ }
322
+ var object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames(Object.prototype).sort().join("\0");
323
+ /** @param {any} thing */
324
+ function is_plain_object(thing) {
325
+ const proto = Object.getPrototypeOf(thing);
326
+ return proto === Object.prototype || proto === null || Object.getPrototypeOf(proto) === null || Object.getOwnPropertyNames(proto).sort().join("\0") === object_proto_names;
327
+ }
328
+ /** @param {any} thing */
329
+ function get_type(thing) {
330
+ return Object.prototype.toString.call(thing).slice(8, -1);
331
+ }
332
+ /** @param {string} char */
333
+ function get_escaped_char(char) {
334
+ switch (char) {
335
+ case "\"": return "\\\"";
336
+ case "<": return "\\u003C";
337
+ case "\\": return "\\\\";
338
+ case "\n": return "\\n";
339
+ case "\r": return "\\r";
340
+ case " ": return "\\t";
341
+ case "\b": return "\\b";
342
+ case "\f": return "\\f";
343
+ case "\u2028": return "\\u2028";
344
+ case "\u2029": return "\\u2029";
345
+ default: return char < " " ? `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}` : "";
346
+ }
347
+ }
348
+ /** @param {string} str */
349
+ function stringify_string(str) {
350
+ let result = "";
351
+ let last_pos = 0;
352
+ const len = str.length;
353
+ for (let i = 0; i < len; i += 1) {
354
+ const char = str[i];
355
+ const replacement = get_escaped_char(char);
356
+ if (replacement) {
357
+ result += str.slice(last_pos, i) + replacement;
358
+ last_pos = i + 1;
359
+ }
360
+ }
361
+ return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`;
362
+ }
363
+ /** @param {Record<string | symbol, any>} object */
364
+ function enumerable_symbols(object) {
365
+ return Object.getOwnPropertySymbols(object).filter((symbol) => Object.getOwnPropertyDescriptor(object, symbol).enumerable);
366
+ }
367
+ var is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
368
+ /** @param {string} key */
369
+ function stringify_key(key) {
370
+ return is_identifier.test(key) ? "." + key : "[" + JSON.stringify(key) + "]";
371
+ }
372
+ /** @param {number} n */
373
+ function is_valid_array_index(n) {
374
+ if (!Number.isInteger(n)) return false;
375
+ if (n < 0) return false;
376
+ if (n > MAX_ARRAY_INDEX) return false;
377
+ return true;
378
+ }
379
+ /** @param {string} s */
380
+ function is_valid_array_index_string(s) {
381
+ if (s.length === 0) return false;
382
+ if (s.length > 1 && s.charCodeAt(0) === 48) return false;
383
+ for (let i = 0; i < s.length; i++) {
384
+ const c = s.charCodeAt(i);
385
+ if (c < 48 || c > 57) return false;
386
+ }
387
+ return is_valid_array_index(+s);
388
+ }
389
+ /**
390
+ * Finds the populated indices of an array.
391
+ * @param {unknown[]} array
392
+ */
393
+ function valid_array_indices(array) {
394
+ const keys = Object.keys(array);
395
+ for (var i = keys.length - 1; i >= 0; i--) if (is_valid_array_index_string(keys[i])) break;
396
+ keys.length = i + 1;
397
+ return keys;
398
+ }
399
+ //#endregion
400
+ //#region ../../../node_modules/.pnpm/devalue@5.8.1/node_modules/devalue/src/uneval.js
401
+ var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$";
402
+ var unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g;
403
+ var reserved = /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;
404
+ /**
405
+ * Turn a value into the JavaScript that creates an equivalent value
406
+ * @param {any} value
407
+ * @param {(value: any, uneval: (value: any) => string) => string | void} [replacer]
408
+ */
409
+ function uneval(value, replacer) {
410
+ const counts = /* @__PURE__ */ new Map();
411
+ /** @type {string[]} */
412
+ const keys = [];
413
+ const custom = /* @__PURE__ */ new Map();
414
+ /** @param {any} thing */
415
+ function walk(thing) {
416
+ if (!is_primitive(thing)) {
417
+ if (counts.has(thing)) {
418
+ counts.set(thing, counts.get(thing) + 1);
419
+ return;
420
+ }
421
+ counts.set(thing, 1);
422
+ if (replacer) {
423
+ const str = replacer(thing, (value) => uneval(value, replacer));
424
+ if (typeof str === "string") {
425
+ custom.set(thing, str);
426
+ return;
427
+ }
428
+ }
429
+ if (typeof thing === "function") throw new DevalueError(`Cannot stringify a function`, keys, thing, value);
430
+ switch (get_type(thing)) {
431
+ case "Number":
432
+ case "BigInt":
433
+ case "String":
434
+ case "Boolean":
435
+ case "Date":
436
+ case "RegExp":
437
+ case "URL":
438
+ case "URLSearchParams": return;
439
+ case "Array":
440
+ /** @type {any[]} */ thing.forEach((value, i) => {
441
+ keys.push(`[${i}]`);
442
+ walk(value);
443
+ keys.pop();
444
+ });
445
+ break;
446
+ case "Set":
447
+ Array.from(thing).forEach(walk);
448
+ break;
449
+ case "Map":
450
+ for (const [key, value] of thing) {
451
+ keys.push(`.get(${is_primitive(key) ? stringify_primitive(key) : "..."})`);
452
+ walk(value);
453
+ keys.pop();
454
+ }
455
+ break;
456
+ case "Int8Array":
457
+ case "Uint8Array":
458
+ case "Uint8ClampedArray":
459
+ case "Int16Array":
460
+ case "Uint16Array":
461
+ case "Float16Array":
462
+ case "Int32Array":
463
+ case "Uint32Array":
464
+ case "Float32Array":
465
+ case "Float64Array":
466
+ case "BigInt64Array":
467
+ case "BigUint64Array":
468
+ case "DataView":
469
+ walk(thing.buffer);
470
+ return;
471
+ case "ArrayBuffer": return;
472
+ case "Temporal.Duration":
473
+ case "Temporal.Instant":
474
+ case "Temporal.PlainDate":
475
+ case "Temporal.PlainTime":
476
+ case "Temporal.PlainDateTime":
477
+ case "Temporal.PlainMonthDay":
478
+ case "Temporal.PlainYearMonth":
479
+ case "Temporal.ZonedDateTime": return;
480
+ default:
481
+ if (!is_plain_object(thing)) throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys, thing, value);
482
+ if (enumerable_symbols(thing).length > 0) throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys, thing, value);
483
+ for (const key of Object.keys(thing)) {
484
+ if (key === "__proto__") throw new DevalueError(`Cannot stringify objects with __proto__ keys`, keys, thing, value);
485
+ keys.push(stringify_key(key));
486
+ walk(thing[key]);
487
+ keys.pop();
488
+ }
489
+ }
490
+ } else if (typeof thing === "symbol") throw new DevalueError(`Cannot stringify a Symbol primitive`, keys, thing, value);
491
+ }
492
+ walk(value);
493
+ const names = /* @__PURE__ */ new Map();
494
+ Array.from(counts).filter((entry) => entry[1] > 1).sort((a, b) => b[1] - a[1]).forEach((entry, i) => {
495
+ names.set(entry[0], get_name(i));
496
+ });
497
+ /**
498
+ * @param {any} thing
499
+ * @returns {string}
500
+ */
501
+ function stringify(thing) {
502
+ if (names.has(thing)) return names.get(thing);
503
+ if (is_primitive(thing)) return stringify_primitive(thing);
504
+ if (custom.has(thing)) return custom.get(thing);
505
+ const type = get_type(thing);
506
+ switch (type) {
507
+ case "Number":
508
+ case "String":
509
+ case "Boolean":
510
+ case "BigInt": return `Object(${stringify(thing.valueOf())})`;
511
+ case "RegExp":
512
+ const { source, flags } = thing;
513
+ return flags ? `new RegExp(${stringify_string(source)},"${flags}")` : `new RegExp(${stringify_string(source)})`;
514
+ case "Date": return `new Date(${thing.getTime()})`;
515
+ case "URL": return `new URL(${stringify_string(thing.toString())})`;
516
+ case "URLSearchParams": return `new URLSearchParams(${stringify_string(thing.toString())})`;
517
+ case "Array": {
518
+ let has_holes = false;
519
+ let result = "[";
520
+ for (let i = 0; i < thing.length; i += 1) {
521
+ if (i > 0) result += ",";
522
+ if (Object.hasOwn(thing, i)) result += stringify(thing[i]);
523
+ else if (!has_holes) {
524
+ const populated_keys = valid_array_indices(thing);
525
+ const population = populated_keys.length;
526
+ const d = String(thing.length).length;
527
+ if (thing.length + 2 > 25 + d + population * (d + 2)) {
528
+ const entries = populated_keys.map((k) => `${k}:${stringify(thing[k])}`).join(",");
529
+ return `Object.assign(Array(${thing.length}),{${entries}})`;
530
+ }
531
+ has_holes = true;
532
+ i -= 1;
533
+ }
534
+ }
535
+ const tail = thing.length === 0 || thing.length - 1 in thing ? "" : ",";
536
+ return result + tail + "]";
537
+ }
538
+ case "Set":
539
+ case "Map": return `new ${type}([${Array.from(thing).map(stringify).join(",")}])`;
540
+ case "Int8Array":
541
+ case "Uint8Array":
542
+ case "Uint8ClampedArray":
543
+ case "Int16Array":
544
+ case "Uint16Array":
545
+ case "Float16Array":
546
+ case "Int32Array":
547
+ case "Uint32Array":
548
+ case "Float32Array":
549
+ case "Float64Array":
550
+ case "BigInt64Array":
551
+ case "BigUint64Array": {
552
+ let str = `new ${type}`;
553
+ if (!names.has(thing.buffer)) {
554
+ const array = new thing.constructor(thing.buffer);
555
+ str += `([${array}])`;
556
+ } else str += `(${stringify(thing.buffer)})`;
557
+ if (thing.byteLength !== thing.buffer.byteLength) {
558
+ const start = thing.byteOffset / thing.BYTES_PER_ELEMENT;
559
+ const end = start + thing.length;
560
+ str += `.subarray(${start},${end})`;
561
+ }
562
+ return str;
563
+ }
564
+ case "DataView": {
565
+ let str = `new DataView`;
566
+ if (!names.has(thing.buffer)) str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`;
567
+ else str += `(${stringify(thing.buffer)}`;
568
+ if (thing.byteLength !== thing.buffer.byteLength) str += `,${thing.startOffset},${thing.byteLength}`;
569
+ return str + ")";
570
+ }
571
+ case "ArrayBuffer": return `new Uint8Array([${new Uint8Array(thing).toString()}]).buffer`;
572
+ case "Temporal.Duration":
573
+ case "Temporal.Instant":
574
+ case "Temporal.PlainDate":
575
+ case "Temporal.PlainTime":
576
+ case "Temporal.PlainDateTime":
577
+ case "Temporal.PlainMonthDay":
578
+ case "Temporal.PlainYearMonth":
579
+ case "Temporal.ZonedDateTime": return `${type}.from(${stringify_string(thing.toString())})`;
580
+ default:
581
+ const keys = Object.keys(thing);
582
+ const obj = keys.map((key) => `${safe_key(key)}:${stringify(thing[key])}`).join(",");
583
+ if (Object.getPrototypeOf(thing) === null) return keys.length > 0 ? `{${obj},__proto__:null}` : `{__proto__:null}`;
584
+ return `{${obj}}`;
585
+ }
586
+ }
587
+ const str = stringify(value);
588
+ if (names.size) {
589
+ /** @type {string[]} */
590
+ const params = [];
591
+ /** @type {string[]} */
592
+ const statements = [];
593
+ /** @type {string[]} */
594
+ const values = [];
595
+ names.forEach((name, thing) => {
596
+ params.push(name);
597
+ if (custom.has(thing)) {
598
+ values.push(custom.get(thing));
599
+ return;
600
+ }
601
+ if (is_primitive(thing)) {
602
+ values.push(stringify_primitive(thing));
603
+ return;
604
+ }
605
+ const type = get_type(thing);
606
+ switch (type) {
607
+ case "Number":
608
+ case "String":
609
+ case "Boolean":
610
+ case "BigInt":
611
+ values.push(`Object(${stringify(thing.valueOf())})`);
612
+ break;
613
+ case "RegExp":
614
+ const { source, flags } = thing;
615
+ const regexp = flags ? `new RegExp(${stringify_string(source)},"${flags}")` : `new RegExp(${stringify_string(source)})`;
616
+ values.push(regexp);
617
+ break;
618
+ case "Date":
619
+ values.push(`new Date(${thing.getTime()})`);
620
+ break;
621
+ case "URL":
622
+ values.push(`new URL(${stringify_string(thing.toString())})`);
623
+ break;
624
+ case "URLSearchParams":
625
+ values.push(`new URLSearchParams(${stringify_string(thing.toString())})`);
626
+ break;
627
+ case "Array":
628
+ values.push(`Array(${thing.length})`);
629
+ /** @type {any[]} */ thing.forEach((v, i) => {
630
+ statements.push(`${name}[${i}]=${stringify(v)}`);
631
+ });
632
+ break;
633
+ case "Set":
634
+ values.push(`new Set`);
635
+ statements.push(`${name}.${Array.from(thing).map((v) => `add(${stringify(v)})`).join(".")}`);
636
+ break;
637
+ case "Map":
638
+ values.push(`new Map`);
639
+ statements.push(`${name}.${Array.from(thing).map(([k, v]) => `set(${stringify(k)}, ${stringify(v)})`).join(".")}`);
640
+ break;
641
+ case "Int8Array":
642
+ case "Uint8Array":
643
+ case "Uint8ClampedArray":
644
+ case "Int16Array":
645
+ case "Uint16Array":
646
+ case "Float16Array":
647
+ case "Int32Array":
648
+ case "Uint32Array":
649
+ case "Float32Array":
650
+ case "Float64Array":
651
+ case "BigInt64Array":
652
+ case "BigUint64Array": {
653
+ let str = `new ${type}`;
654
+ if (!names.has(thing.buffer)) {
655
+ const array = new thing.constructor(thing.buffer);
656
+ str += `([${array}])`;
657
+ } else str += `(${stringify(thing.buffer)})`;
658
+ if (thing.byteLength !== thing.buffer.byteLength) {
659
+ const start = thing.byteOffset / thing.BYTES_PER_ELEMENT;
660
+ const end = start + thing.length;
661
+ str += `.subarray(${start},${end})`;
662
+ }
663
+ values.push(`{}`);
664
+ statements.push(`${name}=${str}`);
665
+ break;
666
+ }
667
+ case "DataView": {
668
+ let str = `new DataView`;
669
+ if (!names.has(thing.buffer)) str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`;
670
+ else str += `(${stringify(thing.buffer)}`;
671
+ if (thing.byteLength !== thing.buffer.byteLength) str += `,${thing.byteOffset},${thing.byteLength}`;
672
+ str += ")";
673
+ values.push(`{}`);
674
+ statements.push(`${name}=${str}`);
675
+ break;
676
+ }
677
+ case "ArrayBuffer":
678
+ values.push(`new Uint8Array([${new Uint8Array(thing)}]).buffer`);
679
+ break;
680
+ default:
681
+ values.push(Object.getPrototypeOf(thing) === null ? "Object.create(null)" : "{}");
682
+ Object.keys(thing).forEach((key) => {
683
+ statements.push(`${name}${safe_prop(key)}=${stringify(thing[key])}`);
684
+ });
685
+ }
686
+ });
687
+ statements.push(`return ${str}`);
688
+ return `(function(${params.join(",")}){${statements.join(";")}}(${values.join(",")}))`;
689
+ } else return str;
690
+ }
691
+ /** @param {number} num */
692
+ function get_name(num) {
693
+ let name = "";
694
+ do {
695
+ name = chars[num % 54] + name;
696
+ num = ~~(num / 54) - 1;
697
+ } while (num >= 0);
698
+ return reserved.test(name) ? `${name}0` : name;
699
+ }
700
+ /** @param {string} c */
701
+ function escape_unsafe_char(c) {
702
+ return escaped[c] || c;
703
+ }
704
+ /** @param {string} str */
705
+ function escape_unsafe_chars(str) {
706
+ return str.replace(unsafe_chars, escape_unsafe_char);
707
+ }
708
+ /** @param {string} key */
709
+ function safe_key(key) {
710
+ return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escape_unsafe_chars(JSON.stringify(key));
711
+ }
712
+ /** @param {string} key */
713
+ function safe_prop(key) {
714
+ return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? `.${key}` : `[${escape_unsafe_chars(JSON.stringify(key))}]`;
715
+ }
716
+ /** @param {any} thing */
717
+ function stringify_primitive(thing) {
718
+ const type = typeof thing;
719
+ if (type === "string") return stringify_string(thing);
720
+ if (thing === void 0) return "void 0";
721
+ if (thing === 0 && 1 / thing < 0) return "-0";
722
+ const str = String(thing);
723
+ if (type === "number") return str.replace(/^(-)?0\./, "$1.");
724
+ if (type === "bigint") return thing + "n";
725
+ return str;
726
+ }
727
+ //#endregion
728
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/warnings.js
729
+ var bold = "font-weight: bold";
730
+ var normal = "font-weight: normal";
731
+ /**
732
+ * A `hydratable` value with key `%key%` was created, but at least part of it was not used during the render.
733
+ *
734
+ * The `hydratable` was initialized in:
735
+ * %stack%
736
+ * @param {string} key
737
+ * @param {string} stack
738
+ */
739
+ function unresolved_hydratable(key, stack) {
740
+ console.warn(`%c[svelte] unresolved_hydratable\n%cA \`hydratable\` value with key \`${key}\` was created, but at least part of it was not used during the render.
741
+
742
+ The \`hydratable\` was initialized in:
743
+ ${stack}\nhttps://svelte.dev/e/unresolved_hydratable`, bold, normal);
744
+ }
745
+ //#endregion
746
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/blocks/html.js
747
+ /**
748
+ * @param {string} value
749
+ */
750
+ function html(value) {
751
+ var html = String(value ?? "");
752
+ return `<!--${hash(html)}-->` + html + "<!---->";
753
+ }
754
+ //#endregion
755
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/index.js
756
+ var INVALID_ATTR_NAME_CHAR_REGEX = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
757
+ /**
758
+ * @param {Renderer} renderer
759
+ * @param {string} tag
760
+ * @param {() => void} attributes_fn
761
+ * @param {() => void} children_fn
762
+ * @returns {void}
763
+ */
764
+ function element(renderer, tag, attributes_fn = noop, children_fn = noop) {
765
+ renderer.push("<!---->");
766
+ if (tag) {
767
+ if (!REGEX_VALID_TAG_NAME.test(tag)) dynamic_element_invalid_tag(tag);
768
+ renderer.push(`<${tag}`);
769
+ attributes_fn();
770
+ renderer.push(`>`);
771
+ if (!is_void(tag)) {
772
+ children_fn();
773
+ if (!is_raw_text_element(tag)) renderer.push(EMPTY_COMMENT);
774
+ renderer.push(`</${tag}>`);
775
+ }
776
+ }
777
+ renderer.push("<!---->");
778
+ }
779
+ /**
780
+ * Only available on the server and when compiling with the `server` option.
781
+ * Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.
782
+ * @template {Record<string, any>} Props
783
+ * @param {Component<Props> | ComponentType<SvelteComponent<Props>>} component
784
+ * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} [options]
785
+ * @returns {RenderOutput}
786
+ */
787
+ function render(component, options = {}) {
788
+ if (options.csp?.hash && options.csp.nonce) invalid_csp();
789
+ return Renderer.render(component, options);
790
+ }
791
+ /**
792
+ * @param {string} hash
793
+ * @param {Renderer} renderer
794
+ * @param {(renderer: Renderer) => Promise<void> | void} fn
795
+ * @returns {void}
796
+ */
797
+ function head(hash, renderer, fn) {
798
+ renderer.head((renderer) => {
799
+ renderer.push(`<!--${hash}-->`);
800
+ renderer.child(fn);
801
+ renderer.push(EMPTY_COMMENT);
802
+ });
803
+ }
804
+ /**
805
+ * @param {Renderer} renderer
806
+ * @param {boolean} is_html
807
+ * @param {Record<string, string>} props
808
+ * @param {() => void} component
809
+ * @param {boolean} dynamic
810
+ * @returns {void}
811
+ */
812
+ function css_props(renderer, is_html, props, component, dynamic = false) {
813
+ const styles = style_object_to_string(props);
814
+ if (is_html) renderer.push(`<svelte-css-wrapper style="display: contents; ${styles}">`);
815
+ else renderer.push(`<g style="${styles}">`);
816
+ component();
817
+ if (!dynamic) renderer.push("<!---->");
818
+ if (is_html) renderer.push("</svelte-css-wrapper>");
819
+ else renderer.push("</g>");
820
+ }
821
+ /**
822
+ * @param {Record<string, unknown>} attrs
823
+ * @param {string} [css_hash]
824
+ * @param {Record<string, boolean>} [classes]
825
+ * @param {Record<string, string>} [styles]
826
+ * @param {number} [flags]
827
+ * @returns {string}
828
+ */
829
+ function attributes(attrs, css_hash, classes, styles, flags = 0) {
830
+ if (styles) attrs.style = to_style(attrs.style, styles);
831
+ if (attrs.class) attrs.class = clsx(attrs.class);
832
+ if (css_hash || classes) attrs.class = to_class(attrs.class, css_hash, classes);
833
+ let attr_str = "";
834
+ let name;
835
+ const is_html = (flags & 1) === 0;
836
+ const lowercase = (flags & 2) === 0;
837
+ const is_input = (flags & 4) !== 0;
838
+ for (name of Object.keys(attrs)) {
839
+ if (typeof attrs[name] === "function") continue;
840
+ if (name[0] === "$" && name[1] === "$") continue;
841
+ if (name === "" || INVALID_ATTR_NAME_CHAR_REGEX.test(name)) continue;
842
+ var value = attrs[name];
843
+ var lower = name.toLowerCase();
844
+ if (lowercase) name = lower;
845
+ if (lower.length > 2 && lower.startsWith("on")) continue;
846
+ if (is_input) {
847
+ if (name === "defaultvalue" || name === "defaultchecked") {
848
+ name = name === "defaultvalue" ? "value" : "checked";
849
+ if (attrs[name]) continue;
850
+ }
851
+ }
852
+ attr_str += attr(name, value, is_html && is_boolean_attribute(name));
853
+ }
854
+ return attr_str;
855
+ }
856
+ /**
857
+ * @param {Record<string, unknown>[]} props
858
+ * @returns {Record<string, unknown>}
859
+ */
860
+ function spread_props(props) {
861
+ /** @type {Record<string, unknown>} */
862
+ const merged_props = {};
863
+ let key;
864
+ for (let i = 0; i < props.length; i++) {
865
+ const obj = props[i];
866
+ if (obj == null) continue;
867
+ for (key of Object.keys(obj)) {
868
+ const desc = Object.getOwnPropertyDescriptor(obj, key);
869
+ if (desc) Object.defineProperty(merged_props, key, desc);
870
+ else merged_props[key] = obj[key];
871
+ }
872
+ }
873
+ return merged_props;
874
+ }
875
+ /**
876
+ * @param {unknown} value
877
+ * @returns {string}
878
+ */
879
+ function stringify(value) {
880
+ return typeof value === "string" ? value : value == null ? "" : value + "";
881
+ }
882
+ /** @param {Record<string, string>} style_object */
883
+ function style_object_to_string(style_object) {
884
+ return Object.keys(style_object).filter(
885
+ /** @param {any} key */
886
+ (key) => style_object[key] != null && style_object[key] !== ""
887
+ ).map(
888
+ /** @param {any} key */
889
+ (key) => `${key}: ${escape_html(style_object[key], true)};`
890
+ ).join(" ");
891
+ }
892
+ /**
893
+ * @param {any} value
894
+ * @param {string | undefined} [hash]
895
+ * @param {Record<string, boolean>} [directives]
896
+ */
897
+ function attr_class(value, hash, directives) {
898
+ var result = to_class(value, hash, directives);
899
+ return result ? ` class="${escape_html(result, true)}"` : "";
900
+ }
901
+ /**
902
+ * @param {any} value
903
+ * @param {Record<string,any>|[Record<string,any>,Record<string,any>]} [directives]
904
+ */
905
+ function attr_style(value, directives) {
906
+ var result = to_style(value, directives);
907
+ return result ? ` style="${escape_html(result, true)}"` : "";
908
+ }
909
+ /**
910
+ * @template V
911
+ * @param {Record<string, [any, any, any]>} store_values
912
+ * @param {string} store_name
913
+ * @param {Store<V> | null | undefined} store
914
+ * @returns {V}
915
+ */
916
+ function store_get(store_values, store_name, store) {
917
+ validate_store(store, store_name.slice(1));
918
+ if (store_name in store_values && store_values[store_name][0] === store) return store_values[store_name][2];
919
+ store_values[store_name]?.[1]();
920
+ store_values[store_name] = [
921
+ store,
922
+ null,
923
+ void 0
924
+ ];
925
+ const unsub = subscribe_to_store(
926
+ store,
927
+ /** @param {any} v */
928
+ (v) => store_values[store_name][2] = v
929
+ );
930
+ store_values[store_name][1] = unsub;
931
+ return store_values[store_name][2];
932
+ }
933
+ /**
934
+ * Sets the new value of a store and returns that value.
935
+ * @template V
936
+ * @param {Store<V>} store
937
+ * @param {V} value
938
+ * @returns {V}
939
+ */
940
+ function store_set(store, value) {
941
+ store.set(value);
942
+ return value;
943
+ }
944
+ /**
945
+ * Updates a store with a new value.
946
+ * @template V
947
+ * @param {Record<string, [any, any, any]>} store_values
948
+ * @param {string} store_name
949
+ * @param {Store<V>} store
950
+ * @param {any} expression
951
+ */
952
+ function store_mutate(store_values, store_name, store, expression) {
953
+ store_set(store, store_get(store_values, store_name, store));
954
+ return expression;
955
+ }
956
+ /**
957
+ * @param {Record<string, [any, any, any]>} store_values
958
+ * @param {string} store_name
959
+ * @param {Store<number>} store
960
+ * @param {1 | -1} [d]
961
+ * @returns {number}
962
+ */
963
+ function update_store(store_values, store_name, store, d = 1) {
964
+ let store_value = store_get(store_values, store_name, store);
965
+ store.set(store_value + d);
966
+ return store_value;
967
+ }
968
+ /**
969
+ * @param {Record<string, [any, any, any]>} store_values
970
+ * @param {string} store_name
971
+ * @param {Store<number>} store
972
+ * @param {1 | -1} [d]
973
+ * @returns {number}
974
+ */
975
+ function update_store_pre(store_values, store_name, store, d = 1) {
976
+ const value = store_get(store_values, store_name, store) + d;
977
+ store.set(value);
978
+ return value;
979
+ }
980
+ /** @param {Record<string, [any, any, any]>} store_values */
981
+ function unsubscribe_stores(store_values) {
982
+ for (const store_name of Object.keys(store_values)) store_values[store_name][1]();
983
+ }
984
+ /**
985
+ * @param {Renderer} renderer
986
+ * @param {Record<string, any>} $$props
987
+ * @param {string} name
988
+ * @param {Record<string, unknown>} slot_props
989
+ * @param {null | (() => void)} fallback_fn
990
+ * @returns {void}
991
+ */
992
+ function slot(renderer, $$props, name, slot_props, fallback_fn) {
993
+ var slot_fn = $$props.$$slots?.[name];
994
+ if (slot_fn === true) slot_fn = $$props[name === "default" ? "children" : name];
995
+ if (slot_fn !== void 0) slot_fn(renderer, slot_props);
996
+ else fallback_fn?.();
997
+ }
998
+ /**
999
+ * @param {Record<string, unknown>} props
1000
+ * @param {string[]} rest
1001
+ * @returns {Record<string, unknown>}
1002
+ */
1003
+ function rest_props(props, rest) {
1004
+ /** @type {Record<string, unknown>} */
1005
+ const rest_props = {};
1006
+ let key;
1007
+ for (key of Object.keys(props)) if (!rest.includes(key)) rest_props[key] = props[key];
1008
+ return rest_props;
1009
+ }
1010
+ /**
1011
+ * @param {Record<string, unknown>} props
1012
+ * @returns {Record<string, unknown>}
1013
+ */
1014
+ function sanitize_props(props) {
1015
+ const { children, $$slots, ...sanitized } = props;
1016
+ return sanitized;
1017
+ }
1018
+ /**
1019
+ * @param {Record<string, any>} props
1020
+ * @returns {Record<string, boolean>}
1021
+ */
1022
+ function sanitize_slots(props) {
1023
+ /** @type {Record<string, boolean>} */
1024
+ const sanitized = {};
1025
+ if (props.children) sanitized.default = true;
1026
+ for (const key of Object.keys(props.$$slots || {})) sanitized[key] = true;
1027
+ return sanitized;
1028
+ }
1029
+ /**
1030
+ * Legacy mode: If the prop has a fallback and is bound in the
1031
+ * parent component, propagate the fallback value upwards.
1032
+ * @param {Record<string, unknown>} props_parent
1033
+ * @param {Record<string, unknown>} props_now
1034
+ */
1035
+ function bind_props(props_parent, props_now) {
1036
+ for (const key of Object.keys(props_now)) {
1037
+ const initial_value = props_parent[key];
1038
+ const value = props_now[key];
1039
+ if (initial_value === void 0 && value !== void 0 && Object.getOwnPropertyDescriptor(props_parent, key)?.set) props_parent[key] = value;
1040
+ }
1041
+ }
1042
+ /**
1043
+ * @template V
1044
+ * @param {Renderer} renderer
1045
+ * @param {Promise<V>} promise
1046
+ * @param {null | (() => void)} pending_fn
1047
+ * @param {(value: V) => void} then_fn
1048
+ * @returns {void}
1049
+ */
1050
+ function await_block(renderer, promise, pending_fn, then_fn) {
1051
+ if (is_promise(promise)) {
1052
+ renderer.push(BLOCK_OPEN);
1053
+ promise.then(null, noop);
1054
+ if (pending_fn !== null) pending_fn();
1055
+ } else if (then_fn !== null) {
1056
+ renderer.push(BLOCK_OPEN_ELSE);
1057
+ then_fn(promise);
1058
+ }
1059
+ }
1060
+ /** @param {any} array_like_or_iterator */
1061
+ function ensure_array_like(array_like_or_iterator) {
1062
+ if (array_like_or_iterator) return array_like_or_iterator.length !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
1063
+ return [];
1064
+ }
1065
+ /**
1066
+ * @template V
1067
+ * @param {() => V} get_value
1068
+ */
1069
+ function once(get_value) {
1070
+ let value = UNINITIALIZED;
1071
+ return () => {
1072
+ if (value === UNINITIALIZED) value = get_value();
1073
+ return value;
1074
+ };
1075
+ }
1076
+ /**
1077
+ * Create an unique ID
1078
+ * @param {Renderer} renderer
1079
+ * @returns {string}
1080
+ */
1081
+ function props_id(renderer) {
1082
+ const uid = renderer.global.uid();
1083
+ renderer.push("<!--$" + uid + "-->");
1084
+ return uid;
1085
+ }
1086
+ /**
1087
+ * @template T
1088
+ * @param {()=>T} fn
1089
+ * @returns {(new_value?: T) => (T | void)}
1090
+ */
1091
+ function derived(fn) {
1092
+ const get_value = ssr_context === null ? fn : once(fn);
1093
+ /** @type {T | undefined} */
1094
+ let updated_value;
1095
+ return function(new_value) {
1096
+ if (arguments.length === 0) return updated_value ?? get_value();
1097
+ updated_value = new_value;
1098
+ return updated_value;
1099
+ };
1100
+ }
1101
+ /**
1102
+ * @template {number | bigint} T
1103
+ * @param {(value?: T) => T} derived
1104
+ * @param {1 | -1} [d]
1105
+ * @returns {T}
1106
+ */
1107
+ function update_derived(derived, d = 1) {
1108
+ const value = derived();
1109
+ derived(value + (typeof value === "bigint" ? BigInt(d) : d));
1110
+ return value;
1111
+ }
1112
+ /**
1113
+ * @template {number | bigint} T
1114
+ * @param {(value?: T) => T} derived
1115
+ * @param {1 | -1} [d]
1116
+ * @returns {T}
1117
+ */
1118
+ function update_derived_pre(derived, d = 1) {
1119
+ const old_value = derived();
1120
+ const value = old_value + (typeof old_value === "bigint" ? BigInt(d) : d);
1121
+ derived(value);
1122
+ return value;
1123
+ }
1124
+ /**
1125
+ * @template T
1126
+ * @param {()=>T} fn
1127
+ */
1128
+ function async_derived(fn) {
1129
+ return Promise.resolve(fn()).then((value) => {
1130
+ return () => value;
1131
+ });
1132
+ }
1133
+ //#endregion
1134
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/crypto.js
1135
+ var text_encoder;
1136
+ var crypto;
1137
+ /** @param {string} module_name */
1138
+ var obfuscated_import = (module_name) => import(
1139
+ /* @vite-ignore */
1140
+ module_name
1141
+ );
1142
+ /** @param {string} data */
1143
+ async function sha256(data) {
1144
+ text_encoder ??= new TextEncoder();
1145
+ crypto ??= globalThis.crypto?.subtle?.digest ? globalThis.crypto : (await obfuscated_import("node:crypto")).webcrypto;
1146
+ return base64_encode(await crypto.subtle.digest("SHA-256", text_encoder.encode(data)));
1147
+ }
1148
+ /**
1149
+ * @param {Uint8Array} bytes
1150
+ * @returns {string}
1151
+ */
1152
+ function base64_encode(bytes) {
1153
+ if (globalThis.Buffer) return globalThis.Buffer.from(bytes).toString("base64");
1154
+ let binary = "";
1155
+ for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);
1156
+ return btoa(binary);
1157
+ }
1158
+ //#endregion
1159
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/renderer.js
1160
+ /** @import { Component } from 'svelte' */
1161
+ /** @import { Csp, HydratableContext, RenderOutput, SSRContext, SyncRenderOutput, Sha256Source } from './types.js' */
1162
+ /** @import { MaybePromise } from '#shared' */
1163
+ /** @typedef {'head' | 'body'} RendererType */
1164
+ /** @typedef {{ [key in RendererType]: string }} AccumulatedContent */
1165
+ /**
1166
+ * @typedef {string | Renderer} RendererItem
1167
+ */
1168
+ /**
1169
+ * Renderers are basically a tree of `string | Renderer`s, where each `Renderer` in the tree represents
1170
+ * work that may or may not have completed. A renderer can be {@link collect}ed to aggregate the
1171
+ * content from itself and all of its children, but this will throw if any of the children are
1172
+ * performing asynchronous work. To asynchronously collect a renderer, just `await` it.
1173
+ *
1174
+ * The `string` values within a renderer are always associated with the {@link type} of that renderer. To switch types,
1175
+ * call {@link child} with a different `type` argument.
1176
+ */
1177
+ var Renderer = class Renderer {
1178
+ /**
1179
+ * The contents of the renderer.
1180
+ * @type {RendererItem[]}
1181
+ */
1182
+ #out = [];
1183
+ /**
1184
+ * Any `onDestroy` callbacks registered during execution of this renderer.
1185
+ * @type {(() => void)[] | undefined}
1186
+ */
1187
+ #on_destroy = void 0;
1188
+ /**
1189
+ * Whether this renderer is a component body.
1190
+ * @type {boolean}
1191
+ */
1192
+ #is_component_body = false;
1193
+ /**
1194
+ * If set, this renderer is an error boundary. When async collection
1195
+ * of the children fails, the failed snippet is rendered instead.
1196
+ * @type {{
1197
+ * failed: (renderer: Renderer, error: unknown, reset: () => void) => void;
1198
+ * transformError: (error: unknown) => unknown;
1199
+ * context: SSRContext | null;
1200
+ * } | null}
1201
+ */
1202
+ #boundary = null;
1203
+ /**
1204
+ * The type of string content that this renderer is accumulating.
1205
+ * @type {RendererType}
1206
+ */
1207
+ type;
1208
+ /** @type {Renderer | undefined} */
1209
+ #parent;
1210
+ /**
1211
+ * Asynchronous work associated with this renderer
1212
+ * @type {Promise<void> | undefined}
1213
+ */
1214
+ promise = void 0;
1215
+ /**
1216
+ * State which is associated with the content tree as a whole.
1217
+ * It will be re-exposed, uncopied, on all children.
1218
+ * @type {SSRState}
1219
+ * @readonly
1220
+ */
1221
+ global;
1222
+ /**
1223
+ * State that is local to the branch it is declared in.
1224
+ * It will be shallow-copied to all children.
1225
+ *
1226
+ * @type {{ select_value: string | undefined }}
1227
+ */
1228
+ local;
1229
+ /**
1230
+ * @param {SSRState} global
1231
+ * @param {Renderer | undefined} [parent]
1232
+ */
1233
+ constructor(global, parent) {
1234
+ this.#parent = parent;
1235
+ this.global = global;
1236
+ this.local = parent ? { ...parent.local } : { select_value: void 0 };
1237
+ this.type = parent ? parent.type : "body";
1238
+ }
1239
+ /**
1240
+ * @param {(renderer: Renderer) => void} fn
1241
+ */
1242
+ head(fn) {
1243
+ const head = new Renderer(this.global, this);
1244
+ head.type = "head";
1245
+ this.#out.push(head);
1246
+ head.child(fn);
1247
+ }
1248
+ /**
1249
+ * @param {Array<Promise<void>>} blockers
1250
+ * @param {(renderer: Renderer) => void} fn
1251
+ */
1252
+ async_block(blockers, fn) {
1253
+ this.#out.push(BLOCK_OPEN);
1254
+ this.async(blockers, fn);
1255
+ this.#out.push(BLOCK_CLOSE);
1256
+ }
1257
+ /**
1258
+ * @param {Array<Promise<void>>} blockers
1259
+ * @param {(renderer: Renderer) => void} fn
1260
+ */
1261
+ async(blockers, fn) {
1262
+ let callback = fn;
1263
+ if (blockers.length > 0) {
1264
+ const context = ssr_context;
1265
+ callback = (renderer) => {
1266
+ return Promise.all(blockers).then(() => {
1267
+ const previous_context = ssr_context;
1268
+ try {
1269
+ set_ssr_context(context);
1270
+ return fn(renderer);
1271
+ } finally {
1272
+ set_ssr_context(previous_context);
1273
+ }
1274
+ });
1275
+ };
1276
+ }
1277
+ this.child(callback);
1278
+ }
1279
+ /**
1280
+ * @param {Array<() => void>} thunks
1281
+ */
1282
+ run(thunks) {
1283
+ const context = ssr_context;
1284
+ let promise = Promise.resolve(thunks[0]());
1285
+ const promises = [promise];
1286
+ for (const fn of thunks.slice(1)) {
1287
+ promise = promise.then(() => {
1288
+ const previous_context = ssr_context;
1289
+ set_ssr_context(context);
1290
+ try {
1291
+ return fn();
1292
+ } finally {
1293
+ set_ssr_context(previous_context);
1294
+ }
1295
+ });
1296
+ promises.push(promise);
1297
+ }
1298
+ promise.catch(noop);
1299
+ this.promise = promise;
1300
+ return promises;
1301
+ }
1302
+ /**
1303
+ * @param {(renderer: Renderer) => MaybePromise<void>} fn
1304
+ */
1305
+ child_block(fn) {
1306
+ this.#out.push(BLOCK_OPEN);
1307
+ this.child(fn);
1308
+ this.#out.push(BLOCK_CLOSE);
1309
+ }
1310
+ /**
1311
+ * Create a child renderer. The child renderer inherits the state from the parent,
1312
+ * but has its own content.
1313
+ * @param {(renderer: Renderer) => MaybePromise<void>} fn
1314
+ */
1315
+ child(fn) {
1316
+ const child = new Renderer(this.global, this);
1317
+ this.#out.push(child);
1318
+ const parent = ssr_context;
1319
+ set_ssr_context({
1320
+ ...ssr_context,
1321
+ p: parent,
1322
+ c: null,
1323
+ r: child
1324
+ });
1325
+ const result = fn(child);
1326
+ set_ssr_context(parent);
1327
+ if (result instanceof Promise) {
1328
+ result.catch(noop);
1329
+ result.finally(() => set_ssr_context(null)).catch(noop);
1330
+ if (child.global.mode === "sync") await_invalid();
1331
+ child.promise = result;
1332
+ }
1333
+ return child;
1334
+ }
1335
+ /**
1336
+ * Render children inside an error boundary. If the children throw and the API-level
1337
+ * `transformError` transform handles the error (doesn't re-throw), the `failed` snippet is
1338
+ * rendered instead. Otherwise the error propagates.
1339
+ *
1340
+ * @param {{ failed?: (renderer: Renderer, error: unknown, reset: () => void) => void }} props
1341
+ * @param {(renderer: Renderer) => MaybePromise<void>} children_fn
1342
+ */
1343
+ boundary(props, children_fn) {
1344
+ const child = new Renderer(this.global, this);
1345
+ this.#out.push(child);
1346
+ const parent_context = ssr_context;
1347
+ if (props.failed) child.#boundary = {
1348
+ failed: props.failed,
1349
+ transformError: this.global.transformError,
1350
+ context: parent_context
1351
+ };
1352
+ set_ssr_context({
1353
+ ...ssr_context,
1354
+ p: parent_context,
1355
+ c: null,
1356
+ r: child
1357
+ });
1358
+ try {
1359
+ const result = children_fn(child);
1360
+ set_ssr_context(parent_context);
1361
+ if (result instanceof Promise) {
1362
+ if (child.global.mode === "sync") await_invalid();
1363
+ result.catch(noop);
1364
+ child.promise = result;
1365
+ }
1366
+ } catch (error) {
1367
+ set_ssr_context(parent_context);
1368
+ const failed_snippet = props.failed;
1369
+ if (!failed_snippet) throw error;
1370
+ const result = this.global.transformError(error);
1371
+ child.#out.length = 0;
1372
+ child.#boundary = null;
1373
+ if (result instanceof Promise) {
1374
+ if (this.global.mode === "sync") await_invalid();
1375
+ child.promise = result.then((transformed) => {
1376
+ set_ssr_context(parent_context);
1377
+ child.#out.push(Renderer.#serialize_failed_boundary(transformed));
1378
+ failed_snippet(child, transformed, noop);
1379
+ child.#out.push(BLOCK_CLOSE);
1380
+ });
1381
+ child.promise.catch(noop);
1382
+ } else {
1383
+ child.#out.push(Renderer.#serialize_failed_boundary(result));
1384
+ failed_snippet(child, result, noop);
1385
+ child.#out.push(BLOCK_CLOSE);
1386
+ }
1387
+ }
1388
+ }
1389
+ /**
1390
+ * Create a component renderer. The component renderer inherits the state from the parent,
1391
+ * but has its own content. It is treated as an ordering boundary for ondestroy callbacks.
1392
+ * @param {(renderer: Renderer) => MaybePromise<void>} fn
1393
+ * @param {Function} [component_fn]
1394
+ * @returns {void}
1395
+ */
1396
+ component(fn, component_fn) {
1397
+ push(component_fn);
1398
+ const child = this.child(fn);
1399
+ child.#is_component_body = true;
1400
+ pop();
1401
+ }
1402
+ /**
1403
+ * @param {Record<string, any>} attrs
1404
+ * @param {(renderer: Renderer) => void} fn
1405
+ * @param {string | undefined} [css_hash]
1406
+ * @param {Record<string, boolean> | undefined} [classes]
1407
+ * @param {Record<string, string> | undefined} [styles]
1408
+ * @param {number | undefined} [flags]
1409
+ * @param {boolean | undefined} [is_rich]
1410
+ * @returns {void}
1411
+ */
1412
+ select(attrs, fn, css_hash, classes, styles, flags, is_rich) {
1413
+ const { value, ...select_attrs } = attrs;
1414
+ this.push(`<select${attributes(select_attrs, css_hash, classes, styles, flags)}>`);
1415
+ this.child((renderer) => {
1416
+ renderer.local.select_value = value;
1417
+ fn(renderer);
1418
+ });
1419
+ this.push(`${is_rich ? "<!>" : ""}</select>`);
1420
+ }
1421
+ /**
1422
+ * @param {Record<string, any>} attrs
1423
+ * @param {string | number | boolean | ((renderer: Renderer) => void)} body
1424
+ * @param {string | undefined} [css_hash]
1425
+ * @param {Record<string, boolean> | undefined} [classes]
1426
+ * @param {Record<string, string> | undefined} [styles]
1427
+ * @param {number | undefined} [flags]
1428
+ * @param {boolean | undefined} [is_rich]
1429
+ */
1430
+ option(attrs, body, css_hash, classes, styles, flags, is_rich) {
1431
+ this.#out.push(`<option${attributes(attrs, css_hash, classes, styles, flags)}`);
1432
+ /**
1433
+ * @param {Renderer} renderer
1434
+ * @param {any} value
1435
+ * @param {{ head?: string, body: any }} content
1436
+ */
1437
+ const close = (renderer, value, { head, body }) => {
1438
+ if (has_own_property.call(attrs, "value")) value = attrs.value;
1439
+ if (value === this.local.select_value) renderer.#out.push(" selected=\"\"");
1440
+ renderer.#out.push(`>${body}${is_rich ? "<!>" : ""}</option>`);
1441
+ if (head) renderer.head((child) => child.push(head));
1442
+ };
1443
+ if (typeof body === "function") this.child((renderer) => {
1444
+ const r = new Renderer(this.global, this);
1445
+ body(r);
1446
+ if (this.global.mode === "async") return r.#collect_content_async().then((content) => {
1447
+ close(renderer, content.body.replaceAll("<!---->", ""), content);
1448
+ });
1449
+ else {
1450
+ const content = r.#collect_content();
1451
+ close(renderer, content.body.replaceAll("<!---->", ""), content);
1452
+ }
1453
+ });
1454
+ else close(this, body, { body: escape_html(body) });
1455
+ }
1456
+ /**
1457
+ * @param {(renderer: Renderer) => void} fn
1458
+ */
1459
+ title(fn) {
1460
+ const path = this.get_path();
1461
+ /** @param {string} head */
1462
+ const close = (head) => {
1463
+ this.global.set_title(head, path);
1464
+ };
1465
+ this.child((renderer) => {
1466
+ const r = new Renderer(renderer.global, renderer);
1467
+ fn(r);
1468
+ if (renderer.global.mode === "async") return r.#collect_content_async().then((content) => {
1469
+ close(content.head);
1470
+ });
1471
+ else close(r.#collect_content().head);
1472
+ });
1473
+ }
1474
+ /**
1475
+ * @param {string | (() => Promise<string>)} content
1476
+ */
1477
+ push(content) {
1478
+ if (typeof content === "function") this.child(async (renderer) => renderer.push(await content()));
1479
+ else this.#out.push(content);
1480
+ }
1481
+ /**
1482
+ * @param {() => void} fn
1483
+ */
1484
+ on_destroy(fn) {
1485
+ (this.#on_destroy ??= []).push(fn);
1486
+ }
1487
+ /**
1488
+ * @returns {number[]}
1489
+ */
1490
+ get_path() {
1491
+ return this.#parent ? [...this.#parent.get_path(), this.#parent.#out.indexOf(this)] : [];
1492
+ }
1493
+ /**
1494
+ * @deprecated this is needed for legacy component bindings
1495
+ */
1496
+ copy() {
1497
+ const copy = new Renderer(this.global, this.#parent);
1498
+ copy.#out = this.#out.map((item) => item instanceof Renderer ? item.copy() : item);
1499
+ copy.promise = this.promise;
1500
+ return copy;
1501
+ }
1502
+ /**
1503
+ * @param {Renderer} other
1504
+ * @deprecated this is needed for legacy component bindings
1505
+ */
1506
+ subsume(other) {
1507
+ if (this.global.mode !== other.global.mode) throw new Error("invariant: A renderer cannot switch modes. If you're seeing this, there's a compiler bug. File an issue!");
1508
+ this.local = other.local;
1509
+ this.#out = other.#out.map((item, i) => {
1510
+ const current = this.#out[i];
1511
+ if (current instanceof Renderer && item instanceof Renderer) {
1512
+ current.subsume(item);
1513
+ return current;
1514
+ }
1515
+ return item;
1516
+ });
1517
+ this.promise = other.promise;
1518
+ this.type = other.type;
1519
+ }
1520
+ get length() {
1521
+ return this.#out.length;
1522
+ }
1523
+ /**
1524
+ * Creates the hydration comment that marks the start of a failed boundary.
1525
+ * The error is JSON-serialized and embedded inside an HTML comment for the client
1526
+ * to parse during hydration. The JSON is escaped to prevent `-->` or `<!--` sequences
1527
+ * from breaking out of the comment (XSS). Uses unicode escapes which `JSON.parse()`
1528
+ * handles transparently.
1529
+ * @param {unknown} error
1530
+ * @returns {string}
1531
+ */
1532
+ static #serialize_failed_boundary(error) {
1533
+ return `<!--[?${JSON.stringify(error).replace(/>/g, "\\u003e").replace(/</g, "\\u003c")}-->`;
1534
+ }
1535
+ /**
1536
+ * Only available on the server and when compiling with the `server` option.
1537
+ * Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.
1538
+ * @template {Record<string, any>} Props
1539
+ * @param {Component<Props>} component
1540
+ * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp }} [options]
1541
+ * @returns {RenderOutput}
1542
+ */
1543
+ static render(component, options = {}) {
1544
+ /** @type {AccumulatedContent | undefined} */
1545
+ let sync;
1546
+ /** @type {Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }> | undefined} */
1547
+ let async;
1548
+ const result = {};
1549
+ Object.defineProperties(result, {
1550
+ html: { get: () => {
1551
+ return (sync ??= Renderer.#render(component, options)).body;
1552
+ } },
1553
+ head: { get: () => {
1554
+ return (sync ??= Renderer.#render(component, options)).head;
1555
+ } },
1556
+ body: { get: () => {
1557
+ return (sync ??= Renderer.#render(component, options)).body;
1558
+ } },
1559
+ hashes: { value: { script: "" } },
1560
+ then: { value: (onfulfilled, onrejected) => {
1561
+ if (!async_mode_flag) {
1562
+ const result = sync ??= Renderer.#render(component, options);
1563
+ const user_result = onfulfilled({
1564
+ head: result.head,
1565
+ body: result.body,
1566
+ html: result.body,
1567
+ hashes: { script: [] }
1568
+ });
1569
+ return Promise.resolve(user_result);
1570
+ }
1571
+ async ??= init_render_context().then(() => with_render_context(() => Renderer.#render_async(component, options)));
1572
+ return async.then((result) => {
1573
+ Object.defineProperty(result, "html", { get: () => {
1574
+ html_deprecated();
1575
+ } });
1576
+ return onfulfilled(result);
1577
+ }, onrejected);
1578
+ } }
1579
+ });
1580
+ return result;
1581
+ }
1582
+ /**
1583
+ * Collect all of the `onDestroy` callbacks registered during rendering. In an async context, this is only safe to call
1584
+ * after awaiting `collect_async`.
1585
+ *
1586
+ * Child renderers are "porous" and don't affect execution order, but component body renderers
1587
+ * create ordering boundaries. Within a renderer, callbacks run in order until hitting a component boundary.
1588
+ * @returns {Iterable<() => void>}
1589
+ */
1590
+ *#collect_on_destroy() {
1591
+ for (const component of this.#traverse_components()) yield* component.#collect_ondestroy();
1592
+ }
1593
+ /**
1594
+ * Performs a depth-first search of renderers, yielding the deepest components first, then additional components as we backtrack up the tree.
1595
+ * @returns {Iterable<Renderer>}
1596
+ */
1597
+ *#traverse_components() {
1598
+ for (const child of this.#out) if (typeof child !== "string") yield* child.#traverse_components();
1599
+ if (this.#is_component_body) yield this;
1600
+ }
1601
+ /**
1602
+ * @returns {Iterable<() => void>}
1603
+ */
1604
+ *#collect_ondestroy() {
1605
+ if (this.#on_destroy) for (const fn of this.#on_destroy) yield fn;
1606
+ for (const child of this.#out) if (child instanceof Renderer && !child.#is_component_body) yield* child.#collect_ondestroy();
1607
+ }
1608
+ /**
1609
+ * Render a component. Throws if any of the children are performing asynchronous work.
1610
+ *
1611
+ * @template {Record<string, any>} Props
1612
+ * @param {Component<Props>} component
1613
+ * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string }} options
1614
+ * @returns {AccumulatedContent}
1615
+ */
1616
+ static #render(component, options) {
1617
+ var previous_context = ssr_context;
1618
+ try {
1619
+ const renderer = Renderer.#open_render("sync", component, options);
1620
+ const content = renderer.#collect_content();
1621
+ return Renderer.#close_render(content, renderer);
1622
+ } finally {
1623
+ abort();
1624
+ set_ssr_context(previous_context);
1625
+ }
1626
+ }
1627
+ /**
1628
+ * Render a component.
1629
+ *
1630
+ * @template {Record<string, any>} Props
1631
+ * @param {Component<Props>} component
1632
+ * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp }} options
1633
+ * @returns {Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }>}
1634
+ */
1635
+ static async #render_async(component, options) {
1636
+ const previous_context = ssr_context;
1637
+ try {
1638
+ const renderer = Renderer.#open_render("async", component, options);
1639
+ const content = await renderer.#collect_content_async();
1640
+ const hydratables = await renderer.#collect_hydratables();
1641
+ if (hydratables !== null) content.head = hydratables + content.head;
1642
+ return Renderer.#close_render(content, renderer);
1643
+ } finally {
1644
+ set_ssr_context(previous_context);
1645
+ abort();
1646
+ }
1647
+ }
1648
+ /**
1649
+ * Collect all of the code from the `out` array and return it as a string, or a promise resolving to a string.
1650
+ * @param {AccumulatedContent} content
1651
+ * @returns {AccumulatedContent}
1652
+ */
1653
+ #collect_content(content = {
1654
+ head: "",
1655
+ body: ""
1656
+ }) {
1657
+ for (const item of this.#out) if (typeof item === "string") content[this.type] += item;
1658
+ else if (item instanceof Renderer) item.#collect_content(content);
1659
+ return content;
1660
+ }
1661
+ /**
1662
+ * Collect all of the code from the `out` array and return it as a string.
1663
+ * @param {AccumulatedContent} content
1664
+ * @returns {Promise<AccumulatedContent>}
1665
+ */
1666
+ async #collect_content_async(content = {
1667
+ head: "",
1668
+ body: ""
1669
+ }) {
1670
+ await this.promise;
1671
+ for (const item of this.#out) if (typeof item === "string") content[this.type] += item;
1672
+ else if (item instanceof Renderer) if (item.#boundary) {
1673
+ /** @type {AccumulatedContent} */
1674
+ const boundary_content = {
1675
+ head: "",
1676
+ body: ""
1677
+ };
1678
+ try {
1679
+ await item.#collect_content_async(boundary_content);
1680
+ content.head += boundary_content.head;
1681
+ content.body += boundary_content.body;
1682
+ } catch (error) {
1683
+ const { context, failed, transformError } = item.#boundary;
1684
+ set_ssr_context(context);
1685
+ let promise = transformError(error);
1686
+ set_ssr_context(null);
1687
+ let transformed = await promise;
1688
+ set_ssr_context(context);
1689
+ const failed_renderer = new Renderer(item.global, item);
1690
+ failed_renderer.type = item.type;
1691
+ failed_renderer.#out.push(Renderer.#serialize_failed_boundary(transformed));
1692
+ failed(failed_renderer, transformed, noop);
1693
+ failed_renderer.#out.push(BLOCK_CLOSE);
1694
+ await failed_renderer.#collect_content_async(content);
1695
+ }
1696
+ } else await item.#collect_content_async(content);
1697
+ return content;
1698
+ }
1699
+ async #collect_hydratables() {
1700
+ const ctx = get_render_context().hydratable;
1701
+ for (const [_, key] of ctx.unresolved_promises) unresolved_hydratable(key, ctx.lookup.get(key)?.stack ?? "<missing stack trace>");
1702
+ for (const comparison of ctx.comparisons) await comparison;
1703
+ return await this.#hydratable_block(ctx);
1704
+ }
1705
+ /**
1706
+ * @template {Record<string, any>} Props
1707
+ * @param {'sync' | 'async'} mode
1708
+ * @param {import('svelte').Component<Props>} component
1709
+ * @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} options
1710
+ * @returns {Renderer}
1711
+ */
1712
+ static #open_render(mode, component, options) {
1713
+ if (options.idPrefix?.includes("--")) invalid_id_prefix();
1714
+ var previous_context = ssr_context;
1715
+ try {
1716
+ const renderer = new Renderer(new SSRState(mode, options.idPrefix ? options.idPrefix + "-" : "", options.csp, options.transformError));
1717
+ set_ssr_context({
1718
+ p: null,
1719
+ c: options.context ?? null,
1720
+ r: renderer
1721
+ });
1722
+ renderer.push(BLOCK_OPEN);
1723
+ component(renderer, options.props ?? {});
1724
+ renderer.push(BLOCK_CLOSE);
1725
+ return renderer;
1726
+ } finally {
1727
+ set_ssr_context(previous_context);
1728
+ }
1729
+ }
1730
+ /**
1731
+ * @param {AccumulatedContent} content
1732
+ * @param {Renderer} renderer
1733
+ * @returns {AccumulatedContent & { hashes: { script: Sha256Source[] } }}
1734
+ */
1735
+ static #close_render(content, renderer) {
1736
+ for (const cleanup of renderer.#collect_on_destroy()) cleanup();
1737
+ let head = content.head + renderer.global.get_title();
1738
+ let body = content.body;
1739
+ for (const { hash, code } of renderer.global.css) head += `<style id="${hash}">${code}</style>`;
1740
+ return {
1741
+ head,
1742
+ body,
1743
+ hashes: { script: renderer.global.csp.script_hashes }
1744
+ };
1745
+ }
1746
+ /**
1747
+ * @param {HydratableContext} ctx
1748
+ */
1749
+ async #hydratable_block(ctx) {
1750
+ if (ctx.lookup.size === 0) return null;
1751
+ let entries = [];
1752
+ let has_promises = false;
1753
+ for (const [k, v] of ctx.lookup) {
1754
+ if (v.promises) {
1755
+ has_promises = true;
1756
+ for (const p of v.promises) await p;
1757
+ }
1758
+ entries.push(`[${uneval(k)},${v.serialized}]`);
1759
+ }
1760
+ let prelude = `const h = (window.__svelte ??= {}).h ??= new Map();`;
1761
+ if (has_promises) prelude = `const r = (v) => Promise.resolve(v);
1762
+ ${prelude}`;
1763
+ const body = `
1764
+ {
1765
+ ${prelude}
1766
+
1767
+ for (const [k, v] of [
1768
+ ${entries.join(",\n ")}
1769
+ ]) {
1770
+ h.set(k, v);
1771
+ }
1772
+ }
1773
+ `;
1774
+ let csp_attr = "";
1775
+ if (this.global.csp.nonce) csp_attr = ` nonce="${this.global.csp.nonce}"`;
1776
+ else if (this.global.csp.hash) {
1777
+ const hash = await sha256(body);
1778
+ this.global.csp.script_hashes.push(`sha256-${hash}`);
1779
+ }
1780
+ return `\n\t\t<script${csp_attr}>${body}<\/script>`;
1781
+ }
1782
+ };
1783
+ var SSRState = class {
1784
+ /** @readonly @type {Csp & { script_hashes: Sha256Source[] }} */
1785
+ csp;
1786
+ /** @readonly @type {'sync' | 'async'} */
1787
+ mode;
1788
+ /** @readonly @type {() => string} */
1789
+ uid;
1790
+ /** @readonly @type {Set<{ hash: string; code: string }>} */
1791
+ css = /* @__PURE__ */ new Set();
1792
+ /**
1793
+ * `transformError` passed to `render`. Called when an error boundary catches an error.
1794
+ * Throws by default if unset in `render`.
1795
+ * @type {(error: unknown) => unknown}
1796
+ */
1797
+ transformError;
1798
+ /** @type {{ path: number[], value: string }} */
1799
+ #title = {
1800
+ path: [],
1801
+ value: ""
1802
+ };
1803
+ /**
1804
+ * @param {'sync' | 'async'} mode
1805
+ * @param {string} id_prefix
1806
+ * @param {Csp} csp
1807
+ * @param {((error: unknown) => unknown) | undefined} [transformError]
1808
+ */
1809
+ constructor(mode, id_prefix = "", csp = { hash: false }, transformError) {
1810
+ this.mode = mode;
1811
+ this.csp = {
1812
+ ...csp,
1813
+ script_hashes: []
1814
+ };
1815
+ this.transformError = transformError ?? ((error) => {
1816
+ throw error;
1817
+ });
1818
+ let uid = 1;
1819
+ this.uid = () => `${id_prefix}s${uid++}`;
1820
+ }
1821
+ get_title() {
1822
+ return this.#title.value;
1823
+ }
1824
+ /**
1825
+ * Performs a depth-first (lexicographic) comparison using the path. Rejects sets
1826
+ * from earlier than or equal to the current value.
1827
+ * @param {string} value
1828
+ * @param {number[]} path
1829
+ */
1830
+ set_title(value, path) {
1831
+ const current = this.#title.path;
1832
+ let i = 0;
1833
+ let l = Math.min(path.length, current.length);
1834
+ while (i < l && path[i] === current[i]) i += 1;
1835
+ if (path[i] === void 0) return;
1836
+ if (current[i] === void 0 || path[i] > current[i]) {
1837
+ this.#title.path = path;
1838
+ this.#title.value = value;
1839
+ }
1840
+ }
1841
+ };
1842
+ //#endregion
1843
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/dev.js
1844
+ /** @import { SSRContext } from '#server' */
1845
+ /**
1846
+ * @typedef {{
1847
+ * tag: string;
1848
+ * parent: undefined | Element;
1849
+ * filename: undefined | string;
1850
+ * line: number;
1851
+ * column: number;
1852
+ * }} Element
1853
+ */
1854
+ /**
1855
+ * This is exported so that it can be cleared between tests
1856
+ * @type {Set<string>}
1857
+ */
1858
+ var seen;
1859
+ /**
1860
+ * @param {Renderer} renderer
1861
+ * @param {string} message
1862
+ */
1863
+ function print_error(renderer, message) {
1864
+ message = `node_invalid_placement_ssr: ${message}\n\nThis can cause content to shift around as the browser repairs the HTML, and will likely result in a \`hydration_mismatch\` warning.`;
1865
+ if ((seen ??= /* @__PURE__ */ new Set()).has(message)) return;
1866
+ seen.add(message);
1867
+ console.error(message);
1868
+ renderer.head((r) => r.push(`<script>console.error(${JSON.stringify(message).replaceAll("</", "<\\u002f")})<\/script>`));
1869
+ }
1870
+ /**
1871
+ * @param {Renderer} renderer
1872
+ * @param {string} tag
1873
+ * @param {number} line
1874
+ * @param {number} column
1875
+ */
1876
+ function push_element(renderer, tag, line, column) {
1877
+ var context = ssr_context;
1878
+ var filename = context.function[FILENAME];
1879
+ var parent = context.element;
1880
+ var element = {
1881
+ tag,
1882
+ parent,
1883
+ filename,
1884
+ line,
1885
+ column
1886
+ };
1887
+ if (parent !== void 0) {
1888
+ var ancestor = parent.parent;
1889
+ var ancestors = [parent.tag];
1890
+ const child_loc = filename ? `${filename}:${line}:${column}` : void 0;
1891
+ const parent_loc = parent.filename ? `${parent.filename}:${parent.line}:${parent.column}` : void 0;
1892
+ const message = is_tag_valid_with_parent(tag, parent.tag, child_loc, parent_loc);
1893
+ if (message) print_error(renderer, message);
1894
+ while (ancestor != null) {
1895
+ ancestors.push(ancestor.tag);
1896
+ const message = is_tag_valid_with_ancestor(tag, ancestors, child_loc, ancestor.filename ? `${ancestor.filename}:${ancestor.line}:${ancestor.column}` : void 0);
1897
+ if (message) print_error(renderer, message);
1898
+ ancestor = ancestor.parent;
1899
+ }
1900
+ }
1901
+ set_ssr_context({
1902
+ ...context,
1903
+ p: context,
1904
+ element
1905
+ });
1906
+ }
1907
+ function pop_element() {
1908
+ set_ssr_context(
1909
+ /** @type {SSRContext} */
1910
+ ssr_context.p
1911
+ );
1912
+ }
1913
+ /**
1914
+ * @param {Renderer} renderer
1915
+ */
1916
+ function validate_snippet_args(renderer) {
1917
+ if (typeof renderer !== "object" || !(renderer instanceof Renderer)) invalid_snippet_arguments();
1918
+ }
1919
+ function get_user_code_location() {
1920
+ return get_stack().filter((line) => line.trim().startsWith("at ")).map((line) => line.replace(/\((.*):\d+:\d+\)$/, (_, file) => `(${file})`)).join("\n");
1921
+ }
1922
+ //#endregion
1923
+ export { update_derived_pre as A, hasContext as B, spread_props as C, stringify as D, store_set as E, get_render_context as F, hydratable_serialization_failed as G, setContext as H, getAbortSignal as I, lifecycle_function_unavailable as K, createContext as L, update_store_pre as M, html as N, unsubscribe_stores as O, uneval as P, getAllContexts as R, slot as S, store_mutate as T, ssr_context as U, save as V, hydratable_clobbering as W, props_id as _, async_derived as a, sanitize_props as b, attributes as c, css_props as d, derived as f, once as g, head as h, validate_snippet_args as i, update_store as j, update_derived as k, await_block as l, ensure_array_like as m, pop_element as n, attr_class as o, element as p, push_element as r, attr_style as s, get_user_code_location as t, bind_props as u, render as v, store_get as w, sanitize_slots as x, rest_props as y, getContext as z };
1924
+
1925
+ //# sourceMappingURL=dev-DPd12uEU.js.map