@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,714 @@
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 §1, Resizable): sizes are percent of the group's main axis minus its handles (sum 100), rounded to 1e-6. `normalize` = the starting sizes (normalizeSizes), `resize` = a drag from the sizes at its START (resizePanels: only the two panels beside the handle change; min/max clamp; collapse below half a collapsible panel's min; a collapsed one dragged past half its min reopens at max(min, the pointer), clamped), `keys` = a key on a focused handle (keyboardResize, step 10, rtl flips Left/Right), `extents` = px per panel (panelExtents: container minus one hairline per handle), `drag` = px of pointer movement → the percent delta (dragDelta). Compare numbers within 1e-6.",
3
+ "normalize": [
4
+ {
5
+ "name": "equal-when-unset",
6
+ "count": 3,
7
+ "expected": [
8
+ 33.333333,
9
+ 33.333333,
10
+ 33.333333
11
+ ]
12
+ },
13
+ {
14
+ "name": "scaled-to-100",
15
+ "sizes": [
16
+ 1,
17
+ 1,
18
+ 2
19
+ ],
20
+ "count": 3,
21
+ "expected": [
22
+ 25,
23
+ 25,
24
+ 50
25
+ ]
26
+ },
27
+ {
28
+ "name": "missing-share-rest",
29
+ "sizes": [
30
+ 50
31
+ ],
32
+ "count": 3,
33
+ "expected": [
34
+ 50,
35
+ 25,
36
+ 25
37
+ ]
38
+ },
39
+ {
40
+ "name": "invalid-ignored",
41
+ "sizes": [
42
+ -5,
43
+ "x",
44
+ 30
45
+ ],
46
+ "count": 3,
47
+ "expected": [
48
+ 35,
49
+ 35,
50
+ 30
51
+ ]
52
+ },
53
+ {
54
+ "name": "extra-ignored",
55
+ "sizes": [
56
+ 30,
57
+ 70,
58
+ 99
59
+ ],
60
+ "count": 2,
61
+ "expected": [
62
+ 30,
63
+ 70
64
+ ]
65
+ },
66
+ {
67
+ "name": "clamped-and-redistributed",
68
+ "sizes": [
69
+ 80,
70
+ 10,
71
+ 10
72
+ ],
73
+ "count": 3,
74
+ "panels": [
75
+ {
76
+ "min": 20,
77
+ "max": 60
78
+ },
79
+ {
80
+ "min": 10
81
+ },
82
+ {
83
+ "min": 15,
84
+ "collapsible": true
85
+ }
86
+ ],
87
+ "expected": [
88
+ 60,
89
+ 25,
90
+ 15
91
+ ]
92
+ },
93
+ {
94
+ "name": "collapsed-stays",
95
+ "sizes": [
96
+ 50,
97
+ 50,
98
+ 0
99
+ ],
100
+ "count": 3,
101
+ "panels": [
102
+ {
103
+ "min": 20,
104
+ "max": 60
105
+ },
106
+ {
107
+ "min": 10
108
+ },
109
+ {
110
+ "min": 15,
111
+ "collapsible": true
112
+ }
113
+ ],
114
+ "expected": [
115
+ 50,
116
+ 50,
117
+ 0
118
+ ]
119
+ },
120
+ {
121
+ "name": "min-capped-by-count",
122
+ "sizes": [
123
+ 50,
124
+ 50
125
+ ],
126
+ "count": 2,
127
+ "panels": [
128
+ {
129
+ "min": 80
130
+ },
131
+ {
132
+ "min": 80
133
+ }
134
+ ],
135
+ "expected": [
136
+ 50,
137
+ 50
138
+ ]
139
+ },
140
+ {
141
+ "name": "single-panel",
142
+ "sizes": [
143
+ 30
144
+ ],
145
+ "count": 1,
146
+ "expected": [
147
+ 100
148
+ ]
149
+ }
150
+ ],
151
+ "resize": [
152
+ {
153
+ "name": "grow-first",
154
+ "sizes": [
155
+ 40,
156
+ 30,
157
+ 30
158
+ ],
159
+ "handle": 0,
160
+ "delta": 10,
161
+ "expected": [
162
+ 50,
163
+ 20,
164
+ 30
165
+ ]
166
+ },
167
+ {
168
+ "name": "shrink-first",
169
+ "sizes": [
170
+ 40,
171
+ 30,
172
+ 30
173
+ ],
174
+ "handle": 0,
175
+ "delta": -10,
176
+ "expected": [
177
+ 30,
178
+ 40,
179
+ 30
180
+ ]
181
+ },
182
+ {
183
+ "name": "clamped-by-max",
184
+ "sizes": [
185
+ 40,
186
+ 30,
187
+ 30
188
+ ],
189
+ "handle": 0,
190
+ "delta": 40,
191
+ "panels": [
192
+ {
193
+ "min": 20,
194
+ "max": 60
195
+ },
196
+ {
197
+ "min": 10
198
+ },
199
+ {
200
+ "min": 15,
201
+ "collapsible": true
202
+ }
203
+ ],
204
+ "expected": [
205
+ 60,
206
+ 10,
207
+ 30
208
+ ]
209
+ },
210
+ {
211
+ "name": "clamped-by-neighbour-min",
212
+ "sizes": [
213
+ 40,
214
+ 30,
215
+ 30
216
+ ],
217
+ "handle": 0,
218
+ "delta": 25,
219
+ "panels": [
220
+ {
221
+ "min": 20,
222
+ "max": 60
223
+ },
224
+ {
225
+ "min": 10
226
+ },
227
+ {
228
+ "min": 15,
229
+ "collapsible": true
230
+ }
231
+ ],
232
+ "expected": [
233
+ 60,
234
+ 10,
235
+ 30
236
+ ]
237
+ },
238
+ {
239
+ "name": "clamped-by-own-min",
240
+ "sizes": [
241
+ 40,
242
+ 30,
243
+ 30
244
+ ],
245
+ "handle": 0,
246
+ "delta": -35,
247
+ "panels": [
248
+ {
249
+ "min": 20,
250
+ "max": 60
251
+ },
252
+ {
253
+ "min": 10
254
+ },
255
+ {
256
+ "min": 15,
257
+ "collapsible": true
258
+ }
259
+ ],
260
+ "expected": [
261
+ 20,
262
+ 50,
263
+ 30
264
+ ]
265
+ },
266
+ {
267
+ "name": "collapse-below-half-min",
268
+ "sizes": [
269
+ 40,
270
+ 30,
271
+ 30
272
+ ],
273
+ "handle": 1,
274
+ "delta": 25,
275
+ "panels": [
276
+ {
277
+ "min": 20,
278
+ "max": 60
279
+ },
280
+ {
281
+ "min": 10
282
+ },
283
+ {
284
+ "min": 15,
285
+ "collapsible": true
286
+ }
287
+ ],
288
+ "expected": [
289
+ 40,
290
+ 60,
291
+ 0
292
+ ]
293
+ },
294
+ {
295
+ "name": "no-collapse-above-half-min",
296
+ "sizes": [
297
+ 40,
298
+ 30,
299
+ 30
300
+ ],
301
+ "handle": 1,
302
+ "delta": 20,
303
+ "panels": [
304
+ {
305
+ "min": 20,
306
+ "max": 60
307
+ },
308
+ {
309
+ "min": 10
310
+ },
311
+ {
312
+ "min": 15,
313
+ "collapsible": true
314
+ }
315
+ ],
316
+ "expected": [
317
+ 40,
318
+ 45,
319
+ 15
320
+ ]
321
+ },
322
+ {
323
+ "name": "reopen-at-min",
324
+ "sizes": [
325
+ 40,
326
+ 60,
327
+ 0
328
+ ],
329
+ "handle": 1,
330
+ "delta": -8,
331
+ "panels": [
332
+ {
333
+ "min": 20,
334
+ "max": 60
335
+ },
336
+ {
337
+ "min": 10
338
+ },
339
+ {
340
+ "min": 15,
341
+ "collapsible": true
342
+ }
343
+ ],
344
+ "expected": [
345
+ 40,
346
+ 45,
347
+ 15
348
+ ]
349
+ },
350
+ {
351
+ "name": "stay-collapsed-small-drag",
352
+ "sizes": [
353
+ 40,
354
+ 60,
355
+ 0
356
+ ],
357
+ "handle": 1,
358
+ "delta": -5,
359
+ "panels": [
360
+ {
361
+ "min": 20,
362
+ "max": 60
363
+ },
364
+ {
365
+ "min": 10
366
+ },
367
+ {
368
+ "min": 15,
369
+ "collapsible": true
370
+ }
371
+ ],
372
+ "expected": [
373
+ 40,
374
+ 60,
375
+ 0
376
+ ]
377
+ },
378
+ {
379
+ "name": "reopen-follows-pointer",
380
+ "sizes": [
381
+ 0,
382
+ 100
383
+ ],
384
+ "handle": 0,
385
+ "delta": 50,
386
+ "panels": [
387
+ {
388
+ "min": 20,
389
+ "collapsible": true
390
+ },
391
+ {}
392
+ ],
393
+ "expected": [
394
+ 50,
395
+ 50
396
+ ]
397
+ },
398
+ {
399
+ "name": "reopen-second-follows-pointer",
400
+ "sizes": [
401
+ 100,
402
+ 0
403
+ ],
404
+ "handle": 0,
405
+ "delta": -50,
406
+ "panels": [
407
+ {},
408
+ {
409
+ "min": 20,
410
+ "collapsible": true
411
+ }
412
+ ],
413
+ "expected": [
414
+ 50,
415
+ 50
416
+ ]
417
+ },
418
+ {
419
+ "name": "reopen-clamped-by-max",
420
+ "sizes": [
421
+ 0,
422
+ 100
423
+ ],
424
+ "handle": 0,
425
+ "delta": 80,
426
+ "panels": [
427
+ {
428
+ "min": 20,
429
+ "max": 60,
430
+ "collapsible": true
431
+ },
432
+ {}
433
+ ],
434
+ "expected": [
435
+ 60,
436
+ 40
437
+ ]
438
+ },
439
+ {
440
+ "name": "bad-handle",
441
+ "sizes": [
442
+ 40,
443
+ 30,
444
+ 30
445
+ ],
446
+ "handle": 2,
447
+ "delta": 10,
448
+ "expected": [
449
+ 40,
450
+ 30,
451
+ 30
452
+ ]
453
+ }
454
+ ],
455
+ "keys": [
456
+ {
457
+ "name": "right-ltr",
458
+ "sizes": [
459
+ 50,
460
+ 50
461
+ ],
462
+ "handle": 0,
463
+ "key": "ArrowRight",
464
+ "orientation": "horizontal",
465
+ "direction": "ltr",
466
+ "expected": [
467
+ 60,
468
+ 40
469
+ ]
470
+ },
471
+ {
472
+ "name": "right-rtl",
473
+ "sizes": [
474
+ 50,
475
+ 50
476
+ ],
477
+ "handle": 0,
478
+ "key": "ArrowRight",
479
+ "orientation": "horizontal",
480
+ "direction": "rtl",
481
+ "expected": [
482
+ 40,
483
+ 60
484
+ ]
485
+ },
486
+ {
487
+ "name": "left-ltr",
488
+ "sizes": [
489
+ 50,
490
+ 50
491
+ ],
492
+ "handle": 0,
493
+ "key": "ArrowLeft",
494
+ "orientation": "horizontal",
495
+ "direction": "ltr",
496
+ "expected": [
497
+ 40,
498
+ 60
499
+ ]
500
+ },
501
+ {
502
+ "name": "down-vertical",
503
+ "sizes": [
504
+ 50,
505
+ 50
506
+ ],
507
+ "handle": 0,
508
+ "key": "ArrowDown",
509
+ "orientation": "vertical",
510
+ "direction": "ltr",
511
+ "expected": [
512
+ 60,
513
+ 40
514
+ ]
515
+ },
516
+ {
517
+ "name": "up-ignored-horizontal",
518
+ "sizes": [
519
+ 50,
520
+ 50
521
+ ],
522
+ "handle": 0,
523
+ "key": "ArrowUp",
524
+ "orientation": "horizontal",
525
+ "direction": "ltr",
526
+ "expected": [
527
+ 50,
528
+ 50
529
+ ]
530
+ },
531
+ {
532
+ "name": "home",
533
+ "sizes": [
534
+ 50,
535
+ 50
536
+ ],
537
+ "handle": 0,
538
+ "key": "Home",
539
+ "orientation": "horizontal",
540
+ "direction": "ltr",
541
+ "panels": [
542
+ {
543
+ "min": 25
544
+ },
545
+ {}
546
+ ],
547
+ "expected": [
548
+ 25,
549
+ 75
550
+ ]
551
+ },
552
+ {
553
+ "name": "end",
554
+ "sizes": [
555
+ 50,
556
+ 50
557
+ ],
558
+ "handle": 0,
559
+ "key": "End",
560
+ "orientation": "horizontal",
561
+ "direction": "ltr",
562
+ "panels": [
563
+ {
564
+ "max": 70
565
+ },
566
+ {}
567
+ ],
568
+ "expected": [
569
+ 70,
570
+ 30
571
+ ]
572
+ },
573
+ {
574
+ "name": "enter-collapses-first",
575
+ "sizes": [
576
+ 30,
577
+ 70
578
+ ],
579
+ "handle": 0,
580
+ "key": "Enter",
581
+ "orientation": "horizontal",
582
+ "direction": "ltr",
583
+ "panels": [
584
+ {
585
+ "min": 20,
586
+ "collapsible": true
587
+ },
588
+ {}
589
+ ],
590
+ "expected": [
591
+ 0,
592
+ 100
593
+ ]
594
+ },
595
+ {
596
+ "name": "enter-reopens-first",
597
+ "sizes": [
598
+ 0,
599
+ 100
600
+ ],
601
+ "handle": 0,
602
+ "key": "Enter",
603
+ "orientation": "horizontal",
604
+ "direction": "ltr",
605
+ "panels": [
606
+ {
607
+ "min": 20,
608
+ "collapsible": true
609
+ },
610
+ {}
611
+ ],
612
+ "expected": [
613
+ 20,
614
+ 80
615
+ ]
616
+ },
617
+ {
618
+ "name": "enter-collapses-second",
619
+ "sizes": [
620
+ 70,
621
+ 30
622
+ ],
623
+ "handle": 0,
624
+ "key": "Enter",
625
+ "orientation": "horizontal",
626
+ "direction": "ltr",
627
+ "panels": [
628
+ {},
629
+ {
630
+ "min": 20,
631
+ "collapsible": true
632
+ }
633
+ ],
634
+ "expected": [
635
+ 100,
636
+ 0
637
+ ]
638
+ },
639
+ {
640
+ "name": "enter-noop",
641
+ "sizes": [
642
+ 50,
643
+ 50
644
+ ],
645
+ "handle": 0,
646
+ "key": "Enter",
647
+ "orientation": "horizontal",
648
+ "direction": "ltr",
649
+ "expected": [
650
+ 50,
651
+ 50
652
+ ]
653
+ }
654
+ ],
655
+ "extents": [
656
+ {
657
+ "name": "two-panels",
658
+ "sizes": [
659
+ 30,
660
+ 70
661
+ ],
662
+ "container": 401,
663
+ "handle": 1,
664
+ "expected": [
665
+ 120,
666
+ 280
667
+ ]
668
+ },
669
+ {
670
+ "name": "three-panels-thick-handle",
671
+ "sizes": [
672
+ 25,
673
+ 25,
674
+ 50
675
+ ],
676
+ "container": 1000,
677
+ "handle": 2,
678
+ "expected": [
679
+ 249,
680
+ 249,
681
+ 498
682
+ ]
683
+ }
684
+ ],
685
+ "drag": [
686
+ {
687
+ "name": "ltr-right",
688
+ "px": 40,
689
+ "container": 401,
690
+ "panels": 2,
691
+ "orientation": "horizontal",
692
+ "direction": "ltr",
693
+ "expected": 10
694
+ },
695
+ {
696
+ "name": "rtl-right-shrinks-first",
697
+ "px": 40,
698
+ "container": 401,
699
+ "panels": 2,
700
+ "orientation": "horizontal",
701
+ "direction": "rtl",
702
+ "expected": -10
703
+ },
704
+ {
705
+ "name": "vertical-ignores-rtl",
706
+ "px": -50,
707
+ "container": 501,
708
+ "panels": 2,
709
+ "orientation": "vertical",
710
+ "direction": "rtl",
711
+ "expected": -10
712
+ }
713
+ ]
714
+ }