@exponential_app/eui 0.3.0 → 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 (442) hide show
  1. package/catalog/a11y.json +10 -0
  2. package/catalog/core.catalog.json +284 -6
  3. package/catalog/core.schema.json +437 -4
  4. package/catalog/layout.json +3 -2
  5. package/catalog/limits.json +10 -1
  6. package/catalog/macros.json +1 -0
  7. package/catalog/recipes.json +3 -1
  8. package/catalog/strings.json +9 -2
  9. package/catalog/style.json +21 -0
  10. package/catalog/theme.schema.json +4435 -3676
  11. package/conformance/manifest.json +2 -2
  12. package/conformance/motion/build-corpus.ts +232 -0
  13. package/conformance/motion/corpus/SOURCES.md +117 -0
  14. package/conformance/motion/corpus/images/footage_0.json +1 -0
  15. package/conformance/motion/corpus/images/img_0.jpg +0 -0
  16. package/conformance/motion/corpus/images/img_1.jpg +0 -0
  17. package/conformance/motion/corpus/images/triangle.png +0 -0
  18. package/conformance/motion/corpus/skottie-3d-parenting-nocamera.json +367 -0
  19. package/conformance/motion/corpus/skottie-auto-orient-2.json +292 -0
  20. package/conformance/motion/corpus/skottie-auto-orient.json +717 -0
  21. package/conformance/motion/corpus/skottie-bezier-extranormal.json +199 -0
  22. package/conformance/motion/corpus/skottie-blendmode-hardmix.json +558 -0
  23. package/conformance/motion/corpus/skottie-chained-mattes.json +259 -0
  24. package/conformance/motion/corpus/skottie-dropshadow-ramp.json +852 -0
  25. package/conformance/motion/corpus/skottie-dropshadow-style.json +278 -0
  26. package/conformance/motion/corpus/skottie-effects-transform.json +385 -0
  27. package/conformance/motion/corpus/skottie-fill-effect.json +358 -0
  28. package/conformance/motion/corpus/skottie-fill-rule.json +457 -0
  29. package/conformance/motion/corpus/skottie-gaussian-blur.json +670 -0
  30. package/conformance/motion/corpus/skottie-gradient-opacity.json +451 -0
  31. package/conformance/motion/corpus/skottie-gradient-radial-highlight.json +581 -0
  32. package/conformance/motion/corpus/skottie-hidden-shapes-layers.json +381 -0
  33. package/conformance/motion/corpus/skottie-huesaturation-effect.json +1117 -0
  34. package/conformance/motion/corpus/skottie-invert-effect.json +665 -0
  35. package/conformance/motion/corpus/skottie-luma-matte.json +239 -0
  36. package/conformance/motion/corpus/skottie-mask-feather.json +892 -0
  37. package/conformance/motion/corpus/skottie-masking-opaque.json +2376 -0
  38. package/conformance/motion/corpus/skottie-masking-translucent.json +2376 -0
  39. package/conformance/motion/corpus/skottie-matte-blendmode.json +196 -0
  40. package/conformance/motion/corpus/skottie-matte-nonsequential.json +722 -0
  41. package/conformance/motion/corpus/skottie-matte-visible.json +666 -0
  42. package/conformance/motion/corpus/skottie-mergepaths-effect.json +722 -0
  43. package/conformance/motion/corpus/skottie-motion-blur-mask.json +120 -0
  44. package/conformance/motion/corpus/skottie-nested-animation.json +253 -0
  45. package/conformance/motion/corpus/skottie-offsetpaths-effect.json +525 -0
  46. package/conformance/motion/corpus/skottie-phonehub-connecting.json +947 -0
  47. package/conformance/motion/corpus/skottie-puckerbloat-effect.json +339 -0
  48. package/conformance/motion/corpus/skottie-repeater.json +234 -0
  49. package/conformance/motion/corpus/skottie-sample-1.json +168 -0
  50. package/conformance/motion/corpus/skottie-sample-search.json +329 -0
  51. package/conformance/motion/corpus/skottie-spatial-supernormal.json +898 -0
  52. package/conformance/motion/corpus/skottie-text-animator-1.json +1286 -0
  53. package/conformance/motion/corpus/skottie-text-fill-over-stroke.json +1014 -0
  54. package/conformance/motion/corpus/skottie-text-tracking.json +950 -0
  55. package/conformance/motion/corpus/skottie-text-valign.json +484 -0
  56. package/conformance/motion/corpus/skottie-time-reverse.json +297 -0
  57. package/conformance/motion/corpus/skottie-transform-skew.json +290 -0
  58. package/conformance/motion/corpus/skottie-trimpath-fill.json +933 -0
  59. package/conformance/motion/corpus/skottie-trimpath-modes.json +266 -0
  60. package/conformance/motion/corpus/skottie-tritone-effect.json +379 -0
  61. package/conformance/motion/corpus/spec-blend-mode.json +531 -0
  62. package/conformance/motion/corpus/spec-ellipse.json +142 -0
  63. package/conformance/motion/corpus/spec-fill.json +193 -0
  64. package/conformance/motion/corpus/spec-gradient-stroke.json +1263 -0
  65. package/conformance/motion/corpus/spec-gradient.json +1255 -0
  66. package/conformance/motion/corpus/spec-mask.json +773 -0
  67. package/conformance/motion/corpus/spec-masks.json +676 -0
  68. package/conformance/motion/corpus/spec-matte.json +390 -0
  69. package/conformance/motion/corpus/spec-metadata.json +1 -0
  70. package/conformance/motion/corpus/spec-path.json +177 -0
  71. package/conformance/motion/corpus/spec-pucker-bloat.json +179 -0
  72. package/conformance/motion/corpus/spec-rectangle.json +145 -0
  73. package/conformance/motion/corpus/spec-rounded-corners.json +187 -0
  74. package/conformance/motion/corpus/spec-slots.json +325 -0
  75. package/conformance/motion/corpus/spec-star.json +159 -0
  76. package/conformance/motion/corpus/spec-stroke.json +156 -0
  77. package/conformance/motion/corpus/spec-test-ellipse-xy-pos.json +141 -0
  78. package/conformance/motion/corpus/spec-test-gradient-fill.json +1 -0
  79. package/conformance/motion/corpus/spec-test-gradient-stroke.json +229 -0
  80. package/conformance/motion/corpus/spec-test-unknown-shape.json +63 -0
  81. package/conformance/motion/corpus/spec-time-remap.json +1090 -0
  82. package/conformance/motion/corpus/spec-time-stretch.json +594 -0
  83. package/conformance/motion/corpus/spec-transform.json +273 -0
  84. package/conformance/motion/corpus/spec-trim-path.json +209 -0
  85. package/conformance/motion/corpus/web-adrock.json +1 -0
  86. package/conformance/motion/corpus/web-bacon.json +1 -0
  87. package/conformance/motion/corpus/web-banner.json +1 -0
  88. package/conformance/motion/corpus/web-bodymovin.json +1 -0
  89. package/conformance/motion/corpus/web-dalek.json +1 -0
  90. package/conformance/motion/corpus/web-footage-data.json +1 -0
  91. package/conformance/motion/corpus/web-lights.json +1 -0
  92. package/conformance/motion/corpus/web-ripple.json +1 -0
  93. package/conformance/motion/corpus/web-starfish.json +1 -0
  94. package/conformance/motion/known-gaps.json +35 -0
  95. package/conformance/motion/parity/group-transforms-parenting@0.png +0 -0
  96. package/conformance/motion/parity/group-transforms-parenting@10.png +0 -0
  97. package/conformance/motion/parity/hidden-unknown-inactive@0.png +0 -0
  98. package/conformance/motion/parity/keyframes-transform@0.png +0 -0
  99. package/conformance/motion/parity/keyframes-transform@10.png +0 -0
  100. package/conformance/motion/parity/keyframes-transform@15.png +0 -0
  101. package/conformance/motion/parity/keyframes-transform@5.png +0 -0
  102. package/conformance/motion/parity/layer-opacity-blend@0.png +0 -0
  103. package/conformance/motion/parity/linear-gradient@0.png +0 -0
  104. package/conformance/motion/parity/masks-modes@0.png +0 -0
  105. package/conformance/motion/parity/matte-alpha@0.png +0 -0
  106. package/conformance/motion/parity/matte-luma@0.png +0 -0
  107. package/conformance/motion/parity/matte-parent-tp@0.png +0 -0
  108. package/conformance/motion/parity/path-evenodd@0.png +0 -0
  109. package/conformance/motion/parity/precomp-clip-offset@0.png +0 -0
  110. package/conformance/motion/parity/precomp-clip-offset@15.png +0 -0
  111. package/conformance/motion/parity/precomp-clip-offset@5.png +0 -0
  112. package/conformance/motion/parity/radial-gradient-highlight@0.png +0 -0
  113. package/conformance/motion/parity/rect-solid-fill@0.png +0 -0
  114. package/conformance/motion/parity/repeater@0.png +0 -0
  115. package/conformance/motion/parity/rounded-rect-ellipse@0.png +0 -0
  116. package/conformance/motion/parity/solid-and-image@0.png +0 -0
  117. package/conformance/motion/parity/split-position-skew@0.png +0 -0
  118. package/conformance/motion/parity/split-position-skew@10.png +0 -0
  119. package/conformance/motion/parity/star-polygon@0.png +0 -0
  120. package/conformance/motion/parity/stroke-caps-joins@0.png +0 -0
  121. package/conformance/motion/parity/stroke-dashes@0.png +0 -0
  122. package/conformance/motion/parity/stroke-dashes@10.png +0 -0
  123. package/conformance/motion/parity/time-remap@0.png +0 -0
  124. package/conformance/motion/parity/time-remap@10.png +0 -0
  125. package/conformance/motion/parity/time-remap@19.png +0 -0
  126. package/conformance/motion/parity/time-stretch@0.png +0 -0
  127. package/conformance/motion/parity/time-stretch@10.png +0 -0
  128. package/conformance/motion/parity/trim-individually@0.png +0 -0
  129. package/conformance/motion/parity/trim-path@0.png +0 -0
  130. package/conformance/motion/parity/trim-path@10.png +0 -0
  131. package/conformance/motion/refs/index.json +688 -0
  132. package/conformance/motion/refs/skottie-3d-parenting-nocamera@0.png +0 -0
  133. package/conformance/motion/refs/skottie-3d-parenting-nocamera@150.png +0 -0
  134. package/conformance/motion/refs/skottie-3d-parenting-nocamera@270.png +0 -0
  135. package/conformance/motion/refs/skottie-auto-orient-2@0.png +0 -0
  136. package/conformance/motion/refs/skottie-auto-orient-2@210.png +0 -0
  137. package/conformance/motion/refs/skottie-auto-orient-2@378.png +0 -0
  138. package/conformance/motion/refs/skottie-auto-orient@0.png +0 -0
  139. package/conformance/motion/refs/skottie-auto-orient@300.png +0 -0
  140. package/conformance/motion/refs/skottie-auto-orient@540.png +0 -0
  141. package/conformance/motion/refs/skottie-bezier-extranormal@0.png +0 -0
  142. package/conformance/motion/refs/skottie-bezier-extranormal@150.png +0 -0
  143. package/conformance/motion/refs/skottie-bezier-extranormal@270.png +0 -0
  144. package/conformance/motion/refs/skottie-blendmode-hardmix@0.png +0 -0
  145. package/conformance/motion/refs/skottie-blendmode-hardmix@150.png +0 -0
  146. package/conformance/motion/refs/skottie-blendmode-hardmix@270.png +0 -0
  147. package/conformance/motion/refs/skottie-chained-mattes@0.png +0 -0
  148. package/conformance/motion/refs/skottie-chained-mattes@300.png +0 -0
  149. package/conformance/motion/refs/skottie-chained-mattes@540.png +0 -0
  150. package/conformance/motion/refs/skottie-dropshadow-ramp@0.png +0 -0
  151. package/conformance/motion/refs/skottie-dropshadow-ramp@135.png +0 -0
  152. package/conformance/motion/refs/skottie-dropshadow-ramp@75.png +0 -0
  153. package/conformance/motion/refs/skottie-dropshadow-style@0.png +0 -0
  154. package/conformance/motion/refs/skottie-dropshadow-style@300.png +0 -0
  155. package/conformance/motion/refs/skottie-dropshadow-style@540.png +0 -0
  156. package/conformance/motion/refs/skottie-effects-transform@0.png +0 -0
  157. package/conformance/motion/refs/skottie-effects-transform@450.png +0 -0
  158. package/conformance/motion/refs/skottie-effects-transform@810.png +0 -0
  159. package/conformance/motion/refs/skottie-fill-effect@0.png +0 -0
  160. package/conformance/motion/refs/skottie-fill-effect@300.png +0 -0
  161. package/conformance/motion/refs/skottie-fill-effect@540.png +0 -0
  162. package/conformance/motion/refs/skottie-fill-rule@0.png +0 -0
  163. package/conformance/motion/refs/skottie-fill-rule@150.png +0 -0
  164. package/conformance/motion/refs/skottie-fill-rule@270.png +0 -0
  165. package/conformance/motion/refs/skottie-gaussian-blur@0.png +0 -0
  166. package/conformance/motion/refs/skottie-gaussian-blur@150.png +0 -0
  167. package/conformance/motion/refs/skottie-gaussian-blur@270.png +0 -0
  168. package/conformance/motion/refs/skottie-gradient-opacity@0.png +0 -0
  169. package/conformance/motion/refs/skottie-gradient-opacity@150.png +0 -0
  170. package/conformance/motion/refs/skottie-gradient-opacity@270.png +0 -0
  171. package/conformance/motion/refs/skottie-gradient-radial-highlight@0.png +0 -0
  172. package/conformance/motion/refs/skottie-gradient-radial-highlight@135.png +0 -0
  173. package/conformance/motion/refs/skottie-gradient-radial-highlight@75.png +0 -0
  174. package/conformance/motion/refs/skottie-hidden-shapes-layers@0.png +0 -0
  175. package/conformance/motion/refs/skottie-hidden-shapes-layers@150.png +0 -0
  176. package/conformance/motion/refs/skottie-hidden-shapes-layers@270.png +0 -0
  177. package/conformance/motion/refs/skottie-huesaturation-effect@0.png +0 -0
  178. package/conformance/motion/refs/skottie-huesaturation-effect@30.png +0 -0
  179. package/conformance/motion/refs/skottie-huesaturation-effect@54.png +0 -0
  180. package/conformance/motion/refs/skottie-invert-effect@0.png +0 -0
  181. package/conformance/motion/refs/skottie-invert-effect@300.png +0 -0
  182. package/conformance/motion/refs/skottie-invert-effect@540.png +0 -0
  183. package/conformance/motion/refs/skottie-luma-matte@0.png +0 -0
  184. package/conformance/motion/refs/skottie-luma-matte@150.png +0 -0
  185. package/conformance/motion/refs/skottie-luma-matte@270.png +0 -0
  186. package/conformance/motion/refs/skottie-mask-feather@0.png +0 -0
  187. package/conformance/motion/refs/skottie-mask-feather@150.png +0 -0
  188. package/conformance/motion/refs/skottie-mask-feather@270.png +0 -0
  189. package/conformance/motion/refs/skottie-masking-opaque@0.png +0 -0
  190. package/conformance/motion/refs/skottie-masking-opaque@135.png +0 -0
  191. package/conformance/motion/refs/skottie-masking-opaque@75.png +0 -0
  192. package/conformance/motion/refs/skottie-masking-translucent@0.png +0 -0
  193. package/conformance/motion/refs/skottie-masking-translucent@135.png +0 -0
  194. package/conformance/motion/refs/skottie-masking-translucent@75.png +0 -0
  195. package/conformance/motion/refs/skottie-matte-blendmode@0.png +0 -0
  196. package/conformance/motion/refs/skottie-matte-blendmode@150.png +0 -0
  197. package/conformance/motion/refs/skottie-matte-blendmode@270.png +0 -0
  198. package/conformance/motion/refs/skottie-matte-nonsequential@0.png +0 -0
  199. package/conformance/motion/refs/skottie-matte-nonsequential@150.png +0 -0
  200. package/conformance/motion/refs/skottie-matte-nonsequential@270.png +0 -0
  201. package/conformance/motion/refs/skottie-matte-visible@0.png +0 -0
  202. package/conformance/motion/refs/skottie-matte-visible@150.png +0 -0
  203. package/conformance/motion/refs/skottie-matte-visible@270.png +0 -0
  204. package/conformance/motion/refs/skottie-mergepaths-effect@0.png +0 -0
  205. package/conformance/motion/refs/skottie-mergepaths-effect@210.png +0 -0
  206. package/conformance/motion/refs/skottie-mergepaths-effect@378.png +0 -0
  207. package/conformance/motion/refs/skottie-motion-blur-mask@0.png +0 -0
  208. package/conformance/motion/refs/skottie-motion-blur-mask@150.png +0 -0
  209. package/conformance/motion/refs/skottie-motion-blur-mask@270.png +0 -0
  210. package/conformance/motion/refs/skottie-nested-animation@0.png +0 -0
  211. package/conformance/motion/refs/skottie-nested-animation@300.png +0 -0
  212. package/conformance/motion/refs/skottie-nested-animation@540.png +0 -0
  213. package/conformance/motion/refs/skottie-offsetpaths-effect@0.png +0 -0
  214. package/conformance/motion/refs/skottie-offsetpaths-effect@150.png +0 -0
  215. package/conformance/motion/refs/skottie-offsetpaths-effect@270.png +0 -0
  216. package/conformance/motion/refs/skottie-phonehub-connecting@0.png +0 -0
  217. package/conformance/motion/refs/skottie-puckerbloat-effect@0.png +0 -0
  218. package/conformance/motion/refs/skottie-puckerbloat-effect@210.png +0 -0
  219. package/conformance/motion/refs/skottie-puckerbloat-effect@378.png +0 -0
  220. package/conformance/motion/refs/skottie-repeater@0.png +0 -0
  221. package/conformance/motion/refs/skottie-repeater@300.png +0 -0
  222. package/conformance/motion/refs/skottie-repeater@540.png +0 -0
  223. package/conformance/motion/refs/skottie-sample-1@0.png +0 -0
  224. package/conformance/motion/refs/skottie-sample-1@100.png +0 -0
  225. package/conformance/motion/refs/skottie-sample-1@180.png +0 -0
  226. package/conformance/motion/refs/skottie-sample-search@0.png +0 -0
  227. package/conformance/motion/refs/skottie-sample-search@27.png +0 -0
  228. package/conformance/motion/refs/skottie-sample-search@48.png +0 -0
  229. package/conformance/motion/refs/skottie-spatial-supernormal@0.png +0 -0
  230. package/conformance/motion/refs/skottie-spatial-supernormal@200.png +0 -0
  231. package/conformance/motion/refs/skottie-spatial-supernormal@360.png +0 -0
  232. package/conformance/motion/refs/skottie-text-animator-1@0.png +0 -0
  233. package/conformance/motion/refs/skottie-text-animator-1@150.png +0 -0
  234. package/conformance/motion/refs/skottie-text-animator-1@270.png +0 -0
  235. package/conformance/motion/refs/skottie-text-fill-over-stroke@0.png +0 -0
  236. package/conformance/motion/refs/skottie-text-fill-over-stroke@210.png +0 -0
  237. package/conformance/motion/refs/skottie-text-fill-over-stroke@378.png +0 -0
  238. package/conformance/motion/refs/skottie-text-tracking@0.png +0 -0
  239. package/conformance/motion/refs/skottie-text-tracking@108.png +0 -0
  240. package/conformance/motion/refs/skottie-text-tracking@60.png +0 -0
  241. package/conformance/motion/refs/skottie-text-valign@0.png +0 -0
  242. package/conformance/motion/refs/skottie-text-valign@150.png +0 -0
  243. package/conformance/motion/refs/skottie-text-valign@270.png +0 -0
  244. package/conformance/motion/refs/skottie-time-reverse@0.png +0 -0
  245. package/conformance/motion/refs/skottie-time-reverse@300.png +0 -0
  246. package/conformance/motion/refs/skottie-time-reverse@540.png +0 -0
  247. package/conformance/motion/refs/skottie-transform-skew@0.png +0 -0
  248. package/conformance/motion/refs/skottie-transform-skew@300.png +0 -0
  249. package/conformance/motion/refs/skottie-transform-skew@540.png +0 -0
  250. package/conformance/motion/refs/skottie-trimpath-fill@0.png +0 -0
  251. package/conformance/motion/refs/skottie-trimpath-fill@300.png +0 -0
  252. package/conformance/motion/refs/skottie-trimpath-fill@540.png +0 -0
  253. package/conformance/motion/refs/skottie-trimpath-modes@0.png +0 -0
  254. package/conformance/motion/refs/skottie-trimpath-modes@300.png +0 -0
  255. package/conformance/motion/refs/skottie-trimpath-modes@540.png +0 -0
  256. package/conformance/motion/refs/skottie-tritone-effect@0.png +0 -0
  257. package/conformance/motion/refs/skottie-tritone-effect@300.png +0 -0
  258. package/conformance/motion/refs/skottie-tritone-effect@540.png +0 -0
  259. package/conformance/motion/refs/spec-blend-mode@0.png +0 -0
  260. package/conformance/motion/refs/spec-blend-mode@162.png +0 -0
  261. package/conformance/motion/refs/spec-blend-mode@90.png +0 -0
  262. package/conformance/motion/refs/spec-ellipse@0.png +0 -0
  263. package/conformance/motion/refs/spec-ellipse@162.png +0 -0
  264. package/conformance/motion/refs/spec-ellipse@90.png +0 -0
  265. package/conformance/motion/refs/spec-fill@0.png +0 -0
  266. package/conformance/motion/refs/spec-fill@162.png +0 -0
  267. package/conformance/motion/refs/spec-fill@90.png +0 -0
  268. package/conformance/motion/refs/spec-gradient-stroke@0.png +0 -0
  269. package/conformance/motion/refs/spec-gradient-stroke@162.png +0 -0
  270. package/conformance/motion/refs/spec-gradient-stroke@90.png +0 -0
  271. package/conformance/motion/refs/spec-gradient@0.png +0 -0
  272. package/conformance/motion/refs/spec-gradient@162.png +0 -0
  273. package/conformance/motion/refs/spec-gradient@90.png +0 -0
  274. package/conformance/motion/refs/spec-mask@0.png +0 -0
  275. package/conformance/motion/refs/spec-mask@300.png +0 -0
  276. package/conformance/motion/refs/spec-mask@540.png +0 -0
  277. package/conformance/motion/refs/spec-masks@0.png +0 -0
  278. package/conformance/motion/refs/spec-masks@135.png +0 -0
  279. package/conformance/motion/refs/spec-masks@75.png +0 -0
  280. package/conformance/motion/refs/spec-matte@0.png +0 -0
  281. package/conformance/motion/refs/spec-matte@162.png +0 -0
  282. package/conformance/motion/refs/spec-matte@90.png +0 -0
  283. package/conformance/motion/refs/spec-metadata@0.png +0 -0
  284. package/conformance/motion/refs/spec-metadata@162.png +0 -0
  285. package/conformance/motion/refs/spec-metadata@90.png +0 -0
  286. package/conformance/motion/refs/spec-path@0.png +0 -0
  287. package/conformance/motion/refs/spec-path@162.png +0 -0
  288. package/conformance/motion/refs/spec-path@90.png +0 -0
  289. package/conformance/motion/refs/spec-pucker-bloat@0.png +0 -0
  290. package/conformance/motion/refs/spec-pucker-bloat@162.png +0 -0
  291. package/conformance/motion/refs/spec-pucker-bloat@90.png +0 -0
  292. package/conformance/motion/refs/spec-rectangle@0.png +0 -0
  293. package/conformance/motion/refs/spec-rectangle@162.png +0 -0
  294. package/conformance/motion/refs/spec-rectangle@90.png +0 -0
  295. package/conformance/motion/refs/spec-rounded-corners@0.png +0 -0
  296. package/conformance/motion/refs/spec-rounded-corners@162.png +0 -0
  297. package/conformance/motion/refs/spec-rounded-corners@90.png +0 -0
  298. package/conformance/motion/refs/spec-slots@0.png +0 -0
  299. package/conformance/motion/refs/spec-slots@450.png +0 -0
  300. package/conformance/motion/refs/spec-slots@810.png +0 -0
  301. package/conformance/motion/refs/spec-star@0.png +0 -0
  302. package/conformance/motion/refs/spec-star@162.png +0 -0
  303. package/conformance/motion/refs/spec-star@90.png +0 -0
  304. package/conformance/motion/refs/spec-stroke@0.png +0 -0
  305. package/conformance/motion/refs/spec-stroke@162.png +0 -0
  306. package/conformance/motion/refs/spec-stroke@90.png +0 -0
  307. package/conformance/motion/refs/spec-test-ellipse-xy-pos@0.png +0 -0
  308. package/conformance/motion/refs/spec-test-ellipse-xy-pos@162.png +0 -0
  309. package/conformance/motion/refs/spec-test-ellipse-xy-pos@90.png +0 -0
  310. package/conformance/motion/refs/spec-test-gradient-fill@0.png +0 -0
  311. package/conformance/motion/refs/spec-test-gradient-fill@30.png +0 -0
  312. package/conformance/motion/refs/spec-test-gradient-fill@54.png +0 -0
  313. package/conformance/motion/refs/spec-test-gradient-stroke@0.png +0 -0
  314. package/conformance/motion/refs/spec-test-gradient-stroke@30.png +0 -0
  315. package/conformance/motion/refs/spec-test-gradient-stroke@54.png +0 -0
  316. package/conformance/motion/refs/spec-test-unknown-shape@0.png +0 -0
  317. package/conformance/motion/refs/spec-test-unknown-shape@162.png +0 -0
  318. package/conformance/motion/refs/spec-test-unknown-shape@90.png +0 -0
  319. package/conformance/motion/refs/spec-time-remap@0.png +0 -0
  320. package/conformance/motion/refs/spec-time-remap@300.png +0 -0
  321. package/conformance/motion/refs/spec-time-remap@540.png +0 -0
  322. package/conformance/motion/refs/spec-time-stretch@0.png +0 -0
  323. package/conformance/motion/refs/spec-time-stretch@300.png +0 -0
  324. package/conformance/motion/refs/spec-time-stretch@540.png +0 -0
  325. package/conformance/motion/refs/spec-transform@0.png +0 -0
  326. package/conformance/motion/refs/spec-transform@162.png +0 -0
  327. package/conformance/motion/refs/spec-transform@90.png +0 -0
  328. package/conformance/motion/refs/spec-trim-path@0.png +0 -0
  329. package/conformance/motion/refs/spec-trim-path@162.png +0 -0
  330. package/conformance/motion/refs/spec-trim-path@90.png +0 -0
  331. package/conformance/motion/refs/web-adrock@0.png +0 -0
  332. package/conformance/motion/refs/web-adrock@10.png +0 -0
  333. package/conformance/motion/refs/web-adrock@18.png +0 -0
  334. package/conformance/motion/refs/web-bacon@0.png +0 -0
  335. package/conformance/motion/refs/web-bacon@126.png +0 -0
  336. package/conformance/motion/refs/web-bacon@70.png +0 -0
  337. package/conformance/motion/refs/web-banner@0.png +0 -0
  338. package/conformance/motion/refs/web-banner@301.png +0 -0
  339. package/conformance/motion/refs/web-banner@542.png +0 -0
  340. package/conformance/motion/refs/web-bodymovin@0.png +0 -0
  341. package/conformance/motion/refs/web-bodymovin@51.png +0 -0
  342. package/conformance/motion/refs/web-bodymovin@92.png +0 -0
  343. package/conformance/motion/refs/web-dalek@0.png +0 -0
  344. package/conformance/motion/refs/web-dalek@145.png +0 -0
  345. package/conformance/motion/refs/web-dalek@261.png +0 -0
  346. package/conformance/motion/refs/web-footage-data@0.png +0 -0
  347. package/conformance/motion/refs/web-footage-data@180.png +0 -0
  348. package/conformance/motion/refs/web-footage-data@324.png +0 -0
  349. package/conformance/motion/refs/web-lights@0.png +0 -0
  350. package/conformance/motion/refs/web-lights@150.png +0 -0
  351. package/conformance/motion/refs/web-lights@270.png +0 -0
  352. package/conformance/motion/refs/web-ripple@0.png +0 -0
  353. package/conformance/motion/refs/web-ripple@180.png +0 -0
  354. package/conformance/motion/refs/web-ripple@324.png +0 -0
  355. package/conformance/motion/refs/web-starfish@0.png +0 -0
  356. package/conformance/motion/refs/web-starfish@150.png +0 -0
  357. package/conformance/motion/refs/web-starfish@270.png +0 -0
  358. package/conformance/motion/render-refs.ts +126 -0
  359. package/conformance/motion/report.json +1367 -0
  360. package/conformance/motion/web-parity-gaps.json +12 -0
  361. package/conformance/motion-parity-entry.ts +3 -0
  362. package/conformance/motion-parity.ts +101 -0
  363. package/dist/chunks/{index-4z7f2bp1.js → index-4xczxey5.js} +35 -15
  364. package/dist/chunks/{index-4z7f2bp1.js.map → index-4xczxey5.js.map} +4 -4
  365. package/dist/chunks/{index-dx45asrf.js → index-5sjj5p84.js} +174 -8
  366. package/dist/chunks/{index-dx45asrf.js.map → index-5sjj5p84.js.map} +2 -2
  367. package/dist/chunks/{index-fy7y2nz8.js → index-cvf7bbs5.js} +23 -2
  368. package/dist/chunks/{index-fy7y2nz8.js.map → index-cvf7bbs5.js.map} +1 -1
  369. package/dist/chunks/index-dgkf6yw5.js +48 -0
  370. package/dist/chunks/index-dgkf6yw5.js.map +10 -0
  371. package/dist/chunks/{index-abcjanhc.js → index-f9wkb6aq.js} +192 -3
  372. package/dist/chunks/{index-abcjanhc.js.map → index-f9wkb6aq.js.map} +2 -2
  373. package/dist/chunks/index-t2mwfbb6.js +1515 -0
  374. package/dist/chunks/index-t2mwfbb6.js.map +15 -0
  375. package/dist/chunks/{index-h3zgfghf.js → index-vkn82srs.js} +179 -8
  376. package/dist/chunks/{index-h3zgfghf.js.map → index-vkn82srs.js.map} +2 -2
  377. package/dist/chunks/wasm-ctcc3cma.js +424 -0
  378. package/dist/chunks/wasm-ctcc3cma.js.map +11 -0
  379. package/dist/conformance.js +3154 -63
  380. package/dist/conformance.js.map +2 -2
  381. package/dist/entries/prompt.js +2 -2
  382. package/dist/entries/schema.js +3 -3
  383. package/dist/host/index.js +3 -3
  384. package/dist/index.js +333 -98
  385. package/dist/index.js.map +4 -4
  386. package/dist/types/src/catalog.generated.d.ts +50 -4
  387. package/dist/types/src/index.d.ts +2 -0
  388. package/dist/types/src/layout.d.ts +2 -0
  389. package/dist/types/src/limits.d.ts +1 -0
  390. package/dist/types/src/motion/index.d.ts +1 -0
  391. package/dist/types/src/motion/server.d.ts +9 -0
  392. package/dist/types/src/motion/wasm.d.ts +11 -0
  393. package/dist/types/src/web/coerce.d.ts +3 -0
  394. package/dist/types/src/web/focus.d.ts +8 -0
  395. package/dist/types/src/web/index.d.ts +5 -2
  396. package/dist/types/src/web/primitives/carousel.d.ts +1 -1
  397. package/dist/types/src/web/primitives/dock.d.ts +5 -2
  398. package/dist/types/src/web/primitives/index.d.ts +2 -0
  399. package/dist/types/src/web/primitives/motion-paint.d.ts +36 -0
  400. package/dist/types/src/web/primitives/motion.d.ts +162 -0
  401. package/dist/types/src/web/primitives/zoomable-image.d.ts +158 -0
  402. package/dist/types/src/web/table.d.ts +8 -0
  403. package/dist/types/src/zoom.d.ts +128 -0
  404. package/dist/types/wasm/motion/bytes.d.ts +1 -0
  405. package/dist/web/index.js +165 -230
  406. package/dist/web/index.js.map +8 -9
  407. package/dist/web/primitives/index.js +584 -7
  408. package/dist/web/primitives/index.js.map +7 -6
  409. package/docs/components.generated.json +392 -4
  410. package/docs/round-6-contract.md +5 -3
  411. package/docs/themes.generated.json +27 -0
  412. package/fixtures/bind-time.json +4 -0
  413. package/fixtures/catalog-components.json +930 -16
  414. package/fixtures/catalog-macros.json +11 -0
  415. package/fixtures/conformance-baseline.json +33020 -32952
  416. package/fixtures/conformance-known.json +64 -70
  417. package/fixtures/kitchen-sink.expanded.json +72 -0
  418. package/fixtures/kitchen-sink.json +33 -0
  419. package/fixtures/layout-geometry-round1.json +42 -42
  420. package/fixtures/motion-frames.json +2618 -0
  421. package/fixtures/motion-playback.json +528 -0
  422. package/fixtures/motion-state.json +722 -0
  423. package/fixtures/motion-validate.json +138 -0
  424. package/fixtures/primitive-specimens.json +1 -0
  425. package/fixtures/prompt-budget.json +16 -16
  426. package/fixtures/specimens.json +717 -21
  427. package/fixtures/theme-recipes.json +1518 -32
  428. package/fixtures/theme-resolved.json +732 -56
  429. package/fixtures/zoom.json +1382 -0
  430. package/generated/ExponentialUICatalog.generated.kt +20 -20
  431. package/generated/ExponentialUICatalog.generated.swift +20 -20
  432. package/generated/ExponentialUIThemes.generated.kt +7 -7
  433. package/generated/ExponentialUIThemes.generated.swift +7 -7
  434. package/generated/catalog.descriptions.generated.rs +1 -1
  435. package/generated/catalog.generated.rs +29 -29
  436. package/generated/catalog.themes.generated.rs +8 -8
  437. package/generated/core.descriptions.json +171 -5
  438. package/generated/core.runtime.json +189 -1
  439. package/package.json +1 -1
  440. package/themes/neutral.theme.json +172 -3
  441. package/dist/chunks/index-t6qz1770.js +0 -95
  442. package/dist/chunks/index-t6qz1770.js.map +0 -11
