@exponential_app/eui 0.2.1 → 0.4.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 (452) hide show
  1. package/catalog/a11y.json +25 -1
  2. package/catalog/core.catalog.json +426 -6
  3. package/catalog/core.schema.json +634 -4
  4. package/catalog/host.json +10 -0
  5. package/catalog/layout.json +3 -2
  6. package/catalog/limits.json +10 -1
  7. package/catalog/macros.json +542 -1
  8. package/catalog/recipes.json +4 -2
  9. package/catalog/strings.json +14 -2
  10. package/catalog/style.json +21 -0
  11. package/catalog/theme.schema.json +3950 -1337
  12. package/conformance/manifest.json +5 -5
  13. package/conformance/motion/build-corpus.ts +232 -0
  14. package/conformance/motion/corpus/SOURCES.md +117 -0
  15. package/conformance/motion/corpus/images/footage_0.json +1 -0
  16. package/conformance/motion/corpus/images/img_0.jpg +0 -0
  17. package/conformance/motion/corpus/images/img_1.jpg +0 -0
  18. package/conformance/motion/corpus/images/triangle.png +0 -0
  19. package/conformance/motion/corpus/skottie-3d-parenting-nocamera.json +367 -0
  20. package/conformance/motion/corpus/skottie-auto-orient-2.json +292 -0
  21. package/conformance/motion/corpus/skottie-auto-orient.json +717 -0
  22. package/conformance/motion/corpus/skottie-bezier-extranormal.json +199 -0
  23. package/conformance/motion/corpus/skottie-blendmode-hardmix.json +558 -0
  24. package/conformance/motion/corpus/skottie-chained-mattes.json +259 -0
  25. package/conformance/motion/corpus/skottie-dropshadow-ramp.json +852 -0
  26. package/conformance/motion/corpus/skottie-dropshadow-style.json +278 -0
  27. package/conformance/motion/corpus/skottie-effects-transform.json +385 -0
  28. package/conformance/motion/corpus/skottie-fill-effect.json +358 -0
  29. package/conformance/motion/corpus/skottie-fill-rule.json +457 -0
  30. package/conformance/motion/corpus/skottie-gaussian-blur.json +670 -0
  31. package/conformance/motion/corpus/skottie-gradient-opacity.json +451 -0
  32. package/conformance/motion/corpus/skottie-gradient-radial-highlight.json +581 -0
  33. package/conformance/motion/corpus/skottie-hidden-shapes-layers.json +381 -0
  34. package/conformance/motion/corpus/skottie-huesaturation-effect.json +1117 -0
  35. package/conformance/motion/corpus/skottie-invert-effect.json +665 -0
  36. package/conformance/motion/corpus/skottie-luma-matte.json +239 -0
  37. package/conformance/motion/corpus/skottie-mask-feather.json +892 -0
  38. package/conformance/motion/corpus/skottie-masking-opaque.json +2376 -0
  39. package/conformance/motion/corpus/skottie-masking-translucent.json +2376 -0
  40. package/conformance/motion/corpus/skottie-matte-blendmode.json +196 -0
  41. package/conformance/motion/corpus/skottie-matte-nonsequential.json +722 -0
  42. package/conformance/motion/corpus/skottie-matte-visible.json +666 -0
  43. package/conformance/motion/corpus/skottie-mergepaths-effect.json +722 -0
  44. package/conformance/motion/corpus/skottie-motion-blur-mask.json +120 -0
  45. package/conformance/motion/corpus/skottie-nested-animation.json +253 -0
  46. package/conformance/motion/corpus/skottie-offsetpaths-effect.json +525 -0
  47. package/conformance/motion/corpus/skottie-phonehub-connecting.json +947 -0
  48. package/conformance/motion/corpus/skottie-puckerbloat-effect.json +339 -0
  49. package/conformance/motion/corpus/skottie-repeater.json +234 -0
  50. package/conformance/motion/corpus/skottie-sample-1.json +168 -0
  51. package/conformance/motion/corpus/skottie-sample-search.json +329 -0
  52. package/conformance/motion/corpus/skottie-spatial-supernormal.json +898 -0
  53. package/conformance/motion/corpus/skottie-text-animator-1.json +1286 -0
  54. package/conformance/motion/corpus/skottie-text-fill-over-stroke.json +1014 -0
  55. package/conformance/motion/corpus/skottie-text-tracking.json +950 -0
  56. package/conformance/motion/corpus/skottie-text-valign.json +484 -0
  57. package/conformance/motion/corpus/skottie-time-reverse.json +297 -0
  58. package/conformance/motion/corpus/skottie-transform-skew.json +290 -0
  59. package/conformance/motion/corpus/skottie-trimpath-fill.json +933 -0
  60. package/conformance/motion/corpus/skottie-trimpath-modes.json +266 -0
  61. package/conformance/motion/corpus/skottie-tritone-effect.json +379 -0
  62. package/conformance/motion/corpus/spec-blend-mode.json +531 -0
  63. package/conformance/motion/corpus/spec-ellipse.json +142 -0
  64. package/conformance/motion/corpus/spec-fill.json +193 -0
  65. package/conformance/motion/corpus/spec-gradient-stroke.json +1263 -0
  66. package/conformance/motion/corpus/spec-gradient.json +1255 -0
  67. package/conformance/motion/corpus/spec-mask.json +773 -0
  68. package/conformance/motion/corpus/spec-masks.json +676 -0
  69. package/conformance/motion/corpus/spec-matte.json +390 -0
  70. package/conformance/motion/corpus/spec-metadata.json +1 -0
  71. package/conformance/motion/corpus/spec-path.json +177 -0
  72. package/conformance/motion/corpus/spec-pucker-bloat.json +179 -0
  73. package/conformance/motion/corpus/spec-rectangle.json +145 -0
  74. package/conformance/motion/corpus/spec-rounded-corners.json +187 -0
  75. package/conformance/motion/corpus/spec-slots.json +325 -0
  76. package/conformance/motion/corpus/spec-star.json +159 -0
  77. package/conformance/motion/corpus/spec-stroke.json +156 -0
  78. package/conformance/motion/corpus/spec-test-ellipse-xy-pos.json +141 -0
  79. package/conformance/motion/corpus/spec-test-gradient-fill.json +1 -0
  80. package/conformance/motion/corpus/spec-test-gradient-stroke.json +229 -0
  81. package/conformance/motion/corpus/spec-test-unknown-shape.json +63 -0
  82. package/conformance/motion/corpus/spec-time-remap.json +1090 -0
  83. package/conformance/motion/corpus/spec-time-stretch.json +594 -0
  84. package/conformance/motion/corpus/spec-transform.json +273 -0
  85. package/conformance/motion/corpus/spec-trim-path.json +209 -0
  86. package/conformance/motion/corpus/web-adrock.json +1 -0
  87. package/conformance/motion/corpus/web-bacon.json +1 -0
  88. package/conformance/motion/corpus/web-banner.json +1 -0
  89. package/conformance/motion/corpus/web-bodymovin.json +1 -0
  90. package/conformance/motion/corpus/web-dalek.json +1 -0
  91. package/conformance/motion/corpus/web-footage-data.json +1 -0
  92. package/conformance/motion/corpus/web-lights.json +1 -0
  93. package/conformance/motion/corpus/web-ripple.json +1 -0
  94. package/conformance/motion/corpus/web-starfish.json +1 -0
  95. package/conformance/motion/known-gaps.json +35 -0
  96. package/conformance/motion/parity/group-transforms-parenting@0.png +0 -0
  97. package/conformance/motion/parity/group-transforms-parenting@10.png +0 -0
  98. package/conformance/motion/parity/hidden-unknown-inactive@0.png +0 -0
  99. package/conformance/motion/parity/keyframes-transform@0.png +0 -0
  100. package/conformance/motion/parity/keyframes-transform@10.png +0 -0
  101. package/conformance/motion/parity/keyframes-transform@15.png +0 -0
  102. package/conformance/motion/parity/keyframes-transform@5.png +0 -0
  103. package/conformance/motion/parity/layer-opacity-blend@0.png +0 -0
  104. package/conformance/motion/parity/linear-gradient@0.png +0 -0
  105. package/conformance/motion/parity/masks-modes@0.png +0 -0
  106. package/conformance/motion/parity/matte-alpha@0.png +0 -0
  107. package/conformance/motion/parity/matte-luma@0.png +0 -0
  108. package/conformance/motion/parity/matte-parent-tp@0.png +0 -0
  109. package/conformance/motion/parity/path-evenodd@0.png +0 -0
  110. package/conformance/motion/parity/precomp-clip-offset@0.png +0 -0
  111. package/conformance/motion/parity/precomp-clip-offset@15.png +0 -0
  112. package/conformance/motion/parity/precomp-clip-offset@5.png +0 -0
  113. package/conformance/motion/parity/radial-gradient-highlight@0.png +0 -0
  114. package/conformance/motion/parity/rect-solid-fill@0.png +0 -0
  115. package/conformance/motion/parity/repeater@0.png +0 -0
  116. package/conformance/motion/parity/rounded-rect-ellipse@0.png +0 -0
  117. package/conformance/motion/parity/solid-and-image@0.png +0 -0
  118. package/conformance/motion/parity/split-position-skew@0.png +0 -0
  119. package/conformance/motion/parity/split-position-skew@10.png +0 -0
  120. package/conformance/motion/parity/star-polygon@0.png +0 -0
  121. package/conformance/motion/parity/stroke-caps-joins@0.png +0 -0
  122. package/conformance/motion/parity/stroke-dashes@0.png +0 -0
  123. package/conformance/motion/parity/stroke-dashes@10.png +0 -0
  124. package/conformance/motion/parity/time-remap@0.png +0 -0
  125. package/conformance/motion/parity/time-remap@10.png +0 -0
  126. package/conformance/motion/parity/time-remap@19.png +0 -0
  127. package/conformance/motion/parity/time-stretch@0.png +0 -0
  128. package/conformance/motion/parity/time-stretch@10.png +0 -0
  129. package/conformance/motion/parity/trim-individually@0.png +0 -0
  130. package/conformance/motion/parity/trim-path@0.png +0 -0
  131. package/conformance/motion/parity/trim-path@10.png +0 -0
  132. package/conformance/motion/refs/index.json +688 -0
  133. package/conformance/motion/refs/skottie-3d-parenting-nocamera@0.png +0 -0
  134. package/conformance/motion/refs/skottie-3d-parenting-nocamera@150.png +0 -0
  135. package/conformance/motion/refs/skottie-3d-parenting-nocamera@270.png +0 -0
  136. package/conformance/motion/refs/skottie-auto-orient-2@0.png +0 -0
  137. package/conformance/motion/refs/skottie-auto-orient-2@210.png +0 -0
  138. package/conformance/motion/refs/skottie-auto-orient-2@378.png +0 -0
  139. package/conformance/motion/refs/skottie-auto-orient@0.png +0 -0
  140. package/conformance/motion/refs/skottie-auto-orient@300.png +0 -0
  141. package/conformance/motion/refs/skottie-auto-orient@540.png +0 -0
  142. package/conformance/motion/refs/skottie-bezier-extranormal@0.png +0 -0
  143. package/conformance/motion/refs/skottie-bezier-extranormal@150.png +0 -0
  144. package/conformance/motion/refs/skottie-bezier-extranormal@270.png +0 -0
  145. package/conformance/motion/refs/skottie-blendmode-hardmix@0.png +0 -0
  146. package/conformance/motion/refs/skottie-blendmode-hardmix@150.png +0 -0
  147. package/conformance/motion/refs/skottie-blendmode-hardmix@270.png +0 -0
  148. package/conformance/motion/refs/skottie-chained-mattes@0.png +0 -0
  149. package/conformance/motion/refs/skottie-chained-mattes@300.png +0 -0
  150. package/conformance/motion/refs/skottie-chained-mattes@540.png +0 -0
  151. package/conformance/motion/refs/skottie-dropshadow-ramp@0.png +0 -0
  152. package/conformance/motion/refs/skottie-dropshadow-ramp@135.png +0 -0
  153. package/conformance/motion/refs/skottie-dropshadow-ramp@75.png +0 -0
  154. package/conformance/motion/refs/skottie-dropshadow-style@0.png +0 -0
  155. package/conformance/motion/refs/skottie-dropshadow-style@300.png +0 -0
  156. package/conformance/motion/refs/skottie-dropshadow-style@540.png +0 -0
  157. package/conformance/motion/refs/skottie-effects-transform@0.png +0 -0
  158. package/conformance/motion/refs/skottie-effects-transform@450.png +0 -0
  159. package/conformance/motion/refs/skottie-effects-transform@810.png +0 -0
  160. package/conformance/motion/refs/skottie-fill-effect@0.png +0 -0
  161. package/conformance/motion/refs/skottie-fill-effect@300.png +0 -0
  162. package/conformance/motion/refs/skottie-fill-effect@540.png +0 -0
  163. package/conformance/motion/refs/skottie-fill-rule@0.png +0 -0
  164. package/conformance/motion/refs/skottie-fill-rule@150.png +0 -0
  165. package/conformance/motion/refs/skottie-fill-rule@270.png +0 -0
  166. package/conformance/motion/refs/skottie-gaussian-blur@0.png +0 -0
  167. package/conformance/motion/refs/skottie-gaussian-blur@150.png +0 -0
  168. package/conformance/motion/refs/skottie-gaussian-blur@270.png +0 -0
  169. package/conformance/motion/refs/skottie-gradient-opacity@0.png +0 -0
  170. package/conformance/motion/refs/skottie-gradient-opacity@150.png +0 -0
  171. package/conformance/motion/refs/skottie-gradient-opacity@270.png +0 -0
  172. package/conformance/motion/refs/skottie-gradient-radial-highlight@0.png +0 -0
  173. package/conformance/motion/refs/skottie-gradient-radial-highlight@135.png +0 -0
  174. package/conformance/motion/refs/skottie-gradient-radial-highlight@75.png +0 -0
  175. package/conformance/motion/refs/skottie-hidden-shapes-layers@0.png +0 -0
  176. package/conformance/motion/refs/skottie-hidden-shapes-layers@150.png +0 -0
  177. package/conformance/motion/refs/skottie-hidden-shapes-layers@270.png +0 -0
  178. package/conformance/motion/refs/skottie-huesaturation-effect@0.png +0 -0
  179. package/conformance/motion/refs/skottie-huesaturation-effect@30.png +0 -0
  180. package/conformance/motion/refs/skottie-huesaturation-effect@54.png +0 -0
  181. package/conformance/motion/refs/skottie-invert-effect@0.png +0 -0
  182. package/conformance/motion/refs/skottie-invert-effect@300.png +0 -0
  183. package/conformance/motion/refs/skottie-invert-effect@540.png +0 -0
  184. package/conformance/motion/refs/skottie-luma-matte@0.png +0 -0
  185. package/conformance/motion/refs/skottie-luma-matte@150.png +0 -0
  186. package/conformance/motion/refs/skottie-luma-matte@270.png +0 -0
  187. package/conformance/motion/refs/skottie-mask-feather@0.png +0 -0
  188. package/conformance/motion/refs/skottie-mask-feather@150.png +0 -0
  189. package/conformance/motion/refs/skottie-mask-feather@270.png +0 -0
  190. package/conformance/motion/refs/skottie-masking-opaque@0.png +0 -0
  191. package/conformance/motion/refs/skottie-masking-opaque@135.png +0 -0
  192. package/conformance/motion/refs/skottie-masking-opaque@75.png +0 -0
  193. package/conformance/motion/refs/skottie-masking-translucent@0.png +0 -0
  194. package/conformance/motion/refs/skottie-masking-translucent@135.png +0 -0
  195. package/conformance/motion/refs/skottie-masking-translucent@75.png +0 -0
  196. package/conformance/motion/refs/skottie-matte-blendmode@0.png +0 -0
  197. package/conformance/motion/refs/skottie-matte-blendmode@150.png +0 -0
  198. package/conformance/motion/refs/skottie-matte-blendmode@270.png +0 -0
  199. package/conformance/motion/refs/skottie-matte-nonsequential@0.png +0 -0
  200. package/conformance/motion/refs/skottie-matte-nonsequential@150.png +0 -0
  201. package/conformance/motion/refs/skottie-matte-nonsequential@270.png +0 -0
  202. package/conformance/motion/refs/skottie-matte-visible@0.png +0 -0
  203. package/conformance/motion/refs/skottie-matte-visible@150.png +0 -0
  204. package/conformance/motion/refs/skottie-matte-visible@270.png +0 -0
  205. package/conformance/motion/refs/skottie-mergepaths-effect@0.png +0 -0
  206. package/conformance/motion/refs/skottie-mergepaths-effect@210.png +0 -0
  207. package/conformance/motion/refs/skottie-mergepaths-effect@378.png +0 -0
  208. package/conformance/motion/refs/skottie-motion-blur-mask@0.png +0 -0
  209. package/conformance/motion/refs/skottie-motion-blur-mask@150.png +0 -0
  210. package/conformance/motion/refs/skottie-motion-blur-mask@270.png +0 -0
  211. package/conformance/motion/refs/skottie-nested-animation@0.png +0 -0
  212. package/conformance/motion/refs/skottie-nested-animation@300.png +0 -0
  213. package/conformance/motion/refs/skottie-nested-animation@540.png +0 -0
  214. package/conformance/motion/refs/skottie-offsetpaths-effect@0.png +0 -0
  215. package/conformance/motion/refs/skottie-offsetpaths-effect@150.png +0 -0
  216. package/conformance/motion/refs/skottie-offsetpaths-effect@270.png +0 -0
  217. package/conformance/motion/refs/skottie-phonehub-connecting@0.png +0 -0
  218. package/conformance/motion/refs/skottie-puckerbloat-effect@0.png +0 -0
  219. package/conformance/motion/refs/skottie-puckerbloat-effect@210.png +0 -0
  220. package/conformance/motion/refs/skottie-puckerbloat-effect@378.png +0 -0
  221. package/conformance/motion/refs/skottie-repeater@0.png +0 -0
  222. package/conformance/motion/refs/skottie-repeater@300.png +0 -0
  223. package/conformance/motion/refs/skottie-repeater@540.png +0 -0
  224. package/conformance/motion/refs/skottie-sample-1@0.png +0 -0
  225. package/conformance/motion/refs/skottie-sample-1@100.png +0 -0
  226. package/conformance/motion/refs/skottie-sample-1@180.png +0 -0
  227. package/conformance/motion/refs/skottie-sample-search@0.png +0 -0
  228. package/conformance/motion/refs/skottie-sample-search@27.png +0 -0
  229. package/conformance/motion/refs/skottie-sample-search@48.png +0 -0
  230. package/conformance/motion/refs/skottie-spatial-supernormal@0.png +0 -0
  231. package/conformance/motion/refs/skottie-spatial-supernormal@200.png +0 -0
  232. package/conformance/motion/refs/skottie-spatial-supernormal@360.png +0 -0
  233. package/conformance/motion/refs/skottie-text-animator-1@0.png +0 -0
  234. package/conformance/motion/refs/skottie-text-animator-1@150.png +0 -0
  235. package/conformance/motion/refs/skottie-text-animator-1@270.png +0 -0
  236. package/conformance/motion/refs/skottie-text-fill-over-stroke@0.png +0 -0
  237. package/conformance/motion/refs/skottie-text-fill-over-stroke@210.png +0 -0
  238. package/conformance/motion/refs/skottie-text-fill-over-stroke@378.png +0 -0
  239. package/conformance/motion/refs/skottie-text-tracking@0.png +0 -0
  240. package/conformance/motion/refs/skottie-text-tracking@108.png +0 -0
  241. package/conformance/motion/refs/skottie-text-tracking@60.png +0 -0
  242. package/conformance/motion/refs/skottie-text-valign@0.png +0 -0
  243. package/conformance/motion/refs/skottie-text-valign@150.png +0 -0
  244. package/conformance/motion/refs/skottie-text-valign@270.png +0 -0
  245. package/conformance/motion/refs/skottie-time-reverse@0.png +0 -0
  246. package/conformance/motion/refs/skottie-time-reverse@300.png +0 -0
  247. package/conformance/motion/refs/skottie-time-reverse@540.png +0 -0
  248. package/conformance/motion/refs/skottie-transform-skew@0.png +0 -0
  249. package/conformance/motion/refs/skottie-transform-skew@300.png +0 -0
  250. package/conformance/motion/refs/skottie-transform-skew@540.png +0 -0
  251. package/conformance/motion/refs/skottie-trimpath-fill@0.png +0 -0
  252. package/conformance/motion/refs/skottie-trimpath-fill@300.png +0 -0
  253. package/conformance/motion/refs/skottie-trimpath-fill@540.png +0 -0
  254. package/conformance/motion/refs/skottie-trimpath-modes@0.png +0 -0
  255. package/conformance/motion/refs/skottie-trimpath-modes@300.png +0 -0
  256. package/conformance/motion/refs/skottie-trimpath-modes@540.png +0 -0
  257. package/conformance/motion/refs/skottie-tritone-effect@0.png +0 -0
  258. package/conformance/motion/refs/skottie-tritone-effect@300.png +0 -0
  259. package/conformance/motion/refs/skottie-tritone-effect@540.png +0 -0
  260. package/conformance/motion/refs/spec-blend-mode@0.png +0 -0
  261. package/conformance/motion/refs/spec-blend-mode@162.png +0 -0
  262. package/conformance/motion/refs/spec-blend-mode@90.png +0 -0
  263. package/conformance/motion/refs/spec-ellipse@0.png +0 -0
  264. package/conformance/motion/refs/spec-ellipse@162.png +0 -0
  265. package/conformance/motion/refs/spec-ellipse@90.png +0 -0
  266. package/conformance/motion/refs/spec-fill@0.png +0 -0
  267. package/conformance/motion/refs/spec-fill@162.png +0 -0
  268. package/conformance/motion/refs/spec-fill@90.png +0 -0
  269. package/conformance/motion/refs/spec-gradient-stroke@0.png +0 -0
  270. package/conformance/motion/refs/spec-gradient-stroke@162.png +0 -0
  271. package/conformance/motion/refs/spec-gradient-stroke@90.png +0 -0
  272. package/conformance/motion/refs/spec-gradient@0.png +0 -0
  273. package/conformance/motion/refs/spec-gradient@162.png +0 -0
  274. package/conformance/motion/refs/spec-gradient@90.png +0 -0
  275. package/conformance/motion/refs/spec-mask@0.png +0 -0
  276. package/conformance/motion/refs/spec-mask@300.png +0 -0
  277. package/conformance/motion/refs/spec-mask@540.png +0 -0
  278. package/conformance/motion/refs/spec-masks@0.png +0 -0
  279. package/conformance/motion/refs/spec-masks@135.png +0 -0
  280. package/conformance/motion/refs/spec-masks@75.png +0 -0
  281. package/conformance/motion/refs/spec-matte@0.png +0 -0
  282. package/conformance/motion/refs/spec-matte@162.png +0 -0
  283. package/conformance/motion/refs/spec-matte@90.png +0 -0
  284. package/conformance/motion/refs/spec-metadata@0.png +0 -0
  285. package/conformance/motion/refs/spec-metadata@162.png +0 -0
  286. package/conformance/motion/refs/spec-metadata@90.png +0 -0
  287. package/conformance/motion/refs/spec-path@0.png +0 -0
  288. package/conformance/motion/refs/spec-path@162.png +0 -0
  289. package/conformance/motion/refs/spec-path@90.png +0 -0
  290. package/conformance/motion/refs/spec-pucker-bloat@0.png +0 -0
  291. package/conformance/motion/refs/spec-pucker-bloat@162.png +0 -0
  292. package/conformance/motion/refs/spec-pucker-bloat@90.png +0 -0
  293. package/conformance/motion/refs/spec-rectangle@0.png +0 -0
  294. package/conformance/motion/refs/spec-rectangle@162.png +0 -0
  295. package/conformance/motion/refs/spec-rectangle@90.png +0 -0
  296. package/conformance/motion/refs/spec-rounded-corners@0.png +0 -0
  297. package/conformance/motion/refs/spec-rounded-corners@162.png +0 -0
  298. package/conformance/motion/refs/spec-rounded-corners@90.png +0 -0
  299. package/conformance/motion/refs/spec-slots@0.png +0 -0
  300. package/conformance/motion/refs/spec-slots@450.png +0 -0
  301. package/conformance/motion/refs/spec-slots@810.png +0 -0
  302. package/conformance/motion/refs/spec-star@0.png +0 -0
  303. package/conformance/motion/refs/spec-star@162.png +0 -0
  304. package/conformance/motion/refs/spec-star@90.png +0 -0
  305. package/conformance/motion/refs/spec-stroke@0.png +0 -0
  306. package/conformance/motion/refs/spec-stroke@162.png +0 -0
  307. package/conformance/motion/refs/spec-stroke@90.png +0 -0
  308. package/conformance/motion/refs/spec-test-ellipse-xy-pos@0.png +0 -0
  309. package/conformance/motion/refs/spec-test-ellipse-xy-pos@162.png +0 -0
  310. package/conformance/motion/refs/spec-test-ellipse-xy-pos@90.png +0 -0
  311. package/conformance/motion/refs/spec-test-gradient-fill@0.png +0 -0
  312. package/conformance/motion/refs/spec-test-gradient-fill@30.png +0 -0
  313. package/conformance/motion/refs/spec-test-gradient-fill@54.png +0 -0
  314. package/conformance/motion/refs/spec-test-gradient-stroke@0.png +0 -0
  315. package/conformance/motion/refs/spec-test-gradient-stroke@30.png +0 -0
  316. package/conformance/motion/refs/spec-test-gradient-stroke@54.png +0 -0
  317. package/conformance/motion/refs/spec-test-unknown-shape@0.png +0 -0
  318. package/conformance/motion/refs/spec-test-unknown-shape@162.png +0 -0
  319. package/conformance/motion/refs/spec-test-unknown-shape@90.png +0 -0
  320. package/conformance/motion/refs/spec-time-remap@0.png +0 -0
  321. package/conformance/motion/refs/spec-time-remap@300.png +0 -0
  322. package/conformance/motion/refs/spec-time-remap@540.png +0 -0
  323. package/conformance/motion/refs/spec-time-stretch@0.png +0 -0
  324. package/conformance/motion/refs/spec-time-stretch@300.png +0 -0
  325. package/conformance/motion/refs/spec-time-stretch@540.png +0 -0
  326. package/conformance/motion/refs/spec-transform@0.png +0 -0
  327. package/conformance/motion/refs/spec-transform@162.png +0 -0
  328. package/conformance/motion/refs/spec-transform@90.png +0 -0
  329. package/conformance/motion/refs/spec-trim-path@0.png +0 -0
  330. package/conformance/motion/refs/spec-trim-path@162.png +0 -0
  331. package/conformance/motion/refs/spec-trim-path@90.png +0 -0
  332. package/conformance/motion/refs/web-adrock@0.png +0 -0
  333. package/conformance/motion/refs/web-adrock@10.png +0 -0
  334. package/conformance/motion/refs/web-adrock@18.png +0 -0
  335. package/conformance/motion/refs/web-bacon@0.png +0 -0
  336. package/conformance/motion/refs/web-bacon@126.png +0 -0
  337. package/conformance/motion/refs/web-bacon@70.png +0 -0
  338. package/conformance/motion/refs/web-banner@0.png +0 -0
  339. package/conformance/motion/refs/web-banner@301.png +0 -0
  340. package/conformance/motion/refs/web-banner@542.png +0 -0
  341. package/conformance/motion/refs/web-bodymovin@0.png +0 -0
  342. package/conformance/motion/refs/web-bodymovin@51.png +0 -0
  343. package/conformance/motion/refs/web-bodymovin@92.png +0 -0
  344. package/conformance/motion/refs/web-dalek@0.png +0 -0
  345. package/conformance/motion/refs/web-dalek@145.png +0 -0
  346. package/conformance/motion/refs/web-dalek@261.png +0 -0
  347. package/conformance/motion/refs/web-footage-data@0.png +0 -0
  348. package/conformance/motion/refs/web-footage-data@180.png +0 -0
  349. package/conformance/motion/refs/web-footage-data@324.png +0 -0
  350. package/conformance/motion/refs/web-lights@0.png +0 -0
  351. package/conformance/motion/refs/web-lights@150.png +0 -0
  352. package/conformance/motion/refs/web-lights@270.png +0 -0
  353. package/conformance/motion/refs/web-ripple@0.png +0 -0
  354. package/conformance/motion/refs/web-ripple@180.png +0 -0
  355. package/conformance/motion/refs/web-ripple@324.png +0 -0
  356. package/conformance/motion/refs/web-starfish@0.png +0 -0
  357. package/conformance/motion/refs/web-starfish@150.png +0 -0
  358. package/conformance/motion/refs/web-starfish@270.png +0 -0
  359. package/conformance/motion/render-refs.ts +126 -0
  360. package/conformance/motion/report.json +1367 -0
  361. package/conformance/motion/web-parity-gaps.json +12 -0
  362. package/conformance/motion-parity-entry.ts +3 -0
  363. package/conformance/motion-parity.ts +101 -0
  364. package/dist/chunks/{index-gtk2gwsb.js → index-4xczxey5.js} +187 -40
  365. package/dist/chunks/{index-gtk2gwsb.js.map → index-4xczxey5.js.map} +7 -6
  366. package/dist/chunks/{index-62yzr94z.js → index-5sjj5p84.js} +270 -8
  367. package/dist/chunks/{index-62yzr94z.js.map → index-5sjj5p84.js.map} +2 -2
  368. package/dist/chunks/{index-fy7y2nz8.js → index-cvf7bbs5.js} +23 -2
  369. package/dist/chunks/{index-fy7y2nz8.js.map → index-cvf7bbs5.js.map} +1 -1
  370. package/dist/chunks/index-dgkf6yw5.js +48 -0
  371. package/dist/chunks/index-dgkf6yw5.js.map +10 -0
  372. package/dist/chunks/{index-5fmaa0xq.js → index-f9wkb6aq.js} +851 -36
  373. package/dist/chunks/{index-5fmaa0xq.js.map → index-f9wkb6aq.js.map} +2 -2
  374. package/dist/chunks/index-t2mwfbb6.js +1515 -0
  375. package/dist/chunks/index-t2mwfbb6.js.map +15 -0
  376. package/dist/chunks/{index-bg2jsgjq.js → index-vkn82srs.js} +479 -10
  377. package/dist/chunks/{index-bg2jsgjq.js.map → index-vkn82srs.js.map} +2 -2
  378. package/dist/chunks/wasm-ctcc3cma.js +424 -0
  379. package/dist/chunks/wasm-ctcc3cma.js.map +11 -0
  380. package/dist/conformance.js +10941 -563
  381. package/dist/conformance.js.map +2 -2
  382. package/dist/entries/prompt.js +2 -2
  383. package/dist/entries/schema.js +3 -3
  384. package/dist/host/index.js +20 -4
  385. package/dist/host/index.js.map +1 -1
  386. package/dist/index.js +364 -99
  387. package/dist/index.js.map +4 -4
  388. package/dist/types/src/catalog.generated.d.ts +71 -5
  389. package/dist/types/src/host/contract.d.ts +17 -0
  390. package/dist/types/src/host/exposes.d.ts +68 -0
  391. package/dist/types/src/host/index.d.ts +1 -0
  392. package/dist/types/src/host/package.d.ts +8 -0
  393. package/dist/types/src/index.d.ts +2 -0
  394. package/dist/types/src/layout.d.ts +2 -0
  395. package/dist/types/src/limits.d.ts +1 -0
  396. package/dist/types/src/motion/index.d.ts +1 -0
  397. package/dist/types/src/motion/server.d.ts +9 -0
  398. package/dist/types/src/motion/wasm.d.ts +11 -0
  399. package/dist/types/src/web/coerce.d.ts +3 -0
  400. package/dist/types/src/web/focus.d.ts +8 -0
  401. package/dist/types/src/web/index.d.ts +5 -2
  402. package/dist/types/src/web/primitives/carousel.d.ts +17 -0
  403. package/dist/types/src/web/primitives/dock.d.ts +5 -2
  404. package/dist/types/src/web/primitives/index.d.ts +5 -0
  405. package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
  406. package/dist/types/src/web/primitives/motion-paint.d.ts +36 -0
  407. package/dist/types/src/web/primitives/motion.d.ts +162 -0
  408. package/dist/types/src/web/primitives/outline.d.ts +22 -0
  409. package/dist/types/src/web/primitives/zoomable-image.d.ts +158 -0
  410. package/dist/types/src/web/table.d.ts +8 -0
  411. package/dist/types/src/zoom.d.ts +128 -0
  412. package/dist/types/wasm/motion/bytes.d.ts +1 -0
  413. package/dist/web/index.js +171 -230
  414. package/dist/web/index.js.map +9 -10
  415. package/dist/web/primitives/index.js +641 -6
  416. package/dist/web/primitives/index.js.map +9 -5
  417. package/docs/components.generated.json +542 -5
  418. package/docs/package-format.md +56 -1
  419. package/docs/round-6-contract.md +110 -0
  420. package/docs/themes.generated.json +66 -2
  421. package/fixtures/bind-time.json +1468 -0
  422. package/fixtures/catalog-components.json +1026 -16
  423. package/fixtures/catalog-macros.json +1279 -157
  424. package/fixtures/conformance-baseline.json +48893 -47200
  425. package/fixtures/conformance-known.json +140 -134
  426. package/fixtures/host-router.json +539 -1
  427. package/fixtures/kitchen-sink.expanded.json +686 -1
  428. package/fixtures/kitchen-sink.json +102 -1
  429. package/fixtures/layout-geometry-round1.json +42 -42
  430. package/fixtures/motion-frames.json +2618 -0
  431. package/fixtures/motion-playback.json +528 -0
  432. package/fixtures/motion-state.json +722 -0
  433. package/fixtures/motion-validate.json +138 -0
  434. package/fixtures/primitive-specimens.json +4 -0
  435. package/fixtures/prompt-budget.json +16 -16
  436. package/fixtures/specimens.json +839 -21
  437. package/fixtures/theme-recipes.json +32808 -28396
  438. package/fixtures/theme-resolved.json +2114 -286
  439. package/fixtures/zoom.json +1382 -0
  440. package/generated/ExponentialUICatalog.generated.kt +21 -21
  441. package/generated/ExponentialUICatalog.generated.swift +21 -21
  442. package/generated/ExponentialUIThemes.generated.kt +7 -7
  443. package/generated/ExponentialUIThemes.generated.swift +7 -7
  444. package/generated/catalog.descriptions.generated.rs +1 -1
  445. package/generated/catalog.generated.rs +30 -30
  446. package/generated/catalog.themes.generated.rs +8 -8
  447. package/generated/core.descriptions.json +267 -5
  448. package/generated/core.runtime.json +275 -1
  449. package/package.json +1 -1
  450. package/themes/neutral.theme.json +460 -3
  451. package/dist/chunks/index-t6qz1770.js +0 -95
  452. package/dist/chunks/index-t6qz1770.js.map +0 -11
