@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
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}
@@ -1133,6 +1184,14 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1133
1184
  .xui-carousel-dots{display:flex;justify-content:center;gap:var(--xui-spacing-xs);padding-top:var(--xui-spacing-sm)}
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)}
1187
+ .xui-carousel-stage{position:relative;display:flex;flex-direction:column;min-width:0}
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}
1189
+ .xui-Carousel-thumbnails{display:flex;flex-direction:row;justify-content:flex-start;flex-shrink:0;overflow-x:auto;scrollbar-width:none}
1190
+ .xui-Carousel-thumbnails::-webkit-scrollbar{display:none}
1191
+ .xui-Carousel-thumbnail{position:relative;flex:0 0 auto;overflow:hidden;cursor:pointer;padding:0;border-style:solid}
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)}
1136
1195
  [data-xui-c="Tabs"].xui-el{flex-direction:column}
1137
1196
  .xui-Tabs-list{display:flex;flex-direction:row;align-self:flex-start;flex-shrink:0}
1138
1197
  .xui-Tabs-list[data-fill="true"]{align-self:stretch}
@@ -1175,7 +1234,8 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1175
1234
  .xui-Drawer-content[data-side="left"]{left:0;top:0;bottom:0;width:min(85%,360px)}
1176
1235
  .xui-Drawer-content[data-side="right"]{right:0;top:0;bottom:0;width:min(85%,360px)}
1177
1236
  .xui-Drawer-handle{align-self:center;width:36px;height:4px;border-radius:9999px;background:var(--xui-color-border);flex-shrink:0}
1178
- .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}
1179
1239
  .xui-overlay-body{display:flex;flex-direction:column;gap:var(--xui-spacing-md);min-height:0}
1180
1240
  .xui-Dialog-footer,.xui-Drawer-footer{display:flex;flex-direction:row;justify-content:flex-end;flex-wrap:wrap}
1181
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}
@@ -1403,6 +1463,9 @@ button:where([data-xui-part],.xui-calendar-nav,.xui-table-sort,.xui-carousel-nav
1403
1463
  .xui-table-body{display:flex;flex-direction:column;position:relative}
1404
1464
  .xui-table-check{display:flex;align-items:center;justify-content:center;min-width:0}
1405
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}
1406
1469
  .xui-Table-headerCell[data-r-align="end"],.xui-Table-cell[data-r-align="end"]{justify-content:flex-end;text-align:end}
1407
1470
  .xui-Table-headerCell[data-r-align="center"],.xui-Table-cell[data-r-align="center"]{justify-content:center;text-align:center}
1408
1471
  .xui-Table-cell[data-type="number"]{font-variant-numeric:tabular-nums}