package/dist/web/index.js CHANGED
@@ -1,15 +1,53 @@
1
1
  import {
2
- style_default
3
- } from "../chunks/index-fy7y2nz8.js";
4
- import {
2
+ __chunks,
3
+ ownPrivateHosts2,
4
+ urlPolicyOf2,
5
+ linkHref2,
6
+ mediaRequestOf2,
7
+ mediaUrlAllowed2,
8
+ openAllowed2,
9
+ MEDIA_CACHE_IDLE_MAX2,
10
+ mediaCacheKey2,
11
+ acquireMedia2,
12
+ releaseMedia2,
13
+ mediaCacheStats2,
14
+ clearMediaCache2,
15
+ openMediaSource2,
16
+ streamEntry2,
17
+ fetchStream2,
18
+ fetchLimited2,
5
19
  layoutSize2,
6
20
  visualScale2,
7
21
  elementScale2,
8
22
  voiceWaveAnimates2,
9
23
  voiceWaveName2,
10
24
  voiceWaveClock2,
11
- voiceWaveFitChild2
12
- } from "../chunks/index-t6qz1770.js";
25
+ voiceWaveFitChild2,
26
+ motionFitMatrix2,
27
+ motionConcat2,
28
+ motionFrameSize2,
29
+ MotionCanvasPool2,
30
+ paintMotionFrame2,
31
+ MOTION_MAX_PLAYING2,
32
+ MOTION_MAX_FPS2,
33
+ motionDeclaredSize2,
34
+ motionBoxStyle2,
35
+ motionFit2,
36
+ motionA11y2,
37
+ motionThemeSlots2,
38
+ motionCanPaint2,
39
+ motionFromDotLottie2,
40
+ motionDotLottie2,
41
+ MotionStateDriver2,
42
+ MotionView2
43
+ } from "../chunks/index-t2mwfbb6.js";
44
+ import {
45
+ TABLE_COLUMN_MIN
46
+ } from "../chunks/index-dgkf6yw5.js";
47
+ import {
48
+ style_default
49
+ } from "../chunks/index-cvf7bbs5.js";
50
+ __chunks(import.meta.url,["vp5jw06m","t2mwfbb6","dgkf6yw5","cvf7bbs5","ctcc3cma"],[["./index.js",1,2,3],["../chunks/index-t2mwfbb6.js"],["../chunks/index-dgkf6yw5.js"],["../chunks/index-cvf7bbs5.js"],["../chunks/wasm-ctcc3cma.js",1]],0);
13
51
 
