@sectile/vue 0.18.1 → 0.18.3

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 (395) hide show
  1. package/dist/accordion.d.ts +1 -1
  2. package/dist/accordion.js +1 -1
  3. package/dist/carousel.d.ts +1 -1
  4. package/dist/carousel.js +1 -1
  5. package/dist/cascade-list.js +1 -1
  6. package/dist/cascade-list.js.map +1 -1
  7. package/dist/cascade-select.js +1 -1
  8. package/dist/cascade-select.js.map +1 -1
  9. package/dist/checkbox-group.js +1 -1
  10. package/dist/checkbox-group.js.map +1 -1
  11. package/dist/checkbox.d.ts +1 -1
  12. package/dist/checkbox.js +1 -1
  13. package/dist/checkbox.js.map +1 -1
  14. package/dist/color-picker.js +1 -1
  15. package/dist/color-picker.js.map +1 -1
  16. package/dist/combobox.d.ts +1 -1
  17. package/dist/combobox.js +1 -1
  18. package/dist/combobox.js.map +1 -1
  19. package/dist/disclosure.d.ts +1 -1
  20. package/dist/disclosure.js +1 -1
  21. package/dist/editable.js +1 -1
  22. package/dist/editable.js.map +1 -1
  23. package/dist/{internal/form-context.d.ts → form/context.d.ts} +3 -2
  24. package/dist/{internal/form-context.js → form/context.js} +2 -2
  25. package/dist/form/context.js.map +1 -0
  26. package/dist/form/contracts.d.ts +219 -0
  27. package/dist/form/contracts.js +2 -0
  28. package/dist/form/contracts.js.map +1 -0
  29. package/dist/{internal/form-control-inventory.js → form/control-inventory.js} +1 -1
  30. package/dist/form/control-inventory.js.map +1 -0
  31. package/dist/form/control.js +2 -0
  32. package/dist/form/control.js.map +1 -0
  33. package/dist/form/field.d.ts +81 -0
  34. package/dist/form/field.js +2 -0
  35. package/dist/form/field.js.map +1 -0
  36. package/dist/form/native.d.ts +15 -0
  37. package/dist/form/native.js +2 -0
  38. package/dist/form/native.js.map +1 -0
  39. package/dist/form/part.d.ts +16 -0
  40. package/dist/form/part.js +2 -0
  41. package/dist/form/part.js.map +1 -0
  42. package/dist/form/parts.d.ts +93 -0
  43. package/dist/form/parts.js +2 -0
  44. package/dist/form/parts.js.map +1 -0
  45. package/dist/{internal/form-presence-parts.d.ts → form/presence-parts.d.ts} +1 -1
  46. package/dist/form/presence-parts.js +2 -0
  47. package/dist/form/presence-parts.js.map +1 -0
  48. package/dist/form/root.d.ts +2 -0
  49. package/dist/form/root.js +2 -0
  50. package/dist/form/root.js.map +1 -0
  51. package/dist/form/selectors.d.ts +7 -0
  52. package/dist/form/selectors.js +2 -0
  53. package/dist/form/selectors.js.map +1 -0
  54. package/dist/form.d.ts +8 -398
  55. package/dist/form.js +1 -1
  56. package/dist/form.js.map +1 -1
  57. package/dist/index.d.ts +10 -10
  58. package/dist/index.js +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/input/decimal-input.js.map +1 -0
  61. package/dist/input/native-field.js +2 -0
  62. package/dist/input/native-field.js.map +1 -0
  63. package/dist/input/native-input.js.map +1 -0
  64. package/dist/input/native-range-field.d.ts +86 -0
  65. package/dist/input/native-range-field.js +2 -0
  66. package/dist/input/native-range-field.js.map +1 -0
  67. package/dist/input/native-text-state.d.ts +2 -0
  68. package/dist/input/native-text-state.js +2 -0
  69. package/dist/input/native-text-state.js.map +1 -0
  70. package/dist/internal/cascade-choice.d.ts +1 -1
  71. package/dist/internal/cascade-choice.js +1 -1
  72. package/dist/internal/cascade-choice.js.map +1 -1
  73. package/dist/internal/controlled-state.js +1 -1
  74. package/dist/internal/controlled-state.js.map +1 -1
  75. package/dist/listbox.d.ts +1 -1
  76. package/dist/listbox.js +1 -1
  77. package/dist/listbox.js.map +1 -1
  78. package/dist/menu.js +1 -1
  79. package/dist/meter-group.js +1 -1
  80. package/dist/meter-group.js.map +1 -1
  81. package/dist/meter.js +1 -1
  82. package/dist/meter.js.map +1 -1
  83. package/dist/multi-thumb-slider.js +1 -1
  84. package/dist/multi-thumb-slider.js.map +1 -1
  85. package/dist/navigation-menu.d.ts +1 -1
  86. package/dist/navigation-menu.js +1 -1
  87. package/dist/number-field.d.ts +1 -1
  88. package/dist/number-field.js +1 -1
  89. package/dist/number-field.js.map +1 -1
  90. package/dist/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +1 -1
  91. package/dist/overlay/alert-dialog.js +2 -0
  92. package/dist/overlay/alert-dialog.js.map +1 -0
  93. package/dist/{dialog.d.ts → overlay/dialog.d.ts} +1 -1
  94. package/dist/overlay/dialog.js +2 -0
  95. package/dist/overlay/dialog.js.map +1 -0
  96. package/dist/{drawer.d.ts → overlay/drawer.d.ts} +1 -1
  97. package/dist/overlay/drawer.js +2 -0
  98. package/dist/overlay/drawer.js.map +1 -0
  99. package/dist/{popover.d.ts → overlay/popover.d.ts} +1 -1
  100. package/dist/overlay/popover.js +2 -0
  101. package/dist/overlay/popover.js.map +1 -0
  102. package/dist/overlay/popup.js +2 -0
  103. package/dist/overlay/popup.js.map +1 -0
  104. package/dist/{tooltip.d.ts → overlay/tooltip.d.ts} +1 -1
  105. package/dist/overlay/tooltip.js +2 -0
  106. package/dist/overlay/tooltip.js.map +1 -0
  107. package/dist/pin-input.js +1 -1
  108. package/dist/pin-input.js.map +1 -1
  109. package/dist/{internal → presence}/conditional-presence.js.map +1 -1
  110. package/dist/{internal → presence}/presence.js.map +1 -1
  111. package/dist/progress.js +1 -1
  112. package/dist/progress.js.map +1 -1
  113. package/dist/quantity-field.js +1 -1
  114. package/dist/quantity-field.js.map +1 -1
  115. package/dist/radio-group.d.ts +1 -1
  116. package/dist/radio-group.js +1 -1
  117. package/dist/radio-group.js.map +1 -1
  118. package/dist/select.d.ts +1 -1
  119. package/dist/select.js +1 -1
  120. package/dist/select.js.map +1 -1
  121. package/dist/slider.js +1 -1
  122. package/dist/slider.js.map +1 -1
  123. package/dist/spin-button.js +1 -1
  124. package/dist/spin-button.js.map +1 -1
  125. package/dist/switch.js +1 -1
  126. package/dist/switch.js.map +1 -1
  127. package/dist/tabs.d.ts +1 -1
  128. package/dist/tabs.js +1 -1
  129. package/dist/{internal/tabular-components.d.ts → tabular/components.d.ts} +1 -1
  130. package/dist/{internal/tabular-components.js → tabular/components.js} +1 -1
  131. package/dist/tabular/components.js.map +1 -0
  132. package/dist/tabular/context.d.ts +16 -0
  133. package/dist/tabular/context.js +2 -0
  134. package/dist/tabular/context.js.map +1 -0
  135. package/dist/{internal/tabular-profile.d.ts → tabular/controller.d.ts} +2 -32
  136. package/dist/tabular/controller.js +2 -0
  137. package/dist/tabular/controller.js.map +1 -0
  138. package/dist/{data-grid.d.ts → tabular/data-grid.d.ts} +7 -5
  139. package/dist/tabular/data-grid.js +2 -0
  140. package/dist/tabular/data-grid.js.map +1 -0
  141. package/dist/{data-table.d.ts → tabular/data-table.d.ts} +9 -36
  142. package/dist/tabular/data-table.js +2 -0
  143. package/dist/tabular/data-table.js.map +1 -0
  144. package/dist/{data-tree-grid.d.ts → tabular/data-tree-grid.d.ts} +7 -5
  145. package/dist/tabular/data-tree-grid.js +2 -0
  146. package/dist/tabular/data-tree-grid.js.map +1 -0
  147. package/dist/{internal/tabular-parts.d.ts → tabular/parts.d.ts} +2 -1
  148. package/dist/tabular/parts.js +2 -0
  149. package/dist/tabular/parts.js.map +1 -0
  150. package/dist/tabular/schema.d.ts +35 -0
  151. package/dist/tabular/schema.js +2 -0
  152. package/dist/tabular/schema.js.map +1 -0
  153. package/dist/tabular/source.d.ts +20 -0
  154. package/dist/tabular/source.js +2 -0
  155. package/dist/tabular/source.js.map +1 -0
  156. package/dist/tags-input.js +1 -1
  157. package/dist/tags-input.js.map +1 -1
  158. package/dist/{calendar.d.ts → temporal/calendar.d.ts} +21 -21
  159. package/dist/temporal/calendar.js +2 -0
  160. package/dist/temporal/calendar.js.map +1 -0
  161. package/dist/temporal/capabilities/calendar.d.ts +1 -0
  162. package/dist/temporal/capabilities/calendar.js +2 -0
  163. package/dist/temporal/capabilities/calendar.js.map +1 -0
  164. package/dist/temporal/capabilities/date-picker.d.ts +1 -0
  165. package/dist/temporal/capabilities/date-picker.js +2 -0
  166. package/dist/temporal/capabilities/date-picker.js.map +1 -0
  167. package/dist/temporal/capabilities/date-range-picker.d.ts +1 -0
  168. package/dist/temporal/capabilities/date-range-picker.js +2 -0
  169. package/dist/temporal/capabilities/date-range-picker.js.map +1 -0
  170. package/dist/temporal/capabilities/date-time-picker.d.ts +1 -0
  171. package/dist/temporal/capabilities/date-time-picker.js +2 -0
  172. package/dist/temporal/capabilities/date-time-picker.js.map +1 -0
  173. package/dist/temporal/capabilities/date-time-range-picker.d.ts +1 -0
  174. package/dist/temporal/capabilities/date-time-range-picker.js +2 -0
  175. package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -0
  176. package/dist/temporal/capabilities/month-picker.d.ts +1 -0
  177. package/dist/temporal/capabilities/month-picker.js +2 -0
  178. package/dist/temporal/capabilities/month-picker.js.map +1 -0
  179. package/dist/temporal/capabilities/month-range-picker.d.ts +1 -0
  180. package/dist/temporal/capabilities/month-range-picker.js +2 -0
  181. package/dist/temporal/capabilities/month-range-picker.js.map +1 -0
  182. package/dist/temporal/capabilities/range-calendar.d.ts +1 -0
  183. package/dist/temporal/capabilities/range-calendar.js +2 -0
  184. package/dist/temporal/capabilities/range-calendar.js.map +1 -0
  185. package/dist/temporal/capabilities/year-picker.d.ts +1 -0
  186. package/dist/temporal/capabilities/year-picker.js +2 -0
  187. package/dist/temporal/capabilities/year-picker.js.map +1 -0
  188. package/dist/temporal/capabilities/year-range-picker.d.ts +1 -0
  189. package/dist/temporal/capabilities/year-range-picker.js +2 -0
  190. package/dist/temporal/capabilities/year-range-picker.js.map +1 -0
  191. package/dist/{internal/picker-capability.js → temporal/capability.js} +1 -1
  192. package/dist/temporal/capability.js.map +1 -0
  193. package/dist/{date-field.d.ts → temporal/date-field.d.ts} +1 -1
  194. package/dist/temporal/date-field.js +2 -0
  195. package/dist/temporal/date-field.js.map +1 -0
  196. package/dist/{date-picker.d.ts → temporal/date-picker.d.ts} +24 -24
  197. package/dist/temporal/date-picker.js +2 -0
  198. package/dist/temporal/date-picker.js.map +1 -0
  199. package/dist/{date-range-field.d.ts → temporal/date-range-field.d.ts} +1 -1
  200. package/dist/temporal/date-range-field.js +2 -0
  201. package/dist/temporal/date-range-field.js.map +1 -0
  202. package/dist/{date-range-picker.d.ts → temporal/date-range-picker.d.ts} +27 -27
  203. package/dist/temporal/date-range-picker.js +2 -0
  204. package/dist/temporal/date-range-picker.js.map +1 -0
  205. package/dist/{date-time-field.d.ts → temporal/date-time-field.d.ts} +1 -1
  206. package/dist/temporal/date-time-field.js +2 -0
  207. package/dist/temporal/date-time-field.js.map +1 -0
  208. package/dist/{date-time-picker.d.ts → temporal/date-time-picker.d.ts} +30 -30
  209. package/dist/temporal/date-time-picker.js +2 -0
  210. package/dist/temporal/date-time-picker.js.map +1 -0
  211. package/dist/{date-time-range-picker.d.ts → temporal/date-time-range-picker.d.ts} +39 -39
  212. package/dist/temporal/date-time-range-picker.js +2 -0
  213. package/dist/temporal/date-time-range-picker.js.map +1 -0
  214. package/dist/{month-picker.d.ts → temporal/month-picker.d.ts} +14 -14
  215. package/dist/temporal/month-picker.js +2 -0
  216. package/dist/temporal/month-picker.js.map +1 -0
  217. package/dist/{month-range-picker.d.ts → temporal/month-range-picker.d.ts} +17 -17
  218. package/dist/temporal/month-range-picker.js +2 -0
  219. package/dist/temporal/month-range-picker.js.map +1 -0
  220. package/dist/{internal/date-picker.d.ts → temporal/picker.d.ts} +2 -3
  221. package/dist/temporal/picker.js +2 -0
  222. package/dist/temporal/picker.js.map +1 -0
  223. package/dist/{range-calendar.d.ts → temporal/range-calendar.d.ts} +11 -11
  224. package/dist/temporal/range-calendar.js +2 -0
  225. package/dist/temporal/range-calendar.js.map +1 -0
  226. package/dist/temporal/temporal-provider.js.map +1 -0
  227. package/dist/{time-field.d.ts → temporal/time-field.d.ts} +1 -1
  228. package/dist/temporal/time-field.js +2 -0
  229. package/dist/temporal/time-field.js.map +1 -0
  230. package/dist/{time-range-field.d.ts → temporal/time-range-field.d.ts} +1 -1
  231. package/dist/temporal/time-range-field.js +2 -0
  232. package/dist/temporal/time-range-field.js.map +1 -0
  233. package/dist/{year-picker.d.ts → temporal/year-picker.d.ts} +16 -16
  234. package/dist/temporal/year-picker.js +2 -0
  235. package/dist/temporal/year-picker.js.map +1 -0
  236. package/dist/{year-range-picker.d.ts → temporal/year-range-picker.d.ts} +19 -19
  237. package/dist/temporal/year-range-picker.js +2 -0
  238. package/dist/temporal/year-range-picker.js.map +1 -0
  239. package/dist/text.js +1 -1
  240. package/dist/text.js.map +1 -1
  241. package/dist/toast.js +1 -1
  242. package/dist/toggle-group.js +1 -1
  243. package/dist/toggle-group.js.map +1 -1
  244. package/dist/tree-grid.d.ts +1 -1
  245. package/dist/tree-grid.js +1 -1
  246. package/dist/tree-grid.js.map +1 -1
  247. package/dist/tree-view.d.ts +1 -1
  248. package/dist/tree-view.js +1 -1
  249. package/dist/{internal → virtual}/virtual-collection.d.ts +1 -0
  250. package/dist/virtual/virtual-collection.js +2 -0
  251. package/dist/virtual/virtual-collection.js.map +1 -0
  252. package/dist/{internal → virtual}/virtual-core.d.ts +1 -0
  253. package/dist/virtual/virtual-core.js +2 -0
  254. package/dist/virtual/virtual-core.js.map +1 -0
  255. package/dist/{virtual-grid.d.ts → virtual/virtual-grid.d.ts} +1 -1
  256. package/dist/virtual/virtual-grid.js +2 -0
  257. package/dist/virtual/virtual-grid.js.map +1 -0
  258. package/dist/virtual/virtual-list.js +2 -0
  259. package/dist/virtual/virtual-list.js.map +1 -0
  260. package/dist/{virtual-masonry.d.ts → virtual/virtual-masonry.d.ts} +1 -1
  261. package/dist/virtual/virtual-masonry.js +2 -0
  262. package/dist/virtual/virtual-masonry.js.map +1 -0
  263. package/dist/{virtual-spatial.d.ts → virtual/virtual-spatial.d.ts} +1 -1
  264. package/dist/virtual/virtual-spatial.js +2 -0
  265. package/dist/virtual/virtual-spatial.js.map +1 -0
  266. package/dist/virtual-core.d.ts +1 -1
  267. package/dist/virtual-core.js +1 -1
  268. package/dist/virtual-list.d.ts +2 -2
  269. package/dist/virtual-list.js +1 -1
  270. package/package.json +94 -94
  271. package/dist/alert-dialog.js +0 -2
  272. package/dist/alert-dialog.js.map +0 -1
  273. package/dist/calendar.js +0 -2
  274. package/dist/calendar.js.map +0 -1
  275. package/dist/data-grid.js +0 -2
  276. package/dist/data-grid.js.map +0 -1
  277. package/dist/data-table.js +0 -2
  278. package/dist/data-table.js.map +0 -1
  279. package/dist/data-tree-grid.js +0 -2
  280. package/dist/data-tree-grid.js.map +0 -1
  281. package/dist/date-field.js +0 -2
  282. package/dist/date-field.js.map +0 -1
  283. package/dist/date-picker.js +0 -2
  284. package/dist/date-picker.js.map +0 -1
  285. package/dist/date-range-field.js +0 -2
  286. package/dist/date-range-field.js.map +0 -1
  287. package/dist/date-range-picker.js +0 -2
  288. package/dist/date-range-picker.js.map +0 -1
  289. package/dist/date-time-field.js +0 -2
  290. package/dist/date-time-field.js.map +0 -1
  291. package/dist/date-time-picker.js +0 -2
  292. package/dist/date-time-picker.js.map +0 -1
  293. package/dist/date-time-range-picker.js +0 -2
  294. package/dist/date-time-range-picker.js.map +0 -1
  295. package/dist/dialog.js +0 -2
  296. package/dist/dialog.js.map +0 -1
  297. package/dist/drawer.js +0 -2
  298. package/dist/drawer.js.map +0 -1
  299. package/dist/internal/calendar-capability.d.ts +0 -1
  300. package/dist/internal/calendar-capability.js +0 -2
  301. package/dist/internal/calendar-capability.js.map +0 -1
  302. package/dist/internal/date-picker-capability.d.ts +0 -1
  303. package/dist/internal/date-picker-capability.js +0 -2
  304. package/dist/internal/date-picker-capability.js.map +0 -1
  305. package/dist/internal/date-picker.js +0 -2
  306. package/dist/internal/date-picker.js.map +0 -1
  307. package/dist/internal/date-range-picker-capability.d.ts +0 -1
  308. package/dist/internal/date-range-picker-capability.js +0 -2
  309. package/dist/internal/date-range-picker-capability.js.map +0 -1
  310. package/dist/internal/date-time-picker-capability.d.ts +0 -1
  311. package/dist/internal/date-time-picker-capability.js +0 -2
  312. package/dist/internal/date-time-picker-capability.js.map +0 -1
  313. package/dist/internal/date-time-range-picker-capability.d.ts +0 -1
  314. package/dist/internal/date-time-range-picker-capability.js +0 -2
  315. package/dist/internal/date-time-range-picker-capability.js.map +0 -1
  316. package/dist/internal/decimal-input.js.map +0 -1
  317. package/dist/internal/form-context.js.map +0 -1
  318. package/dist/internal/form-control-inventory.js.map +0 -1
  319. package/dist/internal/form-control.js +0 -2
  320. package/dist/internal/form-control.js.map +0 -1
  321. package/dist/internal/form-presence-parts.js +0 -2
  322. package/dist/internal/form-presence-parts.js.map +0 -1
  323. package/dist/internal/month-picker-capability.d.ts +0 -1
  324. package/dist/internal/month-picker-capability.js +0 -2
  325. package/dist/internal/month-picker-capability.js.map +0 -1
  326. package/dist/internal/month-range-picker-capability.d.ts +0 -1
  327. package/dist/internal/month-range-picker-capability.js +0 -2
  328. package/dist/internal/month-range-picker-capability.js.map +0 -1
  329. package/dist/internal/native-field.js +0 -2
  330. package/dist/internal/native-field.js.map +0 -1
  331. package/dist/internal/native-input.js.map +0 -1
  332. package/dist/internal/picker-capability.js.map +0 -1
  333. package/dist/internal/popup.js +0 -2
  334. package/dist/internal/popup.js.map +0 -1
  335. package/dist/internal/range-calendar-capability.d.ts +0 -1
  336. package/dist/internal/range-calendar-capability.js +0 -2
  337. package/dist/internal/range-calendar-capability.js.map +0 -1
  338. package/dist/internal/tabular-components.js.map +0 -1
  339. package/dist/internal/tabular-parts.js +0 -2
  340. package/dist/internal/tabular-parts.js.map +0 -1
  341. package/dist/internal/tabular-profile.js +0 -2
  342. package/dist/internal/tabular-profile.js.map +0 -1
  343. package/dist/internal/virtual-collection.js +0 -2
  344. package/dist/internal/virtual-collection.js.map +0 -1
  345. package/dist/internal/virtual-core.js +0 -2
  346. package/dist/internal/virtual-core.js.map +0 -1
  347. package/dist/internal/virtual-list.js +0 -2
  348. package/dist/internal/virtual-list.js.map +0 -1
  349. package/dist/internal/year-picker-capability.d.ts +0 -1
  350. package/dist/internal/year-picker-capability.js +0 -2
  351. package/dist/internal/year-picker-capability.js.map +0 -1
  352. package/dist/internal/year-range-picker-capability.d.ts +0 -1
  353. package/dist/internal/year-range-picker-capability.js +0 -2
  354. package/dist/internal/year-range-picker-capability.js.map +0 -1
  355. package/dist/month-picker.js +0 -2
  356. package/dist/month-picker.js.map +0 -1
  357. package/dist/month-range-picker.js +0 -2
  358. package/dist/month-range-picker.js.map +0 -1
  359. package/dist/popover.js +0 -2
  360. package/dist/popover.js.map +0 -1
  361. package/dist/range-calendar.js +0 -2
  362. package/dist/range-calendar.js.map +0 -1
  363. package/dist/temporal-provider.js.map +0 -1
  364. package/dist/time-field.js +0 -2
  365. package/dist/time-field.js.map +0 -1
  366. package/dist/time-range-field.js +0 -2
  367. package/dist/time-range-field.js.map +0 -1
  368. package/dist/tooltip.js +0 -2
  369. package/dist/tooltip.js.map +0 -1
  370. package/dist/virtual-grid.js +0 -2
  371. package/dist/virtual-grid.js.map +0 -1
  372. package/dist/virtual-masonry.js +0 -2
  373. package/dist/virtual-masonry.js.map +0 -1
  374. package/dist/virtual-spatial.js +0 -2
  375. package/dist/virtual-spatial.js.map +0 -1
  376. package/dist/year-picker.js +0 -2
  377. package/dist/year-picker.js.map +0 -1
  378. package/dist/year-range-picker.js +0 -2
  379. package/dist/year-range-picker.js.map +0 -1
  380. /package/dist/{internal/form-control-inventory.d.ts → form/control-inventory.d.ts} +0 -0
  381. /package/dist/{internal/form-control.d.ts → form/control.d.ts} +0 -0
  382. /package/dist/{internal → input}/decimal-input.d.ts +0 -0
  383. /package/dist/{internal → input}/decimal-input.js +0 -0
  384. /package/dist/{internal → input}/native-field.d.ts +0 -0
  385. /package/dist/{internal → input}/native-input.d.ts +0 -0
  386. /package/dist/{internal → input}/native-input.js +0 -0
  387. /package/dist/{internal → overlay}/popup.d.ts +0 -0
  388. /package/dist/{internal → presence}/conditional-presence.d.ts +0 -0
  389. /package/dist/{internal → presence}/conditional-presence.js +0 -0
  390. /package/dist/{internal → presence}/presence.d.ts +0 -0
  391. /package/dist/{internal → presence}/presence.js +0 -0
  392. /package/dist/{internal/picker-capability.d.ts → temporal/capability.d.ts} +0 -0
  393. /package/dist/{temporal-provider.d.ts → temporal/temporal-provider.d.ts} +0 -0
  394. /package/dist/{temporal-provider.js → temporal/temporal-provider.js} +0 -0
  395. /package/dist/{internal → virtual}/virtual-list.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onScopeDispose,provide,shallowReactive,shallowRef,toValue,watch}from'vue';import{createAxisMeasurementResolver,createVirtualizer,virtualItemStyle,virtualSurfaceStyle}from'@sectile/dom/virtual';import{Primitive}from'../primitive.js';const virtualizerContextKey=Symbol('SectileVirtualizerRoot');const virtualizerSurfaceContextKey=Symbol('SectileVirtualizerSurface');export function useVirtualizer(options){const scrollport=options.scrollport??shallowRef(null);const surface=options.surface??shallowRef(null);const plan=shallowRef(null);const connection=shallowRef();const frames=new Map;const frameRegistrations=new Map;const items=new Map;const itemRegistrations=new Map;let connectedScrollport;let connectedSurface;let disposed=false;const report=error=>{options.onError?.(error)};const updateInitialPlan=()=>{if(options.initialViewport===undefined){plan.value=null;return}const overscan=toValue(options.overscan);const result=options.strategy.tryQuery(options.state.value,{viewport:options.initialViewport,...overscan===undefined?{}:{overscan}});if(!result.ok){report(result.error);return}plan.value=result.value;options.onPlanChange?.(result.value)};updateInitialPlan();const disconnectConnection=()=>{frameRegistrations.clear();itemRegistrations.clear();const current=connection.value;connection.value=undefined;connectedScrollport=undefined;connectedSurface=undefined;current?.disconnect()};const connect=()=>{if(disposed)return;disconnectConnection();const currentScrollport=scrollport.value;const currentSurface=surface.value;if(currentScrollport===null||currentScrollport===undefined||currentSurface===null||currentSurface===undefined){updateInitialPlan();return}const overscan=toValue(options.overscan);const viewportInsets=toValue(options.viewportInsets);const next=createVirtualizer({scrollport:currentScrollport,surface:currentSurface,state:options.state.value,strategy:options.strategy,...overscan===undefined?{}:{overscan},...viewportInsets===undefined?{}:{viewportInsets},...options.measure===undefined?{}:{measure:options.measure},...options.readViewport===undefined?{}:{readViewport:options.readViewport},...options.writeScroll===undefined?{}:{writeScroll:options.writeScroll},...options.environment===undefined?{}:{environment:options.environment},onPlanChange:value=>{plan.value=value;options.onPlanChange?.(value)},onStateChange:value=>{options.state.value=value;options.onStateChange?.(value)},onError:report});connectedScrollport=currentScrollport;connectedSurface=currentSurface;connection.value=next;for(const frame of frames.keys()){frameRegistrations.set(frame,next.registerFrame(frame))}for(const[item,desired]of items){itemRegistrations.set(item,next.registerItem(item,desired.id))}};const retireObsoleteConnection=()=>{if(connection.value===undefined)return;if(scrollport.value===connectedScrollport&&surface.value===connectedSurface)return;disconnectConnection()};watch([scrollport,surface],retireObsoleteConnection,{flush:'sync'});watch([scrollport,surface],connect,{flush:'post',immediate:true});watch(options.state,value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setState(value)},{flush:'sync'});watch(()=>toValue(options.overscan),value=>{if(connection.value===undefined)updateInitialPlan();else connection.value.setOverscan(value)},{deep:true,flush:'sync'});watch(()=>toValue(options.viewportInsets),value=>{connection.value?.setViewportInsets(value)},{deep:true,flush:'sync'});onScopeDispose(()=>{disposed=true;disconnectConnection();frames.clear();items.clear()});return Object.freeze({scrollport,surface,plan,connection,registerFrame:element=>{const token=Object.freeze({});frameRegistrations.get(element)?.();frameRegistrations.delete(element);frames.set(element,token);if(connection.value!==undefined){frameRegistrations.set(element,connection.value.registerFrame(element))}return()=>{if(frames.get(element)!==token)return;frameRegistrations.get(element)?.();frameRegistrations.delete(element);frames.delete(element)}},registerItem:(element,id)=>{const token=Object.freeze({});itemRegistrations.get(element)?.();itemRegistrations.delete(element);items.set(element,Object.freeze({id,token}));if(connection.value!==undefined){itemRegistrations.set(element,connection.value.registerItem(element,id))}return()=>{if(items.get(element)?.token!==token)return;itemRegistrations.get(element)?.();itemRegistrations.delete(element);items.delete(element)}},measure:measurements=>connection.value?.measure(measurements)??virtualizerNotConnected(),mutate:mutation=>connection.value?.mutate(mutation)??virtualizerNotConnected(),scrollTo:(id,alignment)=>connection.value?.scrollTo(id,alignment)??virtualizerNotConnected(),refresh:()=>{connection.value?.refresh()},flush:()=>connection.value?.flush()??virtualizerNotConnected()})}export const VirtualizerRoot=/* @__PURE__ */defineComponent({name:'SectileVirtualizerRoot',inheritAttrs:false,props:{defaultState:{type:Object,required:true},strategy:{type:Object,required:true},scrollport:{type:[String,Object],default:'root'},overscan:{type:[Number,Object],default:undefined},viewportInsets:{type:[Number,Object],default:undefined},initialViewport:{type:Object,default:undefined},measure:{type:Function,default:undefined},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const state=shallowRef(props.defaultState);let rootElement=null;const virtualizer=useVirtualizer({state,strategy:props.strategy,overscan:()=>props.overscan,viewportInsets:()=>props.viewportInsets,...props.initialViewport===undefined?{}:{initialViewport:props.initialViewport},...props.measure===undefined?{}:{measure:props.measure},onStateChange:value=>{emit('stateChange',value)},onPlanChange:value=>{emit('planChange',value)},onError:error=>{emit('error',error)}});const resolveScrollport=target=>{virtualizer.scrollport.value=target==='root'?rootElement:target==='document'?rootElement?.ownerDocument??null:target};const setRootElement=element=>{rootElement=asHTMLElement(element);resolveScrollport(props.scrollport)};watch(()=>props.scrollport,resolveScrollport,{flush:'sync'});watch(()=>props.defaultState,value=>{if(!Object.is(state.value,value))state.value=value},{flush:'sync'});let constructionWarningShown=false;watch(()=>[props.strategy,props.measure,props.initialViewport],(value,previous)=>{if(constructionWarningShown||value[0]===previous[0]&&value[1]===previous[1]&&value[2]===previous[2])return;constructionWarningShown=true;console.warn('[Sectile] Remount to change strategy/measure/initialViewport.')},{flush:'sync'});const slotProps=computed(()=>Object.freeze({state:state.value,plan:virtualizer.plan.value,placements:virtualizer.plan.value?.placements??Object.freeze([]),scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));provide(virtualizerContextKey,{plan:virtualizer.plan,surface:virtualizer.surface,registerFrame:virtualizer.registerFrame,registerItem:virtualizer.registerItem});expose(shallowReactive({get scrollport(){return virtualizer.scrollport},get surface(){return virtualizer.surface},get state(){return slotProps.value.state},get plan(){return slotProps.value.plan},get placements(){return slotProps.value.placements},scrollTo:virtualizer.scrollTo,measure:virtualizer.measure,mutate:virtualizer.mutate,refresh:virtualizer.refresh,flush:virtualizer.flush}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setRootElement,'data-scope':'virtualizer','data-part':'root'}),{default:()=>slots['default']?.(slotProps.value)})}});export const VirtualizerHeader=/* @__PURE__ */defineComponent({name:'SectileVirtualizerHeader',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerHeader');let element=null;let unregister;const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null)unregister=root.registerFrame(next)};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,'data-scope':'virtualizer','data-part':'header'}),{default:()=>slots['default']?.()})}});export const VirtualizerSurface=/* @__PURE__ */defineComponent({name:'SectileVirtualizerSurface',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerSurface');provide(virtualizerSurfaceContextKey,{registerItem:root.registerItem});let element=null;const style=computed(()=>root.plan.value===null?Object.freeze({position:'relative'}):virtualSurfaceStyle(root.plan.value));const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;if(element!==null&&root.surface.value===element){root.surface.value=null}element=next;if(next!==null)root.surface.value=next};onBeforeUnmount(()=>{if(element!==null&&root.surface.value===element){root.surface.value=null}element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,style:style.value,'data-scope':'virtualizer','data-part':'surface'}),{default:()=>slots['default']?.(root.plan.value)})}});export const VirtualizerItem=/* @__PURE__ */defineComponent({name:'SectileVirtualizerItem',inheritAttrs:false,props:{placement:{type:Object,required:true},size:{type:String,default:'none'},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const surface=useVirtualizerSurface('VirtualizerItem');let element=null;let unregister;const sizing=computed(()=>Object.freeze({width:props.size==='width'||props.size==='both',height:props.size==='height'||props.size==='both'}));const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null){unregister=surface.registerItem(next,props.placement.id)}};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,style:virtualItemStyle(props.placement,sizing.value),'data-scope':'virtualizer','data-part':'item','data-index':props.placement.index,'data-visible':props.placement.visible?'':undefined}),{default:()=>slots['default']?.(props.placement)})}});export const VirtualizerFooter=/* @__PURE__ */defineComponent({name:'SectileVirtualizerFooter',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useVirtualizerRoot('VirtualizerFooter');let element=null;let unregister;const setElement=value=>{const next=asHTMLElement(value);if(element===next)return;unregister?.();unregister=undefined;element=next;if(next!==null)unregister=root.registerFrame(next)};onBeforeUnmount(()=>{unregister?.();unregister=undefined;element=null});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:setElement,'data-scope':'virtualizer','data-part':'footer'}),{default:()=>slots['default']?.()})}});function useVirtualizerRoot(part){const root=inject(virtualizerContextKey);if(root===undefined){throw new TypeError(`${part} must be used inside VirtualizerRoot.`)}return root}function useVirtualizerSurface(part){const surface=inject(virtualizerSurfaceContextKey);if(surface===undefined){throw new TypeError(`${part} must be used inside VirtualizerSurface.`)}return surface}export function useVirtualizerSurfaceRegistration(part){return useVirtualizerSurface(part)}export function asHTMLElement(value){return typeof value==='object'&&value!==null&&'offsetHeight'in value?value:null}export function virtualizerNotConnected(){return{ok:false,error:{class:'transition-rejection',code:'virtualizer-not-connected',message:'not connected'}}}export{createAxisMeasurementResolver,virtualItemStyle,virtualSurfaceStyle};