@@ -0,0 +1,1382 @@
1
+ {
2
+ "$comment": "AUTO-GENERATED by packages/exponential-ui/scripts/generate.ts — do not edit.\nSource of truth: packages/exponential-ui/catalog/core.catalog.json (+ tokens.json, style.json, basic-map.json, strings.json, locale.json, code.json, a11y.json, layout.json). EXP-1586: the ZoomableImage maths (catalog/style.json `zoomableImage`; src/zoom.ts, the Rust core's `zoom`). Inputs hand-written: `frames` = named {natural, viewport, initial?, maxScale?}, a case names its frame (`viewport` overrides it) and `from` = a view {scale, x, y} or \"rest\" (zoomRestView). `rest` = {fit: zoomFitScale, limits: zoomLimits, restScale: zoomRestScale, view: zoomRestView, tall: zoomIsTall}; `clamp` = zoomClamp; `zoomTo` = zoomTo; `wheel` = zoomWheel (⌘/ctrl); `scroll` = zoomScroll (a plain wheel); `ladder` = zoomLadder; `steps` = zoomStepScale; `doubleTap` = zoomDoubleTap; `keys` = zoomKey (null = not a zoom key); `rubberBand` = zoomRubberBand; `drag` = zoomDrag (held); `pinch` = zoomPinch (held); `momentum` = zoomMomentum; `momentumActive` = zoomMomentumActive; `panRoom` = zoomPanRoom; `resize` = zoomResize; `percent` = [scale, zoomPercent]; `menu` = zoomMenu (fit label \"Fit\"); `bounds` = zoomBounds. Compare numbers within 1e-6.",
3
+ "frames": {
4
+ "wide": {
5
+ "natural": {
6
+ "width": 2880,
7
+ "height": 1800
8
+ },
9
+ "viewport": {
10
+ "width": 1000,
11
+ "height": 700
12
+ }
13
+ },
14
+ "small": {
15
+ "natural": {
16
+ "width": 400,
17
+ "height": 300
18
+ },
19
+ "viewport": {
20
+ "width": 1000,
21
+ "height": 700
22
+ }
23
+ },
24
+ "tall": {
25
+ "natural": {
26
+ "width": 780,
27
+ "height": 25094
28
+ },
29
+ "viewport": {
30
+ "width": 1000,
31
+ "height": 700
32
+ }
33
+ },
34
+ "tallWide": {
35
+ "natural": {
36
+ "width": 1440,
37
+ "height": 9000
38
+ },
39
+ "viewport": {
40
+ "width": 390,
41
+ "height": 460
42
+ }
43
+ },
44
+ "phone": {
45
+ "natural": {
46
+ "width": 1440,
47
+ "height": 900
48
+ },
49
+ "viewport": {
50
+ "width": 390,
51
+ "height": 460
52
+ }
53
+ },
54
+ "capped": {
55
+ "natural": {
56
+ "width": 2880,
57
+ "height": 1800
58
+ },
59
+ "viewport": {
60
+ "width": 1000,
61
+ "height": 700
62
+ },
63
+ "maxScale": 2
64
+ },
65
+ "actual": {
66
+ "natural": {
67
+ "width": 2880,
68
+ "height": 1800
69
+ },
70
+ "viewport": {
71
+ "width": 1000,
72
+ "height": 700
73
+ },
74
+ "initial": "actual"
75
+ },
76
+ "forcedFit": {
77
+ "natural": {
78
+ "width": 780,
79
+ "height": 25094
80
+ },
81
+ "viewport": {
82
+ "width": 1000,
83
+ "height": 700
84
+ },
85
+ "initial": "fit"
86
+ },
87
+ "empty": {
88
+ "natural": {
89
+ "width": 0,
90
+ "height": 0
91
+ },
92
+ "viewport": {
93
+ "width": 1000,
94
+ "height": 700
95
+ }
96
+ },
97
+ "cappedLow": {
98
+ "natural": {
99
+ "width": 2880,
100
+ "height": 1800
101
+ },
102
+ "viewport": {
103
+ "width": 2000,
104
+ "height": 1500
105
+ },
106
+ "maxScale": 1.2
107
+ }
108
+ },
109
+ "rest": [
110
+ {
111
+ "name": "wide fits",
112
+ "frame": "wide",
113
+ "expected": {
114
+ "fit": 0.347222,
115
+ "limits": {
116
+ "min": 0.347222,
117
+ "max": 8
118
+ },
119
+ "restScale": 0.347222,
120
+ "view": {
121
+ "scale": 0.347222,
122
+ "x": 0,
123
+ "y": 37.5
124
+ },
125
+ "tall": false
126
+ }
127
+ },
128
+ {
129
+ "name": "small never upscales",
130
+ "frame": "small",
131
+ "expected": {
132
+ "fit": 1,
133
+ "limits": {
134
+ "min": 1,
135
+ "max": 8
136
+ },
137
+ "restScale": 1,
138
+ "view": {
139
+ "scale": 1,
140
+ "x": 300,
141
+ "y": 200
142
+ },
143
+ "tall": false
144
+ }
145
+ },
146
+ {
147
+ "name": "tall opens at fit width, top",
148
+ "frame": "tall",
149
+ "expected": {
150
+ "fit": 0.027895,
151
+ "limits": {
152
+ "min": 0.027895,
153
+ "max": 8
154
+ },
155
+ "restScale": 1,
156
+ "view": {
157
+ "scale": 1,
158
+ "x": 110,
159
+ "y": 0
160
+ },
161
+ "tall": true
162
+ }
163
+ },
164
+ {
165
+ "name": "tall wider than the phone",
166
+ "frame": "tallWide",
167
+ "expected": {
168
+ "fit": 0.051111,
169
+ "limits": {
170
+ "min": 0.051111,
171
+ "max": 8
172
+ },
173
+ "restScale": 0.270833,
174
+ "view": {
175
+ "scale": 0.270833,
176
+ "x": 0,
177
+ "y": 0
178
+ },
179
+ "tall": true
180
+ }
181
+ },
182
+ {
183
+ "name": "phone fit",
184
+ "frame": "phone",
185
+ "expected": {
186
+ "fit": 0.270833,
187
+ "limits": {
188
+ "min": 0.270833,
189
+ "max": 8
190
+ },
191
+ "restScale": 0.270833,
192
+ "view": {
193
+ "scale": 0.270833,
194
+ "x": 0,
195
+ "y": 108.125
196
+ },
197
+ "tall": false
198
+ }
199
+ },
200
+ {
201
+ "name": "initial actual",
202
+ "frame": "actual",
203
+ "expected": {
204
+ "fit": 0.347222,
205
+ "limits": {
206
+ "min": 0.347222,
207
+ "max": 8
208
+ },
209
+ "restScale": 1,
210
+ "view": {
211
+ "scale": 1,
212
+ "x": -940,
213
+ "y": 0
214
+ },
215
+ "tall": false
216
+ }
217
+ },
218
+ {
219
+ "name": "initial fit on a tall picture",
220
+ "frame": "forcedFit",
221
+ "expected": {
222
+ "fit": 0.027895,
223
+ "limits": {
224
+ "min": 0.027895,
225
+ "max": 8
226
+ },
227
+ "restScale": 0.027895,
228
+ "view": {
229
+ "scale": 0.027895,
230
+ "x": 489.120905,
231
+ "y": 0
232
+ },
233
+ "tall": true
234
+ }
235
+ },
236
+ {
237
+ "name": "no natural size yet",
238
+ "frame": "empty",
239
+ "expected": {
240
+ "fit": 1,
241
+ "limits": {
242
+ "min": 1,
243
+ "max": 8
244
+ },
245
+ "restScale": 1,
246
+ "view": {
247
+ "scale": 1,
248
+ "x": 500,
249
+ "y": 350
250
+ },
251
+ "tall": false
252
+ }
253
+ }
254
+ ],
255
+ "clamp": [
256
+ {
257
+ "name": "centred when it fits",
258
+ "frame": "wide",
259
+ "view": {
260
+ "scale": 0.3,
261
+ "x": 0,
262
+ "y": 0
263
+ },
264
+ "expected": {
265
+ "scale": 0.347222,
266
+ "x": 0,
267
+ "y": 37.5
268
+ }
269
+ },
270
+ {
271
+ "name": "no gap left/top",
272
+ "frame": "wide",
273
+ "view": {
274
+ "scale": 1,
275
+ "x": 40,
276
+ "y": 30
277
+ },
278
+ "expected": {
279
+ "scale": 1,
280
+ "x": 0,
281
+ "y": 0
282
+ }
283
+ },
284
+ {
285
+ "name": "no gap right/bottom",
286
+ "frame": "wide",
287
+ "view": {
288
+ "scale": 1,
289
+ "x": -5000,
290
+ "y": -5000
291
+ },
292
+ "expected": {
293
+ "scale": 1,
294
+ "x": -1880,
295
+ "y": -1100
296
+ }
297
+ },
298
+ {
299
+ "name": "scale under the min",
300
+ "frame": "wide",
301
+ "view": {
302
+ "scale": 0.1,
303
+ "x": 0,
304
+ "y": 0
305
+ },
306
+ "expected": {
307
+ "scale": 0.347222,
308
+ "x": 0,
309
+ "y": 37.5
310
+ }
311
+ },
312
+ {
313
+ "name": "scale over the max",
314
+ "frame": "wide",
315
+ "view": {
316
+ "scale": 20,
317
+ "x": 0,
318
+ "y": 0
319
+ },
320
+ "expected": {
321
+ "scale": 8,
322
+ "x": 0,
323
+ "y": 0
324
+ }
325
+ },
326
+ {
327
+ "name": "capped max",
328
+ "frame": "capped",
329
+ "view": {
330
+ "scale": 3,
331
+ "x": 0,
332
+ "y": 0
333
+ },
334
+ "expected": {
335
+ "scale": 2,
336
+ "x": 0,
337
+ "y": 0
338
+ }
339
+ },
340
+ {
341
+ "name": "one axis centred, one clamped",
342
+ "frame": "wide",
343
+ "view": {
344
+ "scale": 0.36,
345
+ "x": 100,
346
+ "y": 100
347
+ },
348
+ "expected": {
349
+ "scale": 0.36,
350
+ "x": 0,
351
+ "y": 26
352
+ }
353
+ }
354
+ ],
355
+ "zoomTo": [
356
+ {
357
+ "name": "100% about the cursor",
358
+ "frame": "wide",
359
+ "from": "rest",
360
+ "scale": 1,
361
+ "anchor": {
362
+ "x": 300,
363
+ "y": 200
364
+ },
365
+ "expected": {
366
+ "scale": 1,
367
+ "x": -564.000553,
368
+ "y": -268.0003
369
+ }
370
+ },
371
+ {
372
+ "name": "200% about the centre",
373
+ "frame": "wide",
374
+ "from": "rest",
375
+ "scale": 2,
376
+ "anchor": {
377
+ "x": 500,
378
+ "y": 350
379
+ },
380
+ "expected": {
381
+ "scale": 2,
382
+ "x": -2380.001843,
383
+ "y": -1450.001152
384
+ }
385
+ },
386
+ {
387
+ "name": "past the max clamps",
388
+ "frame": "wide",
389
+ "from": "rest",
390
+ "scale": 50,
391
+ "anchor": {
392
+ "x": 500,
393
+ "y": 350
394
+ },
395
+ "expected": {
396
+ "scale": 8,
397
+ "x": -11020.007373,
398
+ "y": -6850.004608
399
+ }
400
+ },
401
+ {
402
+ "name": "under the min clamps",
403
+ "frame": "wide",
404
+ "from": {
405
+ "scale": 1,
406
+ "x": -200,
407
+ "y": -100
408
+ },
409
+ "scale": 0.01,
410
+ "anchor": {
411
+ "x": 10,
412
+ "y": 10
413
+ },
414
+ "expected": {
415
+ "scale": 0.347222,
416
+ "x": 0,
417
+ "y": 37.5
418
+ }
419
+ },
420
+ {
421
+ "name": "anchor at a corner",
422
+ "frame": "phone",
423
+ "from": "rest",
424
+ "scale": 1,
425
+ "anchor": {
426
+ "x": 0,
427
+ "y": 0
428
+ },
429
+ "expected": {
430
+ "scale": 1,
431
+ "x": 0,
432
+ "y": 0
433
+ }
434
+ }
435
+ ],
436
+ "wheel": [
437
+ {
438
+ "name": "cmd-wheel up zooms in",
439
+ "frame": "wide",
440
+ "from": "rest",
441
+ "deltaY": -100,
442
+ "mode": "pixel",
443
+ "anchor": {
444
+ "x": 700,
445
+ "y": 400
446
+ },
447
+ "expected": {
448
+ "scale": 0.424098,
449
+ "x": -154.981931,
450
+ "y": -42.7585
451
+ }
452
+ },
453
+ {
454
+ "name": "cmd-wheel down at fit stays",
455
+ "frame": "wide",
456
+ "from": "rest",
457
+ "deltaY": 120,
458
+ "mode": "pixel",
459
+ "anchor": {
460
+ "x": 700,
461
+ "y": 400
462
+ },
463
+ "expected": {
464
+ "scale": 0.347222,
465
+ "x": 0,
466
+ "y": 37.5
467
+ }
468
+ },
469
+ {
470
+ "name": "line mode",
471
+ "frame": "wide",
472
+ "from": {
473
+ "scale": 1,
474
+ "x": -900,
475
+ "y": -550
476
+ },
477
+ "deltaY": 3,
478
+ "mode": "line",
479
+ "anchor": {
480
+ "x": 500,
481
+ "y": 350
482
+ },
483
+ "expected": {
484
+ "scale": 0.908464,
485
+ "x": -771.849622,
486
+ "y": -467.617614
487
+ }
488
+ },
489
+ {
490
+ "name": "trackpad pinch small delta",
491
+ "frame": "phone",
492
+ "from": "rest",
493
+ "deltaY": -8,
494
+ "mode": "pixel",
495
+ "anchor": {
496
+ "x": 195,
497
+ "y": 230
498
+ },
499
+ "expected": {
500
+ "scale": 0.275201,
501
+ "x": -3.145094,
502
+ "y": 106.159469
503
+ }
504
+ }
505
+ ],
506
+ "scroll": [
507
+ {
508
+ "name": "pans when zoomed",
509
+ "frame": "wide",
510
+ "from": {
511
+ "scale": 1,
512
+ "x": -900,
513
+ "y": -550
514
+ },
515
+ "deltaX": 120,
516
+ "deltaY": -40,
517
+ "expected": {
518
+ "scale": 1,
519
+ "x": -1020,
520
+ "y": -510
521
+ }
522
+ },
523
+ {
524
+ "name": "stops at the edge",
525
+ "frame": "wide",
526
+ "from": {
527
+ "scale": 1,
528
+ "x": -900,
529
+ "y": -550
530
+ },
531
+ "deltaX": 5000,
532
+ "deltaY": 5000,
533
+ "expected": {
534
+ "scale": 1,
535
+ "x": -1880,
536
+ "y": -1100
537
+ }
538
+ },
539
+ {
540
+ "name": "at fit nothing moves",
541
+ "frame": "wide",
542
+ "from": "rest",
543
+ "deltaX": 0,
544
+ "deltaY": 300,
545
+ "expected": {
546
+ "scale": 0.347222,
547
+ "x": 0,
548
+ "y": 37.5
549
+ }
550
+ },
551
+ {
552
+ "name": "tall scrolls down",
553
+ "frame": "tall",
554
+ "from": "rest",
555
+ "deltaX": 0,
556
+ "deltaY": 600,
557
+ "expected": {
558
+ "scale": 1,
559
+ "x": 110,
560
+ "y": -600
561
+ }
562
+ }
563
+ ],
564
+ "ladder": [
565
+ {
566
+ "name": "wide",
567
+ "frame": "wide",
568
+ "expected": [
569
+ 0.347222,
570
+ 0.5,
571
+ 0.67,
572
+ 1,
573
+ 1.5,
574
+ 2,
575
+ 3,
576
+ 4,
577
+ 6,
578
+ 8
579
+ ]
580
+ },
581
+ {
582
+ "name": "small",
583
+ "frame": "small",
584
+ "expected": [
585
+ 1,
586
+ 1.5,
587
+ 2,
588
+ 3,
589
+ 4,
590
+ 6,
591
+ 8
592
+ ]
593
+ },
594
+ {
595
+ "name": "capped",
596
+ "frame": "capped",
597
+ "expected": [
598
+ 0.347222,
599
+ 0.5,
600
+ 0.67,
601
+ 1,
602
+ 1.5,
603
+ 2
604
+ ]
605
+ },
606
+ {
607
+ "name": "phone",
608
+ "frame": "phone",
609
+ "expected": [
610
+ 0.270833,
611
+ 0.33,
612
+ 0.5,
613
+ 0.67,
614
+ 1,
615
+ 1.5,
616
+ 2,
617
+ 3,
618
+ 4,
619
+ 6,
620
+ 8
621
+ ]
622
+ }
623
+ ],
624
+ "steps": [
625
+ {
626
+ "name": "in from fit",
627
+ "frame": "wide",
628
+ "scale": 0.347222,
629
+ "direction": 1,
630
+ "expected": 0.5
631
+ },
632
+ {
633
+ "name": "out from fit stays",
634
+ "frame": "wide",
635
+ "scale": 0.347222,
636
+ "direction": -1,
637
+ "expected": 0.347222
638
+ },
639
+ {
640
+ "name": "in from between presets",
641
+ "frame": "wide",
642
+ "scale": 1.2,
643
+ "direction": 1,
644
+ "expected": 1.5
645
+ },
646
+ {
647
+ "name": "out from between presets",
648
+ "frame": "wide",
649
+ "scale": 1.2,
650
+ "direction": -1,
651
+ "expected": 1
652
+ },
653
+ {
654
+ "name": "in at the max stays",
655
+ "frame": "wide",
656
+ "scale": 8,
657
+ "direction": 1,
658
+ "expected": 8
659
+ },
660
+ {
661
+ "name": "out from 50% lands on fit",
662
+ "frame": "wide",
663
+ "scale": 0.5,
664
+ "direction": -1,
665
+ "expected": 0.347222
666
+ },
667
+ {
668
+ "name": "small in from 100%",
669
+ "frame": "small",
670
+ "scale": 1,
671
+ "direction": 1,
672
+ "expected": 1.5
673
+ }
674
+ ],
675
+ "doubleTap": [
676
+ {
677
+ "name": "large picture: fit to 100%",
678
+ "frame": "wide",
679
+ "from": "rest",
680
+ "point": {
681
+ "x": 250,
682
+ "y": 200
683
+ },
684
+ "expected": {
685
+ "scale": 1,
686
+ "x": -470.000461,
687
+ "y": -268.0003
688
+ }
689
+ },
690
+ {
691
+ "name": "medium picture: 2x fit",
692
+ "frame": "wide",
693
+ "viewport": {
694
+ "width": 2000,
695
+ "height": 1500
696
+ },
697
+ "from": "rest",
698
+ "point": {
699
+ "x": 1000,
700
+ "y": 750
701
+ },
702
+ "expected": {
703
+ "scale": 1.388889,
704
+ "x": -1000.00144,
705
+ "y": -500.0009
706
+ }
707
+ },
708
+ {
709
+ "name": "small picture: 200%",
710
+ "frame": "small",
711
+ "from": "rest",
712
+ "point": {
713
+ "x": 500,
714
+ "y": 350
715
+ },
716
+ "expected": {
717
+ "scale": 2,
718
+ "x": 100,
719
+ "y": 50
720
+ }
721
+ },
722
+ {
723
+ "name": "zoomed returns to rest",
724
+ "frame": "wide",
725
+ "from": {
726
+ "scale": 2,
727
+ "x": -1500,
728
+ "y": -900
729
+ },
730
+ "point": {
731
+ "x": 10,
732
+ "y": 10
733
+ },
734
+ "expected": {
735
+ "scale": 0.347222,
736
+ "x": 0,
737
+ "y": 37.5
738
+ }
739
+ },
740
+ {
741
+ "name": "capped at the max",
742
+ "frame": "cappedLow",
743
+ "from": "rest",
744
+ "point": {
745
+ "x": 0,
746
+ "y": 0
747
+ },
748
+ "expected": {
749
+ "scale": 1.2,
750
+ "x": 0,
751
+ "y": 0
752
+ }
753
+ },
754
+ {
755
+ "name": "phone double tap",
756
+ "frame": "phone",
757
+ "from": "rest",
758
+ "point": {
759
+ "x": 100,
760
+ "y": 230
761
+ },
762
+ "expected": {
763
+ "scale": 1,
764
+ "x": -269.231224,
765
+ "y": -220.000554
766
+ }
767
+ },
768
+ {
769
+ "name": "tall at fit width",
770
+ "frame": "tall",
771
+ "from": "rest",
772
+ "point": {
773
+ "x": 500,
774
+ "y": 100
775
+ },
776
+ "expected": {
777
+ "scale": 2,
778
+ "x": -280,
779
+ "y": -100
780
+ }
781
+ }
782
+ ],
783
+ "keys": [
784
+ {
785
+ "name": "+",
786
+ "frame": "wide",
787
+ "from": "rest",
788
+ "key": "+",
789
+ "expected": {
790
+ "scale": 0.5,
791
+ "x": -220.000461,
792
+ "y": -100.000288
793
+ }
794
+ },
795
+ {
796
+ "name": "=",
797
+ "frame": "wide",
798
+ "from": "rest",
799
+ "key": "=",
800
+ "expected": {
801
+ "scale": 0.5,
802
+ "x": -220.000461,
803
+ "y": -100.000288
804
+ }
805
+ },
806
+ {
807
+ "name": "-",
808
+ "frame": "wide",
809
+ "from": {
810
+ "scale": 2,
811
+ "x": -1500,
812
+ "y": -900
813
+ },
814
+ "key": "-",
815
+ "expected": {
816
+ "scale": 1.5,
817
+ "x": -1000,
818
+ "y": -587.5
819
+ }
820
+ },
821
+ {
822
+ "name": "0",
823
+ "frame": "wide",
824
+ "from": {
825
+ "scale": 2,
826
+ "x": -1500,
827
+ "y": -900
828
+ },
829
+ "key": "0",
830
+ "expected": {
831
+ "scale": 0.347222,
832
+ "x": 0,
833
+ "y": 37.5
834
+ }
835
+ },
836
+ {
837
+ "name": "1",
838
+ "frame": "wide",
839
+ "from": "rest",
840
+ "key": "1",
841
+ "expected": {
842
+ "scale": 1,
843
+ "x": -940.000922,
844
+ "y": -550.000576
845
+ }
846
+ },
847
+ {
848
+ "name": "not a zoom key",
849
+ "frame": "wide",
850
+ "from": "rest",
851
+ "key": "ArrowLeft",
852
+ "expected": null
853
+ }
854
+ ],
855
+ "rubberBand": [
856
+ {
857
+ "name": "zero",
858
+ "overshoot": 0,
859
+ "extent": 700,
860
+ "expected": 0
861
+ },
862
+ {
863
+ "name": "small pull",
864
+ "overshoot": 20,
865
+ "extent": 700,
866
+ "expected": 10.829817
867
+ },
868
+ {
869
+ "name": "big pull",
870
+ "overshoot": 600,
871
+ "extent": 700,
872
+ "expected": 224.271845
873
+ },
874
+ {
875
+ "name": "negative",
876
+ "overshoot": -120,
877
+ "extent": 1000,
878
+ "expected": -61.913696
879
+ },
880
+ {
881
+ "name": "no extent",
882
+ "overshoot": 50,
883
+ "extent": 0,
884
+ "expected": 0
885
+ }
886
+ ],
887
+ "drag": [
888
+ {
889
+ "name": "pan inside the bounds",
890
+ "frame": "wide",
891
+ "from": {
892
+ "scale": 1,
893
+ "x": -900,
894
+ "y": -550
895
+ },
896
+ "dx": 100,
897
+ "dy": -50,
898
+ "expected": {
899
+ "scale": 1,
900
+ "x": -800,
901
+ "y": -600
902
+ }
903
+ },
904
+ {
905
+ "name": "past the left edge",
906
+ "frame": "wide",
907
+ "from": {
908
+ "scale": 1,
909
+ "x": -50,
910
+ "y": -550
911
+ },
912
+ "dx": 200,
913
+ "dy": 0,
914
+ "expected": {
915
+ "scale": 1,
916
+ "x": 76.212471,
917
+ "y": -550
918
+ }
919
+ },
920
+ {
921
+ "name": "past the bottom edge",
922
+ "frame": "wide",
923
+ "from": {
924
+ "scale": 1,
925
+ "x": -900,
926
+ "y": -1050
927
+ },
928
+ "dx": 0,
929
+ "dy": -300,
930
+ "expected": {
931
+ "scale": 1,
932
+ "x": -900,
933
+ "y": -1214.925373
934
+ }
935
+ },
936
+ {
937
+ "name": "at fit both axes band",
938
+ "frame": "wide",
939
+ "from": "rest",
940
+ "dx": 120,
941
+ "dy": 80,
942
+ "expected": {
943
+ "scale": 0.347222,
944
+ "x": 61.913861,
945
+ "y": 78.897952
946
+ }
947
+ }
948
+ ],
949
+ "pinch": [
950
+ {
951
+ "name": "inside the limits",
952
+ "frame": "phone",
953
+ "from": "rest",
954
+ "factor": 3,
955
+ "anchor": {
956
+ "x": 195,
957
+ "y": 230
958
+ },
959
+ "expected": {
960
+ "scale": 0.812499,
961
+ "x": -390,
962
+ "y": -135.625
963
+ }
964
+ },
965
+ {
966
+ "name": "under the min bands",
967
+ "frame": "phone",
968
+ "from": "rest",
969
+ "factor": 0.5,
970
+ "anchor": {
971
+ "x": 195,
972
+ "y": 230
973
+ },
974
+ "expected": {
975
+ "scale": 0.212418,
976
+ "x": 42.058696,
977
+ "y": 134.411685
978
+ }
979
+ },
980
+ {
981
+ "name": "over the max bands",
982
+ "frame": "phone",
983
+ "from": {
984
+ "scale": 6,
985
+ "x": -4000,
986
+ "y": -2500
987
+ },
988
+ "factor": 2,
989
+ "anchor": {
990
+ "x": 195,
991
+ "y": 230
992
+ },
993
+ "expected": {
994
+ "scale": 9.72549,
995
+ "x": -6604.738425,
996
+ "y": -4195.09795
997
+ }
998
+ }
999
+ ],
1000
+ "momentum": [
1001
+ {
1002
+ "name": "t 0",
1003
+ "frame": "wide",
1004
+ "from": {
1005
+ "scale": 1,
1006
+ "x": -900,
1007
+ "y": -550
1008
+ },
1009
+ "vx": 1,
1010
+ "vy": -0.5,
1011
+ "t": 0,
1012
+ "expected": {
1013
+ "scale": 1,
1014
+ "x": -900,
1015
+ "y": -550
1016
+ }
1017
+ },
1018
+ {
1019
+ "name": "t 100",
1020
+ "frame": "wide",
1021
+ "from": {
1022
+ "scale": 1,
1023
+ "x": -900,
1024
+ "y": -550
1025
+ },
1026
+ "vx": 1,
1027
+ "vy": -0.5,
1028
+ "t": 100,
1029
+ "expected": {
1030
+ "scale": 1,
1031
+ "x": -813.920981,
1032
+ "y": -593.039509
1033
+ }
1034
+ },
1035
+ {
1036
+ "name": "t 325",
1037
+ "frame": "wide",
1038
+ "from": {
1039
+ "scale": 1,
1040
+ "x": -900,
1041
+ "y": -550
1042
+ },
1043
+ "vx": 1,
1044
+ "vy": -0.5,
1045
+ "t": 325,
1046
+ "expected": {
1047
+ "scale": 1,
1048
+ "x": -694.560818,
1049
+ "y": -652.719591
1050
+ }
1051
+ },
1052
+ {
1053
+ "name": "t 2000 stops at the edge",
1054
+ "frame": "wide",
1055
+ "from": {
1056
+ "scale": 1,
1057
+ "x": -900,
1058
+ "y": -550
1059
+ },
1060
+ "vx": 4,
1061
+ "vy": 0,
1062
+ "t": 2000,
1063
+ "expected": {
1064
+ "scale": 1,
1065
+ "x": 0,
1066
+ "y": -550
1067
+ }
1068
+ }
1069
+ ],
1070
+ "momentumActive": [
1071
+ {
1072
+ "name": "fast at 0",
1073
+ "vx": 2,
1074
+ "vy": 0,
1075
+ "t": 0,
1076
+ "expected": true
1077
+ },
1078
+ {
1079
+ "name": "fast at 1500",
1080
+ "vx": 2,
1081
+ "vy": 0,
1082
+ "t": 1500,
1083
+ "expected": true
1084
+ },
1085
+ {
1086
+ "name": "slow at 0",
1087
+ "vx": 0.005,
1088
+ "vy": 0.005,
1089
+ "t": 0,
1090
+ "expected": false
1091
+ }
1092
+ ],
1093
+ "panRoom": [
1094
+ {
1095
+ "name": "at fit none",
1096
+ "frame": "wide",
1097
+ "from": "rest",
1098
+ "expected": {
1099
+ "x": false,
1100
+ "y": false
1101
+ }
1102
+ },
1103
+ {
1104
+ "name": "zoomed both",
1105
+ "frame": "wide",
1106
+ "from": {
1107
+ "scale": 1,
1108
+ "x": -900,
1109
+ "y": -550
1110
+ },
1111
+ "expected": {
1112
+ "x": true,
1113
+ "y": true
1114
+ }
1115
+ },
1116
+ {
1117
+ "name": "tall at rest y only",
1118
+ "frame": "tall",
1119
+ "from": "rest",
1120
+ "expected": {
1121
+ "x": false,
1122
+ "y": true
1123
+ }
1124
+ },
1125
+ {
1126
+ "name": "one axis",
1127
+ "frame": "wide",
1128
+ "from": {
1129
+ "scale": 0.36,
1130
+ "x": 0,
1131
+ "y": 0
1132
+ },
1133
+ "expected": {
1134
+ "x": true,
1135
+ "y": false
1136
+ }
1137
+ }
1138
+ ],
1139
+ "resize": [
1140
+ {
1141
+ "name": "at rest refits",
1142
+ "frame": "wide",
1143
+ "from": "rest",
1144
+ "fromViewport": {
1145
+ "width": 1400,
1146
+ "height": 900
1147
+ },
1148
+ "expected": {
1149
+ "scale": 0.347222,
1150
+ "x": 0,
1151
+ "y": 37.5
1152
+ }
1153
+ },
1154
+ {
1155
+ "name": "zoomed keeps the scale about the centre",
1156
+ "frame": "wide",
1157
+ "from": {
1158
+ "scale": 1,
1159
+ "x": -900,
1160
+ "y": -550
1161
+ },
1162
+ "fromViewport": {
1163
+ "width": 800,
1164
+ "height": 600
1165
+ },
1166
+ "expected": {
1167
+ "scale": 1,
1168
+ "x": -800,
1169
+ "y": -500
1170
+ }
1171
+ },
1172
+ {
1173
+ "name": "zoomed clamps after growing",
1174
+ "frame": "wide",
1175
+ "from": {
1176
+ "scale": 1,
1177
+ "x": -2000,
1178
+ "y": -1200
1179
+ },
1180
+ "fromViewport": {
1181
+ "width": 800,
1182
+ "height": 600
1183
+ },
1184
+ "expected": {
1185
+ "scale": 1,
1186
+ "x": -1880,
1187
+ "y": -1100
1188
+ }
1189
+ }
1190
+ ],
1191
+ "percent": [
1192
+ [
1193
+ 0.347222,
1194
+ "35%"
1195
+ ],
1196
+ [
1197
+ 0.5,
1198
+ "50%"
1199
+ ],
1200
+ [
1201
+ 1,
1202
+ "100%"
1203
+ ],
1204
+ [
1205
+ 1.005,
1206
+ "100%"
1207
+ ],
1208
+ [
1209
+ 2,
1210
+ "200%"
1211
+ ],
1212
+ [
1213
+ 8,
1214
+ "800%"
1215
+ ],
1216
+ [
1217
+ 0.0049,
1218
+ "0%"
1219
+ ]
1220
+ ],
1221
+ "menu": [
1222
+ {
1223
+ "name": "at fit",
1224
+ "frame": "wide",
1225
+ "from": "rest",
1226
+ "expected": [
1227
+ {
1228
+ "scale": null,
1229
+ "label": "Fit",
1230
+ "checked": true
1231
+ },
1232
+ {
1233
+ "scale": 0.5,
1234
+ "label": "50%",
1235
+ "checked": false
1236
+ },
1237
+ {
1238
+ "scale": 1,
1239
+ "label": "100%",
1240
+ "checked": false
1241
+ },
1242
+ {
1243
+ "scale": 2,
1244
+ "label": "200%",
1245
+ "checked": false
1246
+ },
1247
+ {
1248
+ "scale": 4,
1249
+ "label": "400%",
1250
+ "checked": false
1251
+ }
1252
+ ]
1253
+ },
1254
+ {
1255
+ "name": "at 200%",
1256
+ "frame": "wide",
1257
+ "from": {
1258
+ "scale": 2,
1259
+ "x": 0,
1260
+ "y": 0
1261
+ },
1262
+ "expected": [
1263
+ {
1264
+ "scale": null,
1265
+ "label": "Fit",
1266
+ "checked": false
1267
+ },
1268
+ {
1269
+ "scale": 0.5,
1270
+ "label": "50%",
1271
+ "checked": false
1272
+ },
1273
+ {
1274
+ "scale": 1,
1275
+ "label": "100%",
1276
+ "checked": false
1277
+ },
1278
+ {
1279
+ "scale": 2,
1280
+ "label": "200%",
1281
+ "checked": true
1282
+ },
1283
+ {
1284
+ "scale": 4,
1285
+ "label": "400%",
1286
+ "checked": false
1287
+ }
1288
+ ]
1289
+ },
1290
+ {
1291
+ "name": "capped drops 4",
1292
+ "frame": "capped",
1293
+ "from": "rest",
1294
+ "expected": [
1295
+ {
1296
+ "scale": null,
1297
+ "label": "Fit",
1298
+ "checked": true
1299
+ },
1300
+ {
1301
+ "scale": 0.5,
1302
+ "label": "50%",
1303
+ "checked": false
1304
+ },
1305
+ {
1306
+ "scale": 1,
1307
+ "label": "100%",
1308
+ "checked": false
1309
+ },
1310
+ {
1311
+ "scale": 2,
1312
+ "label": "200%",
1313
+ "checked": false
1314
+ }
1315
+ ]
1316
+ },
1317
+ {
1318
+ "name": "small drops 50%",
1319
+ "frame": "small",
1320
+ "from": "rest",
1321
+ "expected": [
1322
+ {
1323
+ "scale": null,
1324
+ "label": "Fit",
1325
+ "checked": true
1326
+ },
1327
+ {
1328
+ "scale": 1,
1329
+ "label": "100%",
1330
+ "checked": false
1331
+ },
1332
+ {
1333
+ "scale": 2,
1334
+ "label": "200%",
1335
+ "checked": false
1336
+ },
1337
+ {
1338
+ "scale": 4,
1339
+ "label": "400%",
1340
+ "checked": false
1341
+ }
1342
+ ]
1343
+ }
1344
+ ],
1345
+ "bounds": [
1346
+ {
1347
+ "name": "at fit",
1348
+ "frame": "wide",
1349
+ "from": "rest",
1350
+ "expected": {
1351
+ "atMin": true,
1352
+ "atMax": false
1353
+ }
1354
+ },
1355
+ {
1356
+ "name": "at the max",
1357
+ "frame": "wide",
1358
+ "from": {
1359
+ "scale": 8,
1360
+ "x": 0,
1361
+ "y": 0
1362
+ },
1363
+ "expected": {
1364
+ "atMin": false,
1365
+ "atMax": true
1366
+ }
1367
+ },
1368
+ {
1369
+ "name": "between",
1370
+ "frame": "wide",
1371
+ "from": {
1372
+ "scale": 1,
1373
+ "x": 0,
1374
+ "y": 0
1375
+ },
1376
+ "expected": {
1377
+ "atMin": false,
1378
+ "atMax": false
1379
+ }
1380
+ }
1381
+ ]
1382
+ }