14
52
  // packages/exponential-ui/src/web/theme-css.ts
15
53
  import { ANIMATIONS, animatesOpacity, coreCatalog, easingCss, parseTokenRef, shadowCss } from "@exponential_app/eui";
@@ -168,7 +206,7 @@ var rule = (selector, decls) => decls.length === 0 ? `` : `${selector}{${decls.m
168
206
  var STATE_SELECTORS = {
169
207
  hover: [`:hover`, `[data-xs~="hover"]`],
170
208
  pressed: [`:active`, `[data-xs~="pressed"]`],
171
- focus: [`:focus-visible`, `[data-xs~="focus"]`],
209
+ focus: [`:focus-visible:not([data-xui-quiet-focus])`, `[data-xs~="focus"]`],
172
210
  disabled: [`:disabled`, `[data-disabled]`, `[aria-disabled="true"]`, `[data-xs~="disabled"]`],
173
211
  checked: [`[data-state="checked"]`, `[data-xs~="checked"]`],
174
212
  open: [`[data-state="open"]`, `[data-xs~="open"]`],
@@ -1074,7 +1112,7 @@ ${ROUND2_CSS}
1074
1112
  :where([data-xui-part]){border:0 solid transparent}
1075
1113
  .xui-el{box-sizing:border-box;display:flex;flex-direction:row;position:relative;margin:0;padding:0;border:0 solid transparent;min-width:auto;min-height:auto;font:inherit;color:inherit;background:transparent;text-align:start;text-decoration:none;outline:none;appearance:none;-webkit-appearance:none}
1076
1114
  button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav){margin:0;padding:0;border:0 solid transparent;background:transparent;color:inherit;font:inherit;appearance:none;-webkit-appearance:none}
1077
- .xui-el:focus-visible{outline:2px solid var(--xui-color-ring);outline-offset:1px}
1115
+ .xui-el:focus-visible:not([data-xui-quiet-focus]){outline:2px solid var(--xui-color-ring);outline-offset:1px}
1078
1116
  .xui-leaf{flex-direction:column}
1079
1117
  .xui-leaf>.xui-measured{flex-shrink:0}
1080
1118
  [data-xui-c="Text"].xui-el{display:block;white-space:pre-wrap;overflow-wrap:anywhere}
@@ -1094,10 +1132,23 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1094
1132
  [data-xui-c="Image"].xui-el{overflow:clip}
1095
1133
  [data-xui-c="Image"].xui-el>img{display:block;position:absolute;inset:0;width:100%;height:100%}
1096
1134
  .xui-image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:24px;background:repeating-linear-gradient(45deg,color-mix(in srgb,currentColor 12%,transparent) 0 6px,color-mix(in srgb,currentColor 4%,transparent) 6px 12px);color:var(--xui-color-mutedForeground);font-size:var(--xui-type-size-xs)}
1097
- [data-xui-c="Video"].xui-el{overflow:clip}
1135
+ [data-xui-c="Video"].xui-el{overflow:clip;background-color:#000000d9}
1098
1136
  .xui-media-sizer{display:block;max-width:100%;height:0;flex:0 1 auto;visibility:hidden;pointer-events:none}
1099
1137
  [data-xui-c="Video"].xui-el>video{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
1100
- [data-xui-c="AudioPlayer"].xui-el>audio{width:100%;display:block;flex-shrink:0}
1138
+ [data-xui-c="AudioPlayer"].xui-el>audio{display:none}
1139
+ .xui-video-poster{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
1140
+ .xui-media-play{display:flex;align-items:center;justify-content:center;flex:none;padding:0;border:0;border-radius:9999px;cursor:pointer}
1141
+ .xui-media-play:disabled{cursor:default}
1142
+ .xui-media-play>svg{fill:currentColor}
1143
+ .xui-media-play[data-size="lg"]{position:absolute;inset:0;margin:auto;width:44px;height:44px;background-color:#ffffff2e;color:#ffffff}
1144
+ .xui-media-play[data-size="lg"]>svg{width:20px;height:20px}
1145
+ .xui-media-play[data-size="sm"]{width:28px;height:28px;background-color:var(--xui-color-foreground);color:var(--xui-color-background)}
1146
+ .xui-media-play[data-size="sm"]>svg{width:14px;height:14px}
1147
+ .xui-video-duration{position:absolute;bottom:6px;inset-inline-end:8px;padding:0 6px;border-radius:4px;background-color:#00000099;color:#ffffff;font-size:12px;line-height:18px;font-variant-numeric:tabular-nums}
1148
+ .xui-AudioPlayer-controls{display:flex;flex-direction:row;align-items:center;gap:8px;width:100%;flex-shrink:0;padding:0 8px;border-radius:9999px;background-color:var(--xui-color-muted)}
1149
+ .xui-audio-progress{flex:1 1 0;height:4px;border-radius:9999px;overflow:hidden;background-color:color-mix(in srgb,var(--xui-color-mutedForeground) 35%,transparent)}
1150
+ .xui-audio-progress>span{display:block;height:100%;background-color:var(--xui-color-foreground)}
1151
+ .xui-audio-clock{font-size:12px;color:var(--xui-color-mutedForeground);font-variant-numeric:tabular-nums;white-space:nowrap}
1101
1152
  [data-xui-c="Avatar"].xui-el{overflow:clip;flex-shrink:0;align-items:center;justify-content:center}
1102
1153
  .xui-Avatar-image{width:100%;height:100%;object-fit:cover;border-radius:inherit}
1103
1154
  .xui-Avatar-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:inherit;text-transform:uppercase;user-select:none}
@@ -1134,11 +1185,13 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1134
1185
  .xui-Carousel-indicator{width:6px;height:6px;border-radius:9999px;background:var(--xui-color-border);padding:0;cursor:pointer}
1135
1186
  .xui-Carousel-indicator[data-xs~="selected"]{background:var(--xui-color-primary)}
1136
1187
  .xui-carousel-stage{position:relative;display:flex;flex-direction:column;min-width:0}
1137
- .xui-Carousel-counter{position:absolute;top:var(--xui-spacing-sm);inset-inline-start:var(--xui-spacing-sm);z-index:1;pointer-events:none;display:inline-flex;align-items:center;white-space:nowrap;font-variant-numeric:tabular-nums}
1188
+ .xui-Carousel-counter{position:absolute;top:var(--xui-spacing-sm);inset-inline-end:var(--xui-spacing-sm);z-index:1;pointer-events:none;display:inline-flex;align-items:center;white-space:nowrap;font-variant-numeric:tabular-nums}
1138
1189
  .xui-Carousel-thumbnails{display:flex;flex-direction:row;justify-content:flex-start;flex-shrink:0;overflow-x:auto;scrollbar-width:none}
1139
1190
  .xui-Carousel-thumbnails::-webkit-scrollbar{display:none}
1140
1191
  .xui-Carousel-thumbnail{position:relative;flex:0 0 auto;overflow:hidden;cursor:pointer;padding:0;border-style:solid}
1141
1192
  .xui-carousel-thumb{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
1193
+ .xui-carousel-thumb-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--xui-color-mutedForeground);pointer-events:none}
1194
+ .xui-carousel-thumb-fallback>svg{width:var(--xui-control-iconMd);height:var(--xui-control-iconMd)}
1142
1195
  [data-xui-c="Tabs"].xui-el{flex-direction:column}
1143
1196
  .xui-Tabs-list{display:flex;flex-direction:row;align-self:flex-start;flex-shrink:0}
1144
1197
  .xui-Tabs-list[data-fill="true"]{align-self:stretch}
@@ -1181,7 +1234,8 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1181
1234
  .xui-Drawer-content[data-side="left"]{left:0;top:0;bottom:0;width:min(85%,360px)}
1182
1235
  .xui-Drawer-content[data-side="right"]{right:0;top:0;bottom:0;width:min(85%,360px)}
1183
1236
  .xui-Drawer-handle{align-self:center;width:36px;height:4px;border-radius:9999px;background:var(--xui-color-border);flex-shrink:0}
1184
- .xui-overlay-head{display:flex;flex-direction:column;gap:var(--xui-spacing-xxs)}
1237
+ .xui-overlay-head{display:contents}
1238
+ .xui-overlay-head>*{margin:0}
1185
1239
  .xui-overlay-body{display:flex;flex-direction:column;gap:var(--xui-spacing-md);min-height:0}
1186
1240
  .xui-Dialog-footer,.xui-Drawer-footer{display:flex;flex-direction:row;justify-content:flex-end;flex-wrap:wrap}
1187
1241
  .xui-Dialog-close{position:absolute;top:var(--xui-spacing-sm);inset-inline-end:var(--xui-spacing-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
@@ -1409,6 +1463,9 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1409
1463
  .xui-table-body{display:flex;flex-direction:column;position:relative}
1410
1464
  .xui-table-check{display:flex;align-items:center;justify-content:center;min-width:0}
1411
1465
  .xui-Table-headerCell,.xui-Table-cell{display:flex;flex-direction:row;align-items:center;min-width:0;overflow:clip;text-overflow:ellipsis;white-space:nowrap;gap:var(--xui-spacing-xs)}
1466
+ .xui-Table-cell{white-space:normal;overflow-wrap:anywhere}
1467
+ .xui-Table-cell[data-truncate="true"]{white-space:nowrap}
1468
+ .xui-table-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
1412
1469
  .xui-Table-headerCell[data-r-align="end"],.xui-Table-cell[data-r-align="end"]{justify-content:flex-end;text-align:end}
1413
1470
  .xui-Table-headerCell[data-r-align="center"],.xui-Table-cell[data-r-align="center"]{justify-content:center;text-align:center}
1414
1471
  .xui-Table-cell[data-type="number"]{font-variant-numeric:tabular-nums}
@@ -1498,54 +1555,51 @@ ${SHIMMER_CSS}
1498
1555
  @media (prefers-reduced-motion: reduce){@layer xui-base{.xui-surface *,.xui-surface *::before,.xui-surface *::after{animation-duration:0ms !important;animation-iteration-count:1 !important;transition-duration:0ms !important;scroll-behavior:auto !important}${REDUCED_EXTRA}}}
1499
1556
  .xui-surface[data-xui-motion="reduce"] *,.xui-surface[data-xui-motion="reduce"] *::after{animation-duration:0ms !important;animation-iteration-count:1 !important;transition-duration:0ms !important}
1500
1557
  ${REDUCED_EXTRA.replace(/\.xui-surface /g, `.xui-surface[data-xui-motion="reduce"] `)}`;
