@sectile/vue 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/README.md +4 -2
  2. package/dist/accordion.d.ts +0 -1
  3. package/dist/alert-dialog.d.ts +0 -2
  4. package/dist/alert-dialog.js.map +1 -1
  5. package/dist/calendar.d.ts +14 -268
  6. package/dist/calendar.js +15 -15
  7. package/dist/calendar.js.map +1 -1
  8. package/dist/carousel.d.ts +22 -1
  9. package/dist/carousel.js +7 -1
  10. package/dist/carousel.js.map +1 -1
  11. package/dist/cascade-list.d.ts +339 -0
  12. package/dist/cascade-list.js +240 -0
  13. package/dist/cascade-list.js.map +1 -0
  14. package/dist/cascade-select.d.ts +11 -42
  15. package/dist/cascade-select.js +19 -27
  16. package/dist/cascade-select.js.map +1 -1
  17. package/dist/checkbox-group.d.ts +9 -1
  18. package/dist/checkbox-group.js +57 -13
  19. package/dist/checkbox-group.js.map +1 -1
  20. package/dist/checkbox.d.ts +0 -1
  21. package/dist/checkbox.js +15 -8
  22. package/dist/checkbox.js.map +1 -1
  23. package/dist/color-picker.d.ts +0 -1
  24. package/dist/combobox.d.ts +0 -1
  25. package/dist/combobox.js +46 -6
  26. package/dist/combobox.js.map +1 -1
  27. package/dist/data-grid.d.ts +214 -0
  28. package/dist/data-grid.js +107 -0
  29. package/dist/data-grid.js.map +1 -0
  30. package/dist/data-table.d.ts +232 -0
  31. package/dist/data-table.js +116 -0
  32. package/dist/data-table.js.map +1 -0
  33. package/dist/data-tree-grid.d.ts +225 -0
  34. package/dist/data-tree-grid.js +98 -0
  35. package/dist/data-tree-grid.js.map +1 -0
  36. package/dist/date-field.d.ts +2 -3
  37. package/dist/date-field.js +1 -1
  38. package/dist/date-field.js.map +1 -1
  39. package/dist/date-picker.d.ts +35 -427
  40. package/dist/date-picker.js +15 -13
  41. package/dist/date-picker.js.map +1 -1
  42. package/dist/date-range-field.d.ts +2 -3
  43. package/dist/date-range-field.js +24 -6
  44. package/dist/date-range-field.js.map +1 -1
  45. package/dist/date-range-picker.d.ts +35 -427
  46. package/dist/date-range-picker.js +15 -13
  47. package/dist/date-range-picker.js.map +1 -1
  48. package/dist/date-time-field.d.ts +2 -3
  49. package/dist/date-time-field.js +1 -1
  50. package/dist/date-time-field.js.map +1 -1
  51. package/dist/date-time-picker.d.ts +36 -428
  52. package/dist/date-time-picker.js +15 -13
  53. package/dist/date-time-picker.js.map +1 -1
  54. package/dist/date-time-range-picker.d.ts +36 -428
  55. package/dist/date-time-range-picker.js +15 -13
  56. package/dist/date-time-range-picker.js.map +1 -1
  57. package/dist/dialog.d.ts +0 -2
  58. package/dist/dialog.js.map +1 -1
  59. package/dist/disclosure.d.ts +0 -1
  60. package/dist/drawer.d.ts +1 -2
  61. package/dist/editable.d.ts +0 -1
  62. package/dist/editable.js +25 -6
  63. package/dist/editable.js.map +1 -1
  64. package/dist/feed.d.ts +0 -1
  65. package/dist/form.d.ts +88 -115
  66. package/dist/form.js +461 -233
  67. package/dist/form.js.map +1 -1
  68. package/dist/grid.d.ts +0 -1
  69. package/dist/grid.js +51 -6
  70. package/dist/grid.js.map +1 -1
  71. package/dist/host-provider.d.ts +0 -13
  72. package/dist/host-provider.js +0 -16
  73. package/dist/host-provider.js.map +1 -1
  74. package/dist/index.d.ts +14 -39
  75. package/dist/index.js +6 -19
  76. package/dist/index.js.map +1 -1
  77. package/dist/internal/cascade-choice.d.ts +204 -0
  78. package/dist/internal/cascade-choice.js +161 -0
  79. package/dist/internal/cascade-choice.js.map +1 -0
  80. package/dist/internal/collection.d.ts +3 -8
  81. package/dist/internal/collection.js +14 -20
  82. package/dist/internal/collection.js.map +1 -1
  83. package/dist/internal/controlled-state.d.ts +0 -1
  84. package/dist/internal/date-picker.d.ts +91 -141
  85. package/dist/internal/date-picker.js +146 -52
  86. package/dist/internal/date-picker.js.map +1 -1
  87. package/dist/internal/decimal-input.d.ts +1 -0
  88. package/dist/internal/decimal-input.js +24 -0
  89. package/dist/internal/decimal-input.js.map +1 -0
  90. package/dist/internal/form-control-inventory.d.ts +4 -1
  91. package/dist/internal/form-control-inventory.js +1 -0
  92. package/dist/internal/form-control-inventory.js.map +1 -1
  93. package/dist/internal/form-control.d.ts +100 -2
  94. package/dist/internal/form-control.js +103 -1
  95. package/dist/internal/form-control.js.map +1 -1
  96. package/dist/internal/native-field.d.ts +7 -8
  97. package/dist/internal/native-field.js +11 -2
  98. package/dist/internal/native-field.js.map +1 -1
  99. package/dist/internal/native-input.d.ts +0 -1
  100. package/dist/internal/part-contract.d.ts +0 -1
  101. package/dist/internal/popup.d.ts +5 -27
  102. package/dist/internal/popup.js +14 -20
  103. package/dist/internal/popup.js.map +1 -1
  104. package/dist/internal/presence.d.ts +0 -1
  105. package/dist/internal/scheduled-task.d.ts +5 -0
  106. package/dist/internal/scheduled-task.js +28 -0
  107. package/dist/internal/scheduled-task.js.map +1 -0
  108. package/dist/internal/tabs-context.d.ts +2 -3
  109. package/dist/internal/tabular-components.d.ts +27 -0
  110. package/dist/internal/tabular-components.js +26 -0
  111. package/dist/internal/tabular-components.js.map +1 -0
  112. package/dist/internal/tabular-parts.d.ts +57 -0
  113. package/dist/internal/tabular-parts.js +239 -0
  114. package/dist/internal/tabular-parts.js.map +1 -0
  115. package/dist/internal/tabular-profile.d.ts +75 -0
  116. package/dist/internal/tabular-profile.js +209 -0
  117. package/dist/internal/tabular-profile.js.map +1 -0
  118. package/dist/internal/virtual-collection-model.d.ts +42 -0
  119. package/dist/internal/virtual-collection-model.js +241 -0
  120. package/dist/internal/virtual-collection-model.js.map +1 -0
  121. package/dist/internal/virtual-collection.d.ts +38 -0
  122. package/dist/internal/virtual-collection.js +87 -0
  123. package/dist/internal/virtual-collection.js.map +1 -0
  124. package/dist/{virtual.d.ts → internal/virtual-core.d.ts} +14 -9
  125. package/dist/{virtual.js → internal/virtual-core.js} +18 -13
  126. package/dist/internal/virtual-core.js.map +1 -0
  127. package/dist/internal/virtual-list.d.ts +214 -0
  128. package/dist/internal/virtual-list.js +401 -0
  129. package/dist/internal/virtual-list.js.map +1 -0
  130. package/dist/listbox.d.ts +0 -1
  131. package/dist/listbox.js +52 -6
  132. package/dist/listbox.js.map +1 -1
  133. package/dist/menu-button.d.ts +0 -1
  134. package/dist/menu.d.ts +262 -317
  135. package/dist/menu.js +29 -23
  136. package/dist/menu.js.map +1 -1
  137. package/dist/menubar.d.ts +0 -1
  138. package/dist/meter-group.d.ts +369 -0
  139. package/dist/meter-group.js +271 -0
  140. package/dist/meter-group.js.map +1 -0
  141. package/dist/meter.d.ts +191 -0
  142. package/dist/meter.js +133 -0
  143. package/dist/meter.js.map +1 -0
  144. package/dist/month-picker.d.ts +29 -259
  145. package/dist/month-picker.js +8 -6
  146. package/dist/month-picker.js.map +1 -1
  147. package/dist/month-range-picker.d.ts +29 -259
  148. package/dist/month-range-picker.js +8 -6
  149. package/dist/month-range-picker.js.map +1 -1
  150. package/dist/multi-thumb-slider.d.ts +0 -1
  151. package/dist/navigation-menu.d.ts +0 -1
  152. package/dist/number-field.d.ts +2 -2
  153. package/dist/number-field.js +1 -1
  154. package/dist/number-field.js.map +1 -1
  155. package/dist/pagination.d.ts +23 -2
  156. package/dist/pagination.js +6 -1
  157. package/dist/pagination.js.map +1 -1
  158. package/dist/pin-input.d.ts +0 -1
  159. package/dist/pin-input.js +1 -1
  160. package/dist/pin-input.js.map +1 -1
  161. package/dist/popover.d.ts +0 -2
  162. package/dist/popover.js.map +1 -1
  163. package/dist/primitive.d.ts +0 -1
  164. package/dist/primitive.js +8 -4
  165. package/dist/primitive.js.map +1 -1
  166. package/dist/progress.d.ts +148 -0
  167. package/dist/progress.js +110 -0
  168. package/dist/progress.js.map +1 -0
  169. package/dist/quantity-field.d.ts +0 -1
  170. package/dist/radio-group.d.ts +0 -1
  171. package/dist/radio-group.js +1 -1
  172. package/dist/radio-group.js.map +1 -1
  173. package/dist/range-calendar.d.ts +14 -298
  174. package/dist/range-calendar.js +7 -7
  175. package/dist/range-calendar.js.map +1 -1
  176. package/dist/rating.d.ts +0 -1
  177. package/dist/rating.js +10 -1
  178. package/dist/rating.js.map +1 -1
  179. package/dist/reorder.d.ts +1 -2
  180. package/dist/select.d.ts +24 -50
  181. package/dist/select.js +11 -13
  182. package/dist/select.js.map +1 -1
  183. package/dist/slider.d.ts +0 -1
  184. package/dist/spin-button.d.ts +9 -7
  185. package/dist/spin-button.js +17 -4
  186. package/dist/spin-button.js.map +1 -1
  187. package/dist/stepper.d.ts +0 -1
  188. package/dist/stepper.js +19 -2
  189. package/dist/stepper.js.map +1 -1
  190. package/dist/switch.d.ts +0 -1
  191. package/dist/tabs.d.ts +0 -1
  192. package/dist/tabs.js +4 -22
  193. package/dist/tabs.js.map +1 -1
  194. package/dist/tags-input.d.ts +0 -1
  195. package/dist/tags-input.js +18 -5
  196. package/dist/tags-input.js.map +1 -1
  197. package/dist/temporal-provider.d.ts +21 -0
  198. package/dist/temporal-provider.js +30 -0
  199. package/dist/temporal-provider.js.map +1 -0
  200. package/dist/text.d.ts +0 -1
  201. package/dist/text.js +18 -4
  202. package/dist/text.js.map +1 -1
  203. package/dist/time-field.d.ts +2 -3
  204. package/dist/time-field.js +1 -1
  205. package/dist/time-field.js.map +1 -1
  206. package/dist/time-range-field.d.ts +2 -2
  207. package/dist/time-range-field.js +6 -4
  208. package/dist/time-range-field.js.map +1 -1
  209. package/dist/timer.d.ts +0 -1
  210. package/dist/toast.d.ts +11 -2
  211. package/dist/toast.js +22 -9
  212. package/dist/toast.js.map +1 -1
  213. package/dist/toggle-button.d.ts +0 -1
  214. package/dist/toggle-group.d.ts +0 -1
  215. package/dist/toggle-group.js +1 -1
  216. package/dist/toggle-group.js.map +1 -1
  217. package/dist/toolbar.d.ts +0 -1
  218. package/dist/tooltip.d.ts +1 -3
  219. package/dist/tooltip.js.map +1 -1
  220. package/dist/tree-grid.d.ts +0 -1
  221. package/dist/tree-grid.js +62 -8
  222. package/dist/tree-grid.js.map +1 -1
  223. package/dist/tree-view.d.ts +0 -1
  224. package/dist/tree-view.js +51 -10
  225. package/dist/tree-view.js.map +1 -1
  226. package/dist/virtual-core.d.ts +1 -0
  227. package/dist/virtual-core.js +2 -0
  228. package/dist/virtual-core.js.map +1 -0
  229. package/dist/virtual-grid.d.ts +188 -0
  230. package/dist/virtual-grid.js +306 -0
  231. package/dist/virtual-grid.js.map +1 -0
  232. package/dist/virtual-list.d.ts +1 -0
  233. package/dist/virtual-list.js +2 -0
  234. package/dist/virtual-list.js.map +1 -0
  235. package/dist/virtual-masonry.d.ts +198 -0
  236. package/dist/virtual-masonry.js +221 -0
  237. package/dist/virtual-masonry.js.map +1 -0
  238. package/dist/virtual-spatial.d.ts +157 -0
  239. package/dist/virtual-spatial.js +159 -0
  240. package/dist/virtual-spatial.js.map +1 -0
  241. package/dist/window-splitter.d.ts +0 -1
  242. package/dist/year-picker.d.ts +29 -259
  243. package/dist/year-picker.js +8 -6
  244. package/dist/year-picker.js.map +1 -1
  245. package/dist/year-range-picker.d.ts +29 -259
  246. package/dist/year-range-picker.js +8 -6
  247. package/dist/year-range-picker.js.map +1 -1
  248. package/package.json +174 -87
  249. package/dist/accordion.d.ts.map +0 -1
  250. package/dist/alert-dialog.d.ts.map +0 -1
  251. package/dist/calendar.d.ts.map +0 -1
  252. package/dist/carousel.d.ts.map +0 -1
  253. package/dist/cascade-select.d.ts.map +0 -1
  254. package/dist/checkbox-group.d.ts.map +0 -1
  255. package/dist/checkbox.d.ts.map +0 -1
  256. package/dist/color-picker.d.ts.map +0 -1
  257. package/dist/combobox.d.ts.map +0 -1
  258. package/dist/date-field.d.ts.map +0 -1
  259. package/dist/date-picker.d.ts.map +0 -1
  260. package/dist/date-range-field.d.ts.map +0 -1
  261. package/dist/date-range-picker.d.ts.map +0 -1
  262. package/dist/date-time-field.d.ts.map +0 -1
  263. package/dist/date-time-picker.d.ts.map +0 -1
  264. package/dist/date-time-range-picker.d.ts.map +0 -1
  265. package/dist/dialog.d.ts.map +0 -1
  266. package/dist/disclosure.d.ts.map +0 -1
  267. package/dist/drawer.d.ts.map +0 -1
  268. package/dist/editable.d.ts.map +0 -1
  269. package/dist/feed.d.ts.map +0 -1
  270. package/dist/form.d.ts.map +0 -1
  271. package/dist/grid.d.ts.map +0 -1
  272. package/dist/host-provider.d.ts.map +0 -1
  273. package/dist/index.d.ts.map +0 -1
  274. package/dist/internal/collection.d.ts.map +0 -1
  275. package/dist/internal/controlled-state.d.ts.map +0 -1
  276. package/dist/internal/date-picker.d.ts.map +0 -1
  277. package/dist/internal/form-control-inventory.d.ts.map +0 -1
  278. package/dist/internal/form-control.d.ts.map +0 -1
  279. package/dist/internal/native-field.d.ts.map +0 -1
  280. package/dist/internal/native-input.d.ts.map +0 -1
  281. package/dist/internal/part-contract.d.ts.map +0 -1
  282. package/dist/internal/popup.d.ts.map +0 -1
  283. package/dist/internal/presence.d.ts.map +0 -1
  284. package/dist/internal/tabs-context.d.ts.map +0 -1
  285. package/dist/listbox.d.ts.map +0 -1
  286. package/dist/menu-button.d.ts.map +0 -1
  287. package/dist/menu.d.ts.map +0 -1
  288. package/dist/menubar.d.ts.map +0 -1
  289. package/dist/month-picker.d.ts.map +0 -1
  290. package/dist/month-range-picker.d.ts.map +0 -1
  291. package/dist/multi-thumb-slider.d.ts.map +0 -1
  292. package/dist/navigation-menu.d.ts.map +0 -1
  293. package/dist/number-field.d.ts.map +0 -1
  294. package/dist/pagination.d.ts.map +0 -1
  295. package/dist/pin-input.d.ts.map +0 -1
  296. package/dist/popover.d.ts.map +0 -1
  297. package/dist/primitive.d.ts.map +0 -1
  298. package/dist/quantity-field.d.ts.map +0 -1
  299. package/dist/radio-group.d.ts.map +0 -1
  300. package/dist/range-calendar.d.ts.map +0 -1
  301. package/dist/rating.d.ts.map +0 -1
  302. package/dist/reorder.d.ts.map +0 -1
  303. package/dist/select.d.ts.map +0 -1
  304. package/dist/slider.d.ts.map +0 -1
  305. package/dist/spin-button.d.ts.map +0 -1
  306. package/dist/stepper.d.ts.map +0 -1
  307. package/dist/switch.d.ts.map +0 -1
  308. package/dist/tabs.d.ts.map +0 -1
  309. package/dist/tags-input.d.ts.map +0 -1
  310. package/dist/text.d.ts.map +0 -1
  311. package/dist/time-field.d.ts.map +0 -1
  312. package/dist/time-range-field.d.ts.map +0 -1
  313. package/dist/timer.d.ts.map +0 -1
  314. package/dist/toast.d.ts.map +0 -1
  315. package/dist/toggle-button.d.ts.map +0 -1
  316. package/dist/toggle-group.d.ts.map +0 -1
  317. package/dist/toolbar.d.ts.map +0 -1
  318. package/dist/tooltip.d.ts.map +0 -1
  319. package/dist/tree-grid.d.ts.map +0 -1
  320. package/dist/tree-view.d.ts.map +0 -1
  321. package/dist/virtual.d.ts.map +0 -1
  322. package/dist/virtual.js.map +0 -1
  323. package/dist/window-splitter.d.ts.map +0 -1
  324. package/dist/year-picker.d.ts.map +0 -1
  325. package/dist/year-range-picker.d.ts.map +0 -1
