@svgrid/grid 2.6.6 → 2.6.8

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 (392) hide show
  1. package/CHANGELOG.md +346 -0
  2. package/README.md +199 -199
  3. package/dist/FlexRender.svelte +96 -96
  4. package/dist/GridFooter.svelte +178 -178
  5. package/dist/GridMenus.svelte +705 -705
  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 +163 -163
  16. package/dist/SvDrawer.svelte +254 -254
  17. package/dist/SvDropDownList.svelte +374 -374
  18. package/dist/SvDurationInput.svelte +126 -126
  19. package/dist/SvField.svelte +293 -293
  20. package/dist/SvForm.svelte +437 -437
  21. package/dist/SvGrid.controller.svelte.d.ts +1 -0
  22. package/dist/SvGrid.controller.svelte.js +44 -12
  23. package/dist/SvGrid.css +2856 -2846
  24. package/dist/SvGrid.svelte +2956 -3548
  25. package/dist/SvGridCellEditor.svelte +662 -0
  26. package/dist/SvGridCellEditor.svelte.d.ts +46 -0
  27. package/dist/SvGridChart.svelte +1716 -1716
  28. package/dist/SvGridChartPanel.svelte +485 -485
  29. package/dist/SvGridChartView.svelte +70 -70
  30. package/dist/SvGridDropdown.svelte +728 -728
  31. package/dist/SvGridSelect.svelte +266 -266
  32. package/dist/SvGroupCell.svelte +116 -116
  33. package/dist/SvListBox.svelte +326 -326
  34. package/dist/SvMaskedInput.svelte +122 -122
  35. package/dist/SvMenu.svelte +124 -124
  36. package/dist/SvMenuList.svelte +146 -146
  37. package/dist/SvMultiSelect.svelte +289 -289
  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 -211
  48. package/dist/SvRowGroupPanel.svelte +170 -170
  49. package/dist/SvScrollArea.svelte +61 -61
  50. package/dist/SvSlider.svelte +203 -203
  51. package/dist/SvSwitchButton.svelte +108 -108
  52. package/dist/SvTagsInput.svelte +115 -115
  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 -208
  59. package/dist/SvTree.svelte +444 -444
  60. package/dist/SvTreeSelect.svelte +235 -235
  61. package/dist/cdn/{GridMenus-CBvjL5u4.js → GridMenus-D3JbtKWp.js} +29 -28
  62. package/dist/cdn/GridMenus-g9aHrUhs.js +488 -0
  63. package/dist/cdn/{SvDateTimePicker-CHnUkWcH.js → SvDateTimePicker-DSUhIta8.js} +2 -2
  64. package/dist/cdn/{SvDateTimePicker-CRQH_U7E.js → SvDateTimePicker-h9kPyszT.js} +2 -2
  65. package/dist/cdn/SvGridCellEditor-DkyQO6FV.js +523 -0
  66. package/dist/cdn/SvGridCellEditor-JpJSRhDx.js +522 -0
  67. package/dist/cdn/{SvGridChart-BwVos976.js → SvGridChart-Bs2GIR2Q.js} +1 -1
  68. package/dist/cdn/{SvGridChart-BEJmNNx9.js → SvGridChart-CwhFz7GV.js} +1 -1
  69. package/dist/cdn/{SvGridChartPanel-BOknOkrP.js → SvGridChartPanel-1WXuStzM.js} +1 -1
  70. package/dist/cdn/{SvGridChartPanel-D2PjII4O.js → SvGridChartPanel-e5_nqNP9.js} +1 -1
  71. package/dist/cdn/{SvGridChartView-00LPUHL1.js → SvGridChartView-SmPW10dI.js} +1 -1
  72. package/dist/cdn/{SvGridChartView-BhUEJ5ki.js → SvGridChartView-eSPuJE6g.js} +1 -1
  73. package/dist/cdn/{SvGridDropdown-D0VdjeR8.js → SvGridDropdown-B1ZcLpgs.js} +1 -1
  74. package/dist/cdn/{SvGridDropdown-D13MtJ2j.js → SvGridDropdown-CtdbHcIS.js} +1 -1
  75. package/dist/cdn/editor-registry-CiI0xlKg.js +141 -0
  76. package/dist/cdn/row-drag-touch-Ddaa-QeB.js +91 -0
  77. package/dist/cdn/{src-3WKN7L4G.js → src-B76QPix7.js} +3877 -4387
  78. package/dist/cdn/{src-Cl7h5-Ux.js → src-cKs_0jXV.js} +9648 -10158
  79. package/dist/cdn/svgrid.js +8 -7
  80. package/dist/cdn/svgrid.svelte-external.js +8 -7
  81. package/dist/chart-export.js +8 -8
  82. package/dist/headless.d.ts +22 -0
  83. package/dist/headless.js +22 -0
  84. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/_svelte_metadata.json +1 -0
  85. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/_metadata.json +178 -0
  86. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js +3843 -0
  87. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js.map +1 -0
  88. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js +23 -0
  89. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js.map +1 -0
  90. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js +1925 -0
  91. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js.map +1 -0
  92. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js +206 -0
  93. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js.map +1 -0
  94. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js +20 -0
  95. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js.map +1 -0
  96. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js +264 -0
  97. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js.map +1 -0
  98. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js +698 -0
  99. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js.map +1 -0
  100. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/package.json +3 -0
  101. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js +135 -0
  102. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js.map +1 -0
  103. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js +57 -0
  104. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js.map +1 -0
  105. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_attachments.js +2 -0
  106. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js +46691 -0
  107. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js.map +1 -0
  108. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js +239 -0
  109. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js.map +1 -0
  110. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_events.js +2 -0
  111. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js +6 -0
  112. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js.map +1 -0
  113. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_client.js +7 -0
  114. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js +6 -0
  115. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
  116. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js +7 -0
  117. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
  118. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js +7 -0
  119. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
  120. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js +7 -0
  121. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
  122. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_server.js +6 -0
  123. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js +85 -0
  124. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js.map +1 -0
  125. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js +561 -0
  126. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js.map +1 -0
  127. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js +26 -0
  128. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js.map +1 -0
  129. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js +124 -0
  130. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js.map +1 -0
  131. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_server.js +2 -0
  132. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js +91 -0
  133. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js.map +1 -0
  134. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js +242 -0
  135. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js.map +1 -0
  136. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js +497 -0
  137. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js.map +1 -0
  138. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js +4929 -0
  139. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js.map +1 -0
  140. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js +192 -0
  141. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js.map +1 -0
  142. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js +10 -0
  143. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js.map +1 -0
  144. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js +140 -0
  145. package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js.map +1 -0
  146. package/dist/row-drag-touch.d.ts +18 -0
  147. package/dist/row-drag-touch.js +185 -0
  148. package/dist/row-drag.d.ts +2 -0
  149. package/dist/row-drag.js +156 -5
  150. package/dist/virtualization/virtualizer.d.ts +14 -0
  151. package/dist/virtualization/virtualizer.js +21 -0
  152. package/package.json +18 -12
  153. package/src/FlexRender.svelte +96 -96
  154. package/src/GridFooter.svelte +178 -178
  155. package/src/GridMenus.svelte +705 -705
  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 +163 -163
  167. package/src/SvDrawer.svelte +254 -254
  168. package/src/SvDropDownList.svelte +374 -374
  169. package/src/SvDurationInput.svelte +126 -126
  170. package/src/SvField.svelte +293 -293
  171. package/src/SvForm.svelte +437 -437
  172. package/src/SvForm.test.ts +411 -411
  173. package/src/SvGrid.controller.svelte.ts +3898 -3858
  174. package/src/SvGrid.css +2856 -2846
  175. package/src/SvGrid.svelte +2956 -3548
  176. package/src/SvGrid.types.ts +1769 -1769
  177. package/src/SvGridCellEditor.svelte +662 -0
  178. package/src/SvGridChart.svelte +1716 -1716
  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 -266
  183. package/src/SvGroupCell.svelte +116 -116
  184. package/src/SvListBox.svelte +326 -326
  185. package/src/SvMaskedInput.svelte +122 -122
  186. package/src/SvMenu.svelte +124 -124
  187. package/src/SvMenu.test.ts +97 -97
  188. package/src/SvMenuList.svelte +146 -146
  189. package/src/SvMultiSelect.svelte +289 -289
  190. package/src/SvNumberInput.svelte +168 -168
  191. package/src/SvOtpInput.svelte +158 -158
  192. package/src/SvPasswordInput.svelte +151 -151
  193. package/src/SvPhoneInput.svelte +133 -133
  194. package/src/SvPopover.svelte +197 -197
  195. package/src/SvProgress.svelte +116 -116
  196. package/src/SvRadioGroup.svelte +107 -107
  197. package/src/SvRating.svelte +112 -112
  198. package/src/SvResult.svelte +73 -73
  199. package/src/SvRichText.svelte +211 -211
  200. package/src/SvRowGroupPanel.svelte +170 -170
  201. package/src/SvScrollArea.svelte +61 -61
  202. package/src/SvSlider.svelte +203 -203
  203. package/src/SvSwitchButton.svelte +108 -108
  204. package/src/SvTagsInput.svelte +115 -115
  205. package/src/SvTextInput.svelte +147 -147
  206. package/src/SvTimePicker.svelte +245 -245
  207. package/src/SvToaster.svelte +159 -159
  208. package/src/SvToaster.test.ts +95 -95
  209. package/src/SvToggleButton.svelte +85 -85
  210. package/src/SvTooltip.svelte +161 -161
  211. package/src/SvTour.svelte +208 -208
  212. package/src/SvTree.svelte +444 -444
  213. package/src/SvTreeSelect.svelte +235 -235
  214. package/src/a11y/dismissable.test.ts +119 -119
  215. package/src/a11y/dismissable.ts +114 -114
  216. package/src/a11y.contract.test.ts +49 -49
  217. package/src/a11y.test.ts +59 -59
  218. package/src/a11y.ts +61 -61
  219. package/src/ai.test.ts +502 -502
  220. package/src/ai.ts +1391 -1391
  221. package/src/build-api.coverage.test.ts +633 -633
  222. package/src/build-api.ts +846 -846
  223. package/src/builtin-editors.grid.test.ts +83 -85
  224. package/src/cell-formatting.ts +169 -169
  225. package/src/cell-render.test.ts +513 -513
  226. package/src/cell-render.ts +496 -496
  227. package/src/cell-values.ts +118 -118
  228. package/src/chart-export.ts +201 -201
  229. package/src/chart-view.svelte.ts +36 -36
  230. package/src/chart.ts +2295 -2295
  231. package/src/collaboration.test.ts +104 -104
  232. package/src/collaboration.ts +167 -167
  233. package/src/core.performance.test.ts +30 -30
  234. package/src/core.ts +1261 -1261
  235. package/src/createAutocomplete.svelte.ts +132 -132
  236. package/src/createCombobox.svelte.ts +191 -191
  237. package/src/createCountryInput.svelte.ts +157 -157
  238. package/src/createDropdownList.svelte.ts +168 -168
  239. package/src/createForm.svelte.ts +386 -386
  240. package/src/createGrid.svelte.ts +42 -42
  241. package/src/createGrid.test.ts +10 -10
  242. package/src/createGridState.svelte.ts +17 -17
  243. package/src/createListbox.svelte.ts +250 -250
  244. package/src/createMenu.svelte.ts +224 -224
  245. package/src/createPopoverSelect.svelte.ts +213 -213
  246. package/src/createSlider.svelte.ts +191 -191
  247. package/src/createTooltip.svelte.ts +144 -144
  248. package/src/createTree.svelte.ts +319 -319
  249. package/src/editing.test.ts +949 -949
  250. package/src/editing.ts +606 -606
  251. package/src/editor-contract.ts +170 -170
  252. package/src/editor-registry.grid.test.ts +144 -144
  253. package/src/editor-registry.ts +122 -122
  254. package/src/export-data-api.test.ts +126 -126
  255. package/src/export-format.test.ts +107 -107
  256. package/src/export-format.ts +601 -601
  257. package/src/filter-operators.ts +160 -160
  258. package/src/flex-render.ts +3 -3
  259. package/src/form-field.ts +127 -127
  260. package/src/group-display.test.ts +167 -167
  261. package/src/group-display.ts +200 -200
  262. package/src/headless.ts +80 -0
  263. package/src/index.ts +754 -754
  264. package/src/js-scroller.svelte.ts +173 -173
  265. package/src/keyboard-handlers.ts +270 -270
  266. package/src/keyboard.test.ts +59 -59
  267. package/src/keyboard.ts +97 -97
  268. package/src/list-nav.test.ts +49 -49
  269. package/src/list-nav.ts +29 -29
  270. package/src/list-option.test.ts +56 -56
  271. package/src/list-option.ts +172 -172
  272. package/src/menus.ts +567 -567
  273. package/src/merge-objects.ts +48 -48
  274. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/_svelte_metadata.json +1 -0
  275. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/_metadata.json +178 -0
  276. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js +3843 -0
  277. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js.map +1 -0
  278. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js +23 -0
  279. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js.map +1 -0
  280. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js +1925 -0
  281. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js.map +1 -0
  282. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js +206 -0
  283. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js.map +1 -0
  284. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js +20 -0
  285. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js.map +1 -0
  286. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js +264 -0
  287. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js.map +1 -0
  288. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js +698 -0
  289. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js.map +1 -0
  290. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/package.json +3 -0
  291. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js +135 -0
  292. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js.map +1 -0
  293. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js +57 -0
  294. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js.map +1 -0
  295. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_attachments.js +2 -0
  296. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js +46691 -0
  297. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js.map +1 -0
  298. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js +239 -0
  299. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js.map +1 -0
  300. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_events.js +2 -0
  301. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js +6 -0
  302. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js.map +1 -0
  303. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_client.js +7 -0
  304. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js +6 -0
  305. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
  306. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js +7 -0
  307. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
  308. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js +7 -0
  309. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
  310. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js +7 -0
  311. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
  312. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_server.js +6 -0
  313. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js +85 -0
  314. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js.map +1 -0
  315. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js +561 -0
  316. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js.map +1 -0
  317. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js +26 -0
  318. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js.map +1 -0
  319. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js +124 -0
  320. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js.map +1 -0
  321. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_server.js +2 -0
  322. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js +91 -0
  323. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js.map +1 -0
  324. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js +242 -0
  325. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js.map +1 -0
  326. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js +497 -0
  327. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js.map +1 -0
  328. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js +4929 -0
  329. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js.map +1 -0
  330. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js +192 -0
  331. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js.map +1 -0
  332. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js +10 -0
  333. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js.map +1 -0
  334. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js +140 -0
  335. package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js.map +1 -0
  336. package/src/overlays.test.ts +90 -90
  337. package/src/render-component.ts +28 -28
  338. package/src/row-drag-touch.ts +211 -0
  339. package/src/row-drag.test.ts +353 -168
  340. package/src/row-drag.ts +415 -265
  341. package/src/row-resize.ts +210 -210
  342. package/src/scheduler-model.test.ts +562 -562
  343. package/src/scheduler-model.ts +872 -872
  344. package/src/selection.test.ts +754 -754
  345. package/src/selection.ts +491 -491
  346. package/src/server-data-source.test.ts +383 -383
  347. package/src/server-data-source.ts +469 -469
  348. package/src/sparkline.test.ts +68 -68
  349. package/src/sparkline.ts +169 -169
  350. package/src/spreadsheet.test.ts +488 -488
  351. package/src/spreadsheet.ts +312 -312
  352. package/src/static-functions.ts +11 -11
  353. package/src/subscribe.ts +38 -38
  354. package/src/svgrid-wrapper.types.ts +558 -558
  355. package/src/svgrid.async-editor-options.test.ts +273 -271
  356. package/src/svgrid.auto-row-height.test.ts +204 -204
  357. package/src/svgrid.behavior.test.ts +705 -705
  358. package/src/svgrid.charting.test.ts +534 -534
  359. package/src/svgrid.comments-autocomplete.test.ts +127 -123
  360. package/src/svgrid.context-menu.test.ts +147 -147
  361. package/src/svgrid.features.test.ts +157 -157
  362. package/src/svgrid.filter-depth.test.ts +163 -163
  363. package/src/svgrid.filter-menu-listbox.svelte.test.ts +331 -331
  364. package/src/svgrid.filter-menu-scroll.test.ts +112 -112
  365. package/src/svgrid.grand-total.test.ts +188 -188
  366. package/src/svgrid.group-display-mode.test.ts +171 -171
  367. package/src/svgrid.group-footers.test.ts +121 -121
  368. package/src/svgrid.group-pagination.test.ts +153 -153
  369. package/src/svgrid.new-features.wrapper.test.ts +251 -251
  370. package/src/svgrid.tree-data.test.ts +186 -186
  371. package/src/svgrid.wrapper.test.ts +63 -63
  372. package/src/svgriddropdown.async-panel.svelte.test.ts +195 -195
  373. package/src/test-setup.ts +62 -62
  374. package/src/themes/index.ts +286 -286
  375. package/src/toast-store.svelte.ts +246 -246
  376. package/src/toast-store.test.ts +147 -147
  377. package/src/tree-row-model.test.ts +168 -168
  378. package/src/ui-buttons.test.ts +144 -144
  379. package/src/ui-inputs.test.ts +118 -118
  380. package/src/ui-localization.test.ts +113 -113
  381. package/src/ui-range.test.ts +70 -70
  382. package/src/ui-selection.test.ts +155 -155
  383. package/src/ui-tier1.test.ts +142 -142
  384. package/src/virtual.test.ts +88 -88
  385. package/src/virtualization/column-virtualizer.test.ts +27 -27
  386. package/src/virtualization/column-virtualizer.ts +30 -30
  387. package/src/virtualization/pre-measure.test.ts +65 -0
  388. package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
  389. package/src/virtualization/types.ts +30 -30
  390. package/src/virtualization/virtualizer.test.ts +47 -47
  391. package/src/virtualization/virtualizer.ts +322 -296
  392. package/dist/cdn/GridMenus-DAzp6YXc.js +0 -487