1501
- // packages/exponential-ui/src/web/urls.ts
1502
- import { DEFAULT_MEDIA_SCHEMES, decideUrl, isPrivateHost, mediaRequest, safeHref } from "@exponential_app/eui";
1503
- var documentBase = () => typeof document !== `undefined` && document.baseURI ? document.baseURI : undefined;
1504
- function ownPrivateHosts() {
1505
- try {
1506
- const base = documentBase();
1507
- if (!base)
1508
- return [];
1509
- const host = new URL(base).hostname.toLowerCase();
1510
- return isPrivateHost(host) ? [host] : [];
1511
- } catch {
1512
- return [];
1558
+ // packages/exponential-ui/src/web/focus.ts
1559
+ var QUIET_FOCUS_ATTR = `data-xui-quiet-focus`;
1560
+ var FOCUSABLE = `button,input,textarea,select,a[href],[tabindex]`;
1561
+ var watched = new WeakSet;
1562
+ var quiet = new Set;
1563
+ var keyboard = false;
1564
+ function watchModality(doc) {
1565
+ if (watched.has(doc))
1566
+ return;
1567
+ watched.add(doc);
1568
+ doc.addEventListener(`keydown`, () => {
1569
+ keyboard = true;
1570
+ for (const el of quiet)
1571
+ el.removeAttribute(QUIET_FOCUS_ATTR);
1572
+ quiet.clear();
1573
+ }, true);
1574
+ doc.addEventListener(`pointerdown`, () => keyboard = false, true);
1575
+ }
1576
+ function openFocusTarget(content) {
1577
+ const marked = content.querySelector(`[data-xui-autofocus]`) ?? content.querySelector(`[data-xui-part="AlertDialog/cancel"]`);
1578
+ if (marked)
1579
+ return marked.matches(FOCUSABLE) ? marked : marked.querySelector(FOCUSABLE);
1580
+ for (const el of content.querySelectorAll(`*`)) {
1581
+ if (el.tabIndex < 0 || el.tagName === `A` || el.disabled)
1582
+ continue;
1583
+ if (el.tagName === `INPUT` && el.type === `hidden`)
1584
+ continue;
1585
+ return el;
1513
1586
  }
1587
+ return null;
1514
1588
  }
1515
- function withOwnOrigin(allow) {
1516
- const own = ownPrivateHosts();
1517
- if (!own.length)
1518
- return allow;
1519
- return [...allow ?? [], ...own.filter((h) => !(allow ?? []).includes(h))];
1520
- }
1521
- function urlPolicyOf(host) {
1522
- const urls = host.urls ?? {};
1523
- const withBase = urls.baseUrl ? urls : { ...urls, baseUrl: host.media?.baseUrl ?? documentBase() };
1524
- return { ...withBase, allowPrivate: withOwnOrigin(withBase.allowPrivate) };
1525
- }
1526
- function linkHref(host, href) {
1527
- return safeHref(urlPolicyOf(host), href);
1528
- }
1529
- function mediaRequestOf(host, src) {
1530
- if (typeof src !== `string` || !src)
1531
- return null;
1532
- const rewritten = host.resolveUrl ? host.resolveUrl(src) : src;
1533
- const req = host.mediaRequest ? host.mediaRequest(rewritten) : mediaRequest(rewritten, { baseUrl: documentBase(), ...host.media, allowPrivate: withOwnOrigin(host.media?.allowPrivate) });
1534
- if (!req)
1535
- return null;
1536
- return mediaUrlAllowed(host, req.url) ? req : null;
1537
- }
1538
- function mediaUrlAllowed(host, url) {
1539
- return decideUrl({ schemes: host.media?.schemes ?? DEFAULT_MEDIA_SCHEMES, hosts: host.media?.hosts, allowPrivate: withOwnOrigin(host.media?.allowPrivate) }, url).allowed;
1540
- }
1541
- function openAllowed(host, url) {
1542
- const href = linkHref(host, url);
1543
- if (!href)
1589
+ function overlayOpenFocus(e) {
1590
+ const content = e.currentTarget;
1591
+ if (!content)
1592
+ return;
1593
+ watchModality(content.ownerDocument);
1594
+ const target = openFocusTarget(content);
1595
+ if (!target)
1544
1596
  return;
1545
- if (host.openUrl)
1546
- host.openUrl(href);
1547
- else if (typeof window !== `undefined`)
1548
- window.open(href, `_blank`, `noopener,noreferrer`);
1597
+ e.preventDefault();
1598
+ if (!keyboard) {
1599
+ target.setAttribute(QUIET_FOCUS_ATTR, ``);
1600
+ quiet.add(target);
1601
+ }
1602
+ target.focus();
1549
1603
  }
1550
1604
  // packages/exponential-ui/src/web/host-types.ts
1551
1605
  function lookupIcon(icons, name, fallbacks = {}) {
@@ -1579,6 +1633,13 @@ function phrase(ctx, id, params, fallback) {
1579
1633
  }
1580
1634
  var SIZE_UNITS = [`byte`, `kilobyte`, `megabyte`, `gigabyte`];
1581
1635
  var sizeFormats = new Map;
1636
+ function mediaClock(ms) {
1637
+ const total = Math.round(Math.max(0, Number.isFinite(ms) ? ms : 0) / 1000);
1638
+ const h = Math.floor(total / 3600);
1639
+ const m = Math.floor(total / 60) % 60;
1640
+ const s = String(total % 60).padStart(2, `0`);
1641
+ return h > 0 ? `${h}:${String(m).padStart(2, `0`)}:${s}` : `${m}:${s}`;
1642
+ }
1582
1643
  function formatFileSize(bytes, locale) {
1583
1644
  let fmts = sizeFormats.get(locale);
1584
1645
  if (!fmts) {
@@ -1627,6 +1688,14 @@ function joinIds(...ids) {
1627
1688
  return out || undefined;
1628
1689
  }
1629
1690
  // packages/exponential-ui/src/web/table.ts
1691
+ var CHECK_COLUMN = `var(--xui-control-checkbox, 16px)`;
1692
+ function tableTemplate(columns, multiple) {
1693
+ return [multiple ? CHECK_COLUMN : null, ...columns.map((c) => c.width ? `${c.width}px` : `minmax(${TABLE_COLUMN_MIN}px, 1fr)`)].filter(Boolean).join(` `);
1694
+ }
1695
+ function tableMinWidth(columns, multiple) {
1696
+ const px = columns.reduce((sum, c) => sum + (c.width ? num2(c.width) : TABLE_COLUMN_MIN), 0);
1697
+ return multiple ? `calc(${px}px + ${CHECK_COLUMN})` : `${px}px`;
1698
+ }
1630
1699
  function sortRows(rows, sort, column, locale) {
1631
1700
  const order = rows.map((_, i) => i);
1632
1701
  if (!sort || !column)
@@ -1813,163 +1882,6 @@ function parseLocaleNumber(text, locale) {
1813
1882
  const n = Number(clean);
1814
1883
  return Number.isFinite(n) ? n : null;
1815
1884
  }
1816
- // packages/exponential-ui/src/web/media.ts
1817
- import { MEDIA_LIMITS, mediaImageWithinLimits } from "@exponential_app/eui";
1818
- var MEDIA_CACHE_IDLE_MAX = 64;
1819
- var blobs = new Map;
1820
- function mediaCacheKey(url, headers) {
1821
- return `${url}
1822
- ${JSON.stringify(headers)}`;
1823
- }
1824
- function touch(k, e) {
1825
- blobs.delete(k);
1826
- blobs.set(k, e);
1827
- }
1828
- function acquireMedia(k, load) {
1829
- let e = blobs.get(k);
1830
- if (!e) {
1831
- const entry = { refs: 0, promise: Promise.resolve(``) };
1832
- entry.promise = load().then((url) => {
1833
- entry.url = url;
1834
- if (blobs.get(k) !== entry)
1835
- URL.revokeObjectURL(url);
1836
- return url;
1837
- });
1838
- entry.promise.catch(() => {
1839
- if (blobs.get(k) === entry)
1840
- blobs.delete(k);
1841
- });
1842
- e = entry;
1843
- }
1844
- e.refs += 1;
1845
- touch(k, e);
1846
- return e;
1847
- }
1848
- function releaseMedia(k, e) {
1849
- e.refs -= 1;
1850
- if (e.refs > 0 || blobs.get(k) !== e)
1851
- return;
1852
- touch(k, e);
1853
- let idle = 0;
1854
- for (const v of blobs.values())
1855
- if (v.refs === 0)
1856
- idle += 1;
1857
- for (const [ok, v] of blobs) {
1858
- if (idle <= MEDIA_CACHE_IDLE_MAX)
1859
- break;
1860
- if (v.refs > 0)
1861
- continue;
1862
- blobs.delete(ok);
1863
- if (v.url)
1864
- URL.revokeObjectURL(v.url);
1865
- idle -= 1;
1866
- }
1867
- }
1868
- function mediaCacheStats() {
1869
- let inUse = 0;
1870
- for (const v of blobs.values())
1871
- if (v.refs > 0)
1872
- inUse += 1;
1873
- return { entries: blobs.size, inUse };
1874
- }
1875
- function clearMediaCache() {
1876
- for (const [k, v] of blobs) {
1877
- if (v.refs > 0)
1878
- continue;
1879
- blobs.delete(k);
1880
- if (v.url)
1881
- URL.revokeObjectURL(v.url);
1882
- }
1883
- }
1884
- function openMediaSource(host, src, kind = `image`) {
1885
- const req = mediaRequestOf(host, src);
1886
- const headers = req?.headers ?? {};
1887
- const fetched = req !== null && Object.keys(headers).length > 0;
1888
- const k = fetched ? `${kind}
1889
- ${mediaCacheKey(req.url, headers)}` : ``;
1890
- return {
1891
- fetched,
1892
- key: k,
1893
- direct: req ? req.url : undefined,
1894
- denied: Boolean(src) && req === null,
1895
- open: () => {
1896
- if (!req || !fetched)
1897
- return { promise: Promise.resolve(req ? req.url : ``), release: () => {} };
1898
- const hosted = kind === `stream` && host.mediaStreamUrl !== undefined;
1899
- const allowed = (url) => mediaUrlAllowed(host, url);
1900
- const entry = hosted ? streamEntry(host, req) : acquireMedia(k, () => (kind === `stream` ? fetchStream(req.url, headers, MEDIA_LIMITS, allowed) : fetchLimited(req.url, headers, MEDIA_LIMITS, true, allowed)).then((b) => URL.createObjectURL(b)));
1901
- return { promise: entry.promise, release: hosted ? () => {} : () => releaseMedia(k, entry) };
1902
- }
1903
- };
1904
- }
1905
- function streamEntry(host, req) {
1906
- const promise = Promise.resolve(host.mediaStreamUrl(req)).then((url) => {
1907
- if (typeof url !== `string` || !mediaUrlAllowed(host, url))
1908
- throw new Error(`stream url denied by the media policy`);
1909
- return url;
1910
- });
1911
- return { promise, refs: 0 };
1912
- }
1913
- function fetchStream(url, headers, limits = MEDIA_LIMITS, allowed = defaultAllowed) {
1914
- return fetchLimited(url, headers, { ...limits, maxPixels: Infinity }, false, allowed);
1915
- }
1916
- function defaultAllowed(url) {
1917
- return mediaUrlAllowed({}, url);
1918
- }
1919
- async function fetchLimited(url, headers, limits = MEDIA_LIMITS, image = true, allowed = defaultAllowed) {
1920
- const abort = new AbortController;
1921
- const timer = setTimeout(() => abort.abort(new Error(`media timed out after ${limits.timeoutMs} ms`)), limits.timeoutMs);
1922
- const over = () => new Error(`media is over ${limits.maxBytes} bytes`);
1923
- try {
1924
- const r = await fetch(url, { headers, signal: abort.signal });
1925
- if (r.redirected && !allowed(r.url)) {
1926
- abort.abort();
1927
- throw new Error(`media redirect denied by the media policy`);
1928
- }
1929
- if (!r.ok)
1930
- throw new Error(`HTTP ${r.status}`);
1931
- if (Number(r.headers.get(`content-length`) ?? NaN) > limits.maxBytes)
1932
- throw over();
1933
- const chunks = [];
1934
- let total = 0;
1935
- if (r.body) {
1936
- const reader = r.body.getReader();
1937
- for (;; ) {
1938
- const { done, value } = await reader.read();
1939
- if (done)
1940
- break;
1941
- total += value.byteLength;
1942
- if (total > limits.maxBytes) {
1943
- abort.abort();
1944
- throw over();
1945
- }
1946
- chunks.push(value);
1947
- }
1948
- } else {
1949
- const all = new Uint8Array(await r.arrayBuffer());
1950
- if (all.byteLength > limits.maxBytes)
1951
- throw over();
1952
- chunks.push(all);
1953
- }
1954
- if (image) {
1955
- const refused = mediaImageWithinLimits(chunks.length === 1 ? chunks[0] : concat(chunks), limits);
1956
- if (refused)
1957
- throw new Error(refused);
1958
- }
1959
- return new Blob(chunks, { type: r.headers.get(`content-type`) ?? `` });
1960
- } finally {
1961
- clearTimeout(timer);
1962
- }
1963
- }
1964
- function concat(chunks) {
1965
- const out = new Uint8Array(chunks.reduce((n, c) => n + c.byteLength, 0));
1966
- let at = 0;
1967
- for (const c of chunks) {
1968
- out.set(c, at);
1969
- at += c.byteLength;
1970
- }
1971
- return out;
1972
- }
1973
1885
  // packages/exponential-ui/src/web/markdown.ts
1974
1886
  var MAX_LINK_NESTING = 32;
1975
1887
  var MAX_LINK_DEST = 8192;
@@ -2449,15 +2361,21 @@ export {
2449
2361
  MAX_BLOCK_NESTING,
2450
2362
  MAX_LINK_DEST,
2451
2363
  MAX_LINK_NESTING,
2452
- MEDIA_CACHE_IDLE_MAX,
2364
+ MEDIA_CACHE_IDLE_MAX2 as MEDIA_CACHE_IDLE_MAX,
2365
+ MOTION_MAX_FPS2 as MOTION_MAX_FPS,
2366
+ MOTION_MAX_PLAYING2 as MOTION_MAX_PLAYING,
2367
+ MotionCanvasPool2 as MotionCanvasPool,
2368
+ MotionStateDriver2 as MotionStateDriver,
2369
+ MotionView2 as MotionView,
2453
2370
  PLACED,
2454
2371
  QR_CORNERS,
2455
2372
  QR_SCANNER,
2373
+ QUIET_FOCUS_ATTR,
2456
2374
  STATE_SELECTORS,
2457
2375
  TYPEAHEAD_RESET_MS,
2458
2376
  absolutePath,
2459
2377
  acceptsFile,
2460
- acquireMedia,
2378
+ acquireMedia2 as acquireMedia,
2461
2379
  addDays,
2462
2380
  addMonths,
2463
2381
  animationDeclarations,
@@ -2468,7 +2386,7 @@ export {
2468
2386
  boundPath,
2469
2387
  builtinIconName,
2470
2388
  calendarStop,
2471
- clearMediaCache,
2389
+ clearMediaCache2 as clearMediaCache,
2472
2390
  compileNodeSheet,
2473
2391
  compileTheme,
2474
2392
  compiledTheme,
@@ -2480,8 +2398,8 @@ export {
2480
2398
  elementScale2 as elementScale,
2481
2399
  failingCheck,
2482
2400
  failingChecks,
2483
- fetchLimited,
2484
- fetchStream,
2401
+ fetchLimited2 as fetchLimited,
2402
+ fetchStream2 as fetchStream,
2485
2403
  fieldErrorsVisible,
2486
2404
  formatFileSize,
2487
2405
  formatterOf,
@@ -2496,24 +2414,39 @@ export {
2496
2414
  joinIds,
2497
2415
  layoutSize2 as layoutSize,
2498
2416
  linkAt,
2499
- linkHref,
2417
+ linkHref2 as linkHref,
2500
2418
  listViewport,
2501
2419
  lookupIcon,
2502
- mediaCacheKey,
2503
- mediaCacheStats,
2504
- mediaRequestOf,
2505
- mediaUrlAllowed,
2420
+ mediaCacheKey2 as mediaCacheKey,
2421
+ mediaCacheStats2 as mediaCacheStats,
2422
+ mediaClock,
2423
+ mediaRequestOf2 as mediaRequestOf,
2424
+ mediaUrlAllowed2 as mediaUrlAllowed,
2506
2425
  memoFormatter,
2507
2426
  monthGrid,
2427
+ motionA11y2 as motionA11y,
2428
+ motionBoxStyle2 as motionBoxStyle,
2429
+ motionCanPaint2 as motionCanPaint,
2430
+ motionConcat2 as motionConcat,
2431
+ motionDeclaredSize2 as motionDeclaredSize,
2432
+ motionDotLottie2 as motionDotLottie,
2433
+ motionFit2 as motionFit,
2434
+ motionFitMatrix2 as motionFitMatrix,
2435
+ motionFrameSize2 as motionFrameSize,
2436
+ motionFromDotLottie2 as motionFromDotLottie,
2437
+ motionThemeSlots2 as motionThemeSlots,
2508
2438
  nextEnabledIndex,
2509
2439
  nodeClass,
2510
2440
  nodeSheet,
2511
2441
  nodeSheetBatches,
2512
2442
  num2 as num,
2513
2443
  objects,
2514
- openAllowed,
2515
- openMediaSource,
2516
- ownPrivateHosts,
2444
+ openAllowed2 as openAllowed,
2445
+ openFocusTarget,
2446
+ openMediaSource2 as openMediaSource,
2447
+ overlayOpenFocus,
2448
+ ownPrivateHosts2 as ownPrivateHosts,
2449
+ paintMotionFrame2 as paintMotionFrame,
2517
2450
  parseInline,
2518
2451
  parseIsoDate,
2519
2452
  parseList,
@@ -2530,7 +2463,7 @@ export {
2530
2463
  qrScanFormats,
2531
2464
  qrScanReporter,
2532
2465
  queryToken,
2533
- releaseMedia,
2466
+ releaseMedia2 as releaseMedia,
2534
2467
  resolveAccessibility,
2535
2468
  resolveNodeProps,
2536
2469
  resolveProps,
@@ -2547,14 +2480,16 @@ export {
2547
2480
  shimmerRule,
2548
2481
  sortRows,
2549
2482
  str,
2550
- streamEntry,
2483
+ streamEntry2 as streamEntry,
2551
2484
  styleDirection,
2552
2485
  surfaceClass,
2486
+ tableMinWidth,
2487
+ tableTemplate,
2553
2488
  themeScope,
2554
2489
  tokenVar,
2555
2490
  tokenVarName,
2556
2491
  typeaheadStep,
2557
- urlPolicyOf,
2492
+ urlPolicyOf2 as urlPolicyOf,
2558
2493
  validateOnDefault,
2559
2494
  viewOf,
2560
2495
  visualScale2 as visualScale,
@@ -2567,5 +2502,5 @@ export {
2567
2502
  withinSlop
2568
2503
  };
2569
2504
 
2570
- //# debugId=1A8295752F81FE6764756E2164756E21
2505
+ //# debugId=1F64AD564A39483D64756E2164756E21
2571
2506
  //# sourceMappingURL=index.js.map