@@ -0,0 +1,241 @@
1
+ import { createSequence } from '@sectile/core/sequence';
2
+ export function prepareVirtualList(items, getKey) {
3
+ const ids = [];
4
+ const indexByID = new Map();
5
+ for (let index = 0; index < items.length; index += 1) {
6
+ const value = items[index];
7
+ const id = getKey(value, index);
8
+ if (typeof id !== 'string' || id.length === 0) {
9
+ throw new TypeError('VirtualList getKey must return a non-empty string.');
10
+ }
11
+ if (id.length > 1_024) {
12
+ throw new TypeError('VirtualList keys must contain at most 1,024 UTF-16 code units.');
13
+ }
14
+ if (!isWellFormedVirtualListKey(id)) {
15
+ throw new TypeError('VirtualList keys must be well-formed UTF-16 strings.');
16
+ }
17
+ if (indexByID.has(id)) {
18
+ throw new TypeError(`VirtualList getKey returned the duplicate key ${JSON.stringify(id)}.`);
19
+ }
20
+ ids.push(id);
21
+ indexByID.set(id, index);
22
+ }
23
+ return Object.freeze({
24
+ items,
25
+ ids: Object.freeze(ids),
26
+ getKey,
27
+ change: null,
28
+ initialIndex: indexByID,
29
+ });
30
+ }
31
+ export function updatePreparedVirtualList(previous, items, getKey) {
32
+ if (previous.items === items && previous.getKey === getKey)
33
+ return previous;
34
+ if (previous.getKey !== getKey) {
35
+ const prepared = prepareVirtualList(items, getKey);
36
+ let prefix = 0;
37
+ while (prefix < previous.ids.length
38
+ && prefix < prepared.ids.length
39
+ && previous.ids[prefix] === prepared.ids[prefix])
40
+ prefix += 1;
41
+ let suffix = 0;
42
+ while (suffix < previous.ids.length - prefix
43
+ && suffix < prepared.ids.length - prefix
44
+ && previous.ids[previous.ids.length - suffix - 1]
45
+ === prepared.ids[prepared.ids.length - suffix - 1])
46
+ suffix += 1;
47
+ if (prefix === previous.ids.length && prefix === prepared.ids.length) {
48
+ return Object.freeze({
49
+ items,
50
+ ids: previous.ids,
51
+ getKey,
52
+ change: null,
53
+ initialIndex: previous.initialIndex,
54
+ });
55
+ }
56
+ const inserted = Object.freeze(prepared.ids.slice(prefix, prepared.ids.length - suffix));
57
+ return Object.freeze({
58
+ ...prepared,
59
+ change: Object.freeze({
60
+ index: prefix,
61
+ deleteCount: previous.ids.length - prefix - suffix,
62
+ inserted,
63
+ }),
64
+ });
65
+ }
66
+ let prefix = 0;
67
+ while (prefix < previous.items.length
68
+ && prefix < items.length
69
+ && Object.is(previous.items[prefix], items[prefix]))
70
+ prefix += 1;
71
+ let suffix = 0;
72
+ while (suffix < previous.items.length - prefix
73
+ && suffix < items.length - prefix
74
+ && Object.is(previous.items[previous.items.length - suffix - 1], items[items.length - suffix - 1]))
75
+ suffix += 1;
76
+ if (prefix === previous.items.length && prefix === items.length) {
77
+ return Object.freeze({
78
+ items,
79
+ ids: previous.ids,
80
+ getKey,
81
+ change: null,
82
+ initialIndex: previous.initialIndex,
83
+ });
84
+ }
85
+ const changedEnd = items.length - suffix;
86
+ if (previous.items.length === items.length) {
87
+ let sameDomain = true;
88
+ for (let index = prefix; index < changedEnd; index += 1) {
89
+ if (validateVirtualListKey(getKey(items[index], index)) !== previous.ids[index]) {
90
+ sameDomain = false;
91
+ break;
92
+ }
93
+ }
94
+ if (sameDomain) {
95
+ return Object.freeze({
96
+ items,
97
+ ids: previous.ids,
98
+ getKey,
99
+ change: null,
100
+ initialIndex: previous.initialIndex,
101
+ });
102
+ }
103
+ }
104
+ const inserted = [];
105
+ const insertedIDs = new Set();
106
+ for (let index = prefix; index < changedEnd; index += 1) {
107
+ const id = validateVirtualListKey(getKey(items[index], index));
108
+ if (insertedIDs.has(id)) {
109
+ throw new TypeError(`VirtualList getKey returned the duplicate key ${JSON.stringify(id)}.`);
110
+ }
111
+ inserted.push(id);
112
+ insertedIDs.add(id);
113
+ }
114
+ const frozenInserted = Object.freeze(inserted);
115
+ return Object.freeze({
116
+ items,
117
+ ids: Object.freeze([
118
+ ...previous.ids.slice(0, prefix),
119
+ ...frozenInserted,
120
+ ...previous.ids.slice(previous.ids.length - suffix),
121
+ ]),
122
+ getKey,
123
+ initialIndex: null,
124
+ change: Object.freeze({
125
+ index: prefix,
126
+ deleteCount: previous.ids.length - prefix - suffix,
127
+ inserted: frozenInserted,
128
+ }),
129
+ });
130
+ }
131
+ export function validateVirtualListKey(id) {
132
+ if (typeof id !== 'string' || id.length === 0) {
133
+ throw new TypeError('VirtualList getKey must return a non-empty string.');
134
+ }
135
+ if (id.length > 1_024) {
136
+ throw new TypeError('VirtualList keys must contain at most 1,024 UTF-16 code units.');
137
+ }
138
+ if (!isWellFormedVirtualListKey(id)) {
139
+ throw new TypeError('VirtualList keys must be well-formed UTF-16 strings.');
140
+ }
141
+ return id;
142
+ }
143
+ export function createPreparedVirtualListSequence(prepared, maxItems) {
144
+ if (!Number.isSafeInteger(maxItems) || maxItems < 0) {
145
+ throw new TypeError('VirtualList maxItems must be a non-negative safe integer.');
146
+ }
147
+ if (prepared.ids.length > maxItems) {
148
+ throw new RangeError(`VirtualList received ${prepared.ids.length} items, exceeding maxItems ${maxItems}.`);
149
+ }
150
+ const index = prepared.initialIndex;
151
+ if (index === null)
152
+ return createSequence(prepared.ids, { maxItems, maxIDCodeUnits: 1_024 });
153
+ let materialized;
154
+ const complete = () => {
155
+ materialized ??= createSequence(prepared.ids, { maxItems, maxIDCodeUnits: 1_024 });
156
+ return materialized;
157
+ };
158
+ return Object.freeze({
159
+ size: prepared.ids.length,
160
+ ids: prepared.ids,
161
+ maxItems,
162
+ maxIDCodeUnits: 1_024,
163
+ at: (position) => (Number.isSafeInteger(position) && position >= 0 && position < prepared.ids.length
164
+ ? prepared.ids[position] ?? null
165
+ : null),
166
+ indexOf: (id) => index.get(id) ?? null,
167
+ contains: (id) => index.has(id),
168
+ compare: (left, right) => {
169
+ const leftIndex = index.get(left);
170
+ const rightIndex = index.get(right);
171
+ if (leftIndex === undefined || rightIndex === undefined)
172
+ return null;
173
+ return leftIndex === rightIndex ? 0 : leftIndex < rightIndex ? -1 : 1;
174
+ },
175
+ project: (predicate) => complete().project(predicate),
176
+ move: (current, direction, boundary, options) => complete().move(current, direction, boundary, options),
177
+ });
178
+ }
179
+ export function isWellFormedVirtualListKey(value) {
180
+ for (let index = 0; index < value.length; index += 1) {
181
+ const code = value.charCodeAt(index);
182
+ if (code >= 0xd800 && code <= 0xdbff) {
183
+ const next = value.charCodeAt(index + 1);
184
+ if (next < 0xdc00 || next > 0xdfff)
185
+ return false;
186
+ index += 1;
187
+ }
188
+ else if (code >= 0xdc00 && code <= 0xdfff)
189
+ return false;
190
+ }
191
+ return true;
192
+ }
193
+ export function reconcileVirtualList(state, next, items, props, automaticEstimate) {
194
+ const change = next.change;
195
+ if (change === null)
196
+ return null;
197
+ const inserted = change.inserted;
198
+ return Object.freeze({
199
+ patch: Object.freeze({
200
+ type: 'splice',
201
+ index: change.index,
202
+ deleteCount: change.deleteCount,
203
+ inserted,
204
+ }),
205
+ insertedExtents: Object.freeze(inserted.map((id, localIndex) => {
206
+ const nextIndex = change.index + localIndex;
207
+ const previousIndex = state.domain.indexOf(id);
208
+ return (previousIndex === null ? null : state.extents.extentAt(previousIndex))
209
+ ?? initialExtent(props, items[nextIndex], nextIndex, automaticEstimate);
210
+ })),
211
+ });
212
+ }
213
+ export function assertVirtualListSizeMode(itemSize, estimateSize) {
214
+ if (itemSize !== undefined && estimateSize !== undefined) {
215
+ throw new TypeError('VirtualList itemSize and estimateSize are mutually exclusive.');
216
+ }
217
+ }
218
+ export function initialExtent(props, value, index, automaticEstimate) {
219
+ return props.itemSize === undefined
220
+ ? estimatedExtent(requireAutomaticEstimate(props.estimateSize ?? automaticEstimate), value, index)
221
+ : exactExtent(props.itemSize);
222
+ }
223
+ export function requireAutomaticEstimate(estimate) {
224
+ if (estimate === undefined) {
225
+ throw new TypeError('Automatic virtual size must be measured before layout initialization.');
226
+ }
227
+ return estimate;
228
+ }
229
+ export function requiresDOMBootstrap(itemSize, estimateSize) {
230
+ return itemSize === undefined && estimateSize === undefined;
231
+ }
232
+ export function exactExtent(value) {
233
+ return Object.freeze({ kind: 'exact', value });
234
+ }
235
+ export function estimatedExtent(estimate, value, index) {
236
+ return Object.freeze({
237
+ kind: 'unknown',
238
+ fallback: typeof estimate === 'number' ? estimate : estimate(value, index),
239
+ });
240
+ }
241
+ //# sourceMappingURL=virtual-collection-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-collection-model.js","sourceRoot":"","sources":["../../src/internal/virtual-collection-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type ShallowRef, type VNodeArrayChildren, type VNodeChild } from 'vue';
2
+ import type { VirtualInsets, VirtualLayoutPlan, VirtualPlacement, VirtualRect, VirtualScrollAlignment, VirtualizerConnection } from '@sectile/dom/virtual';
3
+ import { type VirtualizerItemSize, type VirtualizerRootExpose } from './virtual-core.js';
4
+ import type { PreparedVirtualList, VirtualListItemAttributes, VirtualListKeyResolver } from './virtual-collection-model.js';
5
+ export interface VirtualCollectionBaseProps<Value> {
6
+ readonly items: readonly Value[];
7
+ readonly getKey: VirtualListKeyResolver<Value>;
8
+ readonly overscan?: number | Partial<VirtualInsets>;
9
+ readonly maxItems?: number;
10
+ readonly initialViewport?: VirtualRect;
11
+ readonly as?: string;
12
+ readonly contentAs?: string;
13
+ readonly itemAs?: string;
14
+ readonly itemAttributes?: VirtualListItemAttributes<Value>;
15
+ }
16
+ export interface ResponsiveLaneProps {
17
+ readonly laneCount?: number;
18
+ readonly minLaneSize?: number;
19
+ readonly maxLaneCount?: number;
20
+ readonly laneGap?: number;
21
+ }
22
+ export interface VirtualCollectionExpose<State> {
23
+ readonly root: ShallowRef<HTMLElement | null | undefined>;
24
+ readonly state: State;
25
+ readonly plan: VirtualLayoutPlan<string> | null;
26
+ scrollTo(id: string, alignment?: VirtualScrollAlignment): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['scrollTo']> | undefined;
27
+ refresh(): void;
28
+ flush(): ReturnType<VirtualizerConnection<object, string, unknown, unknown>['flush']> | undefined;
29
+ }
30
+ export interface ResponsiveLaneGeometry {
31
+ readonly count: number;
32
+ readonly extent: number;
33
+ }
34
+ export declare function resolveResponsiveLanes(crossExtent: number, requestedCount: number | undefined, minLaneSize: number, maxLaneCount: number, laneGap: number): ResponsiveLaneGeometry;
35
+ export declare function renderHighLevelItems(scope: string, placements: readonly VirtualPlacement<string>[], prepared: PreparedVirtualList, items: readonly unknown[], itemAs: string, itemAttributes: VirtualListItemAttributes<unknown> | undefined, size: VirtualizerItemSize, render: (value: unknown, key: string, index: number, placement: VirtualPlacement<string>) => VNodeChild, empty: (() => VNodeChild) | undefined): VNodeArrayChildren;
36
+ export declare function renderCollectionBootstrapItems(scope: string, prepared: PreparedVirtualList, items: readonly unknown[], count: number, width: number, itemAs: string, itemAttributes: VirtualListItemAttributes<unknown> | undefined, render: (value: unknown, key: string, index: number, placement: VirtualPlacement<string>) => VNodeChild, itemRef: (index: number, value: unknown) => void): VNodeArrayChildren;
37
+ export declare function createHighLevelVirtualExpose<State>(root: ShallowRef<VirtualizerRootExpose | undefined>, initialState: State): VirtualCollectionExpose<State>;
38
+ export declare function nearlyEqual(left: number, right: number): boolean;
@@ -0,0 +1,87 @@
1
+ import { h, shallowRef } from 'vue';
2
+ import { VirtualizerItem } from './virtual-core.js';
3
+ export function resolveResponsiveLanes(crossExtent, requestedCount, minLaneSize, maxLaneCount, laneGap) {
4
+ if (!Number.isFinite(minLaneSize) || minLaneSize <= 0)
5
+ throw new TypeError('minLaneSize must be a positive finite number.');
6
+ if (!Number.isSafeInteger(maxLaneCount) || maxLaneCount < 1)
7
+ throw new TypeError('maxLaneCount must be a positive safe integer.');
8
+ if (!Number.isFinite(laneGap) || laneGap < 0)
9
+ throw new TypeError('laneGap must be a non-negative finite number.');
10
+ if (requestedCount !== undefined && (!Number.isSafeInteger(requestedCount) || requestedCount < 1))
11
+ throw new TypeError('laneCount must be a positive safe integer.');
12
+ const available = Number.isFinite(crossExtent) && crossExtent > 0 ? crossExtent : minLaneSize;
13
+ const count = requestedCount ?? Math.max(1, Math.min(maxLaneCount, Math.floor((available + laneGap) / (minLaneSize + laneGap))));
14
+ return Object.freeze({
15
+ count,
16
+ extent: Math.max(1, (available - laneGap * (count - 1)) / count),
17
+ });
18
+ }
19
+ export function renderHighLevelItems(scope, placements, prepared, items, itemAs, itemAttributes, size, render, empty) {
20
+ if (prepared.ids.length === 0) {
21
+ const child = empty?.();
22
+ return child === undefined || child === null ? [] : [child];
23
+ }
24
+ return placements.flatMap((placement) => {
25
+ const index = placement.index;
26
+ if (index >= items.length || prepared.ids[index] !== placement.id)
27
+ return [];
28
+ const value = items[index];
29
+ const attributes = itemAttributes?.(value, index) ?? {};
30
+ return [h(VirtualizerItem, {
31
+ ...attributes,
32
+ key: placement.id,
33
+ placement,
34
+ size,
35
+ as: itemAs,
36
+ style: attributes['style'],
37
+ 'data-scope': scope,
38
+ 'data-virtual-layout': scope,
39
+ 'data-part': 'item',
40
+ }, { default: () => render(value, placement.id, index, placement) })];
41
+ });
42
+ }
43
+ export function renderCollectionBootstrapItems(scope, prepared, items, count, width, itemAs, itemAttributes, render, itemRef) {
44
+ return Array.from({ length: Math.min(count, prepared.ids.length) }, (_unused, index) => {
45
+ const id = prepared.ids[index];
46
+ const value = items[index];
47
+ const attributes = itemAttributes?.(value, index) ?? {};
48
+ const placement = Object.freeze({
49
+ id,
50
+ index,
51
+ rect: Object.freeze({ x: index * width, y: 0, width, height: 0 }),
52
+ visible: true,
53
+ });
54
+ const rendered = render(value, id, index, placement);
55
+ const children = rendered === undefined || rendered === null
56
+ ? []
57
+ : Array.isArray(rendered)
58
+ ? rendered
59
+ : [rendered];
60
+ return h(itemAs, {
61
+ ...attributes,
62
+ key: id,
63
+ ref: (element) => itemRef(index, element),
64
+ style: [attributes['style'], { width: `${width}px` }],
65
+ 'data-scope': scope,
66
+ 'data-virtual-layout': scope,
67
+ 'data-part': 'item',
68
+ 'data-index': index,
69
+ 'data-bootstrap': '',
70
+ }, children);
71
+ });
72
+ }
73
+ export function createHighLevelVirtualExpose(root, initialState) {
74
+ const emptyRoot = shallowRef(null);
75
+ return Object.freeze({
76
+ get root() { return root.value?.root ?? emptyRoot; },
77
+ get state() { return root.value?.state ?? initialState; },
78
+ get plan() { return root.value?.plan ?? null; },
79
+ scrollTo: (id, alignment) => root.value?.scrollTo(id, alignment),
80
+ refresh: () => root.value?.refresh(),
81
+ flush: () => root.value?.flush(),
82
+ });
83
+ }
84
+ export function nearlyEqual(left, right) {
85
+ return Math.abs(left - right) < 0.01;
86
+ }
87
+ //# sourceMappingURL=virtual-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-collection.js","sourceRoot":"","sources":["../../src/internal/virtual-collection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { type MaybeRefOrGetter, type PropType, type Ref, type ShallowRef, type SlotsType, type VNodeChild } from 'vue';
2
+ import type { LinearLayoutState, LinearPatch } from '@sectile/virtual/linear-layout';
3
+ import type { Extent } from '@sectile/virtual/extent-index';
2
4
  import { createAxisMeasurementResolver, virtualContentStyle, virtualItemStyle, type VirtualInsets, type VirtualLayoutPlan, type VirtualLayoutStrategy, type VirtualMeasurementResolver, type VirtualPlacement, type VirtualRect, type VirtualScrollAlignment, type VirtualScrollWriter, type VirtualViewportReader, type VirtualizerConnection, type VirtualizerEnvironment, type VirtualizerErrorHandler } from '@sectile/dom/virtual';