2
+ //# sourceMappingURL=virtual-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-core.js","names":["computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onScopeDispose","provide","shallowReactive","shallowRef","toValue","watch","createAxisMeasurementResolver","createVirtualizer","virtualItemStyle","virtualSurfaceStyle","Primitive","virtualizerContextKey","Symbol","virtualizerSurfaceContextKey","useVirtualizer","options","scrollport","surface","plan","connection","frames","Map","frameRegistrations","items","itemRegistrations","connectedScrollport","connectedSurface","disposed","report","error","onError","updateInitialPlan","initialViewport","undefined","value","overscan","result","strategy","tryQuery","state","viewport","ok","onPlanChange","disconnectConnection","clear","current","disconnect","connect","currentScrollport","currentSurface","viewportInsets","next","measure","readViewport","writeScroll","environment","onStateChange","frame","keys","set","registerFrame","item","desired","registerItem","id","retireObsoleteConnection","flush","immediate","setState","setOverscan","deep","setViewportInsets","Object","freeze","element","token","get","delete","measurements","virtualizerNotConnected","mutate","mutation","scrollTo","alignment","refresh","VirtualizerRoot","name","inheritAttrs","props","defaultState","type","required","String","default","Number","Function","as","asChild","Boolean","emits","stateChange","_state","planChange","_plan","_error","slots","setup","attrs","emit","expose","rootElement","virtualizer","resolveScrollport","target","ownerDocument","setRootElement","asHTMLElement","is","constructionWarningShown","previous","console","warn","slotProps","placements","elementRef","VirtualizerHeader","root","useVirtualizerRoot","unregister","setElement","VirtualizerSurface","style","position","VirtualizerItem","placement","size","useVirtualizerSurface","sizing","width","height","index","visible","VirtualizerFooter","part","TypeError","useVirtualizerSurfaceRegistration","class","code","message"],"sources":["../../src/virtual/virtual-core.ts"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import type { StableID } from '@sectile/core';
3
3
  import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