@@ -1492,54 +1555,51 @@ ${SHIMMER_CSS}
1492
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}}}
1493
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}
1494
1557
  ${REDUCED_EXTRA.replace(/\.xui-surface /g, `.xui-surface[data-xui-motion="reduce"] `)}`;
1495
- // packages/exponential-ui/src/web/urls.ts
1496
- import { DEFAULT_MEDIA_SCHEMES, decideUrl, isPrivateHost, mediaRequest, safeHref } from "@exponential_app/eui";
1497
- var documentBase = () => typeof document !== `undefined` && document.baseURI ? document.baseURI : undefined;
1498
- function ownPrivateHosts() {
1499
- try {
1500
- const base = documentBase();
1501
- if (!base)
1502
- return [];
1503
- const host = new URL(base).hostname.toLowerCase();
1504
- return isPrivateHost(host) ? [host] : [];
1505
- } catch {
1506
- 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;
1507
1586
  }
1587
+ return null;
1508
1588
  }
1509
- function withOwnOrigin(allow) {
1510
- const own = ownPrivateHosts();
1511
- if (!own.length)
1512
- return allow;
1513
- return [...allow ?? [], ...own.filter((h) => !(allow ?? []).includes(h))];
1514
- }
1515
- function urlPolicyOf(host) {
1516
- const urls = host.urls ?? {};
1517
- const withBase = urls.baseUrl ? urls : { ...urls, baseUrl: host.media?.baseUrl ?? documentBase() };
1518
- return { ...withBase, allowPrivate: withOwnOrigin(withBase.allowPrivate) };
1519
- }
1520
- function linkHref(host, href) {
1521
- return safeHref(urlPolicyOf(host), href);
1522
- }
1523
- function mediaRequestOf(host, src) {
1524
- if (typeof src !== `string` || !src)
1525
- return null;
1526
- const rewritten = host.resolveUrl ? host.resolveUrl(src) : src;
1527
- const req = host.mediaRequest ? host.mediaRequest(rewritten) : mediaRequest(rewritten, { baseUrl: documentBase(), ...host.media, allowPrivate: withOwnOrigin(host.media?.allowPrivate) });
1528
- if (!req)
1529
- return null;
1530
- return mediaUrlAllowed(host, req.url) ? req : null;
1531
- }
1532
- function mediaUrlAllowed(host, url) {
1533
- return decideUrl({ schemes: host.media?.schemes ?? DEFAULT_MEDIA_SCHEMES, hosts: host.media?.hosts, allowPrivate: withOwnOrigin(host.media?.allowPrivate) }, url).allowed;
1534
- }
1535
- function openAllowed(host, url) {
1536
- const href = linkHref(host, url);
1537
- 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)
1538
1596
  return;
1539
- if (host.openUrl)
1540
- host.openUrl(href);
1541
- else if (typeof window !== `undefined`)
1542
- 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();
1543
1603
  }
1544
1604
  // packages/exponential-ui/src/web/host-types.ts
1545
1605
  function lookupIcon(icons, name, fallbacks = {}) {
@@ -1573,6 +1633,13 @@ function phrase(ctx, id, params, fallback) {
1573
1633
  }
1574
1634
  var SIZE_UNITS = [`byte`, `kilobyte`, `megabyte`, `gigabyte`];
1575
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
+ }
1576
1643
  function formatFileSize(bytes, locale) {
1577
1644
  let fmts = sizeFormats.get(locale);
1578
1645
  if (!fmts) {
@@ -1621,6 +1688,14 @@ function joinIds(...ids) {
1621
1688
  return out || undefined;
1622
1689
  }
1623
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
+ }
1624
1699
  function sortRows(rows, sort, column, locale) {
1625
1700
  const order = rows.map((_, i) => i);
1626
1701
  if (!sort || !column)
@@ -1807,163 +1882,6 @@ function parseLocaleNumber(text, locale) {
1807
1882
  const n = Number(clean);
1808
1883
  return Number.isFinite(n) ? n : null;
1809
1884
  }
1810
- // packages/exponential-ui/src/web/media.ts
1811
- import { MEDIA_LIMITS, mediaImageWithinLimits } from "@exponential_app/eui";
1812
- var MEDIA_CACHE_IDLE_MAX = 64;
1813
- var blobs = new Map;
1814
- function mediaCacheKey(url, headers) {
1815
- return `${url}
1816
- ${JSON.stringify(headers)}`;
1817
- }
1818
- function touch(k, e) {
1819
- blobs.delete(k);
1820
- blobs.set(k, e);
1821
- }
1822
- function acquireMedia(k, load) {
1823
- let e = blobs.get(k);
1824
- if (!e) {
1825
- const entry = { refs: 0, promise: Promise.resolve(``) };
1826
- entry.promise = load().then((url) => {
1827
- entry.url = url;
1828
- if (blobs.get(k) !== entry)
1829
- URL.revokeObjectURL(url);
1830
- return url;
1831
- });
1832
- entry.promise.catch(() => {
1833
- if (blobs.get(k) === entry)
1834
- blobs.delete(k);
1835
- });
1836
- e = entry;
1837
- }
1838
- e.refs += 1;
1839
- touch(k, e);
1840
- return e;
1841
- }
1842
- function releaseMedia(k, e) {
1843
- e.refs -= 1;
1844
- if (e.refs > 0 || blobs.get(k) !== e)
1845
- return;
1846
- touch(k, e);
1847
- let idle = 0;
1848
- for (const v of blobs.values())
1849
- if (v.refs === 0)
1850
- idle += 1;
1851
- for (const [ok, v] of blobs) {
1852
- if (idle <= MEDIA_CACHE_IDLE_MAX)
1853
- break;
1854
- if (v.refs > 0)
1855
- continue;
1856
- blobs.delete(ok);
1857
- if (v.url)
1858
- URL.revokeObjectURL(v.url);
1859
- idle -= 1;
1860
- }
1861
- }
1862
- function mediaCacheStats() {
1863
- let inUse = 0;
1864
- for (const v of blobs.values())
1865
- if (v.refs > 0)
1866
- inUse += 1;
1867
- return { entries: blobs.size, inUse };
1868
- }
1869
- function clearMediaCache() {
1870
- for (const [k, v] of blobs) {
1871
- if (v.refs > 0)
1872
- continue;
1873
- blobs.delete(k);
1874
- if (v.url)
1875
- URL.revokeObjectURL(v.url);
1876
- }
1877
- }
1878
- function openMediaSource(host, src, kind = `image`) {
1879
- const req = mediaRequestOf(host, src);
1880
- const headers = req?.headers ?? {};
1881
- const fetched = req !== null && Object.keys(headers).length > 0;
1882
- const k = fetched ? `${kind}
1883
- ${mediaCacheKey(req.url, headers)}` : ``;
1884
- return {
1885
- fetched,
1886
- key: k,
1887
- direct: req ? req.url : undefined,
1888
- denied: Boolean(src) && req === null,
1889
- open: () => {
1890
- if (!req || !fetched)
1891
- return { promise: Promise.resolve(req ? req.url : ``), release: () => {} };
1892
- const hosted = kind === `stream` && host.mediaStreamUrl !== undefined;
1893
- const allowed = (url) => mediaUrlAllowed(host, url);
1894
- 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)));
1895
- return { promise: entry.promise, release: hosted ? () => {} : () => releaseMedia(k, entry) };
1896
- }
1897
- };
1898
- }
1899
- function streamEntry(host, req) {
1900
- const promise = Promise.resolve(host.mediaStreamUrl(req)).then((url) => {
1901
- if (typeof url !== `string` || !mediaUrlAllowed(host, url))
1902
- throw new Error(`stream url denied by the media policy`);
1903
- return url;
1904
- });
1905
- return { promise, refs: 0 };
1906
- }
1907
- function fetchStream(url, headers, limits = MEDIA_LIMITS, allowed = defaultAllowed) {
1908
- return fetchLimited(url, headers, { ...limits, maxPixels: Infinity }, false, allowed);
1909
- }
1910
- function defaultAllowed(url) {
1911
- return mediaUrlAllowed({}, url);
1912
- }
1913
- async function fetchLimited(url, headers, limits = MEDIA_LIMITS, image = true, allowed = defaultAllowed) {
1914
- const abort = new AbortController;
1915
- const timer = setTimeout(() => abort.abort(new Error(`media timed out after ${limits.timeoutMs} ms`)), limits.timeoutMs);
1916
- const over = () => new Error(`media is over ${limits.maxBytes} bytes`);
1917
- try {
1918
- const r = await fetch(url, { headers, signal: abort.signal });
1919
- if (r.redirected && !allowed(r.url)) {
1920
- abort.abort();
1921
- throw new Error(`media redirect denied by the media policy`);
1922
- }
1923
- if (!r.ok)
1924
- throw new Error(`HTTP ${r.status}`);
1925
- if (Number(r.headers.get(`content-length`) ?? NaN) > limits.maxBytes)
1926
- throw over();
1927
- const chunks = [];
1928
- let total = 0;
1929
- if (r.body) {
1930
- const reader = r.body.getReader();
1931
- for (;; ) {
1932
- const { done, value } = await reader.read();
1933
- if (done)
1934
- break;
1935
- total += value.byteLength;
1936
- if (total > limits.maxBytes) {
1937
- abort.abort();
1938
- throw over();
1939
- }
1940
- chunks.push(value);
1941
- }
1942
- } else {
1943
- const all = new Uint8Array(await r.arrayBuffer());
1944
- if (all.byteLength > limits.maxBytes)
1945
- throw over();
1946
- chunks.push(all);
1947
- }
1948
- if (image) {
1949
- const refused = mediaImageWithinLimits(chunks.length === 1 ? chunks[0] : concat(chunks), limits);
1950
- if (refused)
1951
- throw new Error(refused);
1952
- }
1953
- return new Blob(chunks, { type: r.headers.get(`content-type`) ?? `` });
1954
- } finally {
1955
- clearTimeout(timer);
1956
- }
1957
- }
1958
- function concat(chunks) {
1959
- const out = new Uint8Array(chunks.reduce((n, c) => n + c.byteLength, 0));
1960
- let at = 0;
1961
- for (const c of chunks) {
1962
- out.set(c, at);
1963
- at += c.byteLength;
1964
- }
1965
- return out;
1966
- }
1967
1885
  // packages/exponential-ui/src/web/markdown.ts
1968
1886
  var MAX_LINK_NESTING = 32;
1969
1887
  var MAX_LINK_DEST = 8192;
@@ -2378,7 +2296,7 @@ var PLACED = {
2378
2296
  SearchList: [`head`, `search`, `count`, `body`, `list`, `empty`, `fade`],
2379
2297
  Menu: [`trigger`, `head`, `search`, `count`, `body`, `list`, `empty`, `fade`],
2380
2298
  Table: [`header`, `body`, `caption`, `empty`],
2381
- Carousel: [`page`, `indicator`, `controls`, `previous`, `next`],
2299
+ Carousel: [`page`, `indicator`, `controls`, `previous`, `next`, `counter`, `thumbnails`],
2382
2300
  Tooltip: [`anchor`],
2383
2301
  FileUpload: [`label`, `dropzone`, `icon`, `title`, `hint`, `browse`, `description`],
2384
2302
  CodeBlock: [`header`, `title`, `copy`, `body`],
@@ -2443,15 +2361,21 @@ export {
2443
2361
  MAX_BLOCK_NESTING,
2444
2362
  MAX_LINK_DEST,
2445
2363
  MAX_LINK_NESTING,
2446
- 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,
2447
2370
  PLACED,
2448
2371
  QR_CORNERS,
2449
2372
  QR_SCANNER,
2373
+ QUIET_FOCUS_ATTR,
2450
2374
  STATE_SELECTORS,
2451
2375
  TYPEAHEAD_RESET_MS,
2452
2376
  absolutePath,
2453
2377
  acceptsFile,
2454
- acquireMedia,
2378
+ acquireMedia2 as acquireMedia,
2455
2379
  addDays,
2456
2380
  addMonths,
2457
2381
  animationDeclarations,
@@ -2462,7 +2386,7 @@ export {
2462
2386
  boundPath,
2463
2387
  builtinIconName,
2464
2388
  calendarStop,
2465
- clearMediaCache,
2389
+ clearMediaCache2 as clearMediaCache,
2466
2390
  compileNodeSheet,
2467
2391
  compileTheme,
2468
2392
  compiledTheme,
@@ -2474,8 +2398,8 @@ export {
2474
2398
  elementScale2 as elementScale,
2475
2399
  failingCheck,
2476
2400
  failingChecks,
2477
- fetchLimited,
2478
- fetchStream,
2401
+ fetchLimited2 as fetchLimited,
2402
+ fetchStream2 as fetchStream,
2479
2403
  fieldErrorsVisible,
2480
2404
  formatFileSize,
2481
2405
  formatterOf,
@@ -2490,24 +2414,39 @@ export {
2490
2414
  joinIds,
2491
2415
  layoutSize2 as layoutSize,
2492
2416
  linkAt,
2493
- linkHref,
2417
+ linkHref2 as linkHref,
2494
2418
  listViewport,
2495
2419
  lookupIcon,
2496
- mediaCacheKey,
2497
- mediaCacheStats,
2498
- mediaRequestOf,
2499
- mediaUrlAllowed,
2420
+ mediaCacheKey2 as mediaCacheKey,
2421
+ mediaCacheStats2 as mediaCacheStats,
2422
+ mediaClock,
2423
+ mediaRequestOf2 as mediaRequestOf,
2424
+ mediaUrlAllowed2 as mediaUrlAllowed,
2500
2425
  memoFormatter,
2501
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,
2502
2438
  nextEnabledIndex,
2503
2439
  nodeClass,
2504
2440
  nodeSheet,
2505
2441
  nodeSheetBatches,
2506
2442
  num2 as num,
2507
2443
  objects,
2508
- openAllowed,
2509
- openMediaSource,
2510
- ownPrivateHosts,
2444
+ openAllowed2 as openAllowed,
2445
+ openFocusTarget,
2446
+ openMediaSource2 as openMediaSource,
2447
+ overlayOpenFocus,
2448
+ ownPrivateHosts2 as ownPrivateHosts,
2449
+ paintMotionFrame2 as paintMotionFrame,
2511
2450
  parseInline,
2512
2451
  parseIsoDate,
2513
2452
  parseList,
@@ -2524,7 +2463,7 @@ export {
2524
2463
  qrScanFormats,
2525
2464
  qrScanReporter,
2526
2465
  queryToken,
2527
- releaseMedia,
2466
+ releaseMedia2 as releaseMedia,
2528
2467
  resolveAccessibility,
2529
2468
  resolveNodeProps,
2530
2469
  resolveProps,
@@ -2541,14 +2480,16 @@ export {
2541
2480
  shimmerRule,
2542
2481
  sortRows,
2543
2482
  str,
2544
- streamEntry,
2483
+ streamEntry2 as streamEntry,
2545
2484
  styleDirection,
2546
2485
  surfaceClass,
2486
+ tableMinWidth,
2487
+ tableTemplate,
2547
2488
  themeScope,
2548
2489
  tokenVar,
2549
2490
  tokenVarName,
2550
2491
  typeaheadStep,
2551
- urlPolicyOf,
2492
+ urlPolicyOf2 as urlPolicyOf,
2552
2493
  validateOnDefault,
2553
2494
  viewOf,
2554
2495
  visualScale2 as visualScale,
@@ -2561,5 +2502,5 @@ export {
2561
2502
  withinSlop
2562
2503
  };
2563
2504
 
2564
- //# debugId=3DD32DA39743EA9764756E2164756E21
2505
+ //# debugId=1F64AD564A39483D64756E2164756E21
2565
2506
  //# sourceMappingURL=index.js.map