3
- import { type PrimitiveAs } from './primitive.js';
5
+ import { type PrimitiveAs } from '../primitive.js';
4
6
  export interface UseVirtualizerOptions<State, ID extends string, Measurement, Mutation> {
5
7
  readonly state: Ref<State>;
6
8
  readonly strategy: VirtualLayoutStrategy<State, ID, Measurement, Mutation>;
@@ -24,11 +26,15 @@ export interface UseVirtualizerReturn<State, ID extends string, Measurement, Mut
24
26
  mutate(mutation: Mutation): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['mutate']>;
25
27
  scrollTo(id: ID, alignment?: VirtualScrollAlignment): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['scrollTo']>;
26
28
  refresh(): void;
29
+ flush(): ReturnType<VirtualizerConnection<LinearLayoutState<string>, string, {
30
+ readonly index: number;
31
+ readonly extent: Extent;
32
+ }, LinearPatch<string>>['flush']>;
27
33
  flush(): ReturnType<VirtualizerConnection<State, ID, Measurement, Mutation>['flush']>;
28
34
  }
29
35
  export type VirtualizerItemSize = 'none' | 'width' | 'height' | 'both';
30
36
  export interface VirtualizerRootProps {
31
- readonly state: object;
37
+ readonly defaultState: object;
32
38
  readonly strategy: VirtualLayoutStrategy<object, string, unknown, unknown>;
33
39
  readonly overscan?: number | Partial<VirtualInsets>;
34
40
  readonly initialViewport?: VirtualRect;
@@ -61,7 +67,7 @@ export interface VirtualizerRootExpose extends VirtualizerRootSlotProps {
61
67
  }
62
68
  export declare function useVirtualizer<State, ID extends string, Measurement, Mutation>(options: UseVirtualizerOptions<State, ID, Measurement, Mutation>): UseVirtualizerReturn<State, ID, Measurement, Mutation>;
63
69
  export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
64
- state: {
70
+ defaultState: {
65
71
  type: PropType<object>;
66
72
  required: true;
67
73
  };
@@ -90,11 +96,11 @@ export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue"
90
96
  default: boolean;
91
97
  };
92
98
  }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