4
4
  import { type TrackGridLayoutState } from '@sectile/virtual/track-grid-layout';
5
5
  import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
6
- import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
6
+ import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
7
7
  export interface VirtualGridProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
8
8
  readonly sizePolicy: VirtualSizePolicy<Value>;
9
9
  readonly lanePolicy: VirtualLanePolicy;
@@ -0,0 +1,2 @@
1
+ import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createDenseTrackGridLayout,trackGridLayoutStrategy}from'@sectile/virtual/track-grid-layout';import{}from'@sectile/dom/virtual';import{asHTMLElement,VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./virtual-collection.js';const VirtualGridRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualGrid',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},rowGap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualGridState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualGridState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const measuredHeights=new Map;const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const bootstrapItemRef=(index,value)=>{const element=asHTMLElement(value);if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let maximum=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;maximum=Math.max(maximum,height)}automaticEstimate.value=maximum;bootstrapElements.clear();activeState.value=createVirtualGridState(prepared.value,props.items,props,geometry,maximum)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.height<=0)return null;measuredHeights.set(placement.id,bounds.height);const grid=state;const region=grid.regions.at(placement.index);if(region===undefined)return null;const height=gridMeasuredRowHeight(region.row,grid.columns.size,prepared.value,props.items,props.sizePolicy,measuredHeights,automaticEstimate.value);const current=grid.rows.extentAt(region.row);if(current?.kind==='exact'&&nearlyEqual(current.value,height)){return null}return Object.freeze({axis:'row',index:region.row,extent:createExactVirtualExtent(height)})};const sync=()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);if(next.valueChange!==null&&props.sizePolicy.kind!=='fixed'){const end=next.valueChange.index+next.valueChange.count;for(let index=next.valueChange.index;index<end;index+=1){const id=next.domain.at(index);if(id!==null)measuredHeights.delete(id)}}if(measuredHeights.size>2_048){for(const id of measuredHeights.keys()){if(!next.domain.contains(id))measuredHeights.delete(id)}}if(syncVirtualGrid(exposed,prepared.value,next,props.items,props,geometry,measuredHeights,automaticEstimate.value)){prepared.value=next}};watch(()=>[props.items,props.getID,props.sizePolicy,props.lanePolicy,props.rowGap,viewportWidth.value],sync,{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,style:virtualCollectionRootStyle(attrs),ref:root,defaultState:activeState.value,strategy:trackGridLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-grid','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-grid',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement,row:0,column:index}),bootstrapItemRef):renderHighLevelItems('virtual-grid',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const grid=root.value?.state;const region=grid?.regions.at(placement.index);return slots['item']?.({value,id,index,placement,row:region?.row??0,column:region?.column??0})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualGrid=VirtualGridRuntime;function createVirtualGridState(prepared,items,props,geometry,automaticEstimate){const rowCount=Math.ceil(prepared.domain.size/geometry.count);return createDenseTrackGridLayout(createGridRowExtentIndex(rowCount,geometry.count,items,props,automaticEstimate),createUniformExtentIndex(geometry.count,createExactVirtualExtent(geometry.extent),{maxItems:props.maxItems}),prepared.domain.ids,{rowGap:props.rowGap,columnGap:geometry.gap,maxRegions:props.maxItems})}function createGridRowExtentIndex(rowCount,columnCount,items,props,automaticEstimate){const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate),{maxItems:props.maxItems}):createUniformExtentIndex(rowCount,shared,{maxItems:props.maxItems})}function createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow=0){return Object.freeze(Array.from({length:rowCount},(_unused,localRow)=>{const row=startRow+localRow;if(props.sizePolicy.kind==='fixed'){return createExactVirtualExtent(props.sizePolicy.extent)}const start=row*columnCount;const end=Math.min(items.length,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){maximum=Math.max(maximum,extentValue(createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)))}return Object.freeze({kind:'unknown',fallback:maximum})}))}function gridMeasuredRowHeight(row,columnCount,prepared,items,sizePolicy,measured,automaticEstimate){const start=row*columnCount;const end=Math.min(prepared.domain.size,start+columnCount);let maximum=0;for(let index=start;index<end;index+=1){const id=prepared.domain.at(index);const fallback=extentValue(createVirtualExtent(sizePolicy,items[index],index,automaticEstimate));maximum=Math.max(maximum,measured.get(id)??fallback)}return maximum}function extentValue(extent){return extent.kind==='unknown'?extent.fallback:extent.value}function createResolvedGridRowExtents(rowCount,columnCount,prepared,items,props,measured,automaticEstimate,startRow=0){const extents=createGridRowExtents(rowCount,columnCount,items,props,automaticEstimate,startRow);if(props.sizePolicy.kind==='fixed')return extents;return Object.freeze(extents.map((extent,localRow)=>{const row=startRow+localRow;const measuredHeight=gridMeasuredRowHeight(row,columnCount,prepared,items,props.sizePolicy,measured,automaticEstimate);return measuredHeight>extentValue(extent)?createExactVirtualExtent(measuredHeight):extent}))}function syncVirtualGrid(exposed,_previous,prepared,items,props,geometry,measured,automaticEstimate){const state=exposed.state;const rowCount=Math.ceil(prepared.domain.size/geometry.count);const currentColumn=state.columns.extentAt(0);const geometryUnchanged=state.columns.size===geometry.count&&state.rowGap===props.rowGap&&state.columnGap===geometry.gap&&currentColumn?.kind==='exact'&&nearlyEqual(currentColumn.value,geometry.extent);if(geometryUnchanged&&prepared.change===null&&prepared.valueChange===null){return state.regions.size===prepared.domain.size&&state.rows.size===rowCount}if(geometryUnchanged&&prepared.change===null&&prepared.valueChange!==null){if(props.sizePolicy.kind==='fixed')return true;const startRow=Math.floor(prepared.valueChange.index/geometry.count);const endRow=Math.min(rowCount,Math.ceil((prepared.valueChange.index+prepared.valueChange.count)/geometry.count));if(endRow<=startRow)return true;const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:startRow,deleteCount:endRow-startRow,inserted:createResolvedGridRowExtents(endRow-startRow,geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})}));return result.ok}if(geometryUnchanged&&prepared.change!==null){const rowPatch=props.sizePolicy.kind==='fixed'?rowCount===state.rows.size?undefined:rowCount<state.rows.size?Object.freeze({index:rowCount,deleteCount:state.rows.size-rowCount,inserted:Object.freeze([])}):Object.freeze({index:state.rows.size,deleteCount:0,inserted:createGridRowExtents(rowCount-state.rows.size,geometry.count,items,props,automaticEstimate,state.rows.size)}):(()=>{const startRow=Math.floor(prepared.change.index/geometry.count);return Object.freeze({index:startRow,deleteCount:Math.max(0,state.rows.size-startRow),inserted:createResolvedGridRowExtents(Math.max(0,rowCount-startRow),geometry.count,prepared,items,props,measured,automaticEstimate,startRow)})})();const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',...rowPatch===undefined?{}:{rowPatch},regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}));return result.ok}const rowExtents=createResolvedGridRowExtents(rowCount,geometry.count,prepared,items,props,measured,automaticEstimate);const result=exposed.mutate(Object.freeze({type:'reconfigure-dense',rowPatch:Object.freeze({index:0,deleteCount:state.rows.size,inserted:rowExtents}),columnPatch:Object.freeze({index:0,deleteCount:state.columns.size,inserted:Object.freeze(Array.from({length:geometry.count},()=>createExactVirtualExtent(geometry.extent)))}),...prepared.change===null?{}:{regionPatch:Object.freeze({type:'splice',index:prepared.change.index,deleteCount:prepared.change.deleteCount,inserted:prepared.change.inserted})}}));return result.ok}
2
+ //# sourceMappingURL=virtual-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-grid.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createDenseTrackGridLayout","trackGridLayoutStrategy","asHTMLElement","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","virtualCollectionRootStyle","VirtualGridRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","rowGap","Number","default","overscan","viewportInsets","undefined","maxItems","initialViewport","as","String","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","isBootstrapping","value","domain","size","initialState","createVirtualGridState","activeState","root","viewportWidth","measuredHeights","Map","bootstrapElements","bootstrapScheduled","disposed","bootstrapItemRef","index","element","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","maximum","get","height","getBoundingClientRect","isFinite","max","clear","measure","kind","placement","state","bounds","id","grid","region","regions","at","gridMeasuredRowHeight","row","columns","current","rows","extentAt","axis","extent","sync","exposed","next","valueChange","end","keys","contains","syncVirtualGrid","flush","style","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","column","VirtualGrid","rowCount","ceil","createGridRowExtentIndex","ids","columnGap","gap","maxRegions","columnCount","shared","estimate","createGridRowExtents","startRow","from","length","_unused","localRow","start","extentValue","fallback","measured","createResolvedGridRowExtents","extents","map","measuredHeight","_previous","currentColumn","geometryUnchanged","change","floor","endRow","result","mutate","rowPatch","deleteCount","inserted","ok","regionPatch","rowExtents","columnPatch"],"sources":["../../src/virtual/virtual-grid.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createSequence}from'@sectile/core/sequence';import{createExactVirtualExtent,createVirtualExtent,reconcileVirtualCollectionExtents,reconcileVirtualCollectionValueExtents,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createLinearLayout,linearLayoutStrategyFor,setLinearCrossExtent,tryApplyLinearMeasurements,tryApplyLinearPatch}from'@sectile/virtual/linear-layout';import{}from'@sectile/dom/virtual';import{asHTMLElement,VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,prepareVirtualCollection,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./virtual-collection.js';const VirtualListRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualList',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},axis:{type:String,default:'vertical'},gap:{type:Number,default:0},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const axis=props.axis;const gap=props.gap;const maxItems=props.maxItems;const sizePolicy=props.sizePolicy;const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,maxItems));const automaticEstimate=shallowRef();const bootstrapCount=shallowRef(virtualSizePolicyRequiresMeasurement(sizePolicy)&&prepared.value.domain.size>0?1:0);const bootstrapElements=new Map;const bootstrapRefs=new Map;let bootstrapScheduled=false;let disposed=false;const initialCrossExtent=crossExtentForViewport(axis,initialViewport);const initialState=virtualSizePolicyRequiresMeasurement(sizePolicy)?createEmptyVirtualListState({axis,gap,maxItems,crossExtent:initialCrossExtent}):createVirtualListState(prepared.value,props.items,{sizePolicy,axis,gap,maxItems,crossExtent:initialCrossExtent});const activeState=shallowRef(initialState);const root=shallowRef();const measure=sizePolicy.kind==='fixed'?undefined:createVirtualListMeasurementResolver(axis);const isBootstrapping=()=>automaticEstimate.value===undefined&&bootstrapCount.value>0&&prepared.value.domain.size>0;const phase=()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready';const currentState=()=>root.value?.state??activeState.value;const bootstrapItemRef=index=>{const existing=bootstrapRefs.get(index);if(existing!==undefined)return existing;const callback=value=>{const element=asHTMLElement(value);if(element===null){bootstrapElements.delete(index);if(bootstrapRefs.get(index)===callback)bootstrapRefs.delete(index);return}bootstrapElements.set(index,element);scheduleBootstrap()};bootstrapRefs.set(index,callback);return callback};const completeBootstrap=()=>{if(!isBootstrapping())return;const count=Math.min(bootstrapCount.value,prepared.value.domain.size);const extents=[];for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const bounds=element.getBoundingClientRect();const extent=axis==='vertical'?bounds.height:bounds.width;if(!Number.isFinite(extent)||extent<=0)return;extents.push(extent)}const total=extents.reduce((sum,extent)=>sum+extent,0)+gap*Math.max(0,extents.length-1);const viewport=root.value?.plan?.viewport;const viewportExtent=axis==='vertical'?viewport?.height??initialViewport?.height??0:viewport?.width??initialViewport?.width??0;const target=viewportExtent+bootstrapTrailingOverscanExtent(props.overscan,axis);const average=extents.reduce((sum,extent)=>sum+extent,0)/extents.length;if(target>total&&count<prepared.value.domain.size){bootstrapCount.value=Math.min(prepared.value.domain.size,Math.max(count+1,Math.ceil((target+gap)/(average+gap))));return}automaticEstimate.value=average;bootstrapCount.value=0;bootstrapElements.clear();bootstrapRefs.clear();activeState.value=createVirtualListState(prepared.value,props.items,{sizePolicy,axis,gap,maxItems,crossExtent:currentState().crossExtent},average)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||bootstrapCount.value===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);watch(()=>[props.items,props.getID],()=>{const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);if(virtualSizePolicyRequiresMeasurement(sizePolicy)&&automaticEstimate.value===undefined){prepared.value=next;bootstrapCount.value=next.domain.size>0?1:0;scheduleBootstrap();return}let nextState=currentState();const exposed=root.value;const patch=reconcileVirtualCollectionExtents(nextState,next,sizePolicy,automaticEstimate.value);if(patch!==null){const result=exposed===undefined?tryApplyLinearPatch(nextState,patch):exposed.mutate(patch);if(!result.ok){if(exposed===undefined){emit('error',result.error)}return}nextState=result.value.state;activeState.value=nextState}const valueUpdates=reconcileVirtualCollectionValueExtents(nextState,next,sizePolicy,automaticEstimate.value);if(valueUpdates.length>0){const result=exposed===undefined?tryApplyLinearMeasurements(nextState,{generation:nextState.generation,measurements:valueUpdates}):exposed.measure(valueUpdates);if(!result.ok){if(exposed===undefined){emit('error',result.error)}return}nextState=result.value.state;activeState.value=nextState}prepared.value=next},{flush:'sync'});const syncCrossExtent=plan=>{const crossExtent=axis==='vertical'?plan.viewport.width:plan.viewport.height;const state=currentState();const next=setLinearCrossExtent(state,crossExtent);if(Object.is(next,state))return false;activeState.value=next;return true};let constructionWarningShown=false;watch(()=>[props.axis,props.gap,props.maxItems,props.sizePolicy,props.initialViewport?.x,props.initialViewport?.y,props.initialViewport?.width,props.initialViewport?.height],()=>{if(constructionWarningShown||props.axis===axis&&props.gap===gap&&props.maxItems===maxItems&&sameVirtualSizePolicy(props.sizePolicy,sizePolicy)&&sameVirtualRect(props.initialViewport,initialViewport))return;constructionWarningShown=true;console.warn('[Sectile] VirtualList axis, gap, maxItems, sizePolicy, and initialViewport are construction-time options. Remount the list to change them.')},{flush:'sync'});onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear();bootstrapRefs.clear()});expose(createVirtualCollectionExpose(root,initialState,phase));return()=>h(VirtualizerRoot,{...attrs,ref:root,defaultState:activeState.value,strategy:linearLayoutStrategyFor(),overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,style:virtualCollectionRootStyle(attrs),'data-virtual-layout':'virtual-list','data-phase':phase(),onStateChange:value=>{const state=value;activeState.value=state;emit('stateChange',state)},onPlanChange:plan=>{if(syncCrossExtent(plan))return;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs,...isBootstrapping()&&axis==='horizontal'?{style:{display:'flex'}}:{}},{default:()=>isBootstrapping()?renderVirtualListBootstrapItems(prepared.value,props.items,bootstrapCount.value,{axis,gap,crossExtent:currentState().crossExtent,itemAs:props.itemAs,itemAttributes:props.itemAttributes},slots['item'],bootstrapItemRef):renderHighLevelItems('virtual-list',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,linearItemSize(axis,sizePolicy),(value,id,index,placement)=>slots['item']?.({value,id,index,placement}),slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualList=VirtualListRuntime;export function createVirtualListMeasurementResolver(axis){return({element,placement,state})=>measureVirtualListElement(axis,placement.id,element,state)}function measureVirtualListElement(axis,id,element,state){const index=state.domain.indexOf(id);if(index===null)return null;const bounds=element.getBoundingClientRect();const value=axis==='vertical'?bounds.height:bounds.width;if(!Number.isFinite(value)||value<=0)return null;const current=state.extents.extentAt(index);if(current?.kind==='exact'&&Math.abs(current.value-value)<0.01)return null;return Object.freeze({index,extent:Object.freeze({kind:'exact',value})})}export function createVirtualListState(prepared,items,props,automaticEstimate){return createLinearLayout(constrainPreparedVirtualCollection(prepared,props.maxItems),createVirtualListExtentIndex(prepared,items,props.sizePolicy,props.maxItems,automaticEstimate),{axis:props.axis,gap:props.gap,crossExtent:props.crossExtent})}export function createEmptyVirtualListState(props){return createLinearLayout(createSequence([],{maxItems:props.maxItems,maxIDCodeUnits:1_024}),createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems:props.maxItems}),{axis:props.axis,gap:props.gap,crossExtent:props.crossExtent})}export function bootstrapTrailingOverscanExtent(overscan,axis){if(typeof overscan==='number')return overscan;return axis==='vertical'?overscan.bottom??0:overscan.right??0}export function renderVirtualListBootstrapItems(prepared,items,count,props,render,itemRef){return Array.from({length:Math.min(count,prepared.domain.size)},(_unused,index)=>{const value=items[index];const id=prepared.domain.at(index);const attributes=props.itemAttributes?.(value,index)??{};const placement=Object.freeze({id,index,rect:Object.freeze(props.axis==='vertical'?{x:0,y:0,width:props.crossExtent,height:0}:{x:0,y:0,width:0,height:props.crossExtent}),visible:true});const rendered=render?.({value,id,index,placement});const children=rendered===undefined||rendered===null?[]:Array.isArray(rendered)?rendered:[rendered];return h(props.itemAs,{...attributes,key:id,ref:itemRef(index),style:[attributes['style'],props.crossExtent>0?props.axis==='vertical'?{width:`${props.crossExtent}px`}:{height:`${props.crossExtent}px`}:undefined,props.gap>0&&index>0?props.axis==='vertical'?{marginTop:`${props.gap}px`}:{marginLeft:`${props.gap}px`}:undefined],'data-scope':'virtual-list','data-part':'item','data-index':index,'data-visible':'','data-bootstrap':''},children)})}function createVirtualListExtentIndex(prepared,items,sizePolicy,maxItems,automaticEstimate){if(prepared.domain.size===0){return createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems})}const shared=sizePolicy.kind==='fixed'||sizePolicy.kind==='measured'||sizePolicy.kind==='estimated'&&typeof sizePolicy.estimate==='number'?createVirtualExtent(sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>createVirtualExtent(sizePolicy,items[index],index,automaticEstimate)),{maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems})}function linearItemSize(axis,sizePolicy){if(sizePolicy.kind==='fixed')return'both';return axis==='vertical'?'width':'height'}function crossExtentForViewport(axis,viewport){if(viewport===undefined)return 0;return axis==='vertical'?viewport.width:viewport.height}function sameVirtualSizePolicy(left,right){if(left.kind!==right.kind)return false;if(left.kind==='measured'&&right.kind==='measured')return true;if(left.kind==='fixed'&&right.kind==='fixed'){return left.extent===right.extent}return left.kind==='estimated'&&right.kind==='estimated'&&Object.is(left.estimate,right.estimate)}function sameVirtualRect(left,right){if(left===undefined||right===undefined)return left===right;return left.x===right.x&&left.y===right.y&&left.width===right.width&&left.height===right.height}
2
+ //# sourceMappingURL=virtual-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-list.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createSequence","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createLinearLayout","linearLayoutStrategyFor","setLinearCrossExtent","tryApplyLinearMeasurements","tryApplyLinearPatch","asHTMLElement","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","prepareVirtualCollection","renderHighLevelItems","updatePreparedVirtualCollection","virtualCollectionRootStyle","VirtualListRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","axis","String","default","gap","Number","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","automaticEstimate","bootstrapCount","value","domain","size","bootstrapElements","Map","bootstrapRefs","bootstrapScheduled","disposed","initialCrossExtent","crossExtentForViewport","initialState","createEmptyVirtualListState","crossExtent","createVirtualListState","activeState","root","measure","kind","createVirtualListMeasurementResolver","isBootstrapping","phase","currentState","state","bootstrapItemRef","index","existing","get","callback","element","delete","set","scheduleBootstrap","completeBootstrap","count","Math","min","extents","bounds","getBoundingClientRect","extent","height","width","isFinite","push","total","reduce","sum","max","length","viewport","plan","viewportExtent","target","bootstrapTrailingOverscanExtent","average","ceil","clear","next","nextState","exposed","patch","result","mutate","ok","valueUpdates","generation","measurements","flush","syncCrossExtent","is","constructionWarningShown","x","y","sameVirtualSizePolicy","sameVirtualRect","console","warn","ref","defaultState","strategy","style","onStateChange","onPlanChange","onError","placements","display","renderVirtualListBootstrapItems","linearItemSize","id","placement","VirtualList","measureVirtualListElement","indexOf","current","extentAt","abs","createVirtualListExtentIndex","maxIDCodeUnits","bottom","right","render","itemRef","from","_unused","at","attributes","rect","visible","rendered","children","isArray","key","marginTop","marginLeft","shared","estimate","left"],"sources":["../../src/virtual/virtual-list.ts"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import type { StableID } from '@sectile/core';
3
3
  import { type VirtualLanePolicy, type VirtualSizePolicy } from '@sectile/virtual/collection';
