@exponential-at/ui 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +360 -2
  4. package/catalog/a11y.json +668 -0
  5. package/catalog/basic-map.json +104 -0
  6. package/catalog/code.json +58 -0
  7. package/catalog/core.catalog.json +4752 -0
  8. package/catalog/core.schema.json +22667 -0
  9. package/catalog/host.json +64 -0
  10. package/catalog/layout.json +20 -0
  11. package/catalog/limits.json +9 -0
  12. package/catalog/locale.json +48 -0
  13. package/catalog/macros.json +3417 -0
  14. package/catalog/recipes.json +61 -0
  15. package/catalog/strings.json +72 -0
  16. package/catalog/style.json +128 -0
  17. package/catalog/theme.schema.json +42543 -0
  18. package/catalog/tokens.json +47 -0
  19. package/conformance/README.md +217 -0
  20. package/conformance/baseline.ts +101 -0
  21. package/conformance/browser-page.ts +146 -0
  22. package/conformance/browser-suites.ts +683 -0
  23. package/conformance/compare.ts +201 -0
  24. package/conformance/dom.ts +96 -0
  25. package/conformance/dump.ts +163 -0
  26. package/conformance/fonts.json +154 -0
  27. package/conformance/manifest.json +224 -0
  28. package/conformance/parity-compare.ts +191 -0
  29. package/conformance/parity-report.schema.json +73 -0
  30. package/conformance/parity.ts +412 -0
  31. package/conformance/pixel.ts +177 -0
  32. package/conformance/primitives-page.ts +49 -0
  33. package/conformance/report.schema.json +66 -0
  34. package/conformance/run.ts +118 -0
  35. package/dist/chunks/index-98npjvsd.js +3940 -0
  36. package/dist/chunks/index-98npjvsd.js.map +27 -0
  37. package/dist/chunks/index-gwkt14w3.js +7314 -0
  38. package/dist/chunks/index-gwkt14w3.js.map +10 -0
  39. package/dist/chunks/index-njt7yzzm.js +134 -0
  40. package/dist/chunks/index-njt7yzzm.js.map +9 -0
  41. package/dist/chunks/index-we7va6v6.js +7984 -0
  42. package/dist/chunks/index-we7va6v6.js.map +15 -0
  43. package/dist/chunks/index-xrm6f7wc.js +2563 -0
  44. package/dist/chunks/index-xrm6f7wc.js.map +10 -0
  45. package/dist/conformance.js +182749 -0
  46. package/dist/conformance.js.map +10 -0
  47. package/dist/entries/prompt.js +251 -0
  48. package/dist/entries/prompt.js.map +11 -0
  49. package/dist/entries/schema.js +1725 -0
  50. package/dist/entries/schema.js.map +11 -0
  51. package/dist/host/index.js +122 -0
  52. package/dist/host/index.js.map +9 -0
  53. package/dist/index.js +3213 -0
  54. package/dist/index.js.map +27 -0
  55. package/dist/types/src/a11y.d.ts +21 -0
  56. package/dist/types/src/animation.d.ts +76 -0
  57. package/dist/types/src/basic-map.d.ts +38 -0
  58. package/dist/types/src/builder.d.ts +50 -0
  59. package/dist/types/src/catalog.d.ts +54 -0
  60. package/dist/types/src/catalog.described.d.ts +33 -0
  61. package/dist/types/src/catalog.generated.d.ts +829 -0
  62. package/dist/types/src/chart.d.ts +46 -0
  63. package/dist/types/src/code.d.ts +44 -0
  64. package/dist/types/src/color.d.ts +20 -0
  65. package/dist/types/src/conformance.d.ts +39 -0
  66. package/dist/types/src/connector/app.d.ts +14 -0
  67. package/dist/types/src/connector/connector.d.ts +77 -0
  68. package/dist/types/src/connector/index.d.ts +4 -0
  69. package/dist/types/src/css.d.ts +29 -0
  70. package/dist/types/src/define.d.ts +66 -0
  71. package/dist/types/src/direction.d.ts +16 -0
  72. package/dist/types/src/dynamic.d.ts +159 -0
  73. package/dist/types/src/entries/prompt.d.ts +11 -0
  74. package/dist/types/src/entries/schema.d.ts +8 -0
  75. package/dist/types/src/expr.d.ts +71 -0
  76. package/dist/types/src/extension.d.ts +4 -0
  77. package/dist/types/src/format.d.ts +112 -0
  78. package/dist/types/src/geometry.d.ts +40 -0
  79. package/dist/types/src/host/contract.d.ts +188 -0
  80. package/dist/types/src/host/decoders.d.ts +61 -0
  81. package/dist/types/src/host/index.d.ts +11 -0
  82. package/dist/types/src/host/package.d.ts +58 -0
  83. package/dist/types/src/host/policy.d.ts +105 -0
  84. package/dist/types/src/host/router.d.ts +34 -0
  85. package/dist/types/src/host/runtime.d.ts +205 -0
  86. package/dist/types/src/host/sources.d.ts +15 -0
  87. package/dist/types/src/host/transports.d.ts +109 -0
  88. package/dist/types/src/index.d.ts +63 -0
  89. package/dist/types/src/layout.d.ts +20 -0
  90. package/dist/types/src/limits.d.ts +21 -0
  91. package/dist/types/src/list.d.ts +133 -0
  92. package/dist/types/src/locale.d.ts +22 -0
  93. package/dist/types/src/macros.d.ts +29 -0
  94. package/dist/types/src/overlay.d.ts +27 -0
  95. package/dist/types/src/prompt.d.ts +44 -0
  96. package/dist/types/src/recipes.d.ts +17 -0
  97. package/dist/types/src/reducer.d.ts +41 -0
  98. package/dist/types/src/resizable.d.ts +38 -0
  99. package/dist/types/src/schema.d.ts +7 -0
  100. package/dist/types/src/strings.d.ts +13 -0
  101. package/dist/types/src/style.d.ts +201 -0
  102. package/dist/types/src/test-preload.d.ts +1 -0
  103. package/dist/types/src/text-shimmer.d.ts +24 -0
  104. package/dist/types/src/theme-types.d.ts +162 -0
  105. package/dist/types/src/theme.d.ts +73 -0
  106. package/dist/types/src/themes.d.ts +22 -0
  107. package/dist/types/src/tree-guides.d.ts +17 -0
  108. package/dist/types/src/types.d.ts +314 -0
  109. package/dist/types/src/validate.d.ts +31 -0
  110. package/dist/types/src/web/base-css.d.ts +1 -0
  111. package/dist/types/src/web/box-css.d.ts +55 -0
  112. package/dist/types/src/web/coerce.d.ts +32 -0
  113. package/dist/types/src/web/data.d.ts +105 -0
  114. package/dist/types/src/web/dates.d.ts +12 -0
  115. package/dist/types/src/web/form.d.ts +44 -0
  116. package/dist/types/src/web/host-types.d.ts +119 -0
  117. package/dist/types/src/web/index.d.ts +28 -0
  118. package/dist/types/src/web/inputs.d.ts +55 -0
  119. package/dist/types/src/web/list.d.ts +13 -0
  120. package/dist/types/src/web/listbox.d.ts +14 -0
  121. package/dist/types/src/web/markdown.d.ts +96 -0
  122. package/dist/types/src/web/media.d.ts +62 -0
  123. package/dist/types/src/web/parts.d.ts +4 -0
  124. package/dist/types/src/web/primitives/alert-dialog.d.ts +10 -0
  125. package/dist/types/src/web/primitives/alert.d.ts +9 -0
  126. package/dist/types/src/web/primitives/avatar-color.d.ts +2 -0
  127. package/dist/types/src/web/primitives/avatar.d.ts +13 -0
  128. package/dist/types/src/web/primitives/badge.d.ts +10 -0
  129. package/dist/types/src/web/primitives/breadcrumb.d.ts +10 -0
  130. package/dist/types/src/web/primitives/button.d.ts +6 -0
  131. package/dist/types/src/web/primitives/calendar.d.ts +43 -0
  132. package/dist/types/src/web/primitives/card.d.ts +9 -0
  133. package/dist/types/src/web/primitives/checkbox.d.ts +5 -0
  134. package/dist/types/src/web/primitives/choice-tiles.d.ts +32 -0
  135. package/dist/types/src/web/primitives/cn.d.ts +3 -0
  136. package/dist/types/src/web/primitives/code-block.d.ts +24 -0
  137. package/dist/types/src/web/primitives/command.d.ts +134 -0
  138. package/dist/types/src/web/primitives/context-ring.d.ts +24 -0
  139. package/dist/types/src/web/primitives/dialog-arms.d.ts +6 -0
  140. package/dist/types/src/web/primitives/dialog.d.ts +24 -0
  141. package/dist/types/src/web/primitives/disclosure-header.d.ts +5 -0
  142. package/dist/types/src/web/primitives/dock.d.ts +42 -0
  143. package/dist/types/src/web/primitives/dropdown-menu.d.ts +14 -0
  144. package/dist/types/src/web/primitives/empty-state.d.ts +15 -0
  145. package/dist/types/src/web/primitives/glass-card.d.ts +4 -0
  146. package/dist/types/src/web/primitives/hover-card.d.ts +7 -0
  147. package/dist/types/src/web/primitives/icon-disc.d.ts +12 -0
  148. package/dist/types/src/web/primitives/index.d.ts +48 -0
  149. package/dist/types/src/web/primitives/input.d.ts +5 -0
  150. package/dist/types/src/web/primitives/kbd.d.ts +4 -0
  151. package/dist/types/src/web/primitives/label.d.ts +3 -0
  152. package/dist/types/src/web/primitives/menu-surface.d.ts +17 -0
  153. package/dist/types/src/web/primitives/meter.d.ts +21 -0
  154. package/dist/types/src/web/primitives/popover.d.ts +3 -0
  155. package/dist/types/src/web/primitives/progress-ring.d.ts +5 -0
  156. package/dist/types/src/web/primitives/progress.d.ts +8 -0
  157. package/dist/types/src/web/primitives/scroll-area.d.ts +49 -0
  158. package/dist/types/src/web/primitives/segmented-control.d.ts +5 -0
  159. package/dist/types/src/web/primitives/select.d.ts +47 -0
  160. package/dist/types/src/web/primitives/separator.d.ts +3 -0
  161. package/dist/types/src/web/primitives/sheet-chrome.d.ts +4 -0
  162. package/dist/types/src/web/primitives/sheet.d.ts +20 -0
  163. package/dist/types/src/web/primitives/skeleton.d.ts +3 -0
  164. package/dist/types/src/web/primitives/spinner.d.ts +3 -0
  165. package/dist/types/src/web/primitives/switch.d.ts +4 -0
  166. package/dist/types/src/web/primitives/table.d.ts +11 -0
  167. package/dist/types/src/web/primitives/tabs.d.ts +13 -0
  168. package/dist/types/src/web/primitives/textarea.d.ts +3 -0
  169. package/dist/types/src/web/primitives/toast.d.ts +163 -0
  170. package/dist/types/src/web/primitives/tooltip.d.ts +3 -0
  171. package/dist/types/src/web/primitives/truncate.d.ts +7 -0
  172. package/dist/types/src/web/primitives/typeahead-portal.d.ts +12 -0
  173. package/dist/types/src/web/share.d.ts +6 -0
  174. package/dist/types/src/web/table.d.ts +20 -0
  175. package/dist/types/src/web/theme-css.d.ts +69 -0
  176. package/dist/types/src/web/urls.d.ts +21 -0
  177. package/dist/web/index.js +2303 -0
  178. package/dist/web/index.js.map +26 -0
  179. package/dist/web/primitives/index.js +1450 -0
  180. package/dist/web/primitives/index.js.map +57 -0
  181. package/docs/components.generated.json +6238 -0
  182. package/docs/round-1-contract.md +679 -0
  183. package/docs/round-2-contract.md +476 -0
  184. package/docs/round-3-contract.md +174 -0
  185. package/docs/themes.generated.json +3503 -0
  186. package/fixtures/animations.json +2890 -0
  187. package/fixtures/bench-list.json +58 -0
  188. package/fixtures/bind-time.json +30664 -0
  189. package/fixtures/catalog-basic-map.json +1692 -0
  190. package/fixtures/catalog-components.json +9323 -0
  191. package/fixtures/catalog-extension.json +620 -0
  192. package/fixtures/catalog-macros.json +36370 -0
  193. package/fixtures/code-tokens.json +1993 -0
  194. package/fixtures/conformance-baseline.json +55544 -0
  195. package/fixtures/conformance-cases.json +49 -0
  196. package/fixtures/conformance-known.json +2123 -0
  197. package/fixtures/control-geometry.json +4200 -0
  198. package/fixtures/dashboard.data.json +74 -0
  199. package/fixtures/dashboard.json +752 -0
  200. package/fixtures/demo-surface.json +47 -0
  201. package/fixtures/format.json +870 -0
  202. package/fixtures/host-policy.json +1067 -0
  203. package/fixtures/host-router.json +1152 -0
  204. package/fixtures/host-transport.json +590 -0
  205. package/fixtures/interactions-round1.json +773 -0
  206. package/fixtures/kitchen-sink.expanded.json +10844 -0
  207. package/fixtures/kitchen-sink.json +3049 -0
  208. package/fixtures/layout-geometry-round1.json +7278 -0
  209. package/fixtures/layout-geometry.json +2072 -0
  210. package/fixtures/overlay-geometry.json +272 -0
  211. package/fixtures/primitive-specimens.json +58 -0
  212. package/fixtures/prompt-budget.json +33 -0
  213. package/fixtures/resizable.json +714 -0
  214. package/fixtures/round4-contract.json +2985 -0
  215. package/fixtures/specimens.json +9832 -0
  216. package/fixtures/style-conditions.json +336 -0
  217. package/fixtures/template-items.json +2215 -0
  218. package/fixtures/text-direction.json +309 -0
  219. package/fixtures/text-shimmer.json +96 -0
  220. package/fixtures/theme-extends.json +573 -0
  221. package/fixtures/theme-invalid.json +1296 -0
  222. package/fixtures/theme-recipes.json +58600 -0
  223. package/fixtures/theme-resolved.json +23949 -0
  224. package/fixtures/toast-stack.json +215 -0
  225. package/fixtures/tree-guides.json +224 -0
  226. package/fixtures/virtual-list.json +733 -0
  227. package/generated/ExponentialUICatalog.generated.kt +67 -0
  228. package/generated/ExponentialUICatalog.generated.swift +67 -0
  229. package/generated/ExponentialUIThemes.generated.kt +23 -0
  230. package/generated/ExponentialUIThemes.generated.swift +23 -0
  231. package/generated/catalog.descriptions.generated.rs +6 -0
  232. package/generated/catalog.generated.rs +80 -0
  233. package/generated/catalog.themes.generated.rs +34 -0
  234. package/generated/core.descriptions.json +2505 -0
  235. package/generated/core.runtime.json +3609 -0
  236. package/package.json +87 -4
  237. package/themes/exponential.recipes.json +49 -0
  238. package/themes/exponential.theme.json +755 -0
  239. package/themes/neutral.theme.json +5676 -0
  240. package/themes/orange.theme.json +43 -0
  241. package/themes/playful.theme.json +219 -0
  242. package/vendor/a2ui/LICENSE.txt +203 -0
  243. package/vendor/a2ui/README.md +27 -0
  244. package/vendor/a2ui/v0_9/basic_catalog.json +1387 -0
  245. package/vendor/a2ui/v0_9/basic_catalog_rules.txt +5 -0
  246. package/vendor/a2ui/v0_9/client_capabilities.json +97 -0
  247. package/vendor/a2ui/v0_9/client_to_server.json +104 -0
  248. package/vendor/a2ui/v0_9/common_types.json +315 -0
  249. package/vendor/a2ui/v0_9/server_to_client.json +132 -0
  250. package/vendor/json-render/LICENSE.txt +201 -0
  251. package/vendor/json-render/README.md +13 -0