93
- 'update:state': (_state: object) => boolean;
99
+ stateChange: (_state: object) => boolean;
94
100
  planChange: (_plan: VirtualLayoutPlan<string>) => boolean;
95
101
  error: (_error: Parameters<VirtualizerErrorHandler>[0]) => boolean;
96
102
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
97
- state: {
103
+ defaultState: {
98
104
  type: PropType<object>;
99
105
  required: true;
100
106
  };
@@ -125,10 +131,10 @@ export declare const VirtualizerRoot: import("vue").DefineComponent<import("vue"
125
131
  }>> & Readonly<{
126
132
  onError?: (_error: import("@sectile/core").SectileError<import("@sectile/virtual").VirtualErrorCode>) => any;
127
133
  onPlanChange?: (_plan: VirtualLayoutPlan<string>) => any;
128
- "onUpdate:state"?: (_state: object) => any;
134
+ onStateChange?: (_state: object) => any;
129
135
  }>, {
130
- overscan: number | Partial<VirtualInsets>;
131
- initialViewport: VirtualRect;
136
+ overscan: number | Partial<import("@sectile/core/geometry").Insets>;
137
+ initialViewport: import("@sectile/core/geometry").Rect;
132
138
  measure: VirtualMeasurementResolver<object, string, unknown>;
133
139
  as: PrimitiveAs;
134
140
  asChild: boolean;
@@ -202,4 +208,3 @@ export declare const VirtualizerItem: import("vue").DefineComponent<import("vue"
202
208
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
203
209
  export type { VirtualInsets, VirtualLayoutPlan, VirtualLayoutStrategy, VirtualMeasurementResolver, VirtualPlacement, VirtualRect, VirtualScrollAlignment, VirtualizerConnection, VirtualizerEnvironment, };
204
210
  export { createAxisMeasurementResolver, virtualContentStyle, virtualItemStyle };
205
- //# sourceMappingURL=virtual.d.ts.map
@@ -1,6 +1,6 @@
1
- import { computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onScopeDispose, provide, shallowRef, toValue, watch, } from 'vue';
2
- import { createAxisMeasurementResolver, createVirtualizer, virtualContentStyle, virtualItemStyle, } from '@sectile/dom/virtual';
3
- import { Primitive } from './primitive.js';
1
+ import { computed, defineComponent, h, inject, mergeProps, onBeforeUnmount, onScopeDispose, provide, shallowRef, toValue, watch } from 'vue';
2
+ import { createAxisMeasurementResolver, createVirtualizer, virtualContentStyle, virtualItemStyle } from '@sectile/dom/virtual';
3
+ import { Primitive } from '../primitive.js';
4
4
  const virtualizerContextKey = Symbol('SectileVirtualizerRoot');
5
5
  export function useVirtualizer(options) {
6
6
  const root = options.root ?? shallowRef(null);
@@ -116,11 +116,11 @@ export function useVirtualizer(options) {
116
116
  flush: () => requireConnection().flush(),
117
117
  });
118
118
  }
119
- export const VirtualizerRoot = defineComponent({
119
+ export const VirtualizerRoot = /* @__PURE__ */ defineComponent({
120
120
  name: 'SectileVirtualizerRoot',
121
121
  inheritAttrs: false,
122
122
  props: {
123
- state: { type: Object, required: true },
123
+ defaultState: { type: Object, required: true },
124
124
  strategy: {
125
125
  type: Object,
126
126
  required: true,
@@ -144,13 +144,13 @@ export const VirtualizerRoot = defineComponent({
144
144
  asChild: { type: Boolean, default: false },
145
145
  },
146
146
  emits: {
147
- 'update:state': (_state) => true,
147
+ stateChange: (_state) => true,
148
148
  planChange: (_plan) => true,
149
149
  error: (_error) => true,
150
150
  },
151
151
  slots: Object,
152
152
  setup(props, { attrs, emit, expose, slots }) {
153
- const state = shallowRef(props.state);
153
+ const state = shallowRef(props.defaultState);
154
154
  const virtualizer = useVirtualizer({
155
155
  state,
156
156
  strategy: props.strategy,
@@ -160,7 +160,7 @@ export const VirtualizerRoot = defineComponent({
160
160
  : { initialViewport: props.initialViewport }),
161
161
  ...(props.measure === undefined ? {} : { measure: props.measure }),
162
162
  onStateChange: (value) => {
163
- emit('update:state', value);
163
+ emit('stateChange', value);
164
164
  },
165
165
  onPlanChange: (value) => {
166
166
  emit('planChange', value);
@@ -169,8 +169,13 @@ export const VirtualizerRoot = defineComponent({
169
169
  emit('error', error);
170
170
  },
171
171
  });
172
- watch(() => props.state, (value) => {
173
- state.value = value;
172
+ let constructionWarningShown = false;
173
+ watch(() => [props.strategy, props.measure, props.initialViewport], (value, previous) => {
174
+ if (constructionWarningShown
175
+ || value.every((item, index) => Object.is(item, previous[index])))
176
+ return;
177
+ constructionWarningShown = true;
178
+ console.warn('[Sectile] VirtualizerRoot strategy, measure, and initialViewport are construction-time options. Remount the root to change them.');
174
179
  }, { flush: 'sync' });
175
180
  const slotProps = computed(() => Object.freeze({
176
181
  state: state.value,
@@ -215,7 +220,7 @@ export const VirtualizerRoot = defineComponent({
215
220
  }), { default: () => slots['default']?.(slotProps.value) });
216
221
  },
217
222
  });
218
- export const VirtualizerContent = defineComponent({
223
+ export const VirtualizerContent = /* @__PURE__ */ defineComponent({
219
224
  name: 'SectileVirtualizerContent',
220
225
  inheritAttrs: false,
221
226
  props: {
@@ -240,7 +245,7 @@ export const VirtualizerContent = defineComponent({
240
245
  }), { default: () => slots['default']?.(root.plan.value) });
241
246
  },
242
247
  });
243
- export const VirtualizerItem = defineComponent({
248
+ export const VirtualizerItem = /* @__PURE__ */ defineComponent({
244
249
  name: 'SectileVirtualizerItem',
245
250
  inheritAttrs: false,
246
251
  props: {
@@ -291,4 +296,4 @@ function useVirtualizerRoot(part) {
291
296
  return root;
292
297
  }
293
298
  export { createAxisMeasurementResolver, virtualContentStyle, virtualItemStyle };
294
- //# sourceMappingURL=virtual.js.map
299
+ //# sourceMappingURL=virtual-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-core.js","sourceRoot":"","sources":["../../src/internal/virtual-core.ts"],"names":[],"mappings":"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"}