4
4
  import { type MasonryLayoutState, type MasonryPlacement, type MasonryPlacementPolicy } from '@sectile/virtual/masonry-layout';
5
5
  import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
6
- import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
6
+ import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
7
7
  export interface VirtualMasonryProps<Value = unknown, ID extends StableID = StableID> extends VirtualCollectionBaseProps<Value, ID> {
8
8
  readonly sizePolicy: VirtualSizePolicy<Value>;
9
9
  readonly lanePolicy: VirtualLanePolicy;
@@ -0,0 +1,2 @@
1
+ import{defineComponent,h,nextTick,onBeforeUnmount,onMounted,shallowRef,watch}from'vue';import{createExactVirtualExtent,createVirtualExtent,reconcileVirtualCollectionExtents,reconcileVirtualCollectionValueExtents,resolveVirtualLaneGeometry,virtualSizePolicyRequiresMeasurement}from'@sectile/virtual/collection';import{createExtentIndex,createUniformExtentIndex}from'@sectile/virtual/extent-index';import{createMasonryLayout,masonryLayoutStrategy}from'@sectile/virtual/masonry-layout';import{createAxisMeasurementResolver}from'@sectile/dom/virtual';import{asHTMLElement,VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{constrainPreparedVirtualCollection,createVirtualCollectionExpose,nearlyEqual,prepareVirtualCollection,renderCollectionBootstrapItems,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./virtual-collection.js';const VirtualMasonryRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualMasonry',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},sizePolicy:{type:Object,required:true},lanePolicy:{type:Object,required:true},itemGap:{type:Number,default:0},placementPolicy:{type:String,default:'shortest'},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialGeometry=resolveVirtualLaneGeometry(initialViewport?.width??0,props.lanePolicy);const automaticEstimate=shallowRef();const initialState=virtualSizePolicyRequiresMeasurement(props.sizePolicy)?createVirtualMasonryState(prepareVirtualCollection([],props.getID,props.maxItems),[],props,initialGeometry,0):createVirtualMasonryState(prepared.value,props.items,props,initialGeometry);const activeState=shallowRef(initialState);const root=shallowRef();const viewportWidth=shallowRef(initialViewport?.width??0);const bootstrapElements=new Map;let bootstrapScheduled=false;let disposed=false;const isBootstrapping=()=>virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined&&prepared.value.domain.size>0;const bootstrapItemRef=(index,value)=>{const element=asHTMLElement(value);if(element===null)bootstrapElements.delete(index);else{bootstrapElements.set(index,element);scheduleBootstrap()}};const completeBootstrap=()=>{if(!isBootstrapping())return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const count=Math.min(geometry.count,prepared.value.domain.size);let total=0;for(let index=0;index<count;index+=1){const element=bootstrapElements.get(index);if(element===undefined)return;const height=element.getBoundingClientRect().height;if(!Number.isFinite(height)||height<=0)return;total+=height}const estimate=total/count;automaticEstimate.value=estimate;bootstrapElements.clear();activeState.value=createVirtualMasonryState(prepared.value,props.items,props,geometry,estimate)};function scheduleBootstrap(){if(disposed||bootstrapScheduled||automaticEstimate.value!==undefined||prepared.value.domain.size===0)return;bootstrapScheduled=true;void nextTick(()=>{bootstrapScheduled=false;if(!disposed)completeBootstrap()})}onMounted(scheduleBootstrap);onBeforeUnmount(()=>{disposed=true;bootstrapElements.clear()});const measure=props.sizePolicy.kind==='fixed'?undefined:createAxisMeasurementResolver('vertical');watch(()=>[props.items,props.getID],()=>{if(virtualSizePolicyRequiresMeasurement(props.sizePolicy)&&automaticEstimate.value===undefined){prepared.value=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);scheduleBootstrap();return}const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);let state=exposed.state;const patch=reconcileVirtualCollectionExtents(state,next,props.sizePolicy,automaticEstimate.value);if(patch!==null){const result=exposed.mutate(Object.freeze({type:'items',...patch}));if(!result.ok)return;state=result.value.state}const valueUpdates=reconcileVirtualCollectionValueExtents(state,next,props.sizePolicy,automaticEstimate.value);if(valueUpdates.length>0){const result=exposed.measure(valueUpdates);if(!result.ok)return}prepared.value=next},{flush:'post'});watch(()=>[props.lanePolicy,props.itemGap,props.placementPolicy,viewportWidth.value],()=>{const exposed=root.value;if(exposed===undefined)return;const geometry=resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy);const state=exposed.state;if(state.laneCount===geometry.count&&nearlyEqual(state.laneExtent,geometry.extent)&&state.laneGap===geometry.gap&&state.itemGap===props.itemGap&&state.placementPolicy===props.placementPolicy)return;exposed.mutate(Object.freeze({type:'geometry',laneCount:geometry.count,laneExtent:geometry.extent,laneGap:geometry.gap,itemGap:props.itemGap,placementPolicy:props.placementPolicy}))},{flush:'post'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready'));return()=>h(VirtualizerRoot,{...attrs,style:virtualCollectionRootStyle(attrs),ref:root,defaultState:activeState.value,strategy:masonryLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-masonry','data-phase':prepared.value.domain.size===0?'empty':isBootstrapping()?'bootstrap':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>{viewportWidth.value=plan.viewport.width;emit('planChange',plan)},onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>isBootstrapping()?renderCollectionBootstrapItems('virtual-masonry',prepared.value,props.items,Math.min(resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).count,prepared.value.domain.size),resolveVirtualLaneGeometry(viewportWidth.value,props.lanePolicy).extent,props.itemAs,props.itemAttributes,(value,id,index,placement)=>slots['item']?.({value,id,index,placement:Object.freeze({...placement,lane:index}),lane:index}),bootstrapItemRef):renderHighLevelItems('virtual-masonry',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,props.sizePolicy.kind==='fixed'?'both':'width',(value,id,index,placement)=>{const masonryPlacement=placement;return slots['item']?.({value,id,index,placement:masonryPlacement,lane:masonryPlacement.lane})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualMasonry=VirtualMasonryRuntime;function createVirtualMasonryState(prepared,items,props,geometry,automaticEstimate){return createMasonryLayout(constrainPreparedVirtualCollection(prepared,props.maxItems),createCollectionExtents(prepared,items,props,automaticEstimate),{laneCount:geometry.count,laneExtent:geometry.extent,laneGap:geometry.gap,itemGap:props.itemGap,placementPolicy:props.placementPolicy,maxLanes:Math.max(geometry.count,1_024)})}function createCollectionExtents(prepared,items,props,automaticEstimate){if(prepared.domain.size===0){return createUniformExtentIndex(0,createExactVirtualExtent(0),{maxItems:props.maxItems})}const shared=props.sizePolicy.kind==='fixed'||props.sizePolicy.kind==='measured'||props.sizePolicy.kind==='estimated'&&typeof props.sizePolicy.estimate==='number'?createVirtualExtent(props.sizePolicy,items[0],0,automaticEstimate):null;return shared===null?createExtentIndex(Array.from({length:prepared.domain.size},(_unused,index)=>createVirtualExtent(props.sizePolicy,items[index],index,automaticEstimate)),{maxItems:props.maxItems}):createUniformExtentIndex(prepared.domain.size,shared,{maxItems:props.maxItems})}
2
+ //# sourceMappingURL=virtual-masonry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-masonry.js","names":["defineComponent","h","nextTick","onBeforeUnmount","onMounted","shallowRef","watch","createExactVirtualExtent","createVirtualExtent","reconcileVirtualCollectionExtents","reconcileVirtualCollectionValueExtents","resolveVirtualLaneGeometry","virtualSizePolicyRequiresMeasurement","createExtentIndex","createUniformExtentIndex","createMasonryLayout","masonryLayoutStrategy","createAxisMeasurementResolver","asHTMLElement","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","constrainPreparedVirtualCollection","createVirtualCollectionExpose","nearlyEqual","prepareVirtualCollection","renderCollectionBootstrapItems","renderHighLevelItems","updatePreparedVirtualCollection","virtualCollectionRootStyle","VirtualMasonryRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","sizePolicy","Object","lanePolicy","itemGap","Number","default","placementPolicy","String","overscan","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialGeometry","width","automaticEstimate","initialState","createVirtualMasonryState","value","activeState","root","viewportWidth","bootstrapElements","Map","bootstrapScheduled","disposed","isBootstrapping","domain","size","bootstrapItemRef","index","element","delete","set","scheduleBootstrap","completeBootstrap","geometry","count","Math","min","total","get","height","getBoundingClientRect","isFinite","estimate","clear","measure","kind","exposed","next","state","patch","result","mutate","ok","valueUpdates","length","flush","laneCount","laneExtent","extent","laneGap","gap","style","ref","defaultState","strategy","onStateChange","onPlanChange","plan","viewport","onError","placements","id","placement","lane","masonryPlacement","VirtualMasonry","createCollectionExtents","maxLanes","max","shared","from","_unused"],"sources":["../../src/virtual/virtual-masonry.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import { type AllowedComponentProps, type ComponentCustomProps, type PropType, t
2
2
  import type { StableID } from '@sectile/core';
3
3
  import { type SpatialLayoutState, type SpatialPlacement } from '@sectile/virtual/spatial-layout';
4
4
  import { type VirtualInsets, type VirtualLayoutPlan, type VirtualRect, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
5
- import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './internal/virtual-collection.js';
5
+ import { type VirtualCollectionBaseProps, type VirtualCollectionIDResolver, type VirtualCollectionItemAttributes, type VirtualCollectionItemSlotProps } from './virtual-collection.js';
6
6
  export type VirtualSpatialRectResolver<Value> = {
7
7
  bivarianceHack(value: Value, index: number): VirtualRect;
8
8
  }['bivarianceHack'];
@@ -0,0 +1,2 @@
1
+ import{defineComponent,h,shallowRef,watch}from'vue';import{createSpatialLayout,spatialLayoutStrategy}from'@sectile/virtual/spatial-layout';import{}from'@sectile/dom/virtual';import{VirtualizerFooter,VirtualizerHeader,VirtualizerRoot,VirtualizerSurface}from'./virtual-core.js';import{createVirtualCollectionExpose,prepareVirtualCollection,renderHighLevelItems,updatePreparedVirtualCollection,virtualCollectionRootStyle}from'./virtual-collection.js';const VirtualSpatialRuntime=/* @__PURE__ */defineComponent({name:'SectileVirtualSpatial',inheritAttrs:false,props:{items:{type:Array,required:true},getID:{type:Function,required:true},getRect:{type:Function,required:true},getZIndex:{type:[Number,Function],default:0},sizeOwnership:{type:String,required:true},overscan:{type:[Number,Object],default:240},viewportInsets:{type:[Number,Object],default:undefined},maxItems:{type:Number,default:1_000_000},initialViewport:{type:Object,default:undefined},as:{type:String,default:'div'},contentAs:{type:String,default:'div'},itemAs:{type:String,default:'div'},itemAttributes:{type:Function,default:undefined}},emits:{stateChange:_state=>true,planChange:_plan=>true,error:_error=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const initialViewport=props.initialViewport===undefined?undefined:Object.freeze({...props.initialViewport});const sizeOwnership=props.sizeOwnership;const prepared=shallowRef(prepareVirtualCollection(props.items,props.getID,props.maxItems));const initialState=createVirtualSpatialState(prepared.value,props.items,props);const root=shallowRef();const measure=sizeOwnership==='mounted'?({element,placement,state})=>{const bounds=element.getBoundingClientRect();if(bounds.width<=0||bounds.height<=0)return null;const current=state.items.at(placement.index);if(current===undefined)return null;if(current.rect.width===bounds.width&&current.rect.height===bounds.height)return null;return Object.freeze({id:placement.id,rect:Object.freeze({x:current.rect.x,y:current.rect.y,width:bounds.width,height:bounds.height})})}:undefined;watch(()=>[props.items,props.getID,props.getRect,props.getZIndex],(current,previous)=>{const exposed=root.value;if(exposed===undefined)return;const next=updatePreparedVirtualCollection(prepared.value,props.items,props.getID);const state=exposed.state;const resolverChanged=current[2]!==previous[2]||current[3]!==previous[3];const valuePatch=next.valueChange===null?null:Object.freeze({index:next.valueChange.index,deleteCount:next.valueChange.count,inserted:Object.freeze(next.domain.ids.slice(next.valueChange.index,next.valueChange.index+next.valueChange.count))});const collectionPatch=next.change??valuePatch;const result=resolverChanged||collectionPatch===null?resolverChanged?exposed.mutate(Object.freeze({type:'replace',items:preserveMountedSpatialSizes(createSpatialItems(next,props.items,props),state,sizeOwnership)})):null:exposed.mutate(Object.freeze({type:'patch',patch:Object.freeze({type:'splice',index:collectionPatch.index,deleteCount:collectionPatch.deleteCount,inserted:collectionPatch.inserted}),inserted:preserveMountedSpatialSizes(createSpatialItemsRange(next,props.items,props,collectionPatch.index,collectionPatch.inserted.length),state,sizeOwnership)}));if(result===null){prepared.value=next;return}if(result.ok)prepared.value=next},{flush:'post'});let sizeOwnershipWarningShown=false;watch(()=>props.sizeOwnership,value=>{if(sizeOwnershipWarningShown||value===sizeOwnership)return;sizeOwnershipWarningShown=true;console.warn('[Sectile] Remount VirtualSpatial to change sizeOwnership.')},{flush:'sync'});expose(createVirtualCollectionExpose(root,initialState,()=>prepared.value.domain.size===0?'empty':'ready'));return()=>h(VirtualizerRoot,{...attrs,style:virtualCollectionRootStyle(attrs),ref:root,defaultState:initialState,strategy:spatialLayoutStrategy,overscan:props.overscan,...props.viewportInsets===undefined?{}:{viewportInsets:props.viewportInsets},...initialViewport===undefined?{}:{initialViewport},...measure===undefined?{}:{measure},as:props.as,'data-virtual-layout':'virtual-spatial','data-phase':prepared.value.domain.size===0?'empty':'ready',onStateChange:state=>emit('stateChange',state),onPlanChange:plan=>emit('planChange',plan),onError:error=>emit('error',error)},{default:({placements})=>[slots['header']===undefined?null:h(VirtualizerHeader,{},{default:()=>slots['header']?.()}),h(VirtualizerSurface,{as:props.contentAs},{default:()=>renderHighLevelItems('virtual-spatial',placements,prepared.value,props.items,props.itemAs,props.itemAttributes,sizeOwnership==='mounted'?'none':'both',(value,id,index,placement)=>{const spatialPlacement=placement;return slots['item']?.({value,id,index,placement:spatialPlacement,zIndex:spatialPlacement.zIndex})},slots['empty'])}),slots['footer']===undefined?null:h(VirtualizerFooter,{},{default:()=>slots['footer']?.()})]})}});export const VirtualSpatial=VirtualSpatialRuntime;function createVirtualSpatialState(prepared,items,props){return createSpatialLayout(createSpatialItems(prepared,items,props),{maxItems:props.maxItems,domain:prepared.domain})}function createSpatialItems(prepared,items,props){return createSpatialItemsRange(prepared,items,props,0,prepared.domain.size)}function createSpatialItemsRange(prepared,items,props,start,count){const spatialItems=Array(count);for(let localIndex=0;localIndex<count;localIndex+=1){const index=start+localIndex;spatialItems[localIndex]={id:prepared.domain.at(index),rect:props.getRect(items[index],index),zIndex:typeof props.getZIndex==='number'?props.getZIndex:props.getZIndex(items[index],index)}}return spatialItems}function preserveMountedSpatialSizes(items,state,sizeOwnership){if(sizeOwnership!=='mounted')return items;return items.map(item=>{const previousIndex=state.domain.indexOf(item.id);const previous=previousIndex===null?undefined:state.items.at(previousIndex);return previous===undefined?item:{...item,rect:{...item.rect,width:previous.rect.width,height:previous.rect.height}}})}
2
+ //# sourceMappingURL=virtual-spatial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-spatial.js","names":["defineComponent","h","shallowRef","watch","createSpatialLayout","spatialLayoutStrategy","VirtualizerFooter","VirtualizerHeader","VirtualizerRoot","VirtualizerSurface","createVirtualCollectionExpose","prepareVirtualCollection","renderHighLevelItems","updatePreparedVirtualCollection","virtualCollectionRootStyle","VirtualSpatialRuntime","name","inheritAttrs","props","items","type","Array","required","getID","Function","getRect","getZIndex","Number","default","sizeOwnership","String","overscan","Object","viewportInsets","undefined","maxItems","initialViewport","as","contentAs","itemAs","itemAttributes","emits","stateChange","_state","planChange","_plan","error","_error","slots","setup","attrs","emit","expose","freeze","prepared","initialState","createVirtualSpatialState","value","root","measure","element","placement","state","bounds","getBoundingClientRect","width","height","current","at","index","rect","id","x","y","previous","exposed","next","resolverChanged","valuePatch","valueChange","deleteCount","count","inserted","domain","ids","slice","collectionPatch","change","result","mutate","preserveMountedSpatialSizes","createSpatialItems","patch","createSpatialItemsRange","length","ok","flush","sizeOwnershipWarningShown","console","warn","size","style","ref","defaultState","strategy","onStateChange","onPlanChange","plan","onError","placements","spatialPlacement","zIndex","VirtualSpatial","start","spatialItems","localIndex","map","item","previousIndex","indexOf"],"sources":["../../src/virtual/virtual-spatial.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- export { VirtualizerFooter, VirtualizerHeader, VirtualizerItem, VirtualizerRoot, VirtualizerSurface, useVirtualizer, type UseVirtualizerOptions, type UseVirtualizerReturn, type VirtualizerFrameProps, type VirtualizerHostErrorCode, type VirtualizerItemProps, type VirtualizerItemSize, type VirtualizerOperationResult, type VirtualizerRootExpose, type VirtualizerRootProps, type VirtualizerRootSlotProps, type VirtualizerScrollportTarget, type VirtualizerSurfaceProps } from './internal/virtual-core.js';
1
+ export { VirtualizerFooter, VirtualizerHeader, VirtualizerItem, VirtualizerRoot, VirtualizerSurface, useVirtualizer, type UseVirtualizerOptions, type UseVirtualizerReturn, type VirtualizerFrameProps, type VirtualizerHostErrorCode, type VirtualizerItemProps, type VirtualizerItemSize, type VirtualizerOperationResult, type VirtualizerRootExpose, type VirtualizerRootProps, type VirtualizerRootSlotProps, type VirtualizerScrollportTarget, type VirtualizerSurfaceProps } from './virtual/virtual-core.js';
@@ -1,2 +1,2 @@
1
- import{VirtualizerFooter,VirtualizerHeader,VirtualizerItem,VirtualizerRoot,VirtualizerSurface,useVirtualizer}from"./internal/virtual-core.js";export{VirtualizerFooter,VirtualizerHeader,VirtualizerItem,VirtualizerRoot,VirtualizerSurface,useVirtualizer};
1
+ import{VirtualizerFooter,VirtualizerHeader,VirtualizerItem,VirtualizerRoot,VirtualizerSurface,useVirtualizer}from"./virtual/virtual-core.js";export{VirtualizerFooter,VirtualizerHeader,VirtualizerItem,VirtualizerRoot,VirtualizerSurface,useVirtualizer};
2
2
  //# sourceMappingURL=virtual-core.js.map
@@ -1,2 +1,2 @@
1
- export { VirtualList, type VirtualListComponent, type VirtualListExpose, type VirtualListIDResolver, type VirtualListItemAttributes, type VirtualListProps, type VirtualListPublicProps, type VirtualListSlotProps } from './internal/virtual-list.js';
2
- export type { VirtualCollectionExpose, VirtualCollectionItemSlotProps, VirtualCollectionLanePolicyProps, VirtualCollectionPhase, VirtualCollectionSizePolicyProps, VirtualCollectionSlots } from './internal/virtual-collection.js';
1
+ export { VirtualList, type VirtualListComponent, type VirtualListExpose, type VirtualListIDResolver, type VirtualListItemAttributes, type VirtualListProps, type VirtualListPublicProps, type VirtualListSlotProps } from './virtual/virtual-list.js';
2
+ export type { VirtualCollectionExpose, VirtualCollectionItemSlotProps, VirtualCollectionLanePolicyProps, VirtualCollectionPhase, VirtualCollectionSizePolicyProps, VirtualCollectionSlots } from './virtual/virtual-collection.js';
@@ -1,2 +1,2 @@
1
- import{VirtualList}from"./internal/virtual-list.js";export{VirtualList};
1
+ import{VirtualList}from"./virtual/virtual-list.js";export{VirtualList};
2
2
  //# sourceMappingURL=virtual-list.js.map