@@ -0,0 +1,733 @@
1
+ {
2
+ "$comment": "AUTO-GENERATED by packages/exponential-ui/scripts/generate-round2.ts — do not edit (inputs live there). Round 2 (docs/round-2-contract.md §5). ONE axis (vertical or horizontal Lists alike); offsets relative to the list's content start; a list without a bounded size windows against its nearest scrolling ancestor or the host viewport, translated into this frame. `windows` (virtualWindow; `{count, extent}` = that many equal extents; `measured` + `row` = itemExtents: an unmeasured item (null) takes the mean measured extent, else `row` = `$control.row` before any is measured, giving `extents`): every item intersecting [scroll, scroll + viewport) — an item ending exactly at the start counts — plus `overscan` (default 5) each side; `before`/`after` = the spacers. `scrollTo` (scrollOffsetForIndex = the scrollToIndex command): start/center/end/nearest, `inset` = the pinned header over the item, clamped to the content. `sections` (listSections + sectionRows): consecutive items sharing `sectionBy` form a section; the flat rows put a header before each. `sectionedScrollTo` (scrollOffsetForItem): scrollToIndex on a sectioned list maps the DATA index to its flat row, inset = its own section header's extent when headers are sticky. `sticky` (stickyHeader): the pinned header row and its offset per scroll (pushed back by the next header).",
3
+ "windows": [
4
+ {
5
+ "name": "top",
6
+ "extents": {
7
+ "count": 1000,
8
+ "extent": 40
9
+ },
10
+ "gap": 0,
11
+ "scroll": 0,
12
+ "viewport": 400,
13
+ "expected": {
14
+ "start": 0,
15
+ "end": 15,
16
+ "before": 0,
17
+ "after": 39400,
18
+ "total": 40000
19
+ }
20
+ },
21
+ {
22
+ "name": "middle",
23
+ "extents": {
24
+ "count": 1000,
25
+ "extent": 40
26
+ },
27
+ "gap": 0,
28
+ "scroll": 20000,
29
+ "viewport": 400,
30
+ "expected": {
31
+ "start": 494,
32
+ "end": 515,
33
+ "before": 19760,
34
+ "after": 19400,
35
+ "total": 40000
36
+ }
37
+ },
38
+ {
39
+ "name": "item-ending-at-viewport-start-counts",
40
+ "extents": {
41
+ "count": 1000,
42
+ "extent": 40
43
+ },
44
+ "gap": 0,
45
+ "scroll": 400,
46
+ "viewport": 400,
47
+ "overscan": 0,
48
+ "expected": {
49
+ "start": 9,
50
+ "end": 20,
51
+ "before": 360,
52
+ "after": 39200,
53
+ "total": 40000
54
+ }
55
+ },
56
+ {
57
+ "name": "gap-and-divider",
58
+ "extents": {
59
+ "count": 200,
60
+ "extent": 40
61
+ },
62
+ "gap": 9,
63
+ "scroll": 4900,
64
+ "viewport": 300,
65
+ "expected": {
66
+ "start": 95,
67
+ "end": 112,
68
+ "before": 4655,
69
+ "after": 4312,
70
+ "total": 9791
71
+ }
72
+ },
73
+ {
74
+ "name": "end-clamped",
75
+ "extents": {
76
+ "count": 100,
77
+ "extent": 40
78
+ },
79
+ "gap": 0,
80
+ "scroll": 3800,
81
+ "viewport": 400,
82
+ "expected": {
83
+ "start": 89,
84
+ "end": 100,
85
+ "before": 3560,
86
+ "after": 0,
87
+ "total": 4000
88
+ }
89
+ },
90
+ {
91
+ "name": "mixed-extents",
92
+ "extents": [
93
+ 40,
94
+ 40,
95
+ 64,
96
+ 40,
97
+ 120,
98
+ 40,
99
+ 40,
100
+ 40,
101
+ 64,
102
+ 40,
103
+ 40,
104
+ 40
105
+ ],
106
+ "gap": 4,
107
+ "scroll": 150,
108
+ "viewport": 200,
109
+ "overscan": 1,
110
+ "expected": {
111
+ "start": 1,
112
+ "end": 7,
113
+ "before": 44,
114
+ "after": 244,
115
+ "total": 652
116
+ }
117
+ },
118
+ {
119
+ "name": "horizontal-axis",
120
+ "extents": {
121
+ "count": 500,
122
+ "extent": 160
123
+ },
124
+ "gap": 8,
125
+ "scroll": 8400,
126
+ "viewport": 390,
127
+ "expected": {
128
+ "start": 45,
129
+ "end": 58,
130
+ "before": 7560,
131
+ "after": 74256,
132
+ "total": 83992
133
+ }
134
+ },
135
+ {
136
+ "name": "hundred-thousand",
137
+ "extents": {
138
+ "count": 100000,
139
+ "extent": 40
140
+ },
141
+ "gap": 0,
142
+ "scroll": 2000000,
143
+ "viewport": 800,
144
+ "expected": {
145
+ "start": 49994,
146
+ "end": 50025,
147
+ "before": 1999760,
148
+ "after": 1999000,
149
+ "total": 4000000
150
+ }
151
+ },
152
+ {
153
+ "name": "empty",
154
+ "extents": [],
155
+ "gap": 0,
156
+ "scroll": 0,
157
+ "viewport": 400,
158
+ "expected": {
159
+ "start": 0,
160
+ "end": 0,
161
+ "before": 0,
162
+ "after": 0,
163
+ "total": 0
164
+ }
165
+ },
166
+ {
167
+ "name": "unmeasured-take-row-before-any-measure",
168
+ "measured": [
169
+ null,
170
+ null,
171
+ null,
172
+ null,
173
+ null,
174
+ null,
175
+ null,
176
+ null,
177
+ null,
178
+ null,
179
+ null,
180
+ null,
181
+ null,
182
+ null,
183
+ null,
184
+ null,
185
+ null,
186
+ null,
187
+ null,
188
+ null
189
+ ],
190
+ "row": 36,
191
+ "extents": [
192
+ 36,
193
+ 36,
194
+ 36,
195
+ 36,
196
+ 36,
197
+ 36,
198
+ 36,
199
+ 36,
200
+ 36,
201
+ 36,
202
+ 36,
203
+ 36,
204
+ 36,
205
+ 36,
206
+ 36,
207
+ 36,
208
+ 36,
209
+ 36,
210
+ 36,
211
+ 36
212
+ ],
213
+ "gap": 0,
214
+ "scroll": 100,
215
+ "viewport": 200,
216
+ "overscan": 0,
217
+ "expected": {
218
+ "start": 2,
219
+ "end": 9,
220
+ "before": 72,
221
+ "after": 396,
222
+ "total": 720
223
+ }
224
+ },
225
+ {
226
+ "name": "unmeasured-take-measured-mean",
227
+ "measured": [
228
+ 40,
229
+ 64,
230
+ null,
231
+ 52,
232
+ null,
233
+ null,
234
+ null,
235
+ null,
236
+ null,
237
+ null,
238
+ null,
239
+ null,
240
+ null,
241
+ null,
242
+ null,
243
+ null,
244
+ null,
245
+ null,
246
+ null,
247
+ null,
248
+ null,
249
+ null,
250
+ null,
251
+ null,
252
+ null,
253
+ null,
254
+ null,
255
+ null,
256
+ null,
257
+ null
258
+ ],
259
+ "row": 36,
260
+ "extents": [
261
+ 40,
262
+ 64,
263
+ 52,
264
+ 52,
265
+ 52,
266
+ 52,
267
+ 52,
268
+ 52,
269
+ 52,
270
+ 52,
271
+ 52,
272
+ 52,
273
+ 52,
274
+ 52,
275
+ 52,
276
+ 52,
277
+ 52,
278
+ 52,
279
+ 52,
280
+ 52,
281
+ 52,
282
+ 52,
283
+ 52,
284
+ 52,
285
+ 52,
286
+ 52,
287
+ 52,
288
+ 52,
289
+ 52,
290
+ 52
291
+ ],
292
+ "gap": 0,
293
+ "scroll": 300,
294
+ "viewport": 200,
295
+ "overscan": 1,
296
+ "expected": {
297
+ "start": 4,
298
+ "end": 11,
299
+ "before": 208,
300
+ "after": 988,
301
+ "total": 1560
302
+ }
303
+ }
304
+ ],
305
+ "scrollTo": [
306
+ {
307
+ "name": "nearest-below",
308
+ "extents": {
309
+ "count": 100,
310
+ "extent": 40
311
+ },
312
+ "gap": 0,
313
+ "index": 30,
314
+ "viewport": 400,
315
+ "scroll": 0,
316
+ "align": "nearest",
317
+ "expected": 840
318
+ },
319
+ {
320
+ "name": "nearest-visible-no-move",
321
+ "extents": {
322
+ "count": 100,
323
+ "extent": 40
324
+ },
325
+ "gap": 0,
326
+ "index": 5,
327
+ "viewport": 400,
328
+ "scroll": 0,
329
+ "align": "nearest",
330
+ "expected": 0
331
+ },
332
+ {
333
+ "name": "nearest-above",
334
+ "extents": {
335
+ "count": 100,
336
+ "extent": 40
337
+ },
338
+ "gap": 0,
339
+ "index": 2,
340
+ "viewport": 400,
341
+ "scroll": 800,
342
+ "align": "nearest",
343
+ "expected": 80
344
+ },
345
+ {
346
+ "name": "start",
347
+ "extents": {
348
+ "count": 100,
349
+ "extent": 40
350
+ },
351
+ "gap": 0,
352
+ "index": 50,
353
+ "viewport": 400,
354
+ "scroll": 0,
355
+ "align": "start",
356
+ "expected": 2000
357
+ },
358
+ {
359
+ "name": "center",
360
+ "extents": {
361
+ "count": 100,
362
+ "extent": 40
363
+ },
364
+ "gap": 0,
365
+ "index": 50,
366
+ "viewport": 400,
367
+ "scroll": 0,
368
+ "align": "center",
369
+ "expected": 1820
370
+ },
371
+ {
372
+ "name": "end",
373
+ "extents": {
374
+ "count": 100,
375
+ "extent": 40
376
+ },
377
+ "gap": 0,
378
+ "index": 50,
379
+ "viewport": 400,
380
+ "scroll": 0,
381
+ "align": "end",
382
+ "expected": 1640
383
+ },
384
+ {
385
+ "name": "start-clamped-at-end",
386
+ "extents": {
387
+ "count": 100,
388
+ "extent": 40
389
+ },
390
+ "gap": 0,
391
+ "index": 99,
392
+ "viewport": 400,
393
+ "scroll": 0,
394
+ "align": "start",
395
+ "expected": 3600
396
+ },
397
+ {
398
+ "name": "start-under-sticky-header",
399
+ "extents": [
400
+ 40,
401
+ 40,
402
+ 64,
403
+ 40,
404
+ 120,
405
+ 40,
406
+ 40,
407
+ 40,
408
+ 64,
409
+ 40,
410
+ 40,
411
+ 40
412
+ ],
413
+ "gap": 4,
414
+ "index": 6,
415
+ "viewport": 200,
416
+ "scroll": 0,
417
+ "align": "start",
418
+ "inset": 32,
419
+ "expected": 336
420
+ },
421
+ {
422
+ "name": "out-of-range-no-move",
423
+ "extents": {
424
+ "count": 10,
425
+ "extent": 40
426
+ },
427
+ "gap": 0,
428
+ "index": 10,
429
+ "viewport": 200,
430
+ "scroll": 40,
431
+ "align": "start",
432
+ "expected": 40
433
+ }
434
+ ],
435
+ "sections": [
436
+ {
437
+ "name": "by-day",
438
+ "items": [
439
+ {
440
+ "id": "1",
441
+ "day": "Today"
442
+ },
443
+ {
444
+ "id": "2",
445
+ "day": "Today"
446
+ },
447
+ {
448
+ "id": "3",
449
+ "day": "Yesterday"
450
+ },
451
+ {
452
+ "id": "4",
453
+ "day": "Today"
454
+ },
455
+ {
456
+ "id": "5"
457
+ },
458
+ {
459
+ "id": "6"
460
+ }
461
+ ],
462
+ "sectionBy": "day",
463
+ "expected": {
464
+ "sections": [
465
+ {
466
+ "value": "Today",
467
+ "start": 0,
468
+ "count": 2
469
+ },
470
+ {
471
+ "value": "Yesterday",
472
+ "start": 2,
473
+ "count": 1
474
+ },
475
+ {
476
+ "value": "Today",
477
+ "start": 3,
478
+ "count": 1
479
+ },
480
+ {
481
+ "value": "",
482
+ "start": 4,
483
+ "count": 2
484
+ }
485
+ ],
486
+ "rows": [
487
+ {
488
+ "header": 0
489
+ },
490
+ {
491
+ "item": 0
492
+ },
493
+ {
494
+ "item": 1
495
+ },
496
+ {
497
+ "header": 1
498
+ },
499
+ {
500
+ "item": 2
501
+ },
502
+ {
503
+ "header": 2
504
+ },
505
+ {
506
+ "item": 3
507
+ },
508
+ {
509
+ "header": 3
510
+ },
511
+ {
512
+ "item": 4
513
+ },
514
+ {
515
+ "item": 5
516
+ }
517
+ ]
518
+ }
519
+ }
520
+ ],
521
+ "sectionedScrollTo": [
522
+ {
523
+ "name": "start-under-own-sticky-header",
524
+ "index": 3,
525
+ "viewport": 100,
526
+ "scroll": 0,
527
+ "align": "start",
528
+ "stickyHeaders": true,
529
+ "items": [
530
+ {
531
+ "id": "1",
532
+ "day": "Today"
533
+ },
534
+ {
535
+ "id": "2",
536
+ "day": "Today"
537
+ },
538
+ {
539
+ "id": "3",
540
+ "day": "Yesterday"
541
+ },
542
+ {
543
+ "id": "4",
544
+ "day": "Today"
545
+ },
546
+ {
547
+ "id": "5"
548
+ },
549
+ {
550
+ "id": "6"
551
+ }
552
+ ],
553
+ "sectionBy": "day",
554
+ "headerExtent": 32,
555
+ "itemExtent": 40,
556
+ "gap": 0,
557
+ "expected": 184
558
+ },
559
+ {
560
+ "name": "start-without-sticky",
561
+ "index": 3,
562
+ "viewport": 100,
563
+ "scroll": 0,
564
+ "align": "start",
565
+ "stickyHeaders": false,
566
+ "items": [
567
+ {
568
+ "id": "1",
569
+ "day": "Today"
570
+ },
571
+ {
572
+ "id": "2",
573
+ "day": "Today"
574
+ },
575
+ {
576
+ "id": "3",
577
+ "day": "Yesterday"
578
+ },
579
+ {
580
+ "id": "4",
581
+ "day": "Today"
582
+ },
583
+ {
584
+ "id": "5"
585
+ },
586
+ {
587
+ "id": "6"
588
+ }
589
+ ],
590
+ "sectionBy": "day",
591
+ "headerExtent": 32,
592
+ "itemExtent": 40,
593
+ "gap": 0,
594
+ "expected": 216
595
+ },
596
+ {
597
+ "name": "data-index-skips-headers",
598
+ "index": 2,
599
+ "viewport": 100,
600
+ "scroll": 0,
601
+ "align": "end",
602
+ "stickyHeaders": true,
603
+ "items": [
604
+ {
605
+ "id": "1",
606
+ "day": "Today"
607
+ },
608
+ {
609
+ "id": "2",
610
+ "day": "Today"
611
+ },
612
+ {
613
+ "id": "3",
614
+ "day": "Yesterday"
615
+ },
616
+ {
617
+ "id": "4",
618
+ "day": "Today"
619
+ },
620
+ {
621
+ "id": "5"
622
+ },
623
+ {
624
+ "id": "6"
625
+ }
626
+ ],
627
+ "sectionBy": "day",
628
+ "headerExtent": 32,
629
+ "itemExtent": 40,
630
+ "gap": 0,
631
+ "expected": 84
632
+ },
633
+ {
634
+ "name": "absent-index-no-move",
635
+ "index": 9,
636
+ "viewport": 100,
637
+ "scroll": 24,
638
+ "align": "start",
639
+ "stickyHeaders": true,
640
+ "items": [
641
+ {
642
+ "id": "1",
643
+ "day": "Today"
644
+ },
645
+ {
646
+ "id": "2",
647
+ "day": "Today"
648
+ },
649
+ {
650
+ "id": "3",
651
+ "day": "Yesterday"
652
+ },
653
+ {
654
+ "id": "4",
655
+ "day": "Today"
656
+ },
657
+ {
658
+ "id": "5"
659
+ },
660
+ {
661
+ "id": "6"
662
+ }
663
+ ],
664
+ "sectionBy": "day",
665
+ "headerExtent": 32,
666
+ "itemExtent": 40,
667
+ "gap": 0,
668
+ "expected": 24
669
+ }
670
+ ],
671
+ "sticky": [
672
+ {
673
+ "name": "push-back",
674
+ "rowExtents": [
675
+ 32,
676
+ 40,
677
+ 40,
678
+ 32,
679
+ 40,
680
+ 32,
681
+ 40,
682
+ 32,
683
+ 40,
684
+ 40
685
+ ],
686
+ "headerRows": [
687
+ 0,
688
+ 3,
689
+ 5,
690
+ 7
691
+ ],
692
+ "scrolls": [
693
+ 0,
694
+ 10,
695
+ 60,
696
+ 100,
697
+ 120,
698
+ 160,
699
+ 300
700
+ ],
701
+ "expected": [
702
+ {
703
+ "row": 0,
704
+ "offset": 0
705
+ },
706
+ {
707
+ "row": 0,
708
+ "offset": 10
709
+ },
710
+ {
711
+ "row": 0,
712
+ "offset": 60
713
+ },
714
+ {
715
+ "row": 0,
716
+ "offset": 80
717
+ },
718
+ {
719
+ "row": 3,
720
+ "offset": 120
721
+ },
722
+ {
723
+ "row": 3,
724
+ "offset": 152
725
+ },
726
+ {
727
+ "row": 7,
728
+ "offset": 300
729
+ }
730
+ ]
731
+ }
732
+ ]
733
+ }