@@ -0,0 +1,192 @@
1
+ import { Dr as svelte_element_invalid_this_value, Er as store_invalid_shape, Tr as snippet_without_render_tag, dr as has_own_property, hn as dynamic_void_element_content } from "./utils-mR9mAWyK.js";
2
+ import { _ as is_void, b as escape_html } from "./utils-lObbumRX.js";
3
+ //#region ../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
4
+ function r(e) {
5
+ var t, f, n = "";
6
+ if ("string" == typeof e || "number" == typeof e) n += e;
7
+ else if ("object" == typeof e) if (Array.isArray(e)) {
8
+ var o = e.length;
9
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
10
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
11
+ return n;
12
+ }
13
+ function clsx$1() {
14
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
15
+ return n;
16
+ }
17
+ //#endregion
18
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/attributes.js
19
+ /**
20
+ * `<div translate={false}>` should be rendered as `<div translate="no">` and _not_
21
+ * `<div translate="false">`, which is equivalent to `<div translate="yes">`. There
22
+ * may be other odd cases that need to be added to this list in future
23
+ * @type {Record<string, Map<any, string>>}
24
+ */
25
+ var replacements = { translate: new Map([[true, "yes"], [false, "no"]]) };
26
+ /**
27
+ * @template V
28
+ * @param {string} name
29
+ * @param {V} value
30
+ * @param {boolean} [is_boolean]
31
+ * @returns {string}
32
+ */
33
+ function attr(name, value, is_boolean = false) {
34
+ if (name === "hidden" && value !== "until-found") is_boolean = true;
35
+ if (value == null || !value && is_boolean) return "";
36
+ const normalized = has_own_property.call(replacements, name) && replacements[name].get(value) || value;
37
+ return ` ${name}${is_boolean ? `=""` : `="${escape_html(normalized, true)}"`}`;
38
+ }
39
+ /**
40
+ * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.
41
+ * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)
42
+ * @param {any} value
43
+ */
44
+ function clsx(value) {
45
+ if (typeof value === "object") return clsx$1(value);
46
+ else return value ?? "";
47
+ }
48
+ var whitespace = [..." \n\r\f\xA0\v"];
49
+ /**
50
+ * @param {any} value
51
+ * @param {string | null} [hash]
52
+ * @param {Record<string, boolean>} [directives]
53
+ * @returns {string | null}
54
+ */
55
+ function to_class(value, hash, directives) {
56
+ var classname = value == null ? "" : "" + value;
57
+ if (hash) classname = classname ? classname + " " + hash : hash;
58
+ if (directives) {
59
+ for (var key of Object.keys(directives)) if (directives[key]) classname = classname ? classname + " " + key : key;
60
+ else if (classname.length) {
61
+ var len = key.length;
62
+ var a = 0;
63
+ while ((a = classname.indexOf(key, a)) >= 0) {
64
+ var b = a + len;
65
+ if ((a === 0 || whitespace.includes(classname[a - 1])) && (b === classname.length || whitespace.includes(classname[b]))) classname = (a === 0 ? "" : classname.substring(0, a)) + classname.substring(b + 1);
66
+ else a = b;
67
+ }
68
+ }
69
+ }
70
+ return classname === "" ? null : classname;
71
+ }
72
+ /**
73
+ *
74
+ * @param {Record<string,any>} styles
75
+ * @param {boolean} important
76
+ */
77
+ function append_styles(styles, important = false) {
78
+ var separator = important ? " !important;" : ";";
79
+ var css = "";
80
+ for (var key of Object.keys(styles)) {
81
+ var value = styles[key];
82
+ if (value != null && value !== "") css += " " + key + ": " + value + separator;
83
+ }
84
+ return css;
85
+ }
86
+ /**
87
+ * @param {string} name
88
+ * @returns {string}
89
+ */
90
+ function to_css_name(name) {
91
+ if (name[0] !== "-" || name[1] !== "-") return name.toLowerCase();
92
+ return name;
93
+ }
94
+ /**
95
+ * @param {any} value
96
+ * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]
97
+ * @returns {string | null}
98
+ */
99
+ function to_style(value, styles) {
100
+ if (styles) {
101
+ var new_style = "";
102
+ /** @type {Record<string,any> | undefined} */
103
+ var normal_styles;
104
+ /** @type {Record<string,any> | undefined} */
105
+ var important_styles;
106
+ if (Array.isArray(styles)) {
107
+ normal_styles = styles[0];
108
+ important_styles = styles[1];
109
+ } else normal_styles = styles;
110
+ if (value) {
111
+ value = String(value).replaceAll(/\s*\/\*.*?\*\/\s*/g, "").trim();
112
+ /** @type {boolean | '"' | "'"} */
113
+ var in_str = false;
114
+ var in_apo = 0;
115
+ var in_comment = false;
116
+ var reserved_names = [];
117
+ if (normal_styles) reserved_names.push(...Object.keys(normal_styles).map(to_css_name));
118
+ if (important_styles) reserved_names.push(...Object.keys(important_styles).map(to_css_name));
119
+ var start_index = 0;
120
+ var name_index = -1;
121
+ const len = value.length;
122
+ for (var i = 0; i < len; i++) {
123
+ var c = value[i];
124
+ if (in_comment) {
125
+ if (c === "/" && value[i - 1] === "*") in_comment = false;
126
+ } else if (in_str) {
127
+ if (in_str === c) in_str = false;
128
+ } else if (c === "/" && value[i + 1] === "*") in_comment = true;
129
+ else if (c === "\"" || c === "'") in_str = c;
130
+ else if (c === "(") in_apo++;
131
+ else if (c === ")") in_apo--;
132
+ if (!in_comment && in_str === false && in_apo === 0) {
133
+ if (c === ":" && name_index === -1) name_index = i;
134
+ else if (c === ";" || i === len - 1) {
135
+ if (name_index !== -1) {
136
+ var name = to_css_name(value.substring(start_index, name_index).trim());
137
+ if (!reserved_names.includes(name)) {
138
+ if (c !== ";") i++;
139
+ var property = value.substring(start_index, i).trim();
140
+ new_style += " " + property + ";";
141
+ }
142
+ }
143
+ start_index = i + 1;
144
+ name_index = -1;
145
+ }
146
+ }
147
+ }
148
+ }
149
+ if (normal_styles) new_style += append_styles(normal_styles);
150
+ if (important_styles) new_style += append_styles(important_styles, true);
151
+ new_style = new_style.trim();
152
+ return new_style === "" ? null : new_style;
153
+ }
154
+ return value == null ? null : String(value);
155
+ }
156
+ //#endregion
157
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/validate.js
158
+ /**
159
+ * @param {() => string} tag_fn
160
+ * @returns {void}
161
+ */
162
+ function validate_void_dynamic_element(tag_fn) {
163
+ const tag = tag_fn();
164
+ if (tag && is_void(tag)) dynamic_void_element_content(tag);
165
+ }
166
+ /** @param {() => unknown} tag_fn */
167
+ function validate_dynamic_element_tag(tag_fn) {
168
+ const tag = tag_fn();
169
+ if (tag && !(typeof tag === "string")) svelte_element_invalid_this_value();
170
+ }
171
+ /**
172
+ * @param {any} store
173
+ * @param {string} name
174
+ */
175
+ function validate_store(store, name) {
176
+ if (store != null && typeof store.subscribe !== "function") store_invalid_shape(name);
177
+ }
178
+ /**
179
+ * @template {(...args: any[]) => unknown} T
180
+ * @param {T} fn
181
+ */
182
+ function prevent_snippet_stringification(fn) {
183
+ fn.toString = () => {
184
+ snippet_without_render_tag();
185
+ return "";
186
+ };
187
+ return fn;
188
+ }
189
+ //#endregion
190
+ export { attr as a, to_style as c, validate_void_dynamic_element as i, validate_dynamic_element_tag as n, clsx as o, validate_store as r, to_class as s, prevent_snippet_stringification as t };
191
+
192
+ //# sourceMappingURL=validate-CezNmRkM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-CezNmRkM.js","names":["clsx","_clsx"],"sources":["../../../../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../../../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/attributes.js","../../../../../../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/validate.js"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\nimport { has_own_property } from './utils.js';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\t// attribute hidden for values other than \"until-found\" behaves like a boolean attribute\n\tif (name === 'hidden' && value !== 'until-found') {\n\t\tis_boolean = true;\n\t}\n\tif (value == null || (!value && is_boolean)) return '';\n\tconst normalized =\n\t\t(has_own_property.call(replacements, name) && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? `=\"\"` : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key of Object.keys(directives)) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key of Object.keys(styles)) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\s*\\/\\*.*?\\*\\/\\s*/g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n","import { is_void } from '../../utils.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\n\nexport { invalid_default_snippet } from './errors.js';\n\n/**\n * @param {() => string} tag_fn\n * @returns {void}\n */\nexport function validate_void_dynamic_element(tag_fn) {\n\tconst tag = tag_fn();\n\tif (tag && is_void(tag)) {\n\t\tw.dynamic_void_element_content(tag);\n\t}\n}\n\n/** @param {() => unknown} tag_fn */\nexport function validate_dynamic_element_tag(tag_fn) {\n\tconst tag = tag_fn();\n\tconst is_string = typeof tag === 'string';\n\tif (tag && !is_string) {\n\t\te.svelte_element_invalid_this_value();\n\t}\n}\n\n/**\n * @param {any} store\n * @param {string} name\n */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\te.store_invalid_shape(name);\n\t}\n}\n\n/**\n * @template {(...args: any[]) => unknown} T\n * @param {T} fn\n */\nexport function prevent_snippet_stringification(fn) {\n\tfn.toString = () => {\n\t\te.snippet_without_render_tag();\n\t\treturn '';\n\t};\n\treturn fn;\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/version.js
2
+ /**
3
+ * The current version, as set in package.json.
4
+ * @type {string}
5
+ */
6
+ var VERSION = "5.55.9";
7
+ //#endregion
8
+ export { VERSION as t };
9
+
10
+ //# sourceMappingURL=version-BHHo0WE-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-BHHo0WE-.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/version.js"],"sourcesContent":["// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n * @type {string}\n */\nexport const VERSION = '5.55.9';\nexport const PUBLIC_VERSION = '5';\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAMA,IAAa,UAAU"}
@@ -0,0 +1,140 @@
1
+ //#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/warnings.js
2
+ var bold = "font-weight: bold";
3
+ var normal = "font-weight: normal";
4
+ /**
5
+ * Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.
6
+ * @param {string} property
7
+ * @param {string} location
8
+ */
9
+ function assignment_value_stale(property, location) {
10
+ console.warn(`%c[svelte] assignment_value_stale\n%cAssignment to \`${property}\` property (${location}) will evaluate to the right-hand side, not the value of \`${property}\` following the assignment. This may result in unexpected behaviour.\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);
11
+ }
12
+ /**
13
+ * Detected reactivity loss when reading `%name%`. This happens when state is read in an async function after an earlier `await`
14
+ * @param {string} name
15
+ */
16
+ function await_reactivity_loss(name) {
17
+ console.warn(`%c[svelte] await_reactivity_loss\n%cDetected reactivity loss when reading \`${name}\`. This happens when state is read in an async function after an earlier \`await\`\nhttps://svelte.dev/e/await_reactivity_loss`, bold, normal);
18
+ }
19
+ /**
20
+ * An async derived, `%name%` (%location%) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app
21
+ * @param {string} name
22
+ * @param {string} location
23
+ */
24
+ function await_waterfall(name, location) {
25
+ console.warn(`%c[svelte] await_waterfall\n%cAn async derived, \`${name}\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\nhttps://svelte.dev/e/await_waterfall`, bold, normal);
26
+ }
27
+ /**
28
+ * `%binding%` (%location%) is binding to a non-reactive property
29
+ * @param {string} binding
30
+ * @param {string | undefined | null} [location]
31
+ */
32
+ function binding_property_non_reactive(binding, location) {
33
+ console.warn(`%c[svelte] binding_property_non_reactive\n%c${location ? `\`${binding}\` (${location}) is binding to a non-reactive property` : `\`${binding}\` is binding to a non-reactive property`}\nhttps://svelte.dev/e/binding_property_non_reactive`, bold, normal);
34
+ }
35
+ /**
36
+ * Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead
37
+ * @param {string} method
38
+ */
39
+ function console_log_state(method) {
40
+ console.warn(`%c[svelte] console_log_state\n%cYour \`console.${method}\` contained \`$state\` proxies. Consider using \`$inspect(...)\` or \`$state.snapshot(...)\` instead\nhttps://svelte.dev/e/console_log_state`, bold, normal);
41
+ }
42
+ /**
43
+ * Reading a derived belonging to a now-destroyed effect may result in stale values
44
+ */
45
+ function derived_inert() {
46
+ console.warn(`%c[svelte] derived_inert\n%cReading a derived belonging to a now-destroyed effect may result in stale values\nhttps://svelte.dev/e/derived_inert`, bold, normal);
47
+ }
48
+ /**
49
+ * %handler% should be a function. Did you mean to %suggestion%?
50
+ * @param {string} handler
51
+ * @param {string} suggestion
52
+ */
53
+ function event_handler_invalid(handler, suggestion) {
54
+ console.warn(`%c[svelte] event_handler_invalid\n%c${handler} should be a function. Did you mean to ${suggestion}?\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);
55
+ }
56
+ /**
57
+ * The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value
58
+ * @param {string} attribute
59
+ * @param {string} html
60
+ * @param {string} value
61
+ */
62
+ function hydration_attribute_changed(attribute, html, value) {
63
+ console.warn(`%c[svelte] hydration_attribute_changed\n%cThe \`${attribute}\` attribute on \`${html}\` changed its value between server and client renders. The client value, \`${value}\`, will be ignored in favour of the server value\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);
64
+ }
65
+ /**
66
+ * The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value
67
+ * @param {string | undefined | null} [location]
68
+ */
69
+ function hydration_html_changed(location) {
70
+ console.warn(`%c[svelte] hydration_html_changed\n%c${location ? `The value of an \`{@html ...}\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value` : "The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value"}\nhttps://svelte.dev/e/hydration_html_changed`, bold, normal);
71
+ }
72
+ /**
73
+ * Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%
74
+ * @param {string | undefined | null} [location]
75
+ */
76
+ function hydration_mismatch(location) {
77
+ console.warn(`%c[svelte] hydration_mismatch\n%c${location ? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}` : "Hydration failed because the initial UI does not match what was rendered on the server"}\nhttps://svelte.dev/e/hydration_mismatch`, bold, normal);
78
+ }
79
+ /**
80
+ * Tried to unmount a component that was not mounted
81
+ */
82
+ function lifecycle_double_unmount() {
83
+ console.warn(`%c[svelte] lifecycle_double_unmount\n%cTried to unmount a component that was not mounted\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);
84
+ }
85
+ /**
86
+ * %parent% passed property `%prop%` to %child% with `bind:`, but its parent component %owner% did not declare `%prop%` as a binding. Consider creating a binding between %owner% and %parent% (e.g. `bind:%prop%={...}` instead of `%prop%={...}`)
87
+ * @param {string} parent
88
+ * @param {string} prop
89
+ * @param {string} child
90
+ * @param {string} owner
91
+ */
92
+ function ownership_invalid_binding(parent, prop, child, owner) {
93
+ console.warn(`%c[svelte] ownership_invalid_binding\n%c${parent} passed property \`${prop}\` to ${child} with \`bind:\`, but its parent component ${owner} did not declare \`${prop}\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \`bind:${prop}={...}\` instead of \`${prop}={...}\`)\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);
94
+ }
95
+ /**
96
+ * Mutating unbound props (`%name%`, at %location%) is strongly discouraged. Consider using `bind:%prop%={...}` in %parent% (or using a callback) instead
97
+ * @param {string} name
98
+ * @param {string} location
99
+ * @param {string} prop
100
+ * @param {string} parent
101
+ */
102
+ function ownership_invalid_mutation(name, location, prop, parent) {
103
+ console.warn(`%c[svelte] ownership_invalid_mutation\n%cMutating unbound props (\`${name}\`, at ${location}) is strongly discouraged. Consider using \`bind:${prop}={...}\` in ${parent} (or using a callback) instead\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);
104
+ }
105
+ /**
106
+ * The `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.
107
+ */
108
+ function select_multiple_invalid_value() {
109
+ console.warn(`%c[svelte] select_multiple_invalid_value\n%cThe \`value\` property of a \`<select multiple>\` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value`, bold, normal);
110
+ }
111
+ /**
112
+ * Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results
113
+ * @param {string} operator
114
+ */
115
+ function state_proxy_equality_mismatch(operator) {
116
+ console.warn(`%c[svelte] state_proxy_equality_mismatch\n%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${operator}\` will produce unexpected results\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);
117
+ }
118
+ /**
119
+ * Tried to unmount a state proxy, rather than a component
120
+ */
121
+ function state_proxy_unmount() {
122
+ console.warn(`%c[svelte] state_proxy_unmount\n%cTried to unmount a state proxy, rather than a component\nhttps://svelte.dev/e/state_proxy_unmount`, bold, normal);
123
+ }
124
+ /**
125
+ * A `<svelte:boundary>` `reset` function only resets the boundary the first time it is called
126
+ */
127
+ function svelte_boundary_reset_noop() {
128
+ console.warn(`%c[svelte] svelte_boundary_reset_noop\n%cA \`<svelte:boundary>\` \`reset\` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop`, bold, normal);
129
+ }
130
+ /**
131
+ * The `slide` transition does not work correctly for elements with `display: %value%`
132
+ * @param {string} value
133
+ */
134
+ function transition_slide_display(value) {
135
+ console.warn(`%c[svelte] transition_slide_display\n%cThe \`slide\` transition does not work correctly for elements with \`display: ${value}\`\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);
136
+ }
137
+ //#endregion
138
+ export { svelte_boundary_reset_noop as _, console_log_state as a, hydration_attribute_changed as c, lifecycle_double_unmount as d, ownership_invalid_binding as f, state_proxy_unmount as g, state_proxy_equality_mismatch as h, binding_property_non_reactive as i, hydration_html_changed as l, select_multiple_invalid_value as m, await_reactivity_loss as n, derived_inert as o, ownership_invalid_mutation as p, await_waterfall as r, event_handler_invalid as s, assignment_value_stale as t, hydration_mismatch as u, transition_slide_display as v };
139
+
140
+ //# sourceMappingURL=warnings-yiExAB06.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings-yiExAB06.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/warnings.js"],"sourcesContent":["/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.\n * @param {string} property\n * @param {string} location\n */\nexport function assignment_value_stale(property, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] assignment_value_stale\\n%cAssignment to \\`${property}\\` property (${location}) will evaluate to the right-hand side, not the value of \\`${property}\\` following the assignment. This may result in unexpected behaviour.\\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/assignment_value_stale`);\n\t}\n}\n\n/**\n * Detected reactivity loss when reading `%name%`. This happens when state is read in an async function after an earlier `await`\n * @param {string} name\n */\nexport function await_reactivity_loss(name) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_reactivity_loss\\n%cDetected reactivity loss when reading \\`${name}\\`. This happens when state is read in an async function after an earlier \\`await\\`\\nhttps://svelte.dev/e/await_reactivity_loss`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_reactivity_loss`);\n\t}\n}\n\n/**\n * An async derived, `%name%` (%location%) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\n * @param {string} name\n * @param {string} location\n */\nexport function await_waterfall(name, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_waterfall\\n%cAn async derived, \\`${name}\\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\\nhttps://svelte.dev/e/await_waterfall`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_waterfall`);\n\t}\n}\n\n/**\n * `%binding%` (%location%) is binding to a non-reactive property\n * @param {string} binding\n * @param {string | undefined | null} [location]\n */\nexport function binding_property_non_reactive(binding, location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] binding_property_non_reactive\\n%c${location\n\t\t\t\t? `\\`${binding}\\` (${location}) is binding to a non-reactive property`\n\t\t\t\t: `\\`${binding}\\` is binding to a non-reactive property`}\\nhttps://svelte.dev/e/binding_property_non_reactive`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/binding_property_non_reactive`);\n\t}\n}\n\n/**\n * Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead\n * @param {string} method\n */\nexport function console_log_state(method) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] console_log_state\\n%cYour \\`console.${method}\\` contained \\`$state\\` proxies. Consider using \\`$inspect(...)\\` or \\`$state.snapshot(...)\\` instead\\nhttps://svelte.dev/e/console_log_state`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/console_log_state`);\n\t}\n}\n\n/**\n * Reading a derived belonging to a now-destroyed effect may result in stale values\n */\nexport function derived_inert() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] derived_inert\\n%cReading a derived belonging to a now-destroyed effect may result in stale values\\nhttps://svelte.dev/e/derived_inert`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/derived_inert`);\n\t}\n}\n\n/**\n * %handler% should be a function. Did you mean to %suggestion%?\n * @param {string} handler\n * @param {string} suggestion\n */\nexport function event_handler_invalid(handler, suggestion) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] event_handler_invalid\\n%c${handler} should be a function. Did you mean to ${suggestion}?\\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/event_handler_invalid`);\n\t}\n}\n\n/**\n * Expected to find a hydratable with key `%key%` during hydration, but did not.\n * @param {string} key\n */\nexport function hydratable_missing_but_expected(key) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydratable_missing_but_expected\\n%cExpected to find a hydratable with key \\`${key}\\` during hydration, but did not.\\nhttps://svelte.dev/e/hydratable_missing_but_expected`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydratable_missing_but_expected`);\n\t}\n}\n\n/**\n * The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value\n * @param {string} attribute\n * @param {string} html\n * @param {string} value\n */\nexport function hydration_attribute_changed(attribute, html, value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_attribute_changed\\n%cThe \\`${attribute}\\` attribute on \\`${html}\\` changed its value between server and client renders. The client value, \\`${value}\\`, will be ignored in favour of the server value\\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_attribute_changed`);\n\t}\n}\n\n/**\n * The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value\n * @param {string | undefined | null} [location]\n */\nexport function hydration_html_changed(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_html_changed\\n%c${location\n\t\t\t\t? `The value of an \\`{@html ...}\\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value`\n\t\t\t\t: 'The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value'}\\nhttps://svelte.dev/e/hydration_html_changed`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_html_changed`);\n\t}\n}\n\n/**\n * Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%\n * @param {string | undefined | null} [location]\n */\nexport function hydration_mismatch(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_mismatch\\n%c${location\n\t\t\t\t? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}`\n\t\t\t\t: 'Hydration failed because the initial UI does not match what was rendered on the server'}\\nhttps://svelte.dev/e/hydration_mismatch`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_mismatch`);\n\t}\n}\n\n/**\n * The `render` function passed to `createRawSnippet` should return HTML for a single element\n */\nexport function invalid_raw_snippet_render() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] invalid_raw_snippet_render\\n%cThe \\`render\\` function passed to \\`createRawSnippet\\` should return HTML for a single element\\nhttps://svelte.dev/e/invalid_raw_snippet_render`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/invalid_raw_snippet_render`);\n\t}\n}\n\n/**\n * Detected a migrated `$:` reactive block in `%filename%` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an `$effect`.\n * @param {string} filename\n */\nexport function legacy_recursive_reactive_block(filename) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] legacy_recursive_reactive_block\\n%cDetected a migrated \\`$:\\` reactive block in \\`${filename}\\` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an \\`$effect\\`.\\nhttps://svelte.dev/e/legacy_recursive_reactive_block`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/legacy_recursive_reactive_block`);\n\t}\n}\n\n/**\n * Tried to unmount a component that was not mounted\n */\nexport function lifecycle_double_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] lifecycle_double_unmount\\n%cTried to unmount a component that was not mounted\\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/lifecycle_double_unmount`);\n\t}\n}\n\n/**\n * %parent% passed property `%prop%` to %child% with `bind:`, but its parent component %owner% did not declare `%prop%` as a binding. Consider creating a binding between %owner% and %parent% (e.g. `bind:%prop%={...}` instead of `%prop%={...}`)\n * @param {string} parent\n * @param {string} prop\n * @param {string} child\n * @param {string} owner\n */\nexport function ownership_invalid_binding(parent, prop, child, owner) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_binding\\n%c${parent} passed property \\`${prop}\\` to ${child} with \\`bind:\\`, but its parent component ${owner} did not declare \\`${prop}\\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \\`bind:${prop}={...}\\` instead of \\`${prop}={...}\\`)\\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_binding`);\n\t}\n}\n\n/**\n * Mutating unbound props (`%name%`, at %location%) is strongly discouraged. Consider using `bind:%prop%={...}` in %parent% (or using a callback) instead\n * @param {string} name\n * @param {string} location\n * @param {string} prop\n * @param {string} parent\n */\nexport function ownership_invalid_mutation(name, location, prop, parent) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_mutation\\n%cMutating unbound props (\\`${name}\\`, at ${location}) is strongly discouraged. Consider using \\`bind:${prop}={...}\\` in ${parent} (or using a callback) instead\\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_mutation`);\n\t}\n}\n\n/**\n * The `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.\n */\nexport function select_multiple_invalid_value() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] select_multiple_invalid_value\\n%cThe \\`value\\` property of a \\`<select multiple>\\` element should be an array, but it received a non-array value. The selection will be kept as is.\\nhttps://svelte.dev/e/select_multiple_invalid_value`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/select_multiple_invalid_value`);\n\t}\n}\n\n/**\n * Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results\n * @param {string} operator\n */\nexport function state_proxy_equality_mismatch(operator) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_equality_mismatch\\n%cReactive \\`$state(...)\\` proxies and the values they proxy have different identities. Because of this, comparisons with \\`${operator}\\` will produce unexpected results\\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`);\n\t}\n}\n\n/**\n * Tried to unmount a state proxy, rather than a component\n */\nexport function state_proxy_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_unmount\\n%cTried to unmount a state proxy, rather than a component\\nhttps://svelte.dev/e/state_proxy_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_unmount`);\n\t}\n}\n\n/**\n * A `<svelte:boundary>` `reset` function only resets the boundary the first time it is called\n */\nexport function svelte_boundary_reset_noop() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] svelte_boundary_reset_noop\\n%cA \\`<svelte:boundary>\\` \\`reset\\` function only resets the boundary the first time it is called\\nhttps://svelte.dev/e/svelte_boundary_reset_noop`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`);\n\t}\n}\n\n/**\n * The `slide` transition does not work correctly for elements with `display: %value%`\n * @param {string} value\n */\nexport function transition_slide_display(value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] transition_slide_display\\n%cThe \\`slide\\` transition does not work correctly for elements with \\`display: ${value}\\`\\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/transition_slide_display`);\n\t}\n}"],"x_google_ignoreList":[0],"mappings":";AAIA,IAAI,OAAO;AACX,IAAI,SAAS;;;;;;AAOb,SAAgB,uBAAuB,UAAU,UAAU;CAEzD,QAAQ,KAAK,wDAAwD,SAAS,eAAe,SAAS,6DAA6D,SAAS,qHAAqH,MAAM,MAAM;AAI/S;;;;;AAMA,SAAgB,sBAAsB,MAAM;CAE1C,QAAQ,KAAK,+EAA+E,KAAK,kIAAkI,MAAM,MAAM;AAIjP;;;;;;AAOA,SAAgB,gBAAgB,MAAM,UAAU;CAE9C,QAAQ,KAAK,qDAAqD,KAAK,MAAM,SAAS,kKAAkK,MAAM,MAAM;AAItQ;;;;;;AAOA,SAAgB,8BAA8B,SAAS,UAAU;CAE/D,QAAQ,KACP,+CAA+C,WAC5C,KAAK,QAAQ,MAAM,SAAS,2CAC5B,KAAK,QAAQ,0CAA0C,uDAC1D,MACA,MACD;AAIF;;;;;AAMA,SAAgB,kBAAkB,QAAQ;CAExC,QAAQ,KAAK,kDAAkD,OAAO,gJAAgJ,MAAM,MAAM;AAIpO;;;;AAKA,SAAgB,gBAAgB;CAE9B,QAAQ,KAAK,oJAAoJ,MAAM,MAAM;AAI/K;;;;;;AAOA,SAAgB,sBAAsB,SAAS,YAAY;CAEzD,QAAQ,KAAK,uCAAuC,QAAQ,yCAAyC,WAAW,gDAAgD,MAAM,MAAM;AAI9K;;;;;;;AAoBA,SAAgB,4BAA4B,WAAW,MAAM,OAAO;CAElE,QAAQ,KAAK,mDAAmD,UAAU,oBAAoB,KAAK,8EAA8E,MAAM,sGAAsG,MAAM,MAAM;AAI3S;;;;;AAMA,SAAgB,uBAAuB,UAAU;CAE/C,QAAQ,KACP,wCAAwC,WACrC,yCAAyC,SAAS,8GAClD,gJAAgJ,gDACnJ,MACA,MACD;AAIF;;;;;AAMA,SAAgB,mBAAmB,UAAU;CAE3C,QAAQ,KACP,oCAAoC,WACjC,mHAAmH,aACnH,yFAAyF,4CAC5F,MACA,MACD;AAIF;;;;AA4BA,SAAgB,2BAA2B;CAEzC,QAAQ,KAAK,2IAA2I,MAAM,MAAM;AAItK;;;;;;;;AASA,SAAgB,0BAA0B,QAAQ,MAAM,OAAO,OAAO;CAEpE,QAAQ,KAAK,2CAA2C,OAAO,qBAAqB,KAAK,QAAQ,MAAM,4CAA4C,MAAM,qBAAqB,KAAK,uDAAuD,MAAM,OAAO,OAAO,gBAAgB,KAAK,wBAAwB,KAAK,4DAA4D,MAAM,MAAM;AAI1X;;;;;;;;AASA,SAAgB,2BAA2B,MAAM,UAAU,MAAM,QAAQ;CAEvE,QAAQ,KAAK,sEAAsE,KAAK,SAAS,SAAS,mDAAmD,KAAK,cAAc,OAAO,kFAAkF,MAAM,MAAM;AAIvR;;;;AAKA,SAAgB,gCAAgC;CAE9C,QAAQ,KAAK,sPAAsP,MAAM,MAAM;AAIjR;;;;;AAMA,SAAgB,8BAA8B,UAAU;CAEtD,QAAQ,KAAK,yKAAyK,SAAS,yFAAyF,MAAM,MAAM;AAItS;;;;AAKA,SAAgB,sBAAsB;CAEpC,QAAQ,KAAK,uIAAuI,MAAM,MAAM;AAIlK;;;;AAKA,SAAgB,6BAA6B;CAE3C,QAAQ,KAAK,6LAA6L,MAAM,MAAM;AAIxN;;;;;AAMA,SAAgB,yBAAyB,OAAO;CAE9C,QAAQ,KAAK,wHAAwH,MAAM,oDAAoD,MAAM,MAAM;AAI7M"}
@@ -0,0 +1,18 @@
1
+ /** Everything the touch path needs from the `createRowDrag` closure. */
2
+ export type TouchDragDeps = {
3
+ ctx: any;
4
+ managed: () => boolean;
5
+ originalAt: (rowIndex: number) => unknown;
6
+ commitDropOnRow: (rowIndex: number, side: "before" | "after") => void;
7
+ clearIndicators: () => void;
8
+ cancelPendingLeave: () => void;
9
+ /** Publish the dragged row on the shared cross-grid bus. */
10
+ openBus: (row: unknown) => void;
11
+ closeBus: () => void;
12
+ };
13
+ /** What {@link createTouchDrag} returns. */
14
+ export type TouchDragHandle = {
15
+ start: (e: PointerEvent, rowIndex: number) => void;
16
+ destroy: () => void;
17
+ };
18
+ export declare function createTouchDrag(deps: TouchDragDeps): TouchDragHandle;
@@ -0,0 +1,185 @@
1
+ // Touch / pointer row dragging (#66).
2
+ //
3
+ // HTML5 drag events do not exist for touch input on iOS Safari or Android
4
+ // Chrome - `dragstart` never fires - so the drag path in `row-drag.ts` is dead
5
+ // on a phone. This is a second INPUT path onto the same model: it populates the
6
+ // same cross-grid `bus` and the same `rowDropIndex` / `rowDropSide`, and commits
7
+ // through the same `commitDropOnRow`, so reorder, cross-grid hand-off and the
8
+ // `onRowDragEnd` payload cannot drift between mouse and touch.
9
+ //
10
+ // Loaded with `import()` on the first touch that lands on a draggable row, so
11
+ // desktop users never download it. The 350 ms long press below more than covers
12
+ // the fetch, and the drag cannot begin before it elapses anyway.
13
+ //
14
+ // A touch that starts on a row must still be able to SCROLL the grid, so the
15
+ // drag only begins after a long press; moving before that threshold hands the
16
+ // gesture back to the browser.
17
+ const LONG_PRESS_MS = 350;
18
+ /** Movement (px) before the long press is treated as a scroll instead. */
19
+ const SCROLL_SLOP_PX = 10;
20
+ /** Distance from an edge (px) at which the grid starts auto-scrolling. */
21
+ const EDGE_PX = 48;
22
+ const EDGE_SPEED_PX = 12;
23
+ export function createTouchDrag(deps) {
24
+ const { ctx } = deps;
25
+ let touch = null;
26
+ /** Resolve the row under a viewport point, and which half of it. */
27
+ function rowAtPoint(x, y) {
28
+ const el = document.elementFromPoint(x, y);
29
+ const tr = el?.closest?.("tr.sv-grid-row");
30
+ if (!tr)
31
+ return null;
32
+ const marker = tr.querySelector("[data-svgrid-row]");
33
+ const raw = marker?.dataset.svgridRow;
34
+ if (raw == null)
35
+ return null;
36
+ const index = Number(raw);
37
+ if (!Number.isFinite(index))
38
+ return null;
39
+ const rect = tr.getBoundingClientRect();
40
+ return { index, side: y < rect.top + rect.height / 2 ? "before" : "after" };
41
+ }
42
+ function stopEdgeScroll() {
43
+ if (touch?.scrollFrame != null) {
44
+ cancelAnimationFrame(touch.scrollFrame);
45
+ touch.scrollFrame = null;
46
+ }
47
+ }
48
+ /** Keep scrolling while the finger is parked near the top or bottom edge. */
49
+ function edgeScroll(clientY) {
50
+ const scroller = touch?.scroller;
51
+ if (!touch || !scroller)
52
+ return;
53
+ const rect = scroller.getBoundingClientRect();
54
+ let dy = 0;
55
+ if (clientY < rect.top + EDGE_PX)
56
+ dy = -EDGE_SPEED_PX;
57
+ else if (clientY > rect.bottom - EDGE_PX)
58
+ dy = EDGE_SPEED_PX;
59
+ stopEdgeScroll();
60
+ if (dy === 0)
61
+ return;
62
+ const step = () => {
63
+ if (!touch?.started)
64
+ return;
65
+ scroller.scrollTop += dy;
66
+ // Re-hit-test as rows move under a stationary finger, otherwise the
67
+ // indicator freezes on whichever row happened to be there at touch time.
68
+ const hit = rowAtPoint(touch.startX, clientY);
69
+ if (hit) {
70
+ ctx.rowDropIndex = hit.index;
71
+ ctx.rowDropSide = hit.side;
72
+ }
73
+ touch.scrollFrame = requestAnimationFrame(step);
74
+ };
75
+ touch.scrollFrame = requestAnimationFrame(step);
76
+ }
77
+ // `pointermove.preventDefault()` does NOT stop iOS scrolling; only a
78
+ // non-passive `touchmove` does. Registered for the life of the drag.
79
+ function blockTouchScroll(e) {
80
+ if (touch?.started)
81
+ e.preventDefault();
82
+ }
83
+ function detach() {
84
+ window.removeEventListener("pointermove", onPointerMove);
85
+ window.removeEventListener("pointerup", onPointerUp);
86
+ window.removeEventListener("pointercancel", onPointerCancel);
87
+ window.removeEventListener("touchmove", blockTouchScroll);
88
+ }
89
+ function end(commit) {
90
+ if (!touch)
91
+ return;
92
+ const t = touch;
93
+ if (t.timer)
94
+ clearTimeout(t.timer);
95
+ stopEdgeScroll();
96
+ touch = null;
97
+ detach();
98
+ t.root?.classList.remove("sv-grid-row-drag-active");
99
+ if (!t.started)
100
+ return;
101
+ if (commit && ctx.rowDropIndex != null) {
102
+ deps.commitDropOnRow(ctx.rowDropIndex, (ctx.rowDropSide ?? "before"));
103
+ }
104
+ else {
105
+ deps.clearIndicators();
106
+ deps.closeBus();
107
+ }
108
+ }
109
+ function onPointerMove(e) {
110
+ if (!touch || e.pointerId !== touch.pointerId)
111
+ return;
112
+ if (!touch.started) {
113
+ // Still inside the long press: a real move means the user is scrolling.
114
+ const moved = Math.abs(e.clientY - touch.startY) + Math.abs(e.clientX - touch.startX);
115
+ if (moved > SCROLL_SLOP_PX)
116
+ end(false);
117
+ return;
118
+ }
119
+ e.preventDefault();
120
+ const hit = rowAtPoint(e.clientX, e.clientY);
121
+ if (hit) {
122
+ deps.cancelPendingLeave();
123
+ ctx.rowDropIndex = hit.index;
124
+ ctx.rowDropSide = hit.side;
125
+ }
126
+ touch.startX = e.clientX;
127
+ edgeScroll(e.clientY);
128
+ }
129
+ function onPointerUp(e) {
130
+ if (!touch || e.pointerId !== touch.pointerId)
131
+ return;
132
+ end(true);
133
+ }
134
+ function onPointerCancel(e) {
135
+ if (!touch || e.pointerId !== touch.pointerId)
136
+ return;
137
+ end(false);
138
+ }
139
+ return {
140
+ /** Begin a press that may become a drag. Caller has already checked touch. */
141
+ start(e, rowIndex) {
142
+ if (!deps.managed() || touch)
143
+ return;
144
+ const row = deps.originalAt(rowIndex);
145
+ if (row == null)
146
+ return;
147
+ const target = e.currentTarget;
148
+ touch = {
149
+ pointerId: e.pointerId,
150
+ rowIndex,
151
+ startX: e.clientX,
152
+ startY: e.clientY,
153
+ started: false,
154
+ timer: null,
155
+ scrollFrame: null,
156
+ scroller: target?.closest?.(".sv-grid-container") ?? null,
157
+ root: target?.closest?.(".sv-grid-root") ?? null,
158
+ };
159
+ window.addEventListener("pointermove", onPointerMove, { passive: false });
160
+ window.addEventListener("pointerup", onPointerUp);
161
+ window.addEventListener("pointercancel", onPointerCancel);
162
+ window.addEventListener("touchmove", blockTouchScroll, { passive: false });
163
+ touch.timer = setTimeout(() => {
164
+ if (!touch)
165
+ return;
166
+ touch.started = true;
167
+ touch.timer = null;
168
+ touch.root?.classList.add("sv-grid-row-drag-active");
169
+ try {
170
+ target?.setPointerCapture?.(e.pointerId);
171
+ }
172
+ catch {
173
+ // Not every environment implements pointer capture (tests, old WebViews).
174
+ }
175
+ deps.openBus(row);
176
+ ctx.rowDragActive = true;
177
+ ctx.rowDropIndex = rowIndex;
178
+ ctx.rowDropSide = "before";
179
+ }, LONG_PRESS_MS);
180
+ },
181
+ destroy() {
182
+ end(false);
183
+ },
184
+ };
185
+ }
@@ -13,6 +13,8 @@ export declare function createRowDrag<TFeatures, TData>(ctx: any): {
13
13
  onRowsContainerDragOver: (e: DragEvent) => void;
14
14
  onRowsContainerDrop: (e: DragEvent) => void;
15
15
  onRowDragEnd: () => void;
16
+ /** Touch entry point (#66) - see the pointer-drag block above. */
17
+ onRowPointerDown: (e: PointerEvent, rowIndex: number) => void;
16
18
  rowDragGridId: number;
17
19
  /**
18
20
  * Clear any managed drag this grid currently owns. Call on unmount so an