@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/index.js CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  isOffered2,
17
17
  componentNames2,
18
18
  coreLite2
19
- } from "./chunks/index-5fmaa0xq.js";
19
+ } from "./chunks/index-f9wkb6aq.js";
20
20
  import {
21
21
  STYLE_KEYS2,
22
22
  STYLE_LAYOUT_KEYS2,
@@ -93,7 +93,7 @@ import {
93
93
  SURFACE_COMMANDS2,
94
94
  errorMessage2,
95
95
  actionMessage2
96
- } from "./chunks/index-bg2jsgjq.js";
96
+ } from "./chunks/index-vkn82srs.js";
97
97
  import {
98
98
  CATALOG_ID2,
99
99
  LITE_CATALOG_ID2,
@@ -260,6 +260,14 @@ import {
260
260
  toolConsent2,
261
261
  toolConsentKey2,
262
262
  toolCall2,
263
+ EXPOSES_LIMITS2,
264
+ EXPOSE_RUN_KINDS2,
265
+ exposeTemplatePaths2,
266
+ exposeActionAccess2,
267
+ exposeNameDestructive2,
268
+ validateUpstreams2,
269
+ exposeIssues2,
270
+ validatePackageExposes2,
263
271
  PACKAGE_FORMAT_VERSION2,
264
272
  supportedCatalogIds2,
265
273
  clientCapabilities2,
@@ -280,52 +288,30 @@ import {
280
288
  SseTransport2,
281
289
  WebSocketTransport2,
282
290
  McpTransport2
283
- } from "./chunks/index-gtk2gwsb.js";
291
+ } from "./chunks/index-4xczxey5.js";
292
+ import {
293
+ LAYOUT_CONSTANTS2,
294
+ WINDOW_THRESHOLD2,
295
+ WINDOW_OVERSCAN2,
296
+ RESIZE_STEP2,
297
+ PANEL_MIN2,
298
+ RESIZE_HANDLE_HIT2,
299
+ FIELD_INTRINSIC_WIDTH2,
300
+ MEDIA_INTRINSIC_WIDTH2,
301
+ MEDIA_ASPECT_RATIO2,
302
+ TREE_GUIDE_COLUMN2,
303
+ TREE_GUIDE_RADIUS2,
304
+ TREE_GUIDE_BRIDGE2,
305
+ PENDING_DELAY_MS2,
306
+ SKELETON_PULSE_MS2,
307
+ SKELETON_OPACITY_LOW2,
308
+ SKELETON_OPACITY_HIGH2,
309
+ SKELETON_REDUCED_OPACITY2,
310
+ SEARCH_LIST_FADE2
311
+ } from "./chunks/index-dgkf6yw5.js";
284
312
  import {
285
313
  style_default
286
- } from "./chunks/index-fy7y2nz8.js";
287
- // packages/exponential-ui/catalog/layout.json
288
- var layout_default = {
289
- $comment: "Round 2 (docs/round-2-contract.md §7): the layout NUMBERS every painter shares where no theme token decides (px unless noted). `windowThreshold` = items past which List and Table window; `windowOverscan` = items rendered beyond each viewport edge; `resizeStep` = percentage points per arrow key on a Resizable handle; `panelMin` = a panel's min (percent) when unset; `resizeHandleHit` = a handle's hit area across its hairline; `fieldIntrinsicWidth` = the max-content width of a text field (Input, Textarea, NumberField, ChipInput: never the browser's `size` default) — picker triggers (Select, DatePicker, DateRangePicker, TimePicker) size to their content; `mediaIntrinsicWidth` = the max-content width of an Image/Video without a width (its min-content is 0); `mediaAspectRatio` = width/height of an Image without `aspectRatio` or a height (Video: its `aspectRatio` default); `treeGuideColumn` = one TreeGuides gutter column (the recipe's `line` width is the STROKE; round 3: 14, the ×4 app indent, the elbow lands on the parent's lead glyph); `treeGuideRadius` = the elbow's corner radius; `treeGuideBridge` = how far the guide verticals overshoot the row's TOP edge (paint only) so a Section's hairline divider never breaks the line. EXP-1259 (packages/domain-contract/fixtures/feedback-states.json + search-list.json): `pendingDelayMs` = how long a `loading` Button waits before it shows the spinner and its `pendingLabel` (a fast action never flashes; presses are refused at once); `skeletonPulseMs` / `skeletonOpacityLow` / `skeletonOpacityHigh` = the placeholder's ONE opacity pulse (low → high → low, ease-in-out), `skeletonReducedOpacity` = its static opacity under reduce motion; `searchListFade` = the bottom fade over a SearchList (or a searchable submenu) while more rows sit below. Generated into every target; src/layout.ts reads it.",
290
- windowThreshold: 50,
291
- windowOverscan: 5,
292
- resizeStep: 10,
293
- panelMin: 10,
294
- resizeHandleHit: 8,
295
- fieldIntrinsicWidth: 160,
296
- mediaIntrinsicWidth: 320,
297
- mediaAspectRatio: 1.7777778,
298
- treeGuideColumn: 14,
299
- treeGuideRadius: 3,
300
- treeGuideBridge: 1,
301
- pendingDelayMs: 150,
302
- skeletonPulseMs: 1600,
303
- skeletonOpacityLow: 0.45,
304
- skeletonOpacityHigh: 0.9,
305
- skeletonReducedOpacity: 0.6,
306
- searchListFade: 24
307
- };
308
-
309
- // packages/exponential-ui/src/layout.ts
310
- var LAYOUT_CONSTANTS = Object.fromEntries(Object.entries(layout_default).filter(([k]) => !k.startsWith(`$`)));
311
- var WINDOW_THRESHOLD = layout_default.windowThreshold;
312
- var WINDOW_OVERSCAN = layout_default.windowOverscan;
313
- var RESIZE_STEP = layout_default.resizeStep;
314
- var PANEL_MIN = layout_default.panelMin;
315
- var RESIZE_HANDLE_HIT = layout_default.resizeHandleHit;
316
- var FIELD_INTRINSIC_WIDTH = layout_default.fieldIntrinsicWidth;
317
- var MEDIA_INTRINSIC_WIDTH = layout_default.mediaIntrinsicWidth;
318
- var MEDIA_ASPECT_RATIO = layout_default.mediaAspectRatio;
319
- var TREE_GUIDE_COLUMN = layout_default.treeGuideColumn;
320
- var TREE_GUIDE_RADIUS = layout_default.treeGuideRadius;
321
- var TREE_GUIDE_BRIDGE = layout_default.treeGuideBridge;
322
- var PENDING_DELAY_MS = layout_default.pendingDelayMs;
323
- var SKELETON_PULSE_MS = layout_default.skeletonPulseMs;
324
- var SKELETON_OPACITY_LOW = layout_default.skeletonOpacityLow;
325
- var SKELETON_OPACITY_HIGH = layout_default.skeletonOpacityHigh;
326
- var SKELETON_REDUCED_OPACITY = layout_default.skeletonReducedOpacity;
327
- var SEARCH_LIST_FADE = layout_default.searchListFade;
328
-
314
+ } from "./chunks/index-cvf7bbs5.js";
329
315
  // packages/exponential-ui/src/list.ts
330
316
  function templateItemKeys(items, keyPointer) {
331
317
  const seen = new Set;
@@ -411,7 +397,7 @@ function templateBudget(root, data, templateNode) {
411
397
  if (template && tpl) {
412
398
  const path = absolutePath2(template.path, { base: scope });
413
399
  const list = readPointer2(data, path);
414
- const windowed = Array.isArray(list) && node.component === `List` && node.children.length + list.length > WINDOW_THRESHOLD;
400
+ const windowed = Array.isArray(list) && node.component === `List` && node.children.length + list.length > WINDOW_THRESHOLD2;
415
401
  if (Array.isArray(list) && !windowed) {
416
402
  const site = templateSiteKey(node.id, scope);
417
403
  allowed.set(site, 0);
@@ -455,7 +441,7 @@ function firstWhere(lo, hi, test) {
455
441
  }
456
442
  return lo;
457
443
  }
458
- function virtualWindow(extents, gap, scroll, viewport, overscan = WINDOW_OVERSCAN, offsets) {
444
+ function virtualWindow(extents, gap, scroll, viewport, overscan = WINDOW_OVERSCAN2, offsets) {
459
445
  const count = extents.length;
460
446
  const off = offsets ?? itemOffsets(extents, gap);
461
447
  const total = off[count];
@@ -532,18 +518,236 @@ function stickyHeader(rowOffsets, rowExtents, headerRows, scroll) {
532
518
  const offset = next === undefined ? scroll : Math.min(scroll, rowOffsets[next] - extent);
533
519
  return { row, offset };
534
520
  }
535
- // packages/exponential-ui/src/resizable.ts
536
- var EPS = 0.000000001;
537
- var clampN = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
521
+ // packages/exponential-ui/src/zoom.ts
522
+ var ZOOM = style_default.zoomableImage;
523
+ var EPS = 0.000001;
538
524
  var tidy = (v) => {
539
525
  const r = Math.round(v * 1e6) / 1e6;
540
526
  return Object.is(r, -0) ? 0 : r;
541
527
  };
528
+ var tidyView = (v) => ({ scale: tidy(v.scale), x: tidy(v.x), y: tidy(v.y) });
529
+ var clampN = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
530
+ var positive = (v) => typeof v === `number` && Number.isFinite(v) && v > 0 ? v : 0;
531
+ function sizes(frame) {
532
+ return {
533
+ iw: positive(frame.natural.width),
534
+ ih: positive(frame.natural.height),
535
+ vw: positive(frame.viewport.width),
536
+ vh: positive(frame.viewport.height)
537
+ };
538
+ }
539
+ function zoomIsTall(natural) {
540
+ const w = positive(natural.width);
541
+ const h = positive(natural.height);
542
+ return w > 0 && h > 0 && w / h < ZOOM.tallAspect;
543
+ }
544
+ function zoomFitScale(frame) {
545
+ return tidy(fitRaw(frame));
546
+ }
547
+ function fitRaw(frame) {
548
+ const { iw, ih, vw, vh } = sizes(frame);
549
+ if (iw === 0 || ih === 0 || vw === 0 || vh === 0)
550
+ return 1;
551
+ return Math.min(1, vw / iw, vh / ih);
552
+ }
553
+ function limitsRaw(frame) {
554
+ const min = fitRaw(frame);
555
+ const wanted = positive(frame.maxScale) || ZOOM.maxScale;
556
+ return { min, max: Math.max(min, wanted) };
557
+ }
558
+ function zoomLimits(frame) {
559
+ const { min, max } = limitsRaw(frame);
560
+ return { min: tidy(min), max: tidy(max) };
561
+ }
562
+ function restRaw(frame) {
563
+ const { iw, vw } = sizes(frame);
564
+ const { min, max } = limitsRaw(frame);
565
+ const initial = frame.initial ?? `auto`;
566
+ const mode = initial === `auto` ? zoomIsTall(frame.natural) ? `fitWidth` : `fit` : initial;
567
+ let scale = min;
568
+ if (mode === `fitWidth`)
569
+ scale = iw > 0 && vw > 0 ? Math.min(1, vw / iw) : 1;
570
+ else if (mode === `actual`)
571
+ scale = 1;
572
+ return clampN(scale, min, max);
573
+ }
574
+ function zoomRestScale(frame) {
575
+ return tidy(restRaw(frame));
576
+ }
577
+ function clampAxis(offset, scaled, extent) {
578
+ if (scaled <= extent + EPS)
579
+ return (extent - scaled) / 2;
580
+ return clampN(offset, extent - scaled, 0);
581
+ }
582
+ function zoomClamp(view, frame) {
583
+ const { iw, ih, vw, vh } = sizes(frame);
584
+ const { min, max } = limitsRaw(frame);
585
+ const scale = clampN(view.scale, min, max);
586
+ return tidyView({ scale, x: clampAxis(view.x, iw * scale, vw), y: clampAxis(view.y, ih * scale, vh) });
587
+ }
588
+ function zoomRestView(frame) {
589
+ const { iw, vw } = sizes(frame);
590
+ const scale = restRaw(frame);
591
+ return zoomClamp({ scale, x: (vw - iw * scale) / 2, y: 0 }, frame);
592
+ }
593
+ function zoomAtRest(view, frame) {
594
+ return Math.abs(view.scale - restRaw(frame)) < 0.0001;
595
+ }
596
+ function zoomTo(view, scale, anchor, frame) {
597
+ const { min, max } = limitsRaw(frame);
598
+ const next = clampN(scale, min, max);
599
+ const ratio = view.scale > 0 ? next / view.scale : 1;
600
+ return zoomClamp({ scale: next, x: anchor.x - (anchor.x - view.x) * ratio, y: anchor.y - (anchor.y - view.y) * ratio }, frame);
601
+ }
602
+ function zoomCentre(frame) {
603
+ const { vw, vh } = sizes(frame);
604
+ return { x: vw / 2, y: vh / 2 };
605
+ }
606
+ function zoomWheelFactor(deltaY, mode = `pixel`) {
607
+ const px = mode === `line` ? deltaY * ZOOM.wheelLinePx : deltaY;
608
+ return Math.exp(-px * ZOOM.wheelRate);
609
+ }
610
+ function zoomWheel(view, deltaY, mode, anchor, frame) {
611
+ return zoomTo(view, view.scale * zoomWheelFactor(deltaY, mode), anchor, frame);
612
+ }
613
+ function zoomScroll(view, deltaX, deltaY, frame) {
614
+ return zoomClamp({ scale: view.scale, x: view.x - deltaX, y: view.y - deltaY }, frame);
615
+ }
616
+ function zoomLadder(frame) {
617
+ const { min, max } = limitsRaw(frame);
618
+ const rest = restRaw(frame);
619
+ const all = [...ZOOM.presets, min, rest, max].filter((s) => s >= min - EPS && s <= max + EPS);
620
+ const out = [];
621
+ for (const s of all.sort((a, b) => a - b))
622
+ if (out.length === 0 || s - out[out.length - 1] > 0.0001)
623
+ out.push(tidy(s));
624
+ return out;
625
+ }
626
+ function zoomStepScale(scale, direction, frame) {
627
+ const ladder = zoomLadder(frame);
628
+ if (direction > 0)
629
+ return ladder.find((s) => s > scale + 0.0001) ?? ladder[ladder.length - 1];
630
+ for (let i = ladder.length - 1;i >= 0; i--)
631
+ if (ladder[i] < scale - 0.0001)
632
+ return ladder[i];
633
+ return ladder[0];
634
+ }
635
+ function zoomStep(view, direction, frame) {
636
+ return zoomTo(view, zoomStepScale(view.scale, direction, frame), zoomCentre(frame), frame);
637
+ }
638
+ function zoomDoubleTapScale(frame) {
639
+ const { max } = limitsRaw(frame);
640
+ return tidy(Math.min(max, Math.max(1, ZOOM.doubleTapFactor * restRaw(frame))));
641
+ }
642
+ function zoomDoubleTap(view, point, frame) {
643
+ if (zoomAtRest(view, frame))
644
+ return zoomTo(view, zoomDoubleTapScale(frame), point, frame);
645
+ return zoomRestView(frame);
646
+ }
647
+ function zoomKey(view, key, frame) {
648
+ if (key === `+` || key === `=`)
649
+ return zoomStep(view, 1, frame);
650
+ if (key === `-` || key === `−` || key === `_`)
651
+ return zoomStep(view, -1, frame);
652
+ if (key === `0`)
653
+ return zoomRestView(frame);
654
+ if (key === `1`)
655
+ return zoomTo(view, 1, zoomCentre(frame), frame);
656
+ return null;
657
+ }
658
+ function zoomRubberBand(overshoot, extent) {
659
+ if (extent <= 0 || overshoot === 0)
660
+ return 0;
661
+ const sign = overshoot < 0 ? -1 : 1;
662
+ const o = Math.abs(overshoot);
663
+ return tidy(sign * (1 - 1 / (o * ZOOM.rubber / extent + 1)) * extent);
664
+ }
665
+ function rubberAxis(offset, scaled, extent) {
666
+ const lo = scaled <= extent + EPS ? (extent - scaled) / 2 : extent - scaled;
667
+ const hi = scaled <= extent + EPS ? (extent - scaled) / 2 : 0;
668
+ if (offset > hi)
669
+ return hi + zoomRubberBand(offset - hi, extent);
670
+ if (offset < lo)
671
+ return lo + zoomRubberBand(offset - lo, extent);
672
+ return offset;
673
+ }
674
+ function zoomDrag(start, dx, dy, frame) {
675
+ const { iw, ih, vw, vh } = sizes(frame);
676
+ return tidyView({
677
+ scale: start.scale,
678
+ x: rubberAxis(start.x + dx, iw * start.scale, vw),
679
+ y: rubberAxis(start.y + dy, ih * start.scale, vh)
680
+ });
681
+ }
682
+ function zoomPinch(start, factor, anchor, frame) {
683
+ const { iw, ih, vw, vh } = sizes(frame);
684
+ const { min, max } = limitsRaw(frame);
685
+ const raw = start.scale * factor;
686
+ let scale = raw;
687
+ if (raw > max)
688
+ scale = max + zoomRubberBand(raw - max, max);
689
+ else if (raw < min)
690
+ scale = min + zoomRubberBand(raw - min, min);
691
+ const ratio = start.scale > 0 ? scale / start.scale : 1;
692
+ return tidyView({
693
+ scale,
694
+ x: rubberAxis(anchor.x - (anchor.x - start.x) * ratio, iw * scale, vw),
695
+ y: rubberAxis(anchor.y - (anchor.y - start.y) * ratio, ih * scale, vh)
696
+ });
697
+ }
698
+ function zoomMomentum(view, vx, vy, t, frame) {
699
+ const tau = ZOOM.momentumTauMs;
700
+ const travel = tau * (1 - Math.exp(-Math.max(0, t) / tau));
701
+ return zoomClamp({ scale: view.scale, x: view.x + vx * travel, y: view.y + vy * travel }, frame);
702
+ }
703
+ function zoomMomentumActive(vx, vy, t) {
704
+ const decay = Math.exp(-Math.max(0, t) / ZOOM.momentumTauMs);
705
+ return Math.hypot(vx, vy) * decay > 0.01;
706
+ }
707
+ function zoomPanRoom(view, frame) {
708
+ const { iw, ih, vw, vh } = sizes(frame);
709
+ return { x: iw * view.scale > vw + EPS, y: ih * view.scale > vh + EPS };
710
+ }
711
+ function zoomResize(view, from, frame) {
712
+ const before = { ...frame, viewport: from };
713
+ if (zoomAtRest(view, before))
714
+ return zoomRestView(frame);
715
+ const { vw, vh } = sizes(frame);
716
+ const cx = positive(from.width) / 2;
717
+ const cy = positive(from.height) / 2;
718
+ return zoomClamp({ scale: view.scale, x: vw / 2 - (cx - view.x), y: vh / 2 - (cy - view.y) }, frame);
719
+ }
720
+ function zoomPercent(scale) {
721
+ return `${Math.round(scale * 100)}%`;
722
+ }
723
+ function zoomMenu(view, frame, fitLabel) {
724
+ const { min, max } = limitsRaw(frame);
725
+ const atRest = zoomAtRest(view, frame);
726
+ const items = [];
727
+ for (const s of ZOOM.menuPresets) {
728
+ if (s === 0)
729
+ items.push({ scale: null, label: fitLabel, checked: atRest });
730
+ else if (s >= min - EPS && s <= max + EPS)
731
+ items.push({ scale: s, label: zoomPercent(s), checked: !atRest && Math.abs(view.scale - s) < 0.0001 });
732
+ }
733
+ return items;
734
+ }
735
+ function zoomBounds(view, frame) {
736
+ const { min, max } = limitsRaw(frame);
737
+ return { atMin: view.scale <= min + 0.0001, atMax: view.scale >= max - 0.0001 };
738
+ }
739
+ // packages/exponential-ui/src/resizable.ts
740
+ var EPS2 = 0.000000001;
741
+ var clampN2 = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
742
+ var tidy2 = (v) => {
743
+ const r = Math.round(v * 1e6) / 1e6;
744
+ return Object.is(r, -0) ? 0 : r;
745
+ };
542
746
  function limitsOf(limits, i, count) {
543
747
  const l = limits?.[i] ?? {};
544
748
  const cap = 100 / Math.max(1, count);
545
- const min = clampN(typeof l.min === `number` && Number.isFinite(l.min) ? l.min : PANEL_MIN, 0, cap);
546
- const max = clampN(typeof l.max === `number` && Number.isFinite(l.max) ? l.max : 100, min, 100);
749
+ const min = clampN2(typeof l.min === `number` && Number.isFinite(l.min) ? l.min : PANEL_MIN2, 0, cap);
750
+ const max = clampN2(typeof l.max === `number` && Number.isFinite(l.max) ? l.max : 100, min, 100);
547
751
  return { min, max, collapsible: l.collapsible === true };
548
752
  }
549
753
  function normalizeSizes(sizes, count, limits) {
@@ -563,11 +767,11 @@ function normalizeSizes(sizes, count, limits) {
563
767
  out = given.map((v) => v ?? rest / missing);
564
768
  }
565
769
  const total = out.reduce((s, v) => s + v, 0);
566
- out = total > EPS ? out.map((v) => v * 100 / total) : out.map(() => 100 / count);
770
+ out = total > EPS2 ? out.map((v) => v * 100 / total) : out.map(() => 100 / count);
567
771
  const lim = out.map((_, i) => limitsOf(limits, i, count));
568
- out = out.map((v, i) => lim[i].collapsible && v <= EPS ? 0 : clampN(v, lim[i].min, lim[i].max));
772
+ out = out.map((v, i) => lim[i].collapsible && v <= EPS2 ? 0 : clampN2(v, lim[i].min, lim[i].max));
569
773
  let diff = 100 - out.reduce((s, v) => s + v, 0);
570
- for (let i = 0;i < count && Math.abs(diff) > EPS; i++) {
774
+ for (let i = 0;i < count && Math.abs(diff) > EPS2; i++) {
571
775
  if (lim[i].collapsible && out[i] === 0)
572
776
  continue;
573
777
  const room = diff > 0 ? lim[i].max - out[i] : lim[i].min - out[i];
@@ -575,49 +779,49 @@ function normalizeSizes(sizes, count, limits) {
575
779
  out[i] += take;
576
780
  diff -= take;
577
781
  }
578
- return out.map(tidy);
782
+ return out.map(tidy2);
579
783
  }
580
784
  function resizePanels(sizes, handle, delta, limits) {
581
785
  const out = [...sizes];
582
786
  const a = handle;
583
787
  const b = handle + 1;
584
788
  if (a < 0 || b >= sizes.length || !Number.isFinite(delta))
585
- return out.map(tidy);
789
+ return out.map(tidy2);
586
790
  const la = limitsOf(limits, a, sizes.length);
587
791
  const lb = limitsOf(limits, b, sizes.length);
588
792
  const lo = Math.max(la.min - sizes[a], sizes[b] - lb.max);
589
793
  const hi = Math.min(la.max - sizes[a], sizes[b] - lb.min);
590
- let d = clampN(delta, Math.min(lo, 0), Math.max(hi, 0));
591
- if (la.collapsible && delta < 0 && sizes[a] > 0 && sizes[a] + delta < la.min / 2 && sizes[b] + sizes[a] <= lb.max + EPS)
794
+ let d = clampN2(delta, Math.min(lo, 0), Math.max(hi, 0));
795
+ if (la.collapsible && delta < 0 && sizes[a] > 0 && sizes[a] + delta < la.min / 2 && sizes[b] + sizes[a] <= lb.max + EPS2)
592
796
  d = -sizes[a];
593
- else if (lb.collapsible && delta > 0 && sizes[b] > 0 && sizes[b] - delta < lb.min / 2 && sizes[a] + sizes[b] <= la.max + EPS)
797
+ else if (lb.collapsible && delta > 0 && sizes[b] > 0 && sizes[b] - delta < lb.min / 2 && sizes[a] + sizes[b] <= la.max + EPS2)
594
798
  d = sizes[b];
595
799
  else if (la.collapsible && sizes[a] === 0)
596
- d = delta >= la.min / 2 && hi >= la.min - EPS ? clampN(delta, la.min, hi) : 0;
800
+ d = delta >= la.min / 2 && hi >= la.min - EPS2 ? clampN2(delta, la.min, hi) : 0;
597
801
  else if (lb.collapsible && sizes[b] === 0)
598
- d = -delta >= lb.min / 2 && -lo >= lb.min - EPS ? -clampN(-delta, lb.min, -lo) : 0;
802
+ d = -delta >= lb.min / 2 && -lo >= lb.min - EPS2 ? -clampN2(-delta, lb.min, -lo) : 0;
599
803
  out[a] = sizes[a] + d;
600
804
  out[b] = sizes[b] - d;
601
- return out.map(tidy);
805
+ return out.map(tidy2);
602
806
  }
603
807
  function keyboardResize(sizes, handle, key, orientation, direction = `ltr`, limits) {
604
808
  const a = handle;
605
809
  const b = handle + 1;
606
810
  if (a < 0 || b >= sizes.length)
607
- return sizes.map(tidy);
811
+ return sizes.map(tidy2);
608
812
  const la = limitsOf(limits, a, sizes.length);
609
813
  const lb = limitsOf(limits, b, sizes.length);
610
814
  const flip = orientation === `horizontal` && direction === `rtl` ? -1 : 1;
611
- const step = (sign) => resizePanels(sizes, handle, sign * RESIZE_STEP, limits);
815
+ const step = (sign) => resizePanels(sizes, handle, sign * RESIZE_STEP2, limits);
612
816
  switch (key) {
613
817
  case `ArrowRight`:
614
- return orientation === `horizontal` ? step(flip) : sizes.map(tidy);
818
+ return orientation === `horizontal` ? step(flip) : sizes.map(tidy2);
615
819
  case `ArrowLeft`:
616
- return orientation === `horizontal` ? step(-flip) : sizes.map(tidy);
820
+ return orientation === `horizontal` ? step(-flip) : sizes.map(tidy2);
617
821
  case `ArrowDown`:
618
- return orientation === `vertical` ? step(1) : sizes.map(tidy);
822
+ return orientation === `vertical` ? step(1) : sizes.map(tidy2);
619
823
  case `ArrowUp`:
620
- return orientation === `vertical` ? step(-1) : sizes.map(tidy);
824
+ return orientation === `vertical` ? step(-1) : sizes.map(tidy2);
621
825
  case `Home`:
622
826
  return resizePanels(sizes, handle, la.min - sizes[a], limits);
623
827
  case `End`:
@@ -626,31 +830,31 @@ function keyboardResize(sizes, handle, key, orientation, direction = `ltr`, limi
626
830
  const out = [...sizes];
627
831
  if (la.collapsible) {
628
832
  const d = sizes[a] > 0 ? -sizes[a] : Math.min(la.min, sizes[b] - lb.min);
629
- if (sizes[b] - d > lb.max + EPS || d === 0)
630
- return sizes.map(tidy);
833
+ if (sizes[b] - d > lb.max + EPS2 || d === 0)
834
+ return sizes.map(tidy2);
631
835
  out[a] += d;
632
836
  out[b] -= d;
633
837
  } else if (lb.collapsible) {
634
838
  const d = sizes[b] > 0 ? sizes[b] : -Math.min(lb.min, sizes[a] - la.min);
635
- if (sizes[a] + d > la.max + EPS || d === 0)
636
- return sizes.map(tidy);
839
+ if (sizes[a] + d > la.max + EPS2 || d === 0)
840
+ return sizes.map(tidy2);
637
841
  out[a] += d;
638
842
  out[b] -= d;
639
843
  }
640
- return out.map(tidy);
844
+ return out.map(tidy2);
641
845
  }
642
846
  default:
643
- return sizes.map(tidy);
847
+ return sizes.map(tidy2);
644
848
  }
645
849
  }
646
850
  function panelExtents(sizes, container, handleExtent = 1) {
647
851
  const avail = Math.max(0, container - Math.max(0, sizes.length - 1) * handleExtent);
648
- return sizes.map((s) => tidy(avail * s / 100));
852
+ return sizes.map((s) => tidy2(avail * s / 100));
649
853
  }
650
854
  function dragDelta(px, container, panelCount, orientation, direction = `ltr`, handleExtent = 1) {
651
855
  const avail = Math.max(1, container - Math.max(0, panelCount - 1) * handleExtent);
652
856
  const flip = orientation === `horizontal` && direction === `rtl` ? -1 : 1;
653
- return tidy(px * 100 / avail * flip);
857
+ return tidy2(px * 100 / avail * flip);
654
858
  }
655
859
  // packages/exponential-ui/src/direction.ts
656
860
  function ownDirection(node, ctx) {
@@ -2019,11 +2223,21 @@ var a11y_default = {
2019
2223
  "Tab reaches the copy button; Enter, Space: copy and announce `copied`"
2020
2224
  ]
2021
2225
  },
2226
+ Motion: {
2227
+ role: "img",
2228
+ notes: "img named by label; decorative (hidden) without one; with on.press it is a button (focusable, named by label) and its state machine gets the click",
2229
+ keys: ["Enter/Space: press (with on.press)"]
2230
+ },
2022
2231
  Image: {
2023
2232
  role: "img",
2024
2233
  notes: "img (alt = name; decorative when alt is empty)",
2025
2234
  keys: []
2026
2235
  },
2236
+ ZoomableImage: {
2237
+ role: "img",
2238
+ notes: "img (alt = name), focusable; the zoom pill's buttons are named `$string.zoomOut`, `$string.zoomIn`, `$string.zoomToFit` (pressed while at rest) and the percent button `$string.zoomLevel` (its value = the percent, opening a menu whose first row is `$string.zoomFit`)",
2239
+ keys: ["+ / =: zoom in a step", "-: zoom out a step", "0: back to the opening zoom", "1: 100%"]
2240
+ },
2027
2241
  Icon: {
2028
2242
  role: "img",
2029
2243
  notes: "img when labelled, hidden otherwise",
@@ -2055,12 +2269,19 @@ var a11y_default = {
2055
2269
  },
2056
2270
  Carousel: {
2057
2271
  role: "region",
2058
- notes: "region, roledescription carousel; each page a group `page i of n`",
2272
+ notes: "region, roledescription carousel; each page a group `page i of n`; the counter `$string.pageCounter` is hidden (each page already says page i of n); each thumbnail a button `page i of n`, aria-current on the current one",
2059
2273
  keys: [
2060
2274
  "ArrowLeft/ArrowRight: previous/next page while focus is inside",
2061
2275
  "Home/End: first/last page"
2062
2276
  ]
2063
2277
  },
2278
+ Mosaic: {
2279
+ role: "group",
2280
+ notes: "group labelled `label`; each tile a button named its picture's `alt`; the `+N` tile reads `alt` then `+N` ($string.morePictures).",
2281
+ keys: [
2282
+ "Tab through the tiles; Enter, Space: select"
2283
+ ]
2284
+ },
2064
2285
  Tabs: {
2065
2286
  role: "tablist",
2066
2287
  notes: "tablist / tab / tabpanel",
@@ -2406,6 +2627,13 @@ var a11y_default = {
2406
2627
  "Tab through the links; Enter: select"
2407
2628
  ]
2408
2629
  },
2630
+ Outline: {
2631
+ role: "navigation",
2632
+ notes: "navigation labelled by `caption`; each row a link (aria-current=location on the active row) named `title` then the count; press fires `select {id}`.",
2633
+ keys: [
2634
+ "Tab through the rows; Enter, Space: select"
2635
+ ]
2636
+ },
2409
2637
  Stepper: {
2410
2638
  role: "list",
2411
2639
  notes: "list; the current step aria-current=step. Each step a listitem labelled `stepDone`/`stepCurrent`/`stepUpcoming`; the current one aria-current=step ($a11y).",
@@ -3486,10 +3714,12 @@ export {
3486
3714
  ENGLISH_FORMAT_FUNCTIONS2 as ENGLISH_FORMAT_FUNCTIONS,
3487
3715
  ENGLISH_TIME_PATTERN2 as ENGLISH_TIME_PATTERN,
3488
3716
  ENUMS2 as ENUMS,
3717
+ EXPOSES_LIMITS2 as EXPOSES_LIMITS,
3718
+ EXPOSE_RUN_KINDS2 as EXPOSE_RUN_KINDS,
3489
3719
  EXTENSION_MESSAGE_KINDS2 as EXTENSION_MESSAGE_KINDS,
3490
3720
  ExponentialConnector,
3491
3721
  ExponentialHost2 as ExponentialHost,
3492
- FIELD_INTRINSIC_WIDTH,
3722
+ FIELD_INTRINSIC_WIDTH2 as FIELD_INTRINSIC_WIDTH,
3493
3723
  FORMATTER_METHODS2 as FORMATTER_METHODS,
3494
3724
  FORMAT_FUNCTION_NAMES2 as FORMAT_FUNCTION_NAMES,
3495
3725
  FUNCTION_NAMES2 as FUNCTION_NAMES,
@@ -3501,7 +3731,7 @@ export {
3501
3731
  ICON_NAMES2 as ICON_NAMES,
3502
3732
  JsonlDecoder2 as JsonlDecoder,
3503
3733
  JsonlStreamTransport2 as JsonlStreamTransport,
3504
- LAYOUT_CONSTANTS,
3734
+ LAYOUT_CONSTANTS2 as LAYOUT_CONSTANTS,
3505
3735
  LIMITS2 as LIMITS,
3506
3736
  LIMIT_ISSUES2 as LIMIT_ISSUES,
3507
3737
  LITE_CATALOG_ID2 as LITE_CATALOG_ID,
@@ -3515,8 +3745,8 @@ export {
3515
3745
  MAX_TEMPLATE_ITEMS2 as MAX_TEMPLATE_ITEMS,
3516
3746
  MCP_ACTION_TOOL2 as MCP_ACTION_TOOL,
3517
3747
  MCP_MIME_TYPES2 as MCP_MIME_TYPES,
3518
- MEDIA_ASPECT_RATIO,
3519
- MEDIA_INTRINSIC_WIDTH,
3748
+ MEDIA_ASPECT_RATIO2 as MEDIA_ASPECT_RATIO,
3749
+ MEDIA_INTRINSIC_WIDTH2 as MEDIA_INTRINSIC_WIDTH,
3520
3750
  MEDIA_LIMITS2 as MEDIA_LIMITS,
3521
3751
  MESSAGE_KINDS2 as MESSAGE_KINDS,
3522
3752
  MODES2 as MODES,
@@ -3530,8 +3760,8 @@ export {
3530
3760
  PACKAGE_FILE_SIGNATURE_CONTEXT2 as PACKAGE_FILE_SIGNATURE_CONTEXT,
3531
3761
  PACKAGE_FORMAT_VERSION2 as PACKAGE_FORMAT_VERSION,
3532
3762
  PAINT_ERROR_HOOK2 as PAINT_ERROR_HOOK,
3533
- PANEL_MIN,
3534
- PENDING_DELAY_MS,
3763
+ PANEL_MIN2 as PANEL_MIN,
3764
+ PENDING_DELAY_MS2 as PENDING_DELAY_MS,
3535
3765
  POINTER_ISSUES2 as POINTER_ISSUES,
3536
3766
  PackageError2 as PackageError,
3537
3767
  QR_CODE,
@@ -3549,15 +3779,15 @@ export {
3549
3779
  RECORD_RESERVED_KEYS2 as RECORD_RESERVED_KEYS,
3550
3780
  RENDER_FAILED2 as RENDER_FAILED,
3551
3781
  RESERVED_KEYS2 as RESERVED_KEYS,
3552
- RESIZE_HANDLE_HIT,
3553
- RESIZE_STEP,
3782
+ RESIZE_HANDLE_HIT2 as RESIZE_HANDLE_HIT,
3783
+ RESIZE_STEP2 as RESIZE_STEP,
3554
3784
  RTL_MIRRORED_ICONS,
3555
- SEARCH_LIST_FADE,
3785
+ SEARCH_LIST_FADE2 as SEARCH_LIST_FADE,
3556
3786
  SHADCN_COLOR_VARS,
3557
- SKELETON_OPACITY_HIGH,
3558
- SKELETON_OPACITY_LOW,
3559
- SKELETON_PULSE_MS,
3560
- SKELETON_REDUCED_OPACITY,
3787
+ SKELETON_OPACITY_HIGH2 as SKELETON_OPACITY_HIGH,
3788
+ SKELETON_OPACITY_LOW2 as SKELETON_OPACITY_LOW,
3789
+ SKELETON_PULSE_MS2 as SKELETON_PULSE_MS,
3790
+ SKELETON_REDUCED_OPACITY2 as SKELETON_REDUCED_OPACITY,
3561
3791
  SPECIMEN_IDS2 as SPECIMEN_IDS,
3562
3792
  SSE_EVENTS2 as SSE_EVENTS,
3563
3793
  STRING_IDS2 as STRING_IDS,
@@ -3582,9 +3812,9 @@ export {
3582
3812
  TOKEN_NAMES2 as TOKEN_NAMES,
3583
3813
  TOOL_ID_PATTERN2 as TOOL_ID_PATTERN,
3584
3814
  TOOL_KINDS2 as TOOL_KINDS,
3585
- TREE_GUIDE_BRIDGE,
3586
- TREE_GUIDE_COLUMN,
3587
- TREE_GUIDE_RADIUS,
3815
+ TREE_GUIDE_BRIDGE2 as TREE_GUIDE_BRIDGE,
3816
+ TREE_GUIDE_COLUMN2 as TREE_GUIDE_COLUMN,
3817
+ TREE_GUIDE_RADIUS2 as TREE_GUIDE_RADIUS,
3588
3818
  ThemeError2 as ThemeError,
3589
3819
  UNKNOWN_COMPONENT2 as UNKNOWN_COMPONENT,
3590
3820
  UNKNOWN_COMPONENT_NAME2 as UNKNOWN_COMPONENT_NAME,
@@ -3594,9 +3824,10 @@ export {
3594
3824
  VOICE_WAVE_RINGS,
3595
3825
  VOICE_WAVE_SIZES,
3596
3826
  VOICE_WAVE_VARIANTS,
3597
- WINDOW_OVERSCAN,
3598
- WINDOW_THRESHOLD,
3827
+ WINDOW_OVERSCAN2 as WINDOW_OVERSCAN,
3828
+ WINDOW_THRESHOLD2 as WINDOW_THRESHOLD,
3599
3829
  WebSocketTransport2 as WebSocketTransport,
3830
+ ZOOM,
3600
3831
  absolutePath2 as absolutePath,
3601
3832
  actionMessage2 as actionMessage,
3602
3833
  activeBreakpoint2 as activeBreakpoint,
@@ -3662,6 +3893,10 @@ export {
3662
3893
  expandMacros2 as expandMacros,
3663
3894
  exponentialTheme2 as exponentialTheme,
3664
3895
  exportThemeJson,
3896
+ exposeActionAccess2 as exposeActionAccess,
3897
+ exposeIssues2 as exposeIssues,
3898
+ exposeNameDestructive2 as exposeNameDestructive,
3899
+ exposeTemplatePaths2 as exposeTemplatePaths,
3665
3900
  fillTemplate2 as fillTemplate,
3666
3901
  filterItems2 as filterItems,
3667
3902
  fixedOffset2 as fixedOffset,
@@ -3821,12 +4056,14 @@ export {
3821
4056
  validateExtension,
3822
4057
  validateNode2 as validateNode,
3823
4058
  validatePackage2 as validatePackage,
4059
+ validatePackageExposes2 as validatePackageExposes,
3824
4060
  validateProps2 as validateProps,
3825
4061
  validateRecord2 as validateRecord,
3826
4062
  validateRecordSchema2 as validateRecordSchema,
3827
4063
  validateStyle2 as validateStyle,
3828
4064
  validateTheme2 as validateTheme,
3829
4065
  validateTools2 as validateTools,
4066
+ validateUpstreams2 as validateUpstreams,
3830
4067
  valuesEqual2 as valuesEqual,
3831
4068
  verifyPackageFile2 as verifyPackageFile,
3832
4069
  verifyPainterGeometry,
@@ -3844,8 +4081,36 @@ export {
3844
4081
  weekStart,
3845
4082
  withOwnWrites2 as withOwnWrites,
3846
4083
  writePointer2 as writePointer,
3847
- writeTokens2 as writeTokens
4084
+ writeTokens2 as writeTokens,
4085
+ zoomAtRest,
4086
+ zoomBounds,
4087
+ zoomCentre,
4088
+ zoomClamp,
4089
+ zoomDoubleTap,
4090
+ zoomDoubleTapScale,
4091
+ zoomDrag,
4092
+ zoomFitScale,
4093
+ zoomIsTall,
4094
+ zoomKey,
4095
+ zoomLadder,
4096
+ zoomLimits,
4097
+ zoomMenu,
4098
+ zoomMomentum,
4099
+ zoomMomentumActive,
4100
+ zoomPanRoom,
4101
+ zoomPercent,
4102
+ zoomPinch,
4103
+ zoomResize,
4104
+ zoomRestScale,
4105
+ zoomRestView,
4106
+ zoomRubberBand,
4107
+ zoomScroll,
4108
+ zoomStep,
4109
+ zoomStepScale,
4110
+ zoomTo,
4111
+ zoomWheel,
4112
+ zoomWheelFactor
3848
4113
  };
3849
4114
 
3850
- //# debugId=9FC24B3FA24F32DC64756E2164756E21
4115
+ //# debugId=D54551619D5F8EAE64756E2164756E21
3851
4116
  //# sourceMappingURL=index.js.map