@astryxdesign/core 0.7.5 → 0.7.6-canary.0135af4

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 (1736) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +5 -5
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +183 -5
  6. package/dist/AppShell/observeMainOverflow.d.ts +9 -0
  7. package/dist/AppShell/observeMainOverflow.d.ts.map +1 -0
  8. package/dist/AppShell/observeMainOverflow.js +125 -0
  9. package/dist/Avatar/Avatar.d.ts.map +1 -1
  10. package/dist/Avatar/Avatar.js +12 -3
  11. package/dist/Badge/Badge.d.ts.map +1 -1
  12. package/dist/Badge/Badge.js +8 -1
  13. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  14. package/dist/BottomSheet/BottomSheet.js +7 -3
  15. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  16. package/dist/BottomSheet/BottomSheetPanel.js +38 -10
  17. package/dist/BottomSheet/useSheetGestures.d.ts +48 -6
  18. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  19. package/dist/BottomSheet/useSheetGestures.js +97 -13
  20. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -2
  21. package/dist/Button/Button.js +4 -4
  22. package/dist/Carousel/Carousel.d.ts +3 -1
  23. package/dist/Carousel/Carousel.d.ts.map +1 -1
  24. package/dist/Carousel/Carousel.js +12 -3
  25. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  26. package/dist/Chat/ChatComposer.js +10 -5
  27. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  28. package/dist/Chat/ChatLayout.js +1 -1
  29. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  30. package/dist/Chat/ChatMessageList.js +3 -1
  31. package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
  32. package/dist/Chat/ChatPastedTextToken.js +15 -4
  33. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  34. package/dist/Chat/ChatSystemMessage.js +2 -1
  35. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  36. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  37. package/dist/CheckboxInput/CheckboxInput.js +6 -5
  38. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  39. package/dist/CheckboxList/CheckboxList.js +5 -2
  40. package/dist/CheckboxList/CheckboxListContext.d.ts +8 -0
  41. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  42. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  43. package/dist/CheckboxList/CheckboxListItem.js +5 -2
  44. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  45. package/dist/ClickableCard/ClickableCard.js +37 -4
  46. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  47. package/dist/CommandPalette/CommandPaletteInput.js +8 -5
  48. package/dist/ComplexSelector/ComplexSelector.d.ts +2 -2
  49. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  50. package/dist/ComplexSelector/ComplexSelector.js +48 -6
  51. package/dist/DateInput/DateInput.d.ts +3 -2
  52. package/dist/DateInput/DateInput.d.ts.map +1 -1
  53. package/dist/DateInput/DateInput.js +12 -4
  54. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  55. package/dist/DateInput/MonthScroller.js +108 -23
  56. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  57. package/dist/DateInput/TouchDateField.js +8 -3
  58. package/dist/DateInput/Wheel.d.ts.map +1 -1
  59. package/dist/DateInput/Wheel.js +11 -7
  60. package/dist/DateInput/usePointerDragScroll.d.ts +10 -1
  61. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  62. package/dist/DateInput/usePointerDragScroll.js +25 -9
  63. package/dist/DateInput/useScrollSettle.d.ts +3 -1
  64. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  65. package/dist/DateInput/useScrollSettle.js +37 -8
  66. package/dist/DateRangeInput/DateRangeInput.d.ts +3 -2
  67. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  68. package/dist/DateRangeInput/DateRangeInput.js +9 -5
  69. package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
  70. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  71. package/dist/DateTimeInput/DateTimeInput.js +23 -12
  72. package/dist/DateTimeInput/NativeTimeSegment.d.ts.map +1 -1
  73. package/dist/DateTimeInput/NativeTimeSegment.js +5 -4
  74. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  75. package/dist/DateTimeInput/TouchDateTimeField.js +4 -3
  76. package/dist/Dialog/Dialog.d.ts.map +1 -1
  77. package/dist/Dialog/Dialog.js +30 -10
  78. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  79. package/dist/Dialog/DialogHeader.js +5 -4
  80. package/dist/Divider/Divider.d.ts.map +1 -1
  81. package/dist/Divider/Divider.js +2 -1
  82. package/dist/Drawer/Drawer.d.ts +1 -0
  83. package/dist/Drawer/Drawer.d.ts.map +1 -1
  84. package/dist/Drawer/Drawer.js +7 -2
  85. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  86. package/dist/DropdownMenu/DropdownMenu.js +51 -27
  87. package/dist/DropdownMenu/DropdownMenuGroup.d.ts.map +1 -1
  88. package/dist/DropdownMenu/DropdownMenuGroup.js +2 -1
  89. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  90. package/dist/DropdownMenu/DropdownMenuSubMenu.js +1 -1
  91. package/dist/DropdownMenu/MenuBottomSheetActionList.d.ts.map +1 -1
  92. package/dist/DropdownMenu/MenuBottomSheetActionList.js +15 -8
  93. package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts +20 -2
  94. package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts.map +1 -1
  95. package/dist/DropdownMenu/lazyMenuBottomSheet.js +31 -3
  96. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  97. package/dist/DropdownMenu/renderDropdownItems.js +21 -16
  98. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  99. package/dist/EmptyState/EmptyState.js +2 -1
  100. package/dist/Field/Field.d.ts +2 -2
  101. package/dist/Field/Field.d.ts.map +1 -1
  102. package/dist/Field/FieldLabel.d.ts +1 -1
  103. package/dist/Field/FieldLabel.d.ts.map +1 -1
  104. package/dist/Field/FieldLabel.js +23 -6
  105. package/dist/Field/InputClearButton.js +3 -3
  106. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  107. package/dist/Field/PanelSearchInput.js +12 -7
  108. package/dist/Field/fieldStatusPlacement.d.ts +15 -0
  109. package/dist/Field/fieldStatusPlacement.d.ts.map +1 -0
  110. package/dist/Field/fieldStatusPlacement.js +1 -0
  111. package/dist/FieldStatus/FieldStatus.d.ts +16 -28
  112. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  113. package/dist/FieldStatus/FieldStatus.js +27 -5
  114. package/dist/FieldStatus/index.d.ts +7 -0
  115. package/dist/FieldStatus/index.d.ts.map +1 -1
  116. package/dist/FileInput/FileInput.d.ts +6 -2
  117. package/dist/FileInput/FileInput.d.ts.map +1 -1
  118. package/dist/FileInput/FileInput.js +93 -36
  119. package/dist/Heading/Heading.js +1 -1
  120. package/dist/Icon/Icon.js +1 -1
  121. package/dist/Indicator/CheckIndicator.d.ts.map +1 -1
  122. package/dist/Indicator/CheckIndicator.js +2 -1
  123. package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
  124. package/dist/Indicator/CheckboxIndicator.js +3 -1
  125. package/dist/Indicator/RadioIndicator.d.ts.map +1 -1
  126. package/dist/Indicator/RadioIndicator.js +3 -1
  127. package/dist/Item/Item.d.ts.map +1 -1
  128. package/dist/Item/Item.js +26 -12
  129. package/dist/Item/ItemSwipeLayer.d.ts.map +1 -1
  130. package/dist/Item/ItemSwipeLayer.js +9 -3
  131. package/dist/Layer/popoverOperations.d.ts +27 -0
  132. package/dist/Layer/popoverOperations.d.ts.map +1 -0
  133. package/dist/Layer/popoverOperations.js +159 -0
  134. package/dist/Layer/useLayer.d.ts +1 -1
  135. package/dist/Layer/useLayer.d.ts.map +1 -1
  136. package/dist/Layer/useLayer.js +120 -65
  137. package/dist/Layer/useTouchTrigger.d.ts +35 -3
  138. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  139. package/dist/Layer/useTouchTrigger.js +80 -11
  140. package/dist/Layout/Layout.js +1 -1
  141. package/dist/Layout/LayoutContent.js +1 -1
  142. package/dist/Layout/LayoutFooter.js +1 -1
  143. package/dist/Layout/LayoutHeader.js +1 -1
  144. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  145. package/dist/Lightbox/Lightbox.js +5 -0
  146. package/dist/Link/Link.d.ts.map +1 -1
  147. package/dist/Link/Link.js +18 -4
  148. package/dist/List/List.js +1 -1
  149. package/dist/List/ListItem.js +3 -3
  150. package/dist/Markdown/Markdown.d.ts.map +1 -1
  151. package/dist/Markdown/Markdown.js +1 -0
  152. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  153. package/dist/MetadataList/MetadataList.js +2 -1
  154. package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
  155. package/dist/MetadataList/MetadataListItem.js +2 -1
  156. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  157. package/dist/MobileNav/MobileNav.js +7 -2
  158. package/dist/MultiSelector/MultiSelector.d.ts +3 -3
  159. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  160. package/dist/MultiSelector/MultiSelector.js +61 -35
  161. package/dist/NavMenu/NavHeadingMenuItem.d.ts.map +1 -1
  162. package/dist/NavMenu/NavHeadingMenuItem.js +5 -29
  163. package/dist/NumberInput/NumberInput.d.ts +6 -3
  164. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  165. package/dist/NumberInput/NumberInput.js +21 -4
  166. package/dist/NumberInput/numberParser.d.ts +3 -0
  167. package/dist/NumberInput/numberParser.d.ts.map +1 -1
  168. package/dist/NumberInput/numberParser.js +7 -44
  169. package/dist/Outline/Outline.d.ts.map +1 -1
  170. package/dist/Outline/Outline.js +27 -0
  171. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  172. package/dist/OverflowList/OverflowList.js +2 -1
  173. package/dist/Pagination/Pagination.d.ts.map +1 -1
  174. package/dist/Popover/Popover.d.ts.map +1 -1
  175. package/dist/Popover/Popover.js +34 -14
  176. package/dist/Popover/usePopover.d.ts +7 -1
  177. package/dist/Popover/usePopover.d.ts.map +1 -1
  178. package/dist/Popover/usePopover.js +18 -5
  179. package/dist/PowerSearch/PowerSearch.d.ts +3 -2
  180. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  181. package/dist/PowerSearch/PowerSearch.js +41 -32
  182. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  183. package/dist/ProgressBar/ProgressBar.js +16 -12
  184. package/dist/RadioList/RadioList.d.ts.map +1 -1
  185. package/dist/RadioList/RadioList.js +7 -2
  186. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  187. package/dist/RadioList/RadioListItem.js +19 -5
  188. package/dist/RadioList/RadioListReasonContext.d.ts +2 -0
  189. package/dist/RadioList/RadioListReasonContext.d.ts.map +1 -0
  190. package/dist/RadioList/RadioListReasonContext.js +22 -0
  191. package/dist/Resizable/useResizable.d.ts.map +1 -1
  192. package/dist/Resizable/useResizable.js +81 -12
  193. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  194. package/dist/SegmentedControl/SegmentedControl.js +22 -5
  195. package/dist/SegmentedControl/SegmentedControlContext.d.ts +6 -0
  196. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  197. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  198. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  199. package/dist/SegmentedControl/SegmentedControlItem.js +20 -4
  200. package/dist/Selector/Selector.d.ts +2 -2
  201. package/dist/Selector/Selector.d.ts.map +1 -1
  202. package/dist/Selector/Selector.js +13 -7
  203. package/dist/Selector/hooks.js +2 -2
  204. package/dist/Selector/useSelectorPresentation.d.ts +14 -1
  205. package/dist/Selector/useSelectorPresentation.d.ts.map +1 -1
  206. package/dist/Selector/useSelectorPresentation.js +22 -5
  207. package/dist/SideNav/SideNavItem.d.ts +2 -2
  208. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  209. package/dist/SideNav/SideNavItem.js +18 -7
  210. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  211. package/dist/Skeleton/Skeleton.js +1 -1
  212. package/dist/Slider/Slider.d.ts.map +1 -1
  213. package/dist/Slider/Slider.js +110 -19
  214. package/dist/Spinner/Spinner.d.ts.map +1 -1
  215. package/dist/Spinner/Spinner.js +3 -3
  216. package/dist/Stack/Stack.js +1 -1
  217. package/dist/Stack/StackItem.js +1 -1
  218. package/dist/Stepper/Step.d.ts.map +1 -1
  219. package/dist/Stepper/Step.js +26 -6
  220. package/dist/Switch/Switch.d.ts.map +1 -1
  221. package/dist/Switch/Switch.js +10 -3
  222. package/dist/TabList/TabList.d.ts.map +1 -1
  223. package/dist/TabList/TabList.js +16 -1
  224. package/dist/Table/BaseTable.d.ts.map +1 -1
  225. package/dist/Table/BaseTable.js +2 -1
  226. package/dist/Table/Table.d.ts.map +1 -1
  227. package/dist/Table/Table.js +36 -10
  228. package/dist/Table/glidingDivider.d.ts +8 -1
  229. package/dist/Table/glidingDivider.d.ts.map +1 -1
  230. package/dist/Table/glidingDivider.js +8 -3
  231. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  232. package/dist/Table/plugins/columnResize/useTableColumnResize.js +9 -1
  233. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  234. package/dist/Table/plugins/sortable/useTableSortable.js +46 -58
  235. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  236. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +1 -2
  237. package/dist/Text/Text.js +1 -1
  238. package/dist/Text/useTruncation.d.ts.map +1 -1
  239. package/dist/Text/useTruncation.js +23 -5
  240. package/dist/TextArea/TextArea.d.ts +3 -3
  241. package/dist/TextArea/TextArea.d.ts.map +1 -1
  242. package/dist/TextArea/TextArea.js +13 -2
  243. package/dist/TextInput/TextInput.d.ts +3 -2
  244. package/dist/TextInput/TextInput.d.ts.map +1 -1
  245. package/dist/TextInput/TextInput.js +3 -3
  246. package/dist/TimeInput/TimeInput.d.ts +9 -4
  247. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  248. package/dist/TimeInput/TimeInput.js +21 -14
  249. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  250. package/dist/TimeInput/TouchTimeField.js +5 -4
  251. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  252. package/dist/Timestamp/Timestamp.js +2 -2
  253. package/dist/Timestamp/TimestampHoverCard.js +4 -4
  254. package/dist/Toast/Toast.d.ts.map +1 -1
  255. package/dist/Toast/Toast.js +60 -20
  256. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  257. package/dist/Toast/ToastViewport.js +101 -54
  258. package/dist/Toast/useToast.d.ts.map +1 -1
  259. package/dist/Toast/useToast.js +8 -2
  260. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  261. package/dist/ToggleButton/ToggleButton.js +11 -3
  262. package/dist/ToggleButton/ToggleButtonGroup.d.ts +7 -1
  263. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  264. package/dist/ToggleButton/ToggleButtonGroup.js +16 -2
  265. package/dist/Token/Token.d.ts +1 -1
  266. package/dist/Token/Token.d.ts.map +1 -1
  267. package/dist/Token/Token.js +52 -5
  268. package/dist/Token/TokenLink.d.ts.map +1 -1
  269. package/dist/Token/TokenLink.js +14 -2
  270. package/dist/Tokenizer/Tokenizer.d.ts +3 -2
  271. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  272. package/dist/Tokenizer/Tokenizer.js +101 -56
  273. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -1
  274. package/dist/Tokenizer/TokenizerBottomSheet.js +11 -17
  275. package/dist/Tokenizer/TokenizerClearAllMessageContext.d.ts +2 -0
  276. package/dist/Tokenizer/TokenizerClearAllMessageContext.d.ts.map +1 -0
  277. package/dist/Tokenizer/TokenizerClearAllMessageContext.js +17 -0
  278. package/dist/Toolbar/Toolbar.d.ts.map +1 -1
  279. package/dist/Toolbar/Toolbar.js +2 -1
  280. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  281. package/dist/TopNav/TopNavMegaMenu.js +7 -3
  282. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  283. package/dist/TopNav/TopNavMenu.js +1 -0
  284. package/dist/TreeList/TreeList.d.ts.map +1 -1
  285. package/dist/TreeList/TreeList.js +6 -3
  286. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  287. package/dist/TreeList/TreeListItem.js +31 -7
  288. package/dist/Typeahead/BaseTypeahead.d.ts +8 -5
  289. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  290. package/dist/Typeahead/BaseTypeahead.js +303 -48
  291. package/dist/Typeahead/Typeahead.d.ts +4 -3
  292. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  293. package/dist/Typeahead/Typeahead.js +43 -9
  294. package/dist/Typeahead/index.d.ts +1 -1
  295. package/dist/Typeahead/index.d.ts.map +1 -1
  296. package/dist/Typeahead/types.d.ts +26 -3
  297. package/dist/Typeahead/types.d.ts.map +1 -1
  298. package/dist/astryx.css +26 -6
  299. package/dist/gestures/GestureArena.d.ts +32 -1
  300. package/dist/gestures/GestureArena.d.ts.map +1 -1
  301. package/dist/gestures/GestureArena.js +110 -9
  302. package/dist/gestures/GestureHost.d.ts +351 -0
  303. package/dist/gestures/GestureHost.d.ts.map +1 -0
  304. package/dist/gestures/GestureHost.js +1773 -0
  305. package/dist/gestures/GestureRecognizer.d.ts +13 -1
  306. package/dist/gestures/GestureRecognizer.d.ts.map +1 -1
  307. package/dist/gestures/GestureRecognizer.js +19 -1
  308. package/dist/gestures/LongPressGestureRecognizer.d.ts +1 -0
  309. package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -1
  310. package/dist/gestures/LongPressGestureRecognizer.js +3 -0
  311. package/dist/gestures/PanGestureRecognizer.d.ts +1 -0
  312. package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
  313. package/dist/gestures/PanGestureRecognizer.js +3 -0
  314. package/dist/gestures/PinchGestureRecognizer.d.ts +31 -0
  315. package/dist/gestures/PinchGestureRecognizer.d.ts.map +1 -0
  316. package/dist/gestures/PinchGestureRecognizer.js +128 -0
  317. package/dist/gestures/PressTracker.d.ts +112 -0
  318. package/dist/gestures/PressTracker.d.ts.map +1 -0
  319. package/dist/gestures/PressTracker.js +267 -0
  320. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +71 -0
  321. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -0
  322. package/dist/gestures/ScreenEdgePanGestureRecognizer.js +223 -0
  323. package/dist/gestures/SwipeGestureRecognizer.d.ts +37 -0
  324. package/dist/gestures/SwipeGestureRecognizer.d.ts.map +1 -0
  325. package/dist/gestures/SwipeGestureRecognizer.js +148 -0
  326. package/dist/gestures/TapGestureRecognizer.d.ts +1 -0
  327. package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -1
  328. package/dist/gestures/TapGestureRecognizer.js +3 -0
  329. package/dist/gestures/VelocityTracker.d.ts +6 -2
  330. package/dist/gestures/VelocityTracker.d.ts.map +1 -1
  331. package/dist/gestures/VelocityTracker.js +7 -3
  332. package/dist/gestures/haptics.d.ts +65 -0
  333. package/dist/gestures/haptics.d.ts.map +1 -0
  334. package/dist/gestures/haptics.js +178 -0
  335. package/dist/gestures/index.d.ts +37 -0
  336. package/dist/gestures/index.d.ts.map +1 -0
  337. package/dist/gestures/index.js +25 -0
  338. package/dist/gestures/nativeScroll.d.ts +42 -0
  339. package/dist/gestures/nativeScroll.d.ts.map +1 -0
  340. package/dist/gestures/nativeScroll.js +228 -0
  341. package/dist/gestures/touchAction.d.ts +60 -0
  342. package/dist/gestures/touchAction.d.ts.map +1 -0
  343. package/dist/gestures/touchAction.js +157 -0
  344. package/dist/gestures/touchActionRule.d.ts +34 -0
  345. package/dist/gestures/touchActionRule.d.ts.map +1 -0
  346. package/dist/gestures/touchActionRule.js +140 -0
  347. package/dist/gestures/types.d.ts +18 -7
  348. package/dist/gestures/types.d.ts.map +1 -1
  349. package/dist/gestures/types.js +22 -2
  350. package/dist/gestures/useGestureRecognizer.d.ts +56 -0
  351. package/dist/gestures/useGestureRecognizer.d.ts.map +1 -0
  352. package/dist/gestures/useGestureRecognizer.js +226 -0
  353. package/dist/hooks/index.d.ts +1 -1
  354. package/dist/hooks/index.d.ts.map +1 -1
  355. package/dist/hooks/menuPressMarker.d.ts +13 -0
  356. package/dist/hooks/menuPressMarker.d.ts.map +1 -0
  357. package/dist/hooks/menuPressMarker.js +15 -0
  358. package/dist/hooks/modalAnnounce.d.ts.map +1 -1
  359. package/dist/hooks/modalAnnounce.js +107 -61
  360. package/dist/hooks/scrollKeyboardDelegation.d.ts.map +1 -1
  361. package/dist/hooks/scrollKeyboardDelegation.js +7 -3
  362. package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
  363. package/dist/hooks/useAdaptivePresentation.js +4 -1
  364. package/dist/hooks/useAnnounce.d.ts +101 -42
  365. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  366. package/dist/hooks/useAnnounce.js +161 -75
  367. package/dist/hooks/useAnnounceRenderedText.d.ts +11 -3
  368. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  369. package/dist/hooks/useAnnounceRenderedText.js +5 -3
  370. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  371. package/dist/hooks/useBusyAnnouncement.js +6 -12
  372. package/dist/hooks/useClickableContainer.d.ts +24 -4
  373. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  374. package/dist/hooks/useClickableContainer.js +41 -14
  375. package/dist/hooks/useFocusReturnVisibility.d.ts +8 -1
  376. package/dist/hooks/useFocusReturnVisibility.d.ts.map +1 -1
  377. package/dist/hooks/useFocusReturnVisibility.js +14 -8
  378. package/dist/hooks/useInputStatusIcon.d.ts +2 -2
  379. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  380. package/dist/hooks/useInputStatusIcon.js +1 -2
  381. package/dist/hooks/useListFocus.d.ts +19 -0
  382. package/dist/hooks/useListFocus.d.ts.map +1 -1
  383. package/dist/hooks/useListFocus.js +26 -1
  384. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  385. package/dist/hooks/useMenuHover.js +12 -1
  386. package/dist/hooks/useMenuPress.d.ts +2 -2
  387. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  388. package/dist/hooks/useMenuPress.js +5 -6
  389. package/dist/hooks/useScrollOverflow.d.ts +2 -1
  390. package/dist/hooks/useScrollOverflow.d.ts.map +1 -1
  391. package/dist/hooks/useScrollOverflow.js +56 -10
  392. package/dist/i18n/generated-locales/af-ZA.generated.d.ts.map +1 -1
  393. package/dist/i18n/generated-locales/af-ZA.generated.js +0 -5
  394. package/dist/i18n/generated-locales/ar-SA.generated.d.ts.map +1 -1
  395. package/dist/i18n/generated-locales/ar-SA.generated.js +0 -5
  396. package/dist/i18n/generated-locales/ca-ES.generated.d.ts.map +1 -1
  397. package/dist/i18n/generated-locales/ca-ES.generated.js +0 -5
  398. package/dist/i18n/generated-locales/cs-CZ.generated.d.ts.map +1 -1
  399. package/dist/i18n/generated-locales/cs-CZ.generated.js +0 -5
  400. package/dist/i18n/generated-locales/da-DK.generated.d.ts.map +1 -1
  401. package/dist/i18n/generated-locales/da-DK.generated.js +0 -5
  402. package/dist/i18n/generated-locales/de-DE.generated.d.ts.map +1 -1
  403. package/dist/i18n/generated-locales/de-DE.generated.js +0 -5
  404. package/dist/i18n/generated-locales/el-GR.generated.d.ts.map +1 -1
  405. package/dist/i18n/generated-locales/el-GR.generated.js +0 -5
  406. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  407. package/dist/i18n/generated-locales/en.generated.js +8 -5
  408. package/dist/i18n/generated-locales/es-ES.generated.d.ts.map +1 -1
  409. package/dist/i18n/generated-locales/es-ES.generated.js +0 -5
  410. package/dist/i18n/generated-locales/fi-FI.generated.d.ts.map +1 -1
  411. package/dist/i18n/generated-locales/fi-FI.generated.js +0 -5
  412. package/dist/i18n/generated-locales/fr-FR.generated.d.ts.map +1 -1
  413. package/dist/i18n/generated-locales/fr-FR.generated.js +0 -5
  414. package/dist/i18n/generated-locales/he-IL.generated.d.ts.map +1 -1
  415. package/dist/i18n/generated-locales/he-IL.generated.js +0 -5
  416. package/dist/i18n/generated-locales/hu-HU.generated.d.ts.map +1 -1
  417. package/dist/i18n/generated-locales/hu-HU.generated.js +0 -5
  418. package/dist/i18n/generated-locales/it-IT.generated.d.ts.map +1 -1
  419. package/dist/i18n/generated-locales/it-IT.generated.js +0 -5
  420. package/dist/i18n/generated-locales/ja-JP.generated.d.ts.map +1 -1
  421. package/dist/i18n/generated-locales/ja-JP.generated.js +0 -5
  422. package/dist/i18n/generated-locales/ko-KR.generated.d.ts.map +1 -1
  423. package/dist/i18n/generated-locales/ko-KR.generated.js +0 -5
  424. package/dist/i18n/generated-locales/nl-NL.generated.d.ts.map +1 -1
  425. package/dist/i18n/generated-locales/nl-NL.generated.js +0 -5
  426. package/dist/i18n/generated-locales/no-NO.generated.d.ts.map +1 -1
  427. package/dist/i18n/generated-locales/no-NO.generated.js +0 -5
  428. package/dist/i18n/generated-locales/pl-PL.generated.d.ts.map +1 -1
  429. package/dist/i18n/generated-locales/pl-PL.generated.js +0 -5
  430. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  431. package/dist/i18n/generated-locales/pseudo.generated.js +8 -5
  432. package/dist/i18n/generated-locales/pt-BR.generated.d.ts.map +1 -1
  433. package/dist/i18n/generated-locales/pt-BR.generated.js +0 -5
  434. package/dist/i18n/generated-locales/pt-PT.generated.d.ts.map +1 -1
  435. package/dist/i18n/generated-locales/pt-PT.generated.js +0 -5
  436. package/dist/i18n/generated-locales/ro-RO.generated.d.ts.map +1 -1
  437. package/dist/i18n/generated-locales/ro-RO.generated.js +0 -5
  438. package/dist/i18n/generated-locales/ru-RU.generated.d.ts.map +1 -1
  439. package/dist/i18n/generated-locales/ru-RU.generated.js +0 -5
  440. package/dist/i18n/generated-locales/sr-SP.generated.d.ts.map +1 -1
  441. package/dist/i18n/generated-locales/sr-SP.generated.js +0 -5
  442. package/dist/i18n/generated-locales/sv-SE.generated.d.ts.map +1 -1
  443. package/dist/i18n/generated-locales/sv-SE.generated.js +0 -5
  444. package/dist/i18n/generated-locales/tr-TR.generated.d.ts.map +1 -1
  445. package/dist/i18n/generated-locales/tr-TR.generated.js +0 -5
  446. package/dist/i18n/generated-locales/uk-UA.generated.d.ts.map +1 -1
  447. package/dist/i18n/generated-locales/uk-UA.generated.js +0 -5
  448. package/dist/i18n/generated-locales/vi-VN.generated.d.ts.map +1 -1
  449. package/dist/i18n/generated-locales/vi-VN.generated.js +0 -5
  450. package/dist/i18n/generated-locales/zh-CN.generated.d.ts.map +1 -1
  451. package/dist/i18n/generated-locales/zh-CN.generated.js +0 -5
  452. package/dist/i18n/generated-locales/zh-TW.generated.d.ts.map +1 -1
  453. package/dist/i18n/generated-locales/zh-TW.generated.js +0 -5
  454. package/dist/i18n/useListFormatter.d.ts +9 -0
  455. package/dist/i18n/useListFormatter.d.ts.map +1 -0
  456. package/dist/i18n/useListFormatter.js +41 -0
  457. package/dist/motion/animator.d.ts +83 -8
  458. package/dist/motion/animator.d.ts.map +1 -1
  459. package/dist/motion/animator.js +739 -121
  460. package/dist/motion/coast.d.ts +4 -1
  461. package/dist/motion/coast.d.ts.map +1 -1
  462. package/dist/motion/coast.js +4 -2
  463. package/dist/motion/reducedMotion.d.ts.map +1 -1
  464. package/dist/motion/reducedMotion.js +6 -2
  465. package/dist/motion/reducedMotionPlan.d.ts +7 -0
  466. package/dist/motion/reducedMotionPlan.d.ts.map +1 -1
  467. package/dist/motion/reducedMotionPlan.js +14 -1
  468. package/dist/motion/resolveMotion.d.ts +42 -0
  469. package/dist/motion/resolveMotion.d.ts.map +1 -0
  470. package/dist/motion/resolveMotion.js +43 -0
  471. package/dist/motion/roleValue.d.ts +2 -1
  472. package/dist/motion/roleValue.d.ts.map +1 -1
  473. package/dist/motion/roleValue.js +2 -1
  474. package/dist/motion/uikit/timing.d.ts +7 -1
  475. package/dist/motion/uikit/timing.d.ts.map +1 -1
  476. package/dist/motion/uikit/timing.js +19 -1
  477. package/dist/privateAttributes/segmentDisabled.stylex.d.ts +5 -0
  478. package/dist/privateAttributes/segmentDisabled.stylex.d.ts.map +1 -0
  479. package/dist/privateAttributes/segmentDisabled.stylex.js +28 -0
  480. package/dist/theme/Theme.d.ts +10 -0
  481. package/dist/theme/Theme.d.ts.map +1 -1
  482. package/dist/theme/Theme.js +8 -4
  483. package/dist/theme/defineTheme.d.ts +19 -5
  484. package/dist/theme/defineTheme.d.ts.map +1 -1
  485. package/dist/theme/defineTheme.js +64 -4
  486. package/dist/theme/domainTokens/domainTokenDefaults.d.ts +3 -0
  487. package/dist/theme/domainTokens/domainTokenDefaults.d.ts.map +1 -0
  488. package/dist/theme/domainTokens/domainTokenDefaults.js +19 -0
  489. package/dist/theme/domainTokens/index.d.ts +5 -4
  490. package/dist/theme/domainTokens/index.d.ts.map +1 -1
  491. package/dist/theme/domainTokens/index.js +5 -9
  492. package/dist/theme/index.d.ts +1 -0
  493. package/dist/theme/index.d.ts.map +1 -1
  494. package/dist/theme/motionKnobs.d.ts +56 -0
  495. package/dist/theme/motionKnobs.d.ts.map +1 -0
  496. package/dist/theme/motionKnobs.js +48 -0
  497. package/dist/theme/resolveThemeValues.d.ts +11 -4
  498. package/dist/theme/resolveThemeValues.d.ts.map +1 -1
  499. package/dist/theme/resolveThemeValues.js +40 -4
  500. package/dist/theme/themeAdaptations.d.ts +7 -3
  501. package/dist/theme/themeAdaptations.d.ts.map +1 -1
  502. package/dist/theme/themeAdaptations.js +36 -7
  503. package/dist/theme/themeMotion.d.ts +96 -0
  504. package/dist/theme/themeMotion.d.ts.map +1 -0
  505. package/dist/theme/themeMotion.js +177 -0
  506. package/dist/theme/tokenReferences.d.ts +31 -0
  507. package/dist/theme/tokenReferences.d.ts.map +1 -0
  508. package/dist/theme/tokenReferences.js +132 -0
  509. package/dist/theme/tokens.d.ts +1 -0
  510. package/dist/theme/tokens.d.ts.map +1 -1
  511. package/dist/theme/tokens.js +9 -129
  512. package/dist/theme/tokens.stylex.d.ts +12 -0
  513. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  514. package/dist/theme/tokens.stylex.js +12 -0
  515. package/dist/theme/useTheme.d.ts.map +1 -1
  516. package/dist/theme/useTheme.js +7 -1
  517. package/dist/utils/focusOutline.stylex.d.ts +6 -0
  518. package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
  519. package/dist/utils/focusOutline.stylex.js +7 -0
  520. package/dist/utils/focusReturn.d.ts +19 -1
  521. package/dist/utils/focusReturn.d.ts.map +1 -1
  522. package/dist/utils/focusReturn.js +13 -4
  523. package/dist/utils/getNodeText.d.ts +8 -0
  524. package/dist/utils/getNodeText.d.ts.map +1 -0
  525. package/dist/utils/getNodeText.js +38 -0
  526. package/dist/utils/interactionModality.d.ts +84 -4
  527. package/dist/utils/interactionModality.d.ts.map +1 -1
  528. package/dist/utils/interactionModality.js +152 -16
  529. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  530. package/dist/utils/interactionOverlay.stylex.js +17 -8
  531. package/dist/utils/plainDate.d.ts +2 -0
  532. package/dist/utils/plainDate.d.ts.map +1 -1
  533. package/dist/utils/plainDate.js +46 -3
  534. package/dist/utils/presentation.d.ts +50 -0
  535. package/dist/utils/presentation.d.ts.map +1 -0
  536. package/dist/utils/presentation.js +125 -0
  537. package/dist/utils/pressDisabled.d.ts +21 -0
  538. package/dist/utils/pressDisabled.d.ts.map +1 -0
  539. package/dist/utils/pressDisabled.js +32 -0
  540. package/dist/utils/pressFeedback.d.ts.map +1 -1
  541. package/dist/utils/pressFeedback.js +25 -4
  542. package/dist/utils/primaryClick.d.ts +11 -0
  543. package/dist/utils/primaryClick.d.ts.map +1 -0
  544. package/dist/utils/primaryClick.js +25 -0
  545. package/dist/utils/sharedMutationObserver.d.ts +19 -11
  546. package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
  547. package/dist/utils/sharedMutationObserver.js +66 -26
  548. package/dist/utils/timeFormat.d.ts +47 -0
  549. package/dist/utils/timeFormat.d.ts.map +1 -0
  550. package/dist/utils/timeFormat.js +240 -0
  551. package/dist/utils/touchPresentation.d.ts +2 -2
  552. package/dist/utils/touchPresentation.d.ts.map +1 -1
  553. package/dist/utils/touchPresentation.js +13 -8
  554. package/dist/utils/touchPresentation.stylex.d.ts +15 -0
  555. package/dist/utils/touchPresentation.stylex.d.ts.map +1 -0
  556. package/dist/utils/touchPresentation.stylex.js +33 -0
  557. package/dist/utils/touchQueries.d.ts +13 -0
  558. package/dist/utils/touchQueries.d.ts.map +1 -0
  559. package/dist/utils/touchQueries.js +15 -0
  560. package/dist/utils/unicodeDigits.d.ts +20 -0
  561. package/dist/utils/unicodeDigits.d.ts.map +1 -0
  562. package/dist/utils/unicodeDigits.js +70 -0
  563. package/dist/utils/useFocusAcrossSwap.d.ts +19 -0
  564. package/dist/utils/useFocusAcrossSwap.d.ts.map +1 -0
  565. package/dist/utils/useFocusAcrossSwap.js +41 -0
  566. package/locales/af-ZA.json +0 -21
  567. package/locales/ar-SA.json +0 -21
  568. package/locales/ca-ES.json +0 -21
  569. package/locales/cs-CZ.json +0 -21
  570. package/locales/da-DK.json +0 -21
  571. package/locales/de-DE.json +0 -21
  572. package/locales/el-GR.json +0 -21
  573. package/locales/en.json +35 -23
  574. package/locales/es-ES.json +0 -21
  575. package/locales/fi-FI.json +0 -21
  576. package/locales/fr-FR.json +0 -21
  577. package/locales/he-IL.json +0 -21
  578. package/locales/hu-HU.json +0 -21
  579. package/locales/it-IT.json +0 -21
  580. package/locales/ja-JP.json +0 -21
  581. package/locales/ko-KR.json +0 -21
  582. package/locales/nl-NL.json +0 -21
  583. package/locales/no-NO.json +0 -21
  584. package/locales/pl-PL.json +0 -21
  585. package/locales/pseudo.json +23 -14
  586. package/locales/pt-BR.json +0 -21
  587. package/locales/pt-PT.json +0 -21
  588. package/locales/ro-RO.json +0 -21
  589. package/locales/ru-RU.json +0 -21
  590. package/locales/sr-SP.json +0 -21
  591. package/locales/sv-SE.json +0 -21
  592. package/locales/tr-TR.json +0 -21
  593. package/locales/uk-UA.json +0 -21
  594. package/locales/vi-VN.json +0 -21
  595. package/locales/zh-CN.json +0 -21
  596. package/locales/zh-TW.json +0 -21
  597. package/package.json +20 -5
  598. package/src/AlertDialog/AlertDialog.tsx +6 -5
  599. package/src/AppShell/AppShell.doc.mjs +1 -1
  600. package/src/AppShell/AppShell.spec.md +9 -12
  601. package/src/AppShell/AppShell.tsx +225 -5
  602. package/src/AppShell/observeMainOverflow.ts +143 -0
  603. package/src/Avatar/Avatar.spec.md +22 -22
  604. package/src/Avatar/Avatar.tsx +18 -1
  605. package/src/Badge/Badge.doc.mjs +1 -1
  606. package/src/Badge/Badge.tsx +20 -2
  607. package/src/BottomSheet/BottomSheet.tsx +5 -3
  608. package/src/BottomSheet/BottomSheetPanel.tsx +41 -9
  609. package/src/BottomSheet/useSheetGestures.ts +129 -21
  610. package/src/Breadcrumbs/BreadcrumbItem.tsx +2 -1
  611. package/src/Button/Button.tsx +4 -4
  612. package/src/Calendar/Calendar.spec.md +87 -48
  613. package/src/Carousel/Carousel.doc.mjs +1 -1
  614. package/src/Carousel/Carousel.spec.md +9 -9
  615. package/src/Carousel/Carousel.tsx +10 -2
  616. package/src/Chat/ChatComposer.spec.md +75 -59
  617. package/src/Chat/ChatComposer.tsx +7 -10
  618. package/src/Chat/ChatComposerTokenElement.spec.md +45 -33
  619. package/src/Chat/ChatDictationButton.spec.md +126 -81
  620. package/src/Chat/ChatLayout.spec.md +41 -36
  621. package/src/Chat/ChatLayout.tsx +1 -6
  622. package/src/Chat/ChatLayoutScrollButton.spec.md +87 -103
  623. package/src/Chat/ChatMessage.spec.md +64 -65
  624. package/src/Chat/ChatMessageList.tsx +1 -0
  625. package/src/Chat/ChatPastedTextToken.tsx +14 -4
  626. package/src/Chat/ChatSendButton.spec.md +78 -67
  627. package/src/Chat/ChatSystemMessage.tsx +4 -1
  628. package/src/Chat/ChatToolCalls.tsx +5 -0
  629. package/src/CheckboxInput/CheckboxInput.tsx +6 -5
  630. package/src/CheckboxList/CheckboxList.tsx +7 -1
  631. package/src/CheckboxList/CheckboxListContext.tsx +8 -0
  632. package/src/CheckboxList/CheckboxListItem.tsx +8 -2
  633. package/src/Citation/Citation.spec.md +60 -47
  634. package/src/ClickableCard/ClickableCard.tsx +48 -4
  635. package/src/Collapsible/Collapsible.spec.md +2 -0
  636. package/src/Collapsible/CollapsibleGroup.spec.md +57 -29
  637. package/src/CommandPalette/CommandPaletteInput.tsx +5 -8
  638. package/src/ComplexSelector/ComplexSelector.tsx +63 -8
  639. package/src/ContextMenu/ContextMenu.spec.md +84 -56
  640. package/src/ContextMenu/ContextMenuItem.spec.md +132 -0
  641. package/src/DateInput/DateInput.spec.md +74 -57
  642. package/src/DateInput/DateInput.tsx +31 -16
  643. package/src/DateInput/MonthScroller.tsx +108 -24
  644. package/src/DateInput/TouchDateField.tsx +14 -3
  645. package/src/DateInput/Wheel.tsx +9 -6
  646. package/src/DateInput/usePointerDragScroll.ts +34 -10
  647. package/src/DateInput/useScrollSettle.ts +38 -7
  648. package/src/DateRangeInput/DateRangeInput.tsx +36 -17
  649. package/src/DateTimeInput/DateTimeInput.doc.mjs +10 -8
  650. package/src/DateTimeInput/DateTimeInput.spec.md +75 -51
  651. package/src/DateTimeInput/DateTimeInput.tsx +46 -24
  652. package/src/DateTimeInput/NativeTimeSegment.tsx +4 -6
  653. package/src/DateTimeInput/TouchDateTimeField.tsx +3 -7
  654. package/src/Dialog/Dialog.tsx +28 -11
  655. package/src/Dialog/DialogHeader.tsx +5 -4
  656. package/src/Divider/Divider.tsx +2 -1
  657. package/src/Drawer/Drawer.spec.md +111 -80
  658. package/src/Drawer/Drawer.tsx +13 -2
  659. package/src/Drawer/DrawerHeader.spec.md +181 -0
  660. package/src/DropdownMenu/DropdownMenu.spec.md +198 -218
  661. package/src/DropdownMenu/DropdownMenu.tsx +63 -26
  662. package/src/DropdownMenu/DropdownMenuCheckboxItem.spec.md +192 -0
  663. package/src/DropdownMenu/DropdownMenuDivider.spec.md +25 -31
  664. package/src/DropdownMenu/DropdownMenuGroup.spec.md +145 -0
  665. package/src/DropdownMenu/DropdownMenuGroup.tsx +2 -1
  666. package/src/DropdownMenu/DropdownMenuItem.spec.md +48 -42
  667. package/src/DropdownMenu/DropdownMenuRadioGroup.spec.md +34 -37
  668. package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +54 -53
  669. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +47 -41
  670. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +3 -1
  671. package/src/DropdownMenu/MenuBottomSheetActionList.tsx +12 -8
  672. package/src/DropdownMenu/lazyMenuBottomSheet.ts +36 -7
  673. package/src/DropdownMenu/renderDropdownItems.tsx +24 -19
  674. package/src/EmptyState/EmptyState.spec.md +35 -29
  675. package/src/EmptyState/EmptyState.tsx +2 -1
  676. package/src/Field/Field.doc.mjs +2 -1
  677. package/src/Field/Field.tsx +2 -2
  678. package/src/Field/FieldLabel.doc.mjs +4 -2
  679. package/src/Field/FieldLabel.spec.md +72 -55
  680. package/src/Field/FieldLabel.tsx +23 -6
  681. package/src/Field/InputClearButton.tsx +3 -3
  682. package/src/Field/PanelSearchInput.tsx +9 -10
  683. package/src/Field/fieldStatusPlacement.ts +18 -0
  684. package/src/FieldStatus/FieldStatus.tsx +35 -5
  685. package/src/FieldStatus/index.ts +7 -0
  686. package/src/FileInput/FileInput.tsx +105 -37
  687. package/src/FormLayout/FormLayout.spec.md +11 -20
  688. package/src/Heading/Heading.tsx +1 -1
  689. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  690. package/src/HoverCard/HoverCard.spec.md +98 -39
  691. package/src/HoverCard/useHoverCard.doc.mjs +1 -1
  692. package/src/Icon/Icon.tsx +1 -1
  693. package/src/Indicator/CheckIndicator.spec.md +47 -42
  694. package/src/Indicator/CheckIndicator.tsx +2 -1
  695. package/src/Indicator/CheckboxIndicator.spec.md +40 -37
  696. package/src/Indicator/CheckboxIndicator.tsx +3 -1
  697. package/src/Indicator/Indicator.spec.md +188 -0
  698. package/src/Indicator/RadioIndicator.tsx +3 -1
  699. package/src/InfoTip/InfoTip.spec.md +193 -0
  700. package/src/Item/Item.tsx +21 -13
  701. package/src/Item/ItemSwipeLayer.tsx +9 -2
  702. package/src/Kbd/Kbd.spec.md +81 -38
  703. package/src/Layer/popoverOperations.ts +172 -0
  704. package/src/Layer/useLayer.tsx +145 -77
  705. package/src/Layer/useTouchTrigger.ts +107 -18
  706. package/src/Layout/Layout.spec.md +127 -131
  707. package/src/Layout/Layout.tsx +1 -1
  708. package/src/Layout/LayoutContent.spec.md +205 -0
  709. package/src/Layout/LayoutContent.tsx +1 -1
  710. package/src/Layout/LayoutFooter.spec.md +190 -0
  711. package/src/Layout/LayoutFooter.tsx +1 -1
  712. package/src/Layout/LayoutHeader.spec.md +193 -0
  713. package/src/Layout/LayoutHeader.tsx +1 -1
  714. package/src/Layout/LayoutPanel.spec.md +216 -0
  715. package/src/Lightbox/Lightbox.spec.md +249 -61
  716. package/src/Lightbox/Lightbox.tsx +5 -0
  717. package/src/Link/Link.spec.md +3 -2
  718. package/src/Link/Link.tsx +20 -2
  719. package/src/List/List.tsx +1 -1
  720. package/src/List/ListItem.spec.md +205 -0
  721. package/src/List/ListItem.tsx +3 -3
  722. package/src/Markdown/Markdown.tsx +1 -0
  723. package/src/MetadataList/MetadataList.spec.md +187 -0
  724. package/src/MetadataList/MetadataList.tsx +4 -2
  725. package/src/MetadataList/MetadataListItem.spec.md +165 -0
  726. package/src/MetadataList/MetadataListItem.tsx +2 -1
  727. package/src/MobileNav/MobileNav.tsx +9 -1
  728. package/src/MultiSelector/MultiSelector.spec.md +124 -114
  729. package/src/MultiSelector/MultiSelector.tsx +82 -46
  730. package/src/NavMenu/NavHeadingMenu.spec.md +1 -5
  731. package/src/NavMenu/NavHeadingMenuItem.tsx +5 -39
  732. package/src/NumberInput/NumberInput.doc.mjs +13 -7
  733. package/src/NumberInput/NumberInput.spec.md +59 -37
  734. package/src/NumberInput/NumberInput.tsx +39 -6
  735. package/src/NumberInput/numberParser.ts +7 -45
  736. package/src/Outline/Outline.spec.md +165 -69
  737. package/src/Outline/Outline.tsx +23 -0
  738. package/src/Outline/modules/parseOutlineFromMarkdown.spec.md +3 -4
  739. package/src/OverflowList/OverflowList.spec.md +102 -55
  740. package/src/OverflowList/OverflowList.tsx +2 -1
  741. package/src/Pagination/Pagination.spec.md +158 -84
  742. package/src/Pagination/Pagination.tsx +1 -0
  743. package/src/Popover/Popover.tsx +36 -16
  744. package/src/Popover/usePopover.tsx +17 -5
  745. package/src/PowerSearch/PowerSearch.tsx +46 -33
  746. package/src/ProgressBar/ProgressBar.spec.md +143 -119
  747. package/src/ProgressBar/ProgressBar.tsx +58 -10
  748. package/src/RadioList/RadioList.spec.md +1 -1
  749. package/src/RadioList/RadioList.tsx +13 -2
  750. package/src/RadioList/RadioListItem.tsx +20 -3
  751. package/src/RadioList/RadioListReasonContext.ts +25 -0
  752. package/src/Resizable/Resizable.spec.md +152 -124
  753. package/src/Resizable/useResizable.ts +82 -16
  754. package/src/SegmentedControl/SegmentedControl.spec.md +36 -39
  755. package/src/SegmentedControl/SegmentedControl.tsx +43 -8
  756. package/src/SegmentedControl/SegmentedControlContext.ts +6 -0
  757. package/src/SegmentedControl/SegmentedControlItem.spec.md +1 -1
  758. package/src/SegmentedControl/SegmentedControlItem.tsx +23 -6
  759. package/src/Selector/Selector.tsx +22 -8
  760. package/src/Selector/hooks.ts +2 -2
  761. package/src/Selector/useSelectorPresentation.ts +39 -4
  762. package/src/SideNav/SideNav.spec.md +8 -8
  763. package/src/SideNav/SideNavItem.spec.md +14 -24
  764. package/src/SideNav/SideNavItem.tsx +27 -10
  765. package/src/Skeleton/Skeleton.tsx +3 -1
  766. package/src/Slider/Slider.spec.md +18 -16
  767. package/src/Slider/Slider.tsx +124 -22
  768. package/src/Spinner/Spinner.tsx +5 -3
  769. package/src/Stack/Stack.tsx +1 -1
  770. package/src/Stack/StackItem.tsx +1 -1
  771. package/src/StatusDot/StatusDot.spec.md +77 -54
  772. package/src/Stepper/Step.spec.md +36 -42
  773. package/src/Stepper/Step.tsx +33 -6
  774. package/src/Stepper/Stepper.doc.mjs +1 -1
  775. package/src/Switch/Switch.spec.md +1 -1
  776. package/src/Switch/Switch.tsx +11 -3
  777. package/src/TabList/TabList.tsx +16 -1
  778. package/src/Table/BaseTable.tsx +2 -1
  779. package/src/Table/Table.spec.md +1 -1
  780. package/src/Table/Table.tsx +43 -11
  781. package/src/Table/glidingDivider.ts +8 -3
  782. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +8 -4
  783. package/src/Table/plugins/sortable/useTableSortable.tsx +46 -73
  784. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
  785. package/src/Text/Text.tsx +1 -1
  786. package/src/Text/useTruncation.ts +23 -5
  787. package/src/TextArea/TextArea.spec.md +10 -13
  788. package/src/TextArea/TextArea.tsx +18 -3
  789. package/src/TextInput/TextInput.tsx +5 -3
  790. package/src/TimeInput/TimeInput.doc.mjs +8 -8
  791. package/src/TimeInput/TimeInput.spec.md +58 -61
  792. package/src/TimeInput/TimeInput.tsx +38 -20
  793. package/src/TimeInput/TouchTimeField.tsx +4 -6
  794. package/src/Timestamp/Timestamp.spec.md +6 -12
  795. package/src/Timestamp/Timestamp.tsx +6 -2
  796. package/src/Timestamp/TimestampHoverCard.tsx +4 -4
  797. package/src/Toast/Toast.spec.md +15 -24
  798. package/src/Toast/Toast.tsx +104 -36
  799. package/src/Toast/ToastViewport.tsx +121 -53
  800. package/src/Toast/useToast.tsx +8 -3
  801. package/src/ToggleButton/ToggleButton.tsx +10 -3
  802. package/src/ToggleButton/ToggleButtonGroup.tsx +20 -1
  803. package/src/Token/Token.doc.mjs +2 -2
  804. package/src/Token/Token.spec.md +52 -61
  805. package/src/Token/Token.tsx +75 -5
  806. package/src/Token/TokenLink.tsx +21 -7
  807. package/src/Tokenizer/Tokenizer.doc.mjs +12 -8
  808. package/src/Tokenizer/Tokenizer.spec.md +18 -4
  809. package/src/Tokenizer/Tokenizer.tsx +119 -65
  810. package/src/Tokenizer/TokenizerBottomSheet.tsx +11 -17
  811. package/src/Tokenizer/TokenizerClearAllMessageContext.ts +21 -0
  812. package/src/Toolbar/Toolbar.spec.md +5 -6
  813. package/src/Toolbar/Toolbar.tsx +2 -1
  814. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  815. package/src/Tooltip/Tooltip.spec.md +139 -41
  816. package/src/Tooltip/useTooltip.doc.mjs +1 -1
  817. package/src/TopNav/TopNavMegaMenu.tsx +8 -4
  818. package/src/TopNav/TopNavMenu.tsx +1 -0
  819. package/src/TreeList/TreeList.tsx +6 -3
  820. package/src/TreeList/TreeListItem.tsx +31 -7
  821. package/src/Typeahead/BaseTypeahead.doc.mjs +10 -7
  822. package/src/Typeahead/BaseTypeahead.spec.md +45 -45
  823. package/src/Typeahead/BaseTypeahead.tsx +361 -48
  824. package/src/Typeahead/Typeahead.doc.mjs +21 -4
  825. package/src/Typeahead/Typeahead.tsx +53 -11
  826. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  827. package/src/Typeahead/index.ts +1 -1
  828. package/src/Typeahead/types.ts +27 -3
  829. package/src/gestures/GestureArena.ts +111 -11
  830. package/src/gestures/GestureHost.ts +2064 -0
  831. package/src/gestures/GestureRecognizer.ts +21 -1
  832. package/src/gestures/LongPressGestureRecognizer.ts +4 -0
  833. package/src/gestures/PanGestureRecognizer.ts +4 -0
  834. package/src/gestures/PinchGestureRecognizer.ts +148 -0
  835. package/src/gestures/PressTracker.ts +386 -0
  836. package/src/gestures/README.md +420 -0
  837. package/src/gestures/ScreenEdgePanGestureRecognizer.ts +256 -0
  838. package/src/gestures/SwipeGestureRecognizer.ts +197 -0
  839. package/src/gestures/TapGestureRecognizer.ts +4 -0
  840. package/src/gestures/VelocityTracker.ts +10 -3
  841. package/src/gestures/haptics.ts +196 -0
  842. package/src/gestures/index.ts +79 -0
  843. package/src/gestures/nativeScroll.ts +277 -0
  844. package/src/gestures/touchAction.ts +191 -0
  845. package/src/gestures/touchActionRule.ts +157 -0
  846. package/src/gestures/types.ts +30 -9
  847. package/src/gestures/useGestureRecognizer.ts +305 -0
  848. package/src/hooks/index.ts +5 -1
  849. package/src/hooks/menuPressMarker.ts +15 -0
  850. package/src/hooks/modalAnnounce.ts +129 -72
  851. package/src/hooks/scrollKeyboardDelegation.ts +9 -3
  852. package/src/hooks/useAdaptivePresentation.ts +4 -1
  853. package/src/hooks/useAnnounce.doc.mjs +35 -3
  854. package/src/hooks/useAnnounce.ts +209 -102
  855. package/src/hooks/useAnnounceRenderedText.ts +17 -3
  856. package/src/hooks/useBusyAnnouncement.ts +7 -10
  857. package/src/hooks/useClickableContainer.ts +48 -17
  858. package/src/hooks/useFocusReturnVisibility.ts +15 -12
  859. package/src/hooks/useInputStatusIcon.tsx +2 -2
  860. package/src/hooks/useListFocus.ts +38 -1
  861. package/src/hooks/useMenuHover.ts +15 -1
  862. package/src/hooks/useMenuPress.ts +5 -5
  863. package/src/hooks/useScrollOverflow.doc.mjs +1 -1
  864. package/src/hooks/useScrollOverflow.ts +59 -10
  865. package/src/i18n/generated-locales/af-ZA.generated.ts +0 -7
  866. package/src/i18n/generated-locales/ar-SA.generated.ts +0 -6
  867. package/src/i18n/generated-locales/ca-ES.generated.ts +0 -7
  868. package/src/i18n/generated-locales/cs-CZ.generated.ts +0 -6
  869. package/src/i18n/generated-locales/da-DK.generated.ts +0 -6
  870. package/src/i18n/generated-locales/de-DE.generated.ts +0 -6
  871. package/src/i18n/generated-locales/el-GR.generated.ts +0 -7
  872. package/src/i18n/generated-locales/en.generated.ts +9 -6
  873. package/src/i18n/generated-locales/es-ES.generated.ts +0 -7
  874. package/src/i18n/generated-locales/fi-FI.generated.ts +0 -6
  875. package/src/i18n/generated-locales/fr-FR.generated.ts +0 -7
  876. package/src/i18n/generated-locales/he-IL.generated.ts +0 -6
  877. package/src/i18n/generated-locales/hu-HU.generated.ts +0 -6
  878. package/src/i18n/generated-locales/it-IT.generated.ts +0 -7
  879. package/src/i18n/generated-locales/ja-JP.generated.ts +0 -6
  880. package/src/i18n/generated-locales/ko-KR.generated.ts +0 -6
  881. package/src/i18n/generated-locales/nl-NL.generated.ts +0 -6
  882. package/src/i18n/generated-locales/no-NO.generated.ts +0 -6
  883. package/src/i18n/generated-locales/pl-PL.generated.ts +0 -7
  884. package/src/i18n/generated-locales/pseudo.generated.ts +9 -6
  885. package/src/i18n/generated-locales/pt-BR.generated.ts +0 -7
  886. package/src/i18n/generated-locales/pt-PT.generated.ts +0 -7
  887. package/src/i18n/generated-locales/ro-RO.generated.ts +0 -6
  888. package/src/i18n/generated-locales/ru-RU.generated.ts +0 -7
  889. package/src/i18n/generated-locales/sr-SP.generated.ts +0 -6
  890. package/src/i18n/generated-locales/sv-SE.generated.ts +0 -6
  891. package/src/i18n/generated-locales/tr-TR.generated.ts +0 -7
  892. package/src/i18n/generated-locales/uk-UA.generated.ts +0 -7
  893. package/src/i18n/generated-locales/vi-VN.generated.ts +0 -6
  894. package/src/i18n/generated-locales/zh-CN.generated.ts +0 -6
  895. package/src/i18n/generated-locales/zh-TW.generated.ts +0 -6
  896. package/src/i18n/useListFormatter.ts +42 -0
  897. package/src/motion/MEASUREMENTS.md +2 -1
  898. package/src/motion/README.md +113 -33
  899. package/src/motion/animator.ts +987 -132
  900. package/src/motion/coast.ts +10 -3
  901. package/src/motion/reducedMotion.ts +12 -2
  902. package/src/motion/reducedMotionPlan.ts +20 -1
  903. package/src/motion/resolveMotion.ts +68 -0
  904. package/src/motion/roleValue.ts +2 -1
  905. package/src/motion/uikit/timing.ts +15 -1
  906. package/src/privateAttributes/segmentDisabled.stylex.ts +28 -0
  907. package/src/theme/Theme.doc.mjs +1 -1
  908. package/src/theme/Theme.tsx +8 -4
  909. package/src/theme/defineTheme.ts +117 -8
  910. package/src/theme/domainTokens/domainTokenDefaults.ts +19 -0
  911. package/src/theme/domainTokens/index.ts +6 -10
  912. package/src/theme/index.ts +5 -0
  913. package/src/theme/motionKnobs.ts +82 -0
  914. package/src/theme/resolveThemeValues.ts +68 -6
  915. package/src/theme/themeAdaptations.ts +52 -12
  916. package/src/theme/themeMotion.ts +221 -0
  917. package/src/theme/tokenReferences.ts +149 -0
  918. package/src/theme/tokens.stylex.ts +10 -0
  919. package/src/theme/tokens.ts +15 -158
  920. package/src/theme/useTheme.ts +6 -1
  921. package/src/utils/focusOutline.stylex.ts +28 -0
  922. package/src/utils/focusReturn.ts +19 -6
  923. package/src/utils/getNodeText.ts +38 -0
  924. package/src/utils/interactionModality.ts +197 -17
  925. package/src/utils/interactionOverlay.stylex.ts +12 -3
  926. package/src/utils/plainDate.ts +58 -3
  927. package/src/utils/presentation.ts +180 -0
  928. package/src/utils/pressDisabled.ts +32 -0
  929. package/src/utils/pressFeedback.ts +39 -14
  930. package/src/utils/primaryClick.ts +28 -0
  931. package/src/utils/sharedMutationObserver.ts +87 -29
  932. package/src/utils/timeFormat.ts +314 -0
  933. package/src/utils/touchPresentation.stylex.ts +43 -0
  934. package/src/utils/touchPresentation.ts +13 -8
  935. package/src/utils/touchQueries.ts +15 -0
  936. package/src/utils/unicodeDigits.ts +71 -0
  937. package/src/utils/useFocusAcrossSwap.ts +55 -0
  938. package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.d.ts +0 -2
  939. package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.js +0 -132
  940. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +0 -2
  941. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +0 -78
  942. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts +0 -2
  943. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +0 -65
  944. package/dist/List/ListMarkers.a11y.chromium.spec.d.ts +0 -2
  945. package/dist/List/ListMarkers.a11y.chromium.spec.js +0 -677
  946. package/dist/Markdown/Markdown.fr23.bench.d.ts +0 -2
  947. package/dist/Markdown/Markdown.fr23.bench.d.ts.map +0 -1
  948. package/dist/Markdown/Markdown.fr23.bench.js +0 -152
  949. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.d.ts +0 -2
  950. package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +0 -590
  951. package/dist/Markdown/plugins/headingLinks.a11y.chromium.spec.d.ts +0 -2
  952. package/dist/Markdown/plugins/headingLinks.a11y.chromium.spec.js +0 -657
  953. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.d.ts +0 -2
  954. package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +0 -153
  955. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.d.ts +0 -2
  956. package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +0 -116
  957. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.d.ts +0 -2
  958. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +0 -49
  959. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.d.ts +0 -2
  960. package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +0 -273
  961. package/dist/Outline/OutlineFocus.a11y.chromium.spec.d.ts +0 -2
  962. package/dist/Outline/OutlineFocus.a11y.chromium.spec.js +0 -421
  963. package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.d.ts +0 -2
  964. package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.js +0 -118
  965. package/dist/reset.a11y.chromium.spec.d.ts +0 -2
  966. package/dist/reset.a11y.chromium.spec.js +0 -231
  967. package/dist/reset.until-found.a11y.browser.spec.d.ts +0 -2
  968. package/dist/reset.until-found.a11y.browser.spec.js +0 -72
  969. package/src/AlertDialog/AlertDialog.test.tsx +0 -519
  970. package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +0 -116
  971. package/src/AlertDialog/__tests__/AlertDialog.a11y.renders.tsx +0 -52
  972. package/src/AlertDialog/__tests__/AlertDialog.a11y.states.ts +0 -68
  973. package/src/AlertDialog/__tests__/AlertDialog.a11y.test.tsx +0 -144
  974. package/src/AlertDialog/useImperativeAlertDialog.test.tsx +0 -163
  975. package/src/AppShell/AppShell.test.tsx +0 -1148
  976. package/src/AspectRatio/AspectRatio.test.tsx +0 -398
  977. package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +0 -158
  978. package/src/Avatar/Avatar.test.tsx +0 -867
  979. package/src/Avatar/AvatarStatusDot.test.tsx +0 -306
  980. package/src/AvatarGroup/AvatarGroup.test.tsx +0 -313
  981. package/src/AvatarGroup/AvatarGroupOverflow.test.tsx +0 -263
  982. package/src/Badge/Badge.test.tsx +0 -125
  983. package/src/Banner/Banner.test.tsx +0 -879
  984. package/src/Blockquote/Blockquote.test.tsx +0 -121
  985. package/src/BottomSheet/BottomSheet.test.tsx +0 -3108
  986. package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +0 -248
  987. package/src/BottomSheet/BottomSheetKeyboard.test.tsx +0 -195
  988. package/src/BottomSheet/BottomSheetPanel.test.tsx +0 -549
  989. package/src/BottomSheet/BottomSheetReplace.test.tsx +0 -1638
  990. package/src/BottomSheet/BottomSheetStacking.announce.test.tsx +0 -246
  991. package/src/BottomSheet/BottomSheetStacking.test.tsx +0 -3184
  992. package/src/BottomSheet/BottomSheetSwitcher.test.tsx +0 -2010
  993. package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +0 -129
  994. package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +0 -97
  995. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +0 -415
  996. package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +0 -462
  997. package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +0 -247
  998. package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +0 -83
  999. package/src/BottomSheet/snapOffsets.test.ts +0 -254
  1000. package/src/BottomSheet/useSheetGestures.test.ts +0 -1638
  1001. package/src/Breadcrumbs/Breadcrumbs.test.tsx +0 -921
  1002. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +0 -120
  1003. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.renders.tsx +0 -45
  1004. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.states.ts +0 -81
  1005. package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.test.tsx +0 -125
  1006. package/src/Button/Button.test.tsx +0 -864
  1007. package/src/Button/__tests__/Button.a11y.chromium.spec.ts +0 -355
  1008. package/src/Button/__tests__/Button.a11y.harnesses.tsx +0 -47
  1009. package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -25
  1010. package/src/Button/__tests__/Button.a11y.renders.tsx +0 -139
  1011. package/src/Button/__tests__/Button.a11y.states.ts +0 -317
  1012. package/src/Button/__tests__/Button.a11y.test.tsx +0 -187
  1013. package/src/ButtonGroup/ButtonGroup.test.tsx +0 -1025
  1014. package/src/Calendar/Calendar.test.tsx +0 -2186
  1015. package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +0 -127
  1016. package/src/Calendar/__tests__/Calendar.a11y.known-failures.ts +0 -12
  1017. package/src/Calendar/__tests__/Calendar.a11y.renders.tsx +0 -57
  1018. package/src/Calendar/__tests__/Calendar.a11y.states.ts +0 -139
  1019. package/src/Calendar/__tests__/Calendar.a11y.test.tsx +0 -137
  1020. package/src/Calendar/dayCellUtils.test.ts +0 -520
  1021. package/src/Calendar/getInitialFocusDate.test.ts +0 -94
  1022. package/src/Calendar/getStandaloneShortWeekdayNames.test.ts +0 -54
  1023. package/src/Calendar/hooks/useCalendarConstraints.test.ts +0 -153
  1024. package/src/Calendar/hooks/useCalendarDays.test.ts +0 -265
  1025. package/src/Calendar/hooks/useCalendarNavigation.test.ts +0 -252
  1026. package/src/Card/Card.test.tsx +0 -202
  1027. package/src/Carousel/Carousel.test.tsx +0 -915
  1028. package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +0 -193
  1029. package/src/Carousel/__tests__/Carousel.a11y.known-failures.ts +0 -27
  1030. package/src/Carousel/__tests__/Carousel.a11y.renders.tsx +0 -39
  1031. package/src/Carousel/__tests__/Carousel.a11y.states.ts +0 -139
  1032. package/src/Carousel/__tests__/Carousel.a11y.test.tsx +0 -127
  1033. package/src/Center/Center.test.tsx +0 -406
  1034. package/src/Chat/ChatComposer.test.tsx +0 -364
  1035. package/src/Chat/ChatComposerDrawer.test.tsx +0 -130
  1036. package/src/Chat/ChatComposerInput.test.tsx +0 -2136
  1037. package/src/Chat/ChatComposerTokenElement.test.tsx +0 -85
  1038. package/src/Chat/ChatDictationButton.test.tsx +0 -108
  1039. package/src/Chat/ChatLayout.test.tsx +0 -311
  1040. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -99
  1041. package/src/Chat/ChatMessage.test.tsx +0 -344
  1042. package/src/Chat/ChatMessageBubble.test.tsx +0 -294
  1043. package/src/Chat/ChatMessageList.test.tsx +0 -198
  1044. package/src/Chat/ChatMessageMetadata.test.tsx +0 -66
  1045. package/src/Chat/ChatPastedTextToken.test.tsx +0 -71
  1046. package/src/Chat/ChatSendButton.test.tsx +0 -309
  1047. package/src/Chat/ChatSystemMessage.test.tsx +0 -189
  1048. package/src/Chat/ChatTokenizedText.test.tsx +0 -163
  1049. package/src/Chat/ChatToolCalls.test.tsx +0 -413
  1050. package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +0 -577
  1051. package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +0 -740
  1052. package/src/Chat/__tests__/ChatMessageBubble.a11y.chromium.spec.ts +0 -457
  1053. package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.test.ts +0 -91
  1054. package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.ts +0 -91
  1055. package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +0 -465
  1056. package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +0 -416
  1057. package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +0 -1523
  1058. package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +0 -1004
  1059. package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +0 -574
  1060. package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +0 -263
  1061. package/src/Chat/__tests__/useChatStreamScroll.fixture.tsx +0 -61
  1062. package/src/Chat/useChatDictation.test.tsx +0 -369
  1063. package/src/Chat/useChatNewMessages.test.tsx +0 -209
  1064. package/src/Chat/useChatPasteAsToken.test.ts +0 -191
  1065. package/src/Chat/useChatStreamScroll.test.tsx +0 -381
  1066. package/src/Chat/useTriggerMenu.test.tsx +0 -994
  1067. package/src/CheckboxInput/CheckboxInput.test.tsx +0 -926
  1068. package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +0 -354
  1069. package/src/CheckboxInput/__tests__/Checkbox.a11y.known-failures.ts +0 -54
  1070. package/src/CheckboxInput/__tests__/Checkbox.a11y.renders.tsx +0 -310
  1071. package/src/CheckboxInput/__tests__/Checkbox.a11y.states.ts +0 -404
  1072. package/src/CheckboxInput/__tests__/Checkbox.a11y.test.tsx +0 -128
  1073. package/src/CheckboxList/CheckboxList.fr10.test.tsx +0 -51
  1074. package/src/CheckboxList/CheckboxList.test.tsx +0 -1159
  1075. package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +0 -1998
  1076. package/src/Citation/Citation.test.tsx +0 -361
  1077. package/src/ClickableCard/ClickableCard.test.tsx +0 -286
  1078. package/src/Code/Code.test.tsx +0 -75
  1079. package/src/CodeBlock/CodeBlock.highlightStyles.test.tsx +0 -87
  1080. package/src/CodeBlock/CodeBlock.test.tsx +0 -752
  1081. package/src/CodeBlock/CodeLanguage.test.tsx +0 -173
  1082. package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +0 -290
  1083. package/src/CodeBlock/__tests__/CodeBlockLanguages.a11y.chromium.spec.ts +0 -64
  1084. package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +0 -126
  1085. package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +0 -94
  1086. package/src/CodeBlock/highlightRanges.test.ts +0 -253
  1087. package/src/CodeBlock/languages.test.ts +0 -402
  1088. package/src/CodeBlock/tokenizer.test.ts +0 -280
  1089. package/src/CodeBlock/tokenizerBudget.test.ts +0 -112
  1090. package/src/Collapsible/Collapsible.test.tsx +0 -620
  1091. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -656
  1092. package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +0 -183
  1093. package/src/Collapsible/__tests__/Collapsible.a11y.states.ts +0 -117
  1094. package/src/Collapsible/__tests__/Collapsible.a11y.test.tsx +0 -140
  1095. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +0 -559
  1096. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.renders.tsx +0 -45
  1097. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.states.ts +0 -139
  1098. package/src/Collapsible/__tests__/CollapsibleGroup.a11y.test.tsx +0 -135
  1099. package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +0 -129
  1100. package/src/Collapsible/useCollapsible.test.tsx +0 -236
  1101. package/src/CommandPalette/CommandPalette.perf.test.ts +0 -100
  1102. package/src/CommandPalette/CommandPalette.test.tsx +0 -750
  1103. package/src/CommandPalette/CommandPaletteEmpty.test.tsx +0 -101
  1104. package/src/CommandPalette/CommandPaletteFooter.test.tsx +0 -122
  1105. package/src/CommandPalette/CommandPaletteGroup.test.tsx +0 -129
  1106. package/src/CommandPalette/CommandPaletteInput.test.tsx +0 -539
  1107. package/src/CommandPalette/CommandPaletteItem.test.tsx +0 -417
  1108. package/src/CommandPalette/CommandPaletteList.test.tsx +0 -184
  1109. package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +0 -600
  1110. package/src/CommandPalette/__tests__/CommandPaletteEmptyAudit.a11y.chromium.spec.ts +0 -715
  1111. package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +0 -582
  1112. package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +0 -336
  1113. package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +0 -523
  1114. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +0 -76
  1115. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +0 -262
  1116. package/src/ComplexSelector/ComplexSelector.test.tsx +0 -1023
  1117. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +0 -965
  1118. package/src/ContextMenu/ContextMenu.test.tsx +0 -1582
  1119. package/src/ContextMenu/ContextMenu.triggerProps.test.tsx +0 -54
  1120. package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +0 -439
  1121. package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +0 -154
  1122. package/src/ContextMenu/__tests__/ContextMenuLongPress.a11y.chromium.spec.ts +0 -117
  1123. package/src/DateInput/DateInput.fr10.test.tsx +0 -283
  1124. package/src/DateInput/DateInput.test.tsx +0 -1459
  1125. package/src/DateInput/DateInputTouch.test.tsx +0 -2828
  1126. package/src/DateInput/NativeDateField.test.tsx +0 -741
  1127. package/src/DateInput/Presentation.test.tsx +0 -121
  1128. package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +0 -577
  1129. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +0 -171
  1130. package/src/DateRangeInput/DateRangeInput.fr10.test.tsx +0 -165
  1131. package/src/DateRangeInput/DateRangeInput.test.tsx +0 -1108
  1132. package/src/DateTimeInput/DateTimeInput.fr10.test.tsx +0 -319
  1133. package/src/DateTimeInput/DateTimeInput.test.tsx +0 -2575
  1134. package/src/DateTimeInput/DateTimeInputTouch.test.tsx +0 -1071
  1135. package/src/DateTimeInput/NativePickerSegments.test.tsx +0 -657
  1136. package/src/DateTimeInput/Presentation.test.tsx +0 -89
  1137. package/src/Dialog/Dialog.source-build.test.mjs +0 -43
  1138. package/src/Dialog/Dialog.test.tsx +0 -1385
  1139. package/src/Dialog/DialogHeader.test.tsx +0 -477
  1140. package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +0 -111
  1141. package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +0 -218
  1142. package/src/Dialog/__tests__/Dialog.a11y.known-failures.ts +0 -28
  1143. package/src/Dialog/__tests__/Dialog.a11y.renders.tsx +0 -107
  1144. package/src/Dialog/__tests__/Dialog.a11y.states.ts +0 -104
  1145. package/src/Dialog/__tests__/Dialog.a11y.test.tsx +0 -102
  1146. package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +0 -252
  1147. package/src/Dialog/useImperativeDialog.test.tsx +0 -78
  1148. package/src/Divider/Divider.test.tsx +0 -155
  1149. package/src/Drawer/Drawer.test.tsx +0 -1300
  1150. package/src/Drawer/DrawerDirection.test.tsx +0 -127
  1151. package/src/Drawer/DrawerHeader.test.tsx +0 -102
  1152. package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +0 -402
  1153. package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +0 -298
  1154. package/src/DropdownMenu/DropdownMenu.ssr.test.tsx +0 -93
  1155. package/src/DropdownMenu/DropdownMenu.test.tsx +0 -4340
  1156. package/src/DropdownMenu/DropdownMenuContext.public.test.ts +0 -22
  1157. package/src/DropdownMenu/DropdownMenuLazySheet.test.tsx +0 -126
  1158. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +0 -635
  1159. package/src/DropdownMenu/DropdownMenuSheetFirstOpen.test.tsx +0 -72
  1160. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +0 -2408
  1161. package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +0 -281
  1162. package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +0 -175
  1163. package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +0 -74
  1164. package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +0 -335
  1165. package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +0 -367
  1166. package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +0 -328
  1167. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +0 -540
  1168. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +0 -671
  1169. package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +0 -146
  1170. package/src/DropdownMenu/__tests__/Menu.a11y.known-failures.ts +0 -26
  1171. package/src/DropdownMenu/__tests__/Menu.a11y.renders.tsx +0 -65
  1172. package/src/DropdownMenu/__tests__/Menu.a11y.states.ts +0 -138
  1173. package/src/DropdownMenu/__tests__/Menu.a11y.test.tsx +0 -136
  1174. package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +0 -137
  1175. package/src/DropdownMenu/__tests__/MenuButton.a11y.known-failures.ts +0 -12
  1176. package/src/DropdownMenu/__tests__/MenuButton.a11y.renders.tsx +0 -67
  1177. package/src/DropdownMenu/__tests__/MenuButton.a11y.states.ts +0 -141
  1178. package/src/DropdownMenu/__tests__/MenuButton.a11y.test.tsx +0 -138
  1179. package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +0 -231
  1180. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +0 -238
  1181. package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +0 -173
  1182. package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +0 -503
  1183. package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +0 -268
  1184. package/src/DropdownMenu/__tests__/warmMenuBottomSheet.tsx +0 -43
  1185. package/src/EmptyState/EmptyState.announce.test.tsx +0 -227
  1186. package/src/EmptyState/EmptyState.test.tsx +0 -284
  1187. package/src/Field/Field.test.tsx +0 -800
  1188. package/src/Field/FieldLabel.test.tsx +0 -244
  1189. package/src/Field/InputClearButton.test.tsx +0 -395
  1190. package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +0 -297
  1191. package/src/Field/fieldInputFamily.test.tsx +0 -160
  1192. package/src/FieldStatus/FieldStatus.test.tsx +0 -482
  1193. package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +0 -206
  1194. package/src/FieldStatus/__tests__/StatusMessage.a11y.known-failures.ts +0 -13
  1195. package/src/FieldStatus/__tests__/StatusMessage.a11y.renders.tsx +0 -287
  1196. package/src/FieldStatus/__tests__/StatusMessage.a11y.states.ts +0 -302
  1197. package/src/FieldStatus/__tests__/StatusMessage.a11y.test.tsx +0 -154
  1198. package/src/FileInput/FileInput.fr10.test.tsx +0 -21
  1199. package/src/FileInput/FileInput.test.tsx +0 -1270
  1200. package/src/FormLayout/FormLayout.test.tsx +0 -444
  1201. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -46
  1202. package/src/Grid/Grid.test.tsx +0 -509
  1203. package/src/HStack/HStack.test.tsx +0 -129
  1204. package/src/Heading/Heading.test.tsx +0 -328
  1205. package/src/HoverCard/HoverCard.test.tsx +0 -1339
  1206. package/src/Icon/Icon.test.tsx +0 -990
  1207. package/src/Icon/globalIconRegistry.test.tsx +0 -613
  1208. package/src/IconButton/IconButton.test.tsx +0 -156
  1209. package/src/Indicator/Indicator.test.tsx +0 -389
  1210. package/src/Indicator/indicatorRegistry.test.tsx +0 -106
  1211. package/src/InputGroup/InputGroup.test.tsx +0 -502
  1212. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  1213. package/src/Item/Item.source-build.test.mjs +0 -88
  1214. package/src/Item/Item.swipeLayer.test.tsx +0 -74
  1215. package/src/Item/Item.test.tsx +0 -1455
  1216. package/src/Item/ItemMarkerColumns.a11y.chromium.spec.ts +0 -211
  1217. package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +0 -337
  1218. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +0 -186
  1219. package/src/Kbd/Kbd.test.tsx +0 -299
  1220. package/src/Layer/LayerProvider.test.tsx +0 -143
  1221. package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +0 -176
  1222. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +0 -200
  1223. package/src/Layer/anchorName.test.ts +0 -146
  1224. package/src/Layer/layerDismissalFamilies.test.tsx +0 -487
  1225. package/src/Layer/layerDismissalInvariants.test.tsx +0 -501
  1226. package/src/Layer/layerHost.test.ts +0 -117
  1227. package/src/Layer/layerScopedContext.test.tsx +0 -499
  1228. package/src/Layer/layerViewportInset.source-build.test.mjs +0 -90
  1229. package/src/Layer/layerViewportInset.test.ts +0 -120
  1230. package/src/Layer/useLayer.test.tsx +0 -2423
  1231. package/src/Layer/useLayerDismissal.test.tsx +0 -580
  1232. package/src/Layer/useTouchTrigger.test.ts +0 -70
  1233. package/src/Layout/Layout.test.tsx +0 -375
  1234. package/src/Layout/LayoutSlots.test.tsx +0 -376
  1235. package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +0 -122
  1236. package/src/Layout/__tests__/Layout.a11y.renders.tsx +0 -110
  1237. package/src/Layout/__tests__/Layout.a11y.states.ts +0 -93
  1238. package/src/Layout/__tests__/Layout.a11y.test.tsx +0 -142
  1239. package/src/Layout/__tests__/childrenAsContent.test.tsx +0 -59
  1240. package/src/Layout/__tests__/contentWidth.test.tsx +0 -303
  1241. package/src/Layout/__tests__/edgeCompensation.test.tsx +0 -191
  1242. package/src/Layout/__tests__/nestedPadding.test.tsx +0 -264
  1243. package/src/Layout/overlayPaddingReset.test.tsx +0 -224
  1244. package/src/Lightbox/Lightbox.test.tsx +0 -819
  1245. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +0 -78
  1246. package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +0 -70
  1247. package/src/Lightbox/useLightbox.test.tsx +0 -263
  1248. package/src/Link/Link.test.tsx +0 -457
  1249. package/src/Link/__tests__/Link.a11y.chromium.spec.ts +0 -143
  1250. package/src/Link/__tests__/Link.a11y.renders.tsx +0 -97
  1251. package/src/Link/__tests__/Link.a11y.states.ts +0 -104
  1252. package/src/Link/__tests__/Link.a11y.test.tsx +0 -127
  1253. package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +0 -262
  1254. package/src/Link/useLinkComponent.test.tsx +0 -572
  1255. package/src/Link/useLinkify.test.tsx +0 -146
  1256. package/src/List/List.test.tsx +0 -1052
  1257. package/src/List/ListItem.source-build.test.mjs +0 -41
  1258. package/src/List/ListMarkers.a11y.chromium.spec.ts +0 -904
  1259. package/src/Markdown/Markdown.codeLanguages.test.tsx +0 -137
  1260. package/src/Markdown/Markdown.fr23.bench.ts +0 -176
  1261. package/src/Markdown/Markdown.fr23.perf.test.ts +0 -484
  1262. package/src/Markdown/Markdown.helpers.perf.test.ts +0 -495
  1263. package/src/Markdown/Markdown.public.test.ts +0 -309
  1264. package/src/Markdown/Markdown.renderBoundary.test.tsx +0 -72
  1265. package/src/Markdown/Markdown.rerender.test.tsx +0 -143
  1266. package/src/Markdown/Markdown.test.tsx +0 -1383
  1267. package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +0 -727
  1268. package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +0 -102
  1269. package/src/Markdown/angleDestinations.test.tsx +0 -104
  1270. package/src/Markdown/ast.test.ts +0 -374
  1271. package/src/Markdown/atxHeadingIndentation.test.tsx +0 -53
  1272. package/src/Markdown/blockNesting.test.tsx +0 -124
  1273. package/src/Markdown/blockquoteMarkers.test.tsx +0 -69
  1274. package/src/Markdown/characterReferences.test.ts +0 -47
  1275. package/src/Markdown/codeSpans.test.tsx +0 -65
  1276. package/src/Markdown/emphasis.test.tsx +0 -214
  1277. package/src/Markdown/fenceInfo.test.tsx +0 -47
  1278. package/src/Markdown/imageAlt.test.tsx +0 -84
  1279. package/src/Markdown/incremental.test.ts +0 -1198
  1280. package/src/Markdown/incrementalIndentation.test.tsx +0 -36
  1281. package/src/Markdown/indentedFences.test.tsx +0 -374
  1282. package/src/Markdown/indentedTables.test.tsx +0 -53
  1283. package/src/Markdown/linkBrackets.test.tsx +0 -116
  1284. package/src/Markdown/linkDestinationLinear.test.tsx +0 -54
  1285. package/src/Markdown/linkDestinations.test.tsx +0 -127
  1286. package/src/Markdown/linkTextCode.test.tsx +0 -65
  1287. package/src/Markdown/listBullets.test.tsx +0 -55
  1288. package/src/Markdown/listContinuation.test.tsx +0 -94
  1289. package/src/Markdown/listThematicBreak.test.tsx +0 -49
  1290. package/src/Markdown/longLinkLabels.test.tsx +0 -49
  1291. package/src/Markdown/openFenceFinalNewline.test.tsx +0 -85
  1292. package/src/Markdown/parser.perf.test.ts +0 -398
  1293. package/src/Markdown/parser.public.test.ts +0 -144
  1294. package/src/Markdown/parser.test.ts +0 -1925
  1295. package/src/Markdown/plugin-renderer/MarkdownPluginNodeRenderer.test.tsx +0 -300
  1296. package/src/Markdown/plugins/frontmatter.test.tsx +0 -150
  1297. package/src/Markdown/plugins/headingLinks.a11y.chromium.spec.ts +0 -856
  1298. package/src/Markdown/plugins/headingLinks.ssr.test.tsx +0 -143
  1299. package/src/Markdown/plugins/headingLinks.test.tsx +0 -637
  1300. package/src/Markdown/plugins/protocol.test.tsx +0 -1083
  1301. package/src/Markdown/plugins/semanticFence.test.tsx +0 -655
  1302. package/src/Markdown/plugins/softBreaks.test.tsx +0 -172
  1303. package/src/Markdown/plugins/sourceDecoration.test.tsx +0 -799
  1304. package/src/Markdown/plugins/sourceLines.test.tsx +0 -715
  1305. package/src/Markdown/plugins/textTransform.test.ts +0 -467
  1306. package/src/Markdown/remark.test.tsx +0 -1877
  1307. package/src/Markdown/streaming.test.ts +0 -148
  1308. package/src/Markdown/streamingListShapes.test.tsx +0 -93
  1309. package/src/Markdown/trailingSpaces.test.tsx +0 -45
  1310. package/src/MetadataList/MetadataList.test.tsx +0 -383
  1311. package/src/MobileNav/MobileNav.test.tsx +0 -281
  1312. package/src/MobileNav/MobileNavCloseEdgeCases.test.tsx +0 -584
  1313. package/src/MobileNav/MobileNavCloseTiming.test.ts +0 -58
  1314. package/src/MobileNav/MobileNavCloseVisibility.test.tsx +0 -172
  1315. package/src/MobileNav/MobileNavEntryAnimation.test.tsx +0 -212
  1316. package/src/MobileNav/MobileNavFocus.test.tsx +0 -553
  1317. package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +0 -147
  1318. package/src/MobileNav/MobileNavReopen.test.tsx +0 -118
  1319. package/src/MobileNav/MobileNavScrollbarGutter.test.tsx +0 -109
  1320. package/src/MobileNav/MobileNavToggle.test.tsx +0 -179
  1321. package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +0 -103
  1322. package/src/MoreMenu/MoreMenu.test.tsx +0 -356
  1323. package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +0 -149
  1324. package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +0 -72
  1325. package/src/MultiSelector/MultiSelector.focusableDisabled.test.tsx +0 -121
  1326. package/src/MultiSelector/MultiSelector.fr10.test.tsx +0 -221
  1327. package/src/MultiSelector/MultiSelector.test.tsx +0 -4702
  1328. package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +0 -310
  1329. package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +0 -46
  1330. package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +0 -128
  1331. package/src/NavIcon/NavIcon.test.tsx +0 -41
  1332. package/src/NavMenu/NavHeadingMenu.test.tsx +0 -714
  1333. package/src/NavMenu/__tests__/NavMenusSlideSelection.a11y.chromium.spec.ts +0 -137
  1334. package/src/NumberInput/NumberInput.fr10.test.tsx +0 -21
  1335. package/src/NumberInput/NumberInput.test.tsx +0 -2636
  1336. package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +0 -124
  1337. package/src/NumberInput/__tests__/NumberInput.a11y.known-failures.ts +0 -26
  1338. package/src/NumberInput/__tests__/NumberInput.a11y.renders.tsx +0 -77
  1339. package/src/NumberInput/__tests__/NumberInput.a11y.states.ts +0 -116
  1340. package/src/NumberInput/__tests__/NumberInput.a11y.test.tsx +0 -154
  1341. package/src/NumberInput/numberInputCommit.test.ts +0 -72
  1342. package/src/NumberInput/numberParser.docblock.test.ts +0 -234
  1343. package/src/NumberInput/numberParser.test.ts +0 -222
  1344. package/src/Outline/Outline.test.tsx +0 -1069
  1345. package/src/Outline/OutlineFocus.a11y.chromium.spec.ts +0 -551
  1346. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -104
  1347. package/src/OverflowList/OverflowList.test.tsx +0 -1073
  1348. package/src/Overlay/Overlay.test.tsx +0 -424
  1349. package/src/Pagination/Pagination.test.tsx +0 -1754
  1350. package/src/Popover/Popover.test.tsx +0 -1424
  1351. package/src/Popover/PopoverPresentation.test.tsx +0 -952
  1352. package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +0 -205
  1353. package/src/PowerSearch/PowerSearch.test.tsx +0 -1003
  1354. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +0 -1190
  1355. package/src/PowerSearch/PowerSearchFilterEditor.test.tsx +0 -377
  1356. package/src/PowerSearch/PowerSearchToken.test.tsx +0 -230
  1357. package/src/PowerSearch/PowerSearchValueEditor.test.tsx +0 -754
  1358. package/src/PowerSearch/formatFilterValue.test.ts +0 -339
  1359. package/src/PowerSearch/resolveDateTimeRangePart.test.ts +0 -40
  1360. package/src/PowerSearch/usePowerSearchConfig.test.ts +0 -832
  1361. package/src/PowerSearch/usePowerSearchSource.test.ts +0 -621
  1362. package/src/ProgressBar/ProgressBar.test.tsx +0 -852
  1363. package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +0 -115
  1364. package/src/ProgressBar/__tests__/ProgressBar.a11y.known-failures.ts +0 -12
  1365. package/src/ProgressBar/__tests__/ProgressBar.a11y.renders.tsx +0 -38
  1366. package/src/ProgressBar/__tests__/ProgressBar.a11y.states.ts +0 -123
  1367. package/src/ProgressBar/__tests__/ProgressBar.a11y.test.tsx +0 -107
  1368. package/src/RadioList/RadioList.fr10.test.tsx +0 -67
  1369. package/src/RadioList/RadioList.test.tsx +0 -967
  1370. package/src/RadioList/RadioListItem.press.source-build.test.mjs +0 -80
  1371. package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +0 -274
  1372. package/src/RadioList/__tests__/RadioGroup.a11y.known-failures.ts +0 -12
  1373. package/src/RadioList/__tests__/RadioGroup.a11y.renders.tsx +0 -232
  1374. package/src/RadioList/__tests__/RadioGroup.a11y.states.ts +0 -503
  1375. package/src/RadioList/__tests__/RadioGroup.a11y.test.tsx +0 -217
  1376. package/src/Resizable/ResizeHandle.test.tsx +0 -1067
  1377. package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +0 -120
  1378. package/src/Resizable/__tests__/ResizeHandle.a11y.known-failures.ts +0 -39
  1379. package/src/Resizable/__tests__/ResizeHandle.a11y.renders.tsx +0 -80
  1380. package/src/Resizable/__tests__/ResizeHandle.a11y.states.ts +0 -197
  1381. package/src/Resizable/__tests__/ResizeHandle.a11y.test.tsx +0 -123
  1382. package/src/Resizable/shippedDirections.test.ts +0 -462
  1383. package/src/Resizable/useResizable.test.ts +0 -1682
  1384. package/src/Resizable/utils.test.ts +0 -74
  1385. package/src/ScrollableArea/ScrollableArea.test.tsx +0 -304
  1386. package/src/Section/Section.test.tsx +0 -376
  1387. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -897
  1388. package/src/SelectableCard/SelectableCard.test.tsx +0 -216
  1389. package/src/Selector/Selector.focusableDisabled.test.tsx +0 -127
  1390. package/src/Selector/Selector.fr10.test.tsx +0 -149
  1391. package/src/Selector/Selector.sheetActiveDescendant.test.tsx +0 -95
  1392. package/src/Selector/Selector.source-build.test.mjs +0 -79
  1393. package/src/Selector/Selector.test.tsx +0 -5028
  1394. package/src/Selector/__tests__/Combobox.a11y.known-failures.ts +0 -27
  1395. package/src/Selector/__tests__/Combobox.a11y.states.ts +0 -145
  1396. package/src/Selector/__tests__/ComboboxField.a11y.chromium.spec.ts +0 -458
  1397. package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +0 -91
  1398. package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +0 -131
  1399. package/src/Selector/__tests__/Listbox.a11y.dom.ts +0 -38
  1400. package/src/Selector/__tests__/Listbox.a11y.inventory.test.ts +0 -63
  1401. package/src/Selector/__tests__/Listbox.a11y.known-failures.ts +0 -12
  1402. package/src/Selector/__tests__/Listbox.a11y.states.ts +0 -232
  1403. package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +0 -46
  1404. package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +0 -109
  1405. package/src/Selector/__tests__/Selector.combobox.a11y.test.tsx +0 -126
  1406. package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +0 -121
  1407. package/src/Selector/useCombobox.public.test.tsx +0 -89
  1408. package/src/Selector/useCombobox.test.tsx +0 -444
  1409. package/src/SideNav/SideNav.test.tsx +0 -4128
  1410. package/src/SideNav/SideNavRailMotion.test.tsx +0 -620
  1411. package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +0 -417
  1412. package/src/SizeContext/SizeContext.test.tsx +0 -226
  1413. package/src/Skeleton/Skeleton.test.tsx +0 -148
  1414. package/src/Slider/Slider.fr10.test.tsx +0 -93
  1415. package/src/Slider/Slider.test.tsx +0 -1630
  1416. package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +0 -113
  1417. package/src/Slider/__tests__/Slider.a11y.known-failures.ts +0 -12
  1418. package/src/Slider/__tests__/Slider.a11y.renders.tsx +0 -42
  1419. package/src/Slider/__tests__/Slider.a11y.states.ts +0 -106
  1420. package/src/Slider/__tests__/Slider.a11y.test.tsx +0 -105
  1421. package/src/Spinner/Spinner.test.tsx +0 -484
  1422. package/src/Stack/Stack.test.tsx +0 -473
  1423. package/src/Stack/StackItem.test.tsx +0 -105
  1424. package/src/StatusDot/StatusDot.test.tsx +0 -213
  1425. package/src/Stepper/Stepper.public.test.ts +0 -91
  1426. package/src/Stepper/Stepper.test.tsx +0 -2068
  1427. package/src/Switch/Switch.focusRing.source-build.test.mjs +0 -81
  1428. package/src/Switch/Switch.test.tsx +0 -1071
  1429. package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +0 -211
  1430. package/src/Switch/__tests__/Switch.a11y.known-failures.ts +0 -28
  1431. package/src/Switch/__tests__/Switch.a11y.states.ts +0 -275
  1432. package/src/Switch/__tests__/Switch.a11y.test.tsx +0 -144
  1433. package/src/TabList/TabList.test.tsx +0 -1701
  1434. package/src/TabList/__tests__/TabListOverflow.interaction.browser.spec.ts +0 -99
  1435. package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +0 -199
  1436. package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +0 -12
  1437. package/src/TabList/__tests__/Tabs.a11y.renders.tsx +0 -92
  1438. package/src/TabList/__tests__/Tabs.a11y.states.ts +0 -247
  1439. package/src/TabList/__tests__/Tabs.a11y.test.tsx +0 -153
  1440. package/src/Table/Table.perf.test.tsx +0 -569
  1441. package/src/Table/Table.test.tsx +0 -1851
  1442. package/src/Table/TableHeaderCell.test.tsx +0 -291
  1443. package/src/Table/TableSelectionToolbar.test.tsx +0 -109
  1444. package/src/Table/__tests__/Table.a11y.chromium.spec.ts +0 -129
  1445. package/src/Table/__tests__/Table.a11y.contracts.ts +0 -35
  1446. package/src/Table/__tests__/Table.a11y.renders.tsx +0 -112
  1447. package/src/Table/__tests__/Table.a11y.states.ts +0 -140
  1448. package/src/Table/__tests__/Table.a11y.test.tsx +0 -198
  1449. package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +0 -75
  1450. package/src/Table/__tests__/TableRowGlide.a11y.browser.spec.ts +0 -382
  1451. package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +0 -138
  1452. package/src/Table/__tests__/TableStickyDividers.a11y.browser.spec.ts +0 -560
  1453. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -919
  1454. package/src/Table/plugins/columnSettings/useTableColumnSettings.test.tsx +0 -175
  1455. package/src/Table/plugins/columnSettings/useTableColumnSettingsState.test.tsx +0 -296
  1456. package/src/Table/plugins/filtering/useTableFilterState.test.tsx +0 -143
  1457. package/src/Table/plugins/filtering/useTableFiltering.test.tsx +0 -357
  1458. package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +0 -112
  1459. package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +0 -409
  1460. package/src/Table/plugins/pagination/useTablePagination-perf.test.tsx +0 -232
  1461. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -666
  1462. package/src/Table/plugins/rowExpansion/useTableRowExpansion.glide.test.tsx +0 -280
  1463. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +0 -681
  1464. package/src/Table/plugins/rowIndex/useTableRowIndex.test.tsx +0 -132
  1465. package/src/Table/plugins/rowStatus/useTableRowStatus.public.test.ts +0 -92
  1466. package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +0 -519
  1467. package/src/Table/plugins/selection/useTableSelection-perf.test.tsx +0 -258
  1468. package/src/Table/plugins/selection/useTableSelection.test.tsx +0 -424
  1469. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -451
  1470. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +0 -174
  1471. package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +0 -86
  1472. package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -857
  1473. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +0 -592
  1474. package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +0 -334
  1475. package/src/Table/plugins/tree/useTableTreeData-perf.test.tsx +0 -163
  1476. package/src/Table/plugins/tree/useTableTreeData.test.tsx +0 -992
  1477. package/src/Table/plugins/tree/useTableTreeState.test.tsx +0 -740
  1478. package/src/Table/tableContextMenu.test.tsx +0 -208
  1479. package/src/Text/Text.test.tsx +0 -405
  1480. package/src/Text/useTruncation.test.tsx +0 -69
  1481. package/src/TextArea/TextArea.fr10.test.tsx +0 -21
  1482. package/src/TextArea/TextArea.test.tsx +0 -1257
  1483. package/src/TextInput/TextInput.fr10.test.tsx +0 -21
  1484. package/src/TextInput/TextInput.test.tsx +0 -1259
  1485. package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +0 -214
  1486. package/src/TextInput/__tests__/TextInput.a11y.known-failures.ts +0 -40
  1487. package/src/TextInput/__tests__/TextInput.a11y.renders.tsx +0 -202
  1488. package/src/TextInput/__tests__/TextInput.a11y.states.ts +0 -384
  1489. package/src/TextInput/__tests__/TextInput.a11y.test.tsx +0 -130
  1490. package/src/Thumbnail/Thumbnail.test.tsx +0 -384
  1491. package/src/TimeInput/NativeTimeInput.test.tsx +0 -326
  1492. package/src/TimeInput/Presentation.test.tsx +0 -171
  1493. package/src/TimeInput/TimeInput.fr10.test.tsx +0 -312
  1494. package/src/TimeInput/TimeInput.test.tsx +0 -831
  1495. package/src/Timer/Timer.test.tsx +0 -302
  1496. package/src/Timestamp/Timestamp.test.tsx +0 -1636
  1497. package/src/Timestamp/tooltipEntries.test.ts +0 -566
  1498. package/src/Toast/ToastViewport.modalHost.test.tsx +0 -891
  1499. package/src/Toast/ToastViewport.test.tsx +0 -2333
  1500. package/src/Toast/useToast.test.tsx +0 -258
  1501. package/src/ToggleButton/ToggleButton.test.tsx +0 -973
  1502. package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +0 -177
  1503. package/src/ToggleButton/__tests__/ToggleButton.a11y.renders.tsx +0 -133
  1504. package/src/ToggleButton/__tests__/ToggleButton.a11y.states.ts +0 -167
  1505. package/src/ToggleButton/__tests__/ToggleButton.a11y.test.tsx +0 -103
  1506. package/src/Token/Token.test.tsx +0 -640
  1507. package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +0 -87
  1508. package/src/Tokenizer/Tokenizer.fr10.test.tsx +0 -28
  1509. package/src/Tokenizer/Tokenizer.props-type.test.tsx +0 -126
  1510. package/src/Tokenizer/Tokenizer.ssr.test.tsx +0 -196
  1511. package/src/Tokenizer/Tokenizer.test.tsx +0 -2121
  1512. package/src/Tokenizer/TokenizerBottomSheet.test.tsx +0 -2719
  1513. package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +0 -505
  1514. package/src/Toolbar/Toolbar.test.tsx +0 -570
  1515. package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +0 -164
  1516. package/src/Toolbar/__tests__/Toolbar.a11y.renders.tsx +0 -63
  1517. package/src/Toolbar/__tests__/Toolbar.a11y.states.ts +0 -142
  1518. package/src/Toolbar/__tests__/Toolbar.a11y.test.tsx +0 -126
  1519. package/src/Tooltip/Tooltip.test.tsx +0 -819
  1520. package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +0 -130
  1521. package/src/Tooltip/__tests__/Tooltip.a11y.renders.tsx +0 -86
  1522. package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +0 -132
  1523. package/src/Tooltip/__tests__/Tooltip.a11y.test.tsx +0 -126
  1524. package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +0 -130
  1525. package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +0 -75
  1526. package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +0 -673
  1527. package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +0 -1162
  1528. package/src/Tooltip/useTooltip.test.tsx +0 -483
  1529. package/src/TopNav/TopNav.test.tsx +0 -836
  1530. package/src/TopNav/TopNavMegaMenu.reduced-motion.source-build.test.mjs +0 -83
  1531. package/src/TopNav/TopNavMegaMenu.test.tsx +0 -1132
  1532. package/src/TopNav/TopNavMenu.test.tsx +0 -485
  1533. package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +0 -75
  1534. package/src/TreeList/TreeList.test.tsx +0 -1711
  1535. package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +0 -138
  1536. package/src/TreeList/__tests__/TreeList.a11y.renders.tsx +0 -44
  1537. package/src/TreeList/__tests__/TreeList.a11y.states.ts +0 -164
  1538. package/src/TreeList/__tests__/TreeList.a11y.test.tsx +0 -138
  1539. package/src/TreeList/__tests__/TreeListGuideAlignment.interaction.browser.spec.ts +0 -127
  1540. package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +0 -83
  1541. package/src/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.ts +0 -138
  1542. package/src/Typeahead/BaseTypeahead.test.tsx +0 -553
  1543. package/src/Typeahead/Typeahead.fr10.test.tsx +0 -28
  1544. package/src/Typeahead/Typeahead.test.tsx +0 -2824
  1545. package/src/Typeahead/TypeaheadItem.test.tsx +0 -134
  1546. package/src/VStack/VStack.test.tsx +0 -128
  1547. package/src/VisuallyHidden/VisuallyHidden.test.tsx +0 -115
  1548. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +0 -853
  1549. package/src/__tests__/CardPress.a11y.chromium.spec.ts +0 -353
  1550. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +0 -87
  1551. package/src/__tests__/PressModality.a11y.chromium.spec.ts +0 -392
  1552. package/src/__tests__/PressedState.a11y.chromium.spec.ts +0 -814
  1553. package/src/__tests__/TestIcon.tsx +0 -26
  1554. package/src/__tests__/babelPluginAddExtensions.test.ts +0 -190
  1555. package/src/__tests__/fastRoleQueries.ts +0 -66
  1556. package/src/__tests__/forcedColors.ts +0 -60
  1557. package/src/__tests__/pressState.ts +0 -212
  1558. package/src/__tests__/stubMatchMedia.test.ts +0 -79
  1559. package/src/__tests__/stubMatchMedia.ts +0 -95
  1560. package/src/__tests__/stylexDeclarations.ts +0 -51
  1561. package/src/__tests__/unthemedLength.ts +0 -34
  1562. package/src/docPropLiterals.test.ts +0 -964
  1563. package/src/docPropReferences.test.ts +0 -178
  1564. package/src/docs-script.test.mjs +0 -55
  1565. package/src/gestures/__tests__/LongPressGestureRecognizer.test.ts +0 -141
  1566. package/src/gestures/__tests__/PanGestureRecognizer.test.ts +0 -327
  1567. package/src/gestures/__tests__/TapGestureRecognizer.test.ts +0 -154
  1568. package/src/gestures/__tests__/VelocityTracker.streams.test.ts +0 -243
  1569. package/src/gestures/__tests__/VelocityTracker.test.ts +0 -261
  1570. package/src/gestures/__tests__/arena.test.ts +0 -824
  1571. package/src/gestures/__tests__/arenaContinuous.test.ts +0 -207
  1572. package/src/gestures/__tests__/arenaTapLongPress.test.ts +0 -211
  1573. package/src/gestures/__tests__/fixtures/pointer-streams/README.md +0 -82
  1574. package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-fling.json +0 -130
  1575. package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-slow.json +0 -860
  1576. package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-stop-release.json +0 -357
  1577. package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-fling.json +0 -66
  1578. package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-slow.json +0 -268
  1579. package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-stop-release.json +0 -128
  1580. package/src/gestures/__tests__/fixtures/pointer-streams/capture.html +0 -123
  1581. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-fling.json +0 -64
  1582. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-slow.json +0 -268
  1583. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-stop-release.json +0 -124
  1584. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-fling.json +0 -64
  1585. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-slow.json +0 -268
  1586. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-stop-release.json +0 -124
  1587. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-fling.json +0 -84
  1588. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-slow.json +0 -381
  1589. package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-stop-release.json +0 -171
  1590. package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-fling.json +0 -45
  1591. package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-slow.json +0 -101
  1592. package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-stop-release.json +0 -130
  1593. package/src/gestures/__tests__/harness.ts +0 -204
  1594. package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +0 -144
  1595. package/src/hooks/__tests__/menuLinkClicks.ts +0 -71
  1596. package/src/hooks/actionGroupTracker.exports.test.ts +0 -28
  1597. package/src/hooks/actionGroupTracker.test.ts +0 -510
  1598. package/src/hooks/computeOverflow.test.ts +0 -422
  1599. package/src/hooks/deprecatedApis.public.test.ts +0 -33
  1600. package/src/hooks/menuPressGesture.test.ts +0 -253
  1601. package/src/hooks/scrollKeyboardDelegation.test.ts +0 -155
  1602. package/src/hooks/scrollbarGutter.test.ts +0 -167
  1603. package/src/hooks/useAnnounce.modal.test.tsx +0 -1291
  1604. package/src/hooks/useAnnounce.test.tsx +0 -293
  1605. package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +0 -226
  1606. package/src/hooks/useAutoMediaMode.test.ts +0 -109
  1607. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +0 -69
  1608. package/src/hooks/useBusyAnnouncement.test.tsx +0 -112
  1609. package/src/hooks/useClickableContainer.test.tsx +0 -236
  1610. package/src/hooks/useClipboard.test.tsx +0 -151
  1611. package/src/hooks/useContainerReveal.test.tsx +0 -163
  1612. package/src/hooks/useDevWarning.test.tsx +0 -45
  1613. package/src/hooks/useEntryAnimation.ssr.test.tsx +0 -143
  1614. package/src/hooks/useFocusTrap.test.tsx +0 -635
  1615. package/src/hooks/useFocusTrapEscapeShim.test.tsx +0 -166
  1616. package/src/hooks/useGridFocus.test.tsx +0 -165
  1617. package/src/hooks/useHotkeys.test.ts +0 -265
  1618. package/src/hooks/useImageMode.test.ts +0 -133
  1619. package/src/hooks/useInputContainer.test.tsx +0 -180
  1620. package/src/hooks/useInputStatusIcon.test.tsx +0 -240
  1621. package/src/hooks/useIsHydrating.test.tsx +0 -70
  1622. package/src/hooks/useKeyboardHint.test.tsx +0 -92
  1623. package/src/hooks/useListFocus.test.tsx +0 -664
  1624. package/src/hooks/useLongPress.test.tsx +0 -152
  1625. package/src/hooks/useMediaQuery.test.ts +0 -165
  1626. package/src/hooks/useMenuHover.test.tsx +0 -536
  1627. package/src/hooks/useMenuPress.test.tsx +0 -565
  1628. package/src/hooks/useMergedRefs.test.tsx +0 -62
  1629. package/src/hooks/useOverflow.test.ts +0 -504
  1630. package/src/hooks/useRenamedProp.test.tsx +0 -95
  1631. package/src/hooks/useScrollLock.test.ts +0 -248
  1632. package/src/hooks/useScrollOverflow.test.tsx +0 -222
  1633. package/src/hooks/useScrollableArea.test.tsx +0 -836
  1634. package/src/hooks/useStreamingText.test.ts +0 -237
  1635. package/src/hooks/useTreeFocus.test.tsx +0 -351
  1636. package/src/hooks/useTypeahead.test.tsx +0 -351
  1637. package/src/i18n/__tests__/InternationalizationProvider.test.tsx +0 -128
  1638. package/src/i18n/__tests__/e2e-pagination.test.tsx +0 -172
  1639. package/src/i18n/__tests__/e2e-powersearch.test.tsx +0 -166
  1640. package/src/i18n/__tests__/getLocaleDirection.test.ts +0 -40
  1641. package/src/i18n/__tests__/resolve.test.ts +0 -325
  1642. package/src/i18n/__tests__/useCollator.test.tsx +0 -115
  1643. package/src/i18n/__tests__/useDirection.test.tsx +0 -66
  1644. package/src/i18n/__tests__/useLocale.test.tsx +0 -52
  1645. package/src/i18n/useTranslator.test.tsx +0 -267
  1646. package/src/inputFontFloor.test.ts +0 -106
  1647. package/src/internal/tokenizer-presentation.test.ts +0 -29
  1648. package/src/internal/touch.test.ts +0 -44
  1649. package/src/motion/__tests__/animatedLayout.interaction.browser.spec.ts +0 -1613
  1650. package/src/motion/__tests__/animatedLayoutAdopters.interaction.browser.spec.ts +0 -217
  1651. package/src/motion/__tests__/animatedLayoutBundle.ts +0 -17
  1652. package/src/motion/animatedLayout.boundary.test.ts +0 -155
  1653. package/src/motion/animatedLayout.swap.test.ts +0 -827
  1654. package/src/motion/animatedLayout.test.ts +0 -1154
  1655. package/src/motion/animatedLayoutAdopters.test.tsx +0 -500
  1656. package/src/motion/animator.test.ts +0 -2653
  1657. package/src/motion/bezier.test.ts +0 -52
  1658. package/src/motion/coast.test.ts +0 -99
  1659. package/src/motion/decay.test.ts +0 -120
  1660. package/src/motion/projection.test.ts +0 -107
  1661. package/src/motion/reducedMotion.test.ts +0 -129
  1662. package/src/motion/reducedMotionPlan.test.ts +0 -182
  1663. package/src/motion/resolveSnapPoint.test.ts +0 -189
  1664. package/src/motion/roles.test.ts +0 -256
  1665. package/src/motion/rubberBand.test.ts +0 -88
  1666. package/src/motion/selectPage.test.ts +0 -31
  1667. package/src/motion/spring.test.ts +0 -650
  1668. package/src/motion/uikit/gestures.test.ts +0 -89
  1669. package/src/motion/uikit/springRows.test.ts +0 -71
  1670. package/src/motion/uikit/uikit.test.ts +0 -364
  1671. package/src/motion/uikit/values.test.ts +0 -110
  1672. package/src/naming.test.ts +0 -44
  1673. package/src/postinstall.test.mjs +0 -216
  1674. package/src/reset.a11y.chromium.spec.ts +0 -238
  1675. package/src/reset.test.ts +0 -205
  1676. package/src/reset.until-found.a11y.browser.spec.ts +0 -76
  1677. package/src/reset.until-found.test.ts +0 -32
  1678. package/src/serverSafeComponents.test.ts +0 -675
  1679. package/src/stylexValidation.source-build.test.mjs +0 -42
  1680. package/src/tailwind-theme.test.ts +0 -153
  1681. package/src/theme/MediaTheme.dom.test.tsx +0 -97
  1682. package/src/theme/Theme.test.tsx +0 -337
  1683. package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +0 -199
  1684. package/src/theme/contrast.test.ts +0 -94
  1685. package/src/theme/declarationBoundary.test.ts +0 -126
  1686. package/src/theme/defineTheme.test.ts +0 -2028
  1687. package/src/theme/derivedVarRegistry.test.ts +0 -588
  1688. package/src/theme/expandColorScale.test.ts +0 -651
  1689. package/src/theme/expandMotionScale.test.ts +0 -145
  1690. package/src/theme/expandRadiusScale.test.ts +0 -59
  1691. package/src/theme/expandTypeScale.test.ts +0 -351
  1692. package/src/theme/extensibleAxes.test.ts +0 -432
  1693. package/src/theme/generateThemeRules.test.ts +0 -1870
  1694. package/src/theme/hct.test.ts +0 -93
  1695. package/src/theme/onMediaTokens.test.ts +0 -431
  1696. package/src/theme/publicThemeHelperContract.test.ts +0 -67
  1697. package/src/theme/syntax/defineSyntaxTheme.diff.test.ts +0 -91
  1698. package/src/theme/syntax/serverSafeSyntax.test.ts +0 -68
  1699. package/src/theme/syntax/useSyntaxTheme.diff.test.tsx +0 -40
  1700. package/src/theme/themeAdaptations.test.ts +0 -1795
  1701. package/src/theme/themeRegistry.test.ts +0 -59
  1702. package/src/theme/themingTargets.test.ts +0 -589
  1703. package/src/theme/tokenValueCompat.test.ts +0 -204
  1704. package/src/theme/tokens.test.ts +0 -441
  1705. package/src/theme/useTheme.test.tsx +0 -322
  1706. package/src/unicodePropertyEscapes.source-build.test.mjs +0 -69
  1707. package/src/utils/chainEventHandlers.test.ts +0 -39
  1708. package/src/utils/characters.test.ts +0 -141
  1709. package/src/utils/color.test.ts +0 -233
  1710. package/src/utils/composeEventHandlers.test.ts +0 -71
  1711. package/src/utils/customPropertyArmLayering.test.ts +0 -131
  1712. package/src/utils/dateParser.test.ts +0 -402
  1713. package/src/utils/dateTypes.test.ts +0 -40
  1714. package/src/utils/devWarning.test.ts +0 -56
  1715. package/src/utils/edgeAutoscroll.test.ts +0 -192
  1716. package/src/utils/focusReturn.test.ts +0 -119
  1717. package/src/utils/getKey.test.ts +0 -25
  1718. package/src/utils/hitArea.test.ts +0 -628
  1719. package/src/utils/ime.test.ts +0 -32
  1720. package/src/utils/inputAria.test.ts +0 -39
  1721. package/src/utils/interactionModality.test.ts +0 -100
  1722. package/src/utils/isApplePlatform.test.ts +0 -61
  1723. package/src/utils/mergeProps.test.ts +0 -166
  1724. package/src/utils/mergeRefs.test.ts +0 -48
  1725. package/src/utils/parseStyleKey.test.ts +0 -56
  1726. package/src/utils/plainDate.test.ts +0 -848
  1727. package/src/utils/pressFeedback.test.ts +0 -874
  1728. package/src/utils/pressGesture.test.ts +0 -323
  1729. package/src/utils/pressPaintSource.test.ts +0 -65
  1730. package/src/utils/pressableCoverage.test.ts +0 -192
  1731. package/src/utils/safeUrl.test.ts +0 -101
  1732. package/src/utils/sharedMutationObserver.test.ts +0 -53
  1733. package/src/utils/sharedResizeObserver.test.ts +0 -283
  1734. package/src/utils/themeProps.test.ts +0 -62
  1735. package/src/utils/timeParser.test.ts +0 -295
  1736. package/src/utils/touchPresentation.test.ts +0 -323
@@ -42,14 +42,16 @@
42
42
  * current value with the current velocity (`spec:AST-094` FR6). A gesture's release velocity
43
43
  * can be handed in explicitly instead.
44
44
  *
45
- * End state without a flicker frame: the element's inline style always holds
46
- * the values the animations END on, and the keyframes hold that end state for
47
- * a while after the curve ends (END_HOLD_MS). The main thread drops a finished
48
- * animation as soon as it runs after the curve's end; the inline style already
49
- * shows the same values, so nothing moves. The hold matters when the curve
50
- * ends during a main-thread block: WebKit's compositor ends an animation by
51
- * falling back to the value its main thread last committed, which is
52
- * mid-flight.
45
+ * No frame shows a value the element is not at. While a curve runs, the
46
+ * element's inline style holds the value the curve starts from (the value on
47
+ * screen when it was built), so a frame painted before the compositor has the
48
+ * curve (WebKit can receive a new curve a few updates late) shows the element
49
+ * where it is, never where it is going. The keyframes hold the end state for a
50
+ * while after the curve ends (END_HOLD_MS); the main thread retires a finished
51
+ * animation as soon as it runs after the curve's end, writing the end values
52
+ * inline in the same task that cancels it, so nothing moves. The hold matters
53
+ * when the curve ends during a main-thread block: WebKit's compositor ends an
54
+ * animation by falling back to the value its main thread last committed.
53
55
  *
54
56
  * Start time: a call that starts from rest (nothing on its channels moving,
55
57
  * no `options.at`) gets no start time, so the browser starts it when it
@@ -57,25 +59,49 @@
57
59
  * commit: a main-thread block before that frame delays the motion instead of
58
60
  * skipping into it. Everything the call starts, and every
59
61
  * call from rest in the same task, starts at that one time, which
60
- * `handle.started` reports. A call that continues motion on
62
+ * `handle.started` reports. Where the compositor starts it and the page
63
+ * learns that start only a frame or more later (Chromium), the call starts
64
+ * at the frame that commits it, the start the compositor takes, so a
65
+ * retarget or a rebase before then continues from the frame on screen. A
66
+ * call that continues motion on
61
67
  * screen (a retarget, a catch) keeps an explicit start at the call time, or
62
68
  * `options.at` to line several animators up, so the new curve continues
63
69
  * from the frame on screen. Keyframes are sampled from the call's start, so
64
70
  * a value that keeps moving through a rebuild stays on its curve to the
65
- * frame.
71
+ * frame. `options.start` changes that per call: `'commit'` dates a retarget
72
+ * by the browser's commit as well, and `'presented'` creates the animations
73
+ * of a call from rest two frames later, once its element at rest has been
74
+ * presented (a UI process that applies commits late); a retarget still starts
75
+ * now, from the value and velocity on screen.
76
+ * `handle.curve(property)` hands out the curve a call plays, so a
77
+ * companion can follow it on the same clock.
78
+ * `options.additive` retargets as UIKit does: the old curve keeps going and a
79
+ * curve of the change between the targets is added on top, baked into one
80
+ * animation (two animations on one property leave the compositor in both
81
+ * engines), so the retarget keeps the velocity on screen.
66
82
  *
67
- * WebKit starts an animation created just before a block at its last frame
68
- * time before the block, so there the motion still skips into its curve;
69
- * Chromium starts it after the block.
83
+ * WebKit dates an animation created just before a block at its last frame
84
+ * time before the block, where the first frame after it would show the
85
+ * motion skipped into its curve; when the call's own task ran on more than
86
+ * two frames, the call's first read of that start moves it to that read, so
87
+ * WebKit delays the motion as Chromium's commit does (startAfterBlock). Every
88
+ * call of that task moves together, and a shorter task or a read that other
89
+ * tasks delay keeps the browser's start, so a sequence chained on a call's
90
+ * end (a Reduce Motion cross-fade's second half) keeps its clock.
70
91
  *
71
92
  * Promotion: Mobile Safari runs an animation whose start time is set from
72
- * script on its compositor at its first commit only if the element already
73
- * has a compositing layer; without one, a block right after that commit
74
- * freezes it (iOS 26.2 simulator: 2 of 7 runs kept moving). Every animation
75
- * the animator creates, and every `set`, therefore promotes its channels in
76
- * the same task: inline `will-change` on the element, merged with the
77
- * element's own. That is enough (5 of 5, and 4 of 4 through the animator);
78
- * promotion ends PROMOTION_LINGER_MS after the last motion.
93
+ * script on its compositor at its first commit only if the element (or the
94
+ * pseudo-element) already has a compositing layer; without one, a block
95
+ * right after that commit freezes it (iOS 26.2 simulator: 2 of 7 runs kept
96
+ * moving, 0 of 5 on a ::before). Every animation the animator creates, and
97
+ * every `set` (unless it passes `{promote: false}`), therefore promotes its
98
+ * channels in the same task: inline
99
+ * `will-change` on the element, merged with the element's own, or the custom
100
+ * property `--astryx-motion-will-change-<pseudo>` on the host for a
101
+ * pseudo-element, whose style opts in with
102
+ * `will-change: var(--astryx-motion-will-change-before, auto)`. That is
103
+ * enough (5 of 5, and 4 of 4 through the animator); promotion ends
104
+ * PROMOTION_LINGER_MS after the last motion.
79
105
  *
80
106
  * Known limits, iOS Safari (measured on the iOS 26.2 simulator):
81
107
  * - a block in the task that starts a motion delays it: it starts when the
@@ -112,8 +138,8 @@
112
138
  * call that lands too carries a landing still waiting (two calls in one
113
139
  * frame land together), and a later opacity change lands it at once;
114
140
  * - on any other primary pointer (DR3) it completes at once.
115
- * No call option and no theme value lengthens the fade or keeps travel (DR4):
116
- * the fade's length is not a theme role.
141
+ * No call option and no role value lengthens the fade or keeps travel (DR4):
142
+ * the fade's length is not a role.
117
143
  *
118
144
  * Momentum under Reduce Motion (`design:reduced-motion` DR2, DEC-2): a
119
145
  * decay's momentum continues the velocity a finger handed it on release
@@ -125,18 +151,38 @@
125
151
  * Motion policy above, a cross-fade on a coarse pointer or after a touch
126
152
  * release (`touchRelease`) and at once elsewhere (DR2, DR3).
127
153
  *
154
+ * Roles: every spring and curve the animator plays passes through
155
+ * resolveMotion.ts, which names the motion role it plays (`springs.settle`
156
+ * once `registerSpringsTable()` has run, the Reduce Motion fade's curve,
157
+ * which the animator registers alone). The per-role tables stay internal
158
+ * (`spec:AST-094` DEC-15), so a role plays its table value: nothing reads a
159
+ * CSS variable or the element's style for it. A spring written inline at the call
160
+ * site, and a table never registered, play as given; the fade's length is not
161
+ * a role.
162
+ *
163
+ * A pseudo-element (`options.pseudoElement`, a dialog's `::backdrop`) has no
164
+ * inline style: its end value is held by a static filling animation (after a
165
+ * curve ends, and after `set`) until the next animation replaces it, and for
166
+ * as long as the pseudo-element exists. The browser makes a `::backdrop`
167
+ * again each time its dialog opens, without the hold, so a presentation
168
+ * calls `set` with its starting value right after `showModal()`, in the same
169
+ * task: a `set` before it lands on the backdrop the open replaces.
170
+ *
128
171
  * SSR-safe: nothing touches `window` or `document` at module scope, and an
129
172
  * animator created without an element only keeps state until one is attached.
130
173
  *
131
174
  * SYNC: When modified, update:
132
175
  * - /packages/core/src/motion/animator.test.ts
133
176
  * - /packages/core/src/motion/reducedMotionPlan.ts (the Reduce Motion plan)
177
+ * - /packages/core/src/motion/__tests__/animator.interaction.browser.spec.ts
178
+ * - /packages/core/src/motion/resolveMotion.ts (the roles it resolves)
134
179
  * - /packages/core/src/motion/README.md
135
180
  */
136
181
 
137
182
  import { cubicBezier } from "./bezier.js";
138
183
  import { solveSpring, toSpring } from "./spring.js";
139
- import { reducedMotionCrossFade } from "./uikit/timing.js";
184
+ import { resolveMotion } from "./resolveMotion.js";
185
+ import { reducedMotionCrossFade, registerReducedMotionCrossFade } from "./uikit/timing.js";
140
186
  import { planReducedMotion } from "./reducedMotionPlan.js";
141
187
 
142
188
  /**
@@ -167,6 +213,7 @@ import { planReducedMotion } from "./reducedMotionPlan.js";
167
213
  /**
168
214
  * Options of `createAnimator`.
169
215
  */
216
+ /** How `set` puts values in place. */
170
217
 
171
218
  /**
172
219
  * One `animate` / `decay` call's animations.
@@ -225,32 +272,100 @@ export const SETTLE_THRESHOLD = {
225
272
  opacity: 0.001
226
273
  };
227
274
 
228
- /** Keyframes are added until linear interpolation is within this. */
275
+ /**
276
+ * Keyframes are added until linear interpolation is within this: a quarter of
277
+ * a device pixel (this quarter of a CSS pixel, divided by the device pixel
278
+ * ratio where it is above 1), a twentieth of a degree, a 2000th of the size,
279
+ * about one step of an 8-bit alpha. Every one is below what a moving element
280
+ * can show.
281
+ */
229
282
  const SAMPLE_TOLERANCE = {
230
- x: 0.05,
231
- y: 0.05,
232
- rotate: 0.02,
233
- scaleX: 0.0002,
234
- scaleY: 0.0002,
235
- opacity: 0.002
283
+ x: 0.25,
284
+ y: 0.25,
285
+ rotate: 0.05,
286
+ scaleX: 0.0005,
287
+ scaleY: 0.0005,
288
+ opacity: 0.004
236
289
  };
237
290
 
291
+ /** Keyframes start on this grid (ms) and are split where the curve needs it. */
292
+ const SAMPLE_GRID_MS = 1000 / 30;
293
+
238
294
  /** A curve that has not settled by then (an undamped spring) snaps. */
239
295
  const MAX_DURATION_MS = 30_000;
296
+
297
+ /**
298
+ * How long a task must run on past its first call from rest before that
299
+ * counts as a block (WebKit; startAfterBlock): two frames at 60 Hz.
300
+ */
301
+ // Browser start times are frame times and a task's end a live clock, so only a block longer than a frame plus the task's own length can be told apart from that quantization.
302
+ const LATE_START_MS = 34;
303
+
304
+ /**
305
+ * The task calls from rest are made in, shared by every call made in it
306
+ * (every animator's), so one motion's parts that are separate calls start
307
+ * together (startAfterBlock).
308
+ */
309
+
310
+ /** The task the current calls from rest are made in, until it ends. */
311
+ let openTask = null;
312
+
313
+ /** How many of the animators' animation-frame callbacks are running now. */
314
+ let frameDepth = 0;
315
+
316
+ /** The mark of the running task, opened by its first call from rest. */
317
+ function markTask(time, clock) {
318
+ if (openTask == null) {
319
+ const task = {
320
+ first: time
321
+ };
322
+ openTask = task;
323
+ queueMicrotask(() => {
324
+ task.ended = clock();
325
+ openTask = null;
326
+ });
327
+ }
328
+ return openTask;
329
+ }
330
+
240
331
  /** Above this many keyframes the tolerance is relaxed. */
241
332
  const MAX_KEYFRAMES = 1200;
242
333
  /**
243
334
  * The keyframes hold the end state this long after a curve ends. An engine
244
335
  * whose compositor ends an animation while the main thread is blocked falls
245
- * back to the value its main thread last committed, mid-flight (WebKit); the
246
- * hold keeps the end state on screen through such a block. The main thread
247
- * drops the animation as soon as it runs after the curve's end.
336
+ * back to the value its main thread last committed, the curve's start
337
+ * (WebKit on Linux); the hold keeps the end state on screen through any such
338
+ * block. It only stretches the last keyframe. The main thread retires the
339
+ * animation as soon as it runs after the curve's end.
340
+ *
341
+ * Why a tail inside the curve's own animation, with a bound (measured Oct 24
342
+ * 2026; do not replace it without these proofs):
343
+ * - WebKit on Linux (WebKitGTK and WPE) ignores `fill` on its compositor:
344
+ * a 400 ms move that ends during a 1 s main-thread block snaps back to the
345
+ * block-start position 13 ms after its end, with `fill: forwards` or with
346
+ * no fill, and holds with this tail. iOS 26.2 Mobile Safari holds the end
347
+ * in all three forms, so there the tail is unneeded but harmless (measured
348
+ * Oct 25 2026). The browser proof "a spring that ends inside the block
349
+ * keeps showing its end state" catches it.
350
+ * - A separate static animation of the end state under the curve would hold
351
+ * it without a bound, but two animations on one property push Chromium to
352
+ * run the curve on the main thread: the 1 s block proof moved in 0 of 57
353
+ * frames, the start-before-a-block proof failed, and seeking the curve
354
+ * broke.
248
355
  */
249
- export const END_HOLD_MS = 5000;
356
+ export const END_HOLD_MS = 60_000;
250
357
 
251
358
  /** How often a paused animation is looked at again for retiring, ms. */
252
359
  const RETIRE_RECHECK_MS = 100;
253
360
 
361
+ /**
362
+ * The soonest a running animation's end is looked for again, ms: a frame at
363
+ * 60 Hz. WebKit moves an animation's currentTime once per frame, so a look
364
+ * within a frame reads the frame's time, a fraction of a ms short of the end,
365
+ * and a timer for that fraction would fire again before anything moved.
366
+ */
367
+ const END_RECHECK_MS = 1000 / 60;
368
+
254
369
  /** How long an element stays promoted after its last motion, ms. */
255
370
  export const PROMOTION_LINGER_MS = 500;
256
371
  const CHANNELS = {
@@ -285,7 +400,7 @@ function format(channel, value) {
285
400
  const shared = new WeakMap();
286
401
 
287
402
  /**
288
- * The one animator for `element`, created on
403
+ * The one animator for `element` (and `options.pseudoElement`), created on
289
404
  * first use. Code that animates one element from several places (a swipe on
290
405
  * x, a removal on y) shares it, so their curves compose in one `translate`
291
406
  * track and retargeting one axis leaves the other on its curve; two
@@ -294,10 +409,16 @@ const shared = new WeakMap();
294
409
  * elsewhere or `dispose` it: it lives as long as the element.
295
410
  */
296
411
  export function animatorFor(element, options = {}) {
297
- let animator = shared.get(element);
412
+ let byPseudo = shared.get(element);
413
+ if (byPseudo == null) {
414
+ byPseudo = new Map();
415
+ shared.set(element, byPseudo);
416
+ }
417
+ const key = options.pseudoElement ?? '';
418
+ let animator = byPseudo.get(key);
298
419
  if (animator == null) {
299
420
  animator = createAnimator(element, options);
300
- shared.set(element, animator);
421
+ byPseudo.set(key, animator);
301
422
  }
302
423
  return animator;
303
424
  }
@@ -401,8 +522,9 @@ const REDUCED_TRANSITION = {
401
522
  * @example
402
523
  * ```
403
524
  * const animator = createAnimator(sheet);
404
- * // finger lifts at 1200 px/s heading for the detent at 0:
405
- * animator.animate({y: 0}, {spring: springs.sheetDetent, velocity: {y: 1200}});
525
+ * // finger lifts at 1200 px/s heading for the detent at 0 (a component
526
+ * // passes the spring of its motion role):
527
+ * animator.animate({y: 0}, {spring: {response: 0.45, dampingRatio: 0.9}, velocity: {y: 1200}});
406
528
  * // the finger lands again: where is it right now?
407
529
  * const y = animator.get('y', event.timeStamp);
408
530
  * animator.stop(['y']);
@@ -410,9 +532,22 @@ const REDUCED_TRANSITION = {
410
532
  */
411
533
  export function createAnimator(element, options = {}) {
412
534
  const now = options.now ?? defaultNow;
413
- const requestFrame = options.requestFrame ?? (typeof requestAnimationFrame === 'function' ? callback => {
535
+ const frameSource = options.requestFrame ?? (typeof requestAnimationFrame === 'function' ? callback => {
414
536
  requestAnimationFrame(() => callback());
415
537
  } : null);
538
+ // Every frame callback of an animator's counts itself, so a call made in
539
+ // one knows its animations commit in that frame.
540
+ const requestFrame = frameSource == null ? null : callback => {
541
+ frameSource(() => {
542
+ frameDepth += 1;
543
+ try {
544
+ callback();
545
+ } finally {
546
+ frameDepth -= 1;
547
+ }
548
+ });
549
+ };
550
+ const pseudoElement = options.pseudoElement;
416
551
  // Reduced Motion reads the person's settings and nothing else: no option
417
552
  // overrides them (design:reduced-motion DR4).
418
553
  const prefersReducedMotion = defaultPrefersReducedMotion;
@@ -462,7 +597,18 @@ export function createAnimator(element, options = {}) {
462
597
  let ownWillChange = null;
463
598
  /** The stylesheet's will-change when there is no inline value. */
464
599
  let sheetWillChange = '';
600
+ /**
601
+ * Whether sheetWillChange holds a read of the element's current style: it
602
+ * is read in the task after the element is attached, and again after each
603
+ * demotion, so a promotion (a drag's first move) reads no style in its
604
+ * own task.
605
+ */
606
+ let sheetWillChangeRead = false;
607
+ /** The pending read of sheetWillChange, cancelled with its element. */
608
+ let sheetReadTimer = null;
465
609
  let demoteTimer = null;
610
+ /** A pseudo-element is promoted through a custom property on its host. */
611
+ const promotionProperty = pseudoElement == null ? null : `--astryx-motion-will-change-${pseudoElement.replace(/^:+/, '')}`;
466
612
  /** Channels whose identity the last node held inline (see `attach`). */
467
613
  let heldIdentity = new Set();
468
614
 
@@ -532,18 +678,21 @@ export function createAnimator(element, options = {}) {
532
678
  // -- writing --------------------------------------------------------------
533
679
 
534
680
  const finalValue = property => segments.get(property)?.target ?? resting[property];
535
- const writeInline = (channel, value) => {
536
- if (target == null) {
681
+ const writeInline = (channel, value, release = true) => {
682
+ if (target == null || pseudoElement != null) {
537
683
  return;
538
684
  }
539
685
  touched.add(channel);
540
686
  const text = inlineText(channel, value);
541
- if (text === IDENTITY_TEXT[channel]) {
542
- // Identity leaves the element when nothing else would move it.
687
+ // An unchanged value is not written: a style write invalidates the
688
+ // element, and WebKit can repaint sticky content stale when that lands in
689
+ // the frame a scroll commits.
690
+ if (target.style.getPropertyValue(channel) !== text) {
543
691
  target.style.setProperty(channel, text);
692
+ }
693
+ if (release && text === IDENTITY_TEXT[channel]) {
694
+ // Identity leaves the element when nothing else would move it.
544
695
  releaseIdentity(channel);
545
- } else {
546
- target.style.setProperty(channel, text);
547
696
  }
548
697
  };
549
698
  const sampleTimes = (property, from, to, tolerance) => {
@@ -563,9 +712,9 @@ export function createAnimator(element, options = {}) {
563
712
  for (let e = 0; e + 1 < edges.length; e++) {
564
713
  const a = edges[e];
565
714
  const b = edges[e + 1];
566
- // A 120 Hz grid, each interval split until the chord is within the
715
+ // A 30 Hz grid, each interval split until the chord is within the
567
716
  // tolerance at its quarter points.
568
- const steps = Math.max(1, Math.ceil((b - a) / (1000 / 120)));
717
+ const steps = Math.max(1, Math.ceil((b - a) / SAMPLE_GRID_MS));
569
718
  const split = (t0, t1, depth) => {
570
719
  const v0 = value(t0);
571
720
  const v1 = t1 === b && breaks.includes(b) ? valueBefore(property, b) : value(t1);
@@ -588,14 +737,37 @@ export function createAnimator(element, options = {}) {
588
737
  }
589
738
  return times;
590
739
  };
740
+
741
+ /** A pseudo-element's resting value, held by a static filling animation. */
742
+ const hold = (channel, time) => {
743
+ if (target == null) {
744
+ return;
745
+ }
746
+ const value = format(channel, finalValue);
747
+ const animation = target.animate([{
748
+ [channel]: value
749
+ }, {
750
+ [channel]: value
751
+ }], {
752
+ duration: 1,
753
+ fill: 'both',
754
+ pseudoElement
755
+ });
756
+ animation.startTime = time;
757
+ running.set(channel, animation);
758
+ };
591
759
  const rebuild = (channel, time) => {
592
760
  const previous = running.get(channel);
593
761
  running.delete(channel);
594
762
  clearTimeout(retireTimers.get(channel));
595
763
  retireTimers.delete(channel);
596
- // The element's inline style holds the end state, so its old animation
597
- // can go first.
598
- previous?.cancel();
764
+ // An element's inline style takes the value on screen below, so its old
765
+ // animation can go first. A pseudo-element has none: its old animation
766
+ // keeps holding the value until the new one exists (same task, no frame in
767
+ // between).
768
+ if (pseudoElement == null) {
769
+ previous?.cancel();
770
+ }
599
771
  const properties = CHANNELS[channel];
600
772
  // Settled curves become resting values.
601
773
  for (const property of properties) {
@@ -605,13 +777,23 @@ export function createAnimator(element, options = {}) {
605
777
  segments.delete(property);
606
778
  }
607
779
  }
608
- writeInline(channel, finalValue);
609
780
  const moving = properties.filter(p => segments.has(p));
781
+ if (moving.length === 0 || target == null || typeof target.animate !== 'function') {
782
+ writeInline(channel, finalValue);
783
+ } else {
784
+ // The value on screen as the curve starts: what a frame painted before
785
+ // the compositor has the curve shows. The end is written at retire.
786
+ writeInline(channel, p => valueAt(p, time));
787
+ }
610
788
  if (target == null || typeof target.animate !== 'function') {
611
789
  previous?.cancel();
612
790
  return;
613
791
  }
614
792
  if (moving.length === 0) {
793
+ if (pseudoElement != null) {
794
+ hold(channel, time);
795
+ }
796
+ previous?.cancel();
615
797
  return;
616
798
  }
617
799
  // A channel rebuilt by an explicit call (set, rebase, a retarget of
@@ -624,6 +806,10 @@ export function createAnimator(element, options = {}) {
624
806
  const from = waiting?.provisional ?? time;
625
807
  const end = Math.min(from + MAX_DURATION_MS, Math.max(...moving.map(p => segments.get(p).start + segments.get(p).duration)));
626
808
  if (end <= from) {
809
+ if (pseudoElement != null) {
810
+ hold(channel, time);
811
+ }
812
+ previous?.cancel();
627
813
  return;
628
814
  }
629
815
  if (callGroup != null) {
@@ -646,10 +832,14 @@ export function createAnimator(element, options = {}) {
646
832
  }
647
833
  }
648
834
  }
835
+ // Read where the keyframes are baked: a page moved to another screen
836
+ // bakes its next motion for that screen.
837
+ const devicePixel = 1 / Math.max(1, globalThis.devicePixelRatio || 1);
649
838
  const collect = scale => {
650
839
  const times = new Set([from, end]);
651
840
  for (const property of moving) {
652
- for (const t of sampleTimes(property, from, end, SAMPLE_TOLERANCE[property] * scale)) {
841
+ const tolerance = SAMPLE_TOLERANCE[property] * scale * (property === 'x' || property === 'y' ? devicePixel : 1);
842
+ for (const t of sampleTimes(property, from, end, tolerance)) {
653
843
  times.add(t);
654
844
  }
655
845
  }
@@ -699,10 +889,13 @@ export function createAnimator(element, options = {}) {
699
889
  duration: span,
700
890
  // The last keyframes hold the end state (END_HOLD_MS); filling both
701
891
  // ways also keeps it where an engine honors the fill on its compositor.
702
- // The main thread drops the animation once it runs after the end; the
703
- // inline style already holds the same values, so that changes no pixel.
892
+ // The main thread retires the animation once it runs after the end,
893
+ // writing the end inline in that task, so that changes no pixel.
704
894
  fill: 'both',
705
- easing: 'linear'
895
+ easing: 'linear',
896
+ ...(pseudoElement != null ? {
897
+ pseudoElement
898
+ } : {})
706
899
  });
707
900
  if (waiting != null) {
708
901
  // From rest: no start time, so the browser starts the animation when
@@ -723,7 +916,16 @@ export function createAnimator(element, options = {}) {
723
916
 
724
917
  /**
725
918
  * Once the main thread runs after the curve's end, the animation leaves the
726
- * running state: the element's inline style already shows the end values.
919
+ * running state: an element's end values are written inline in the task
920
+ * that cancels it; a pseudo-element's end value moves to a static holding
921
+ * animation, created before the long one goes.
922
+ *
923
+ * Why a timer at the curve's end: no browser event reports that an
924
+ * animation's time has reached a point inside its effect, and its
925
+ * `finished` comes only after the END_HOLD_MS tail, which would keep the
926
+ * element promoted and the animation alive for a minute. The timer is set
927
+ * on the curve's own clock and re-armed while a sampler pauses or seeks the
928
+ * animation, so it never retires a held one.
727
929
  */
728
930
  const scheduleRetire = (channel, animation, end) => {
729
931
  clearTimeout(retireTimers.get(channel));
@@ -736,11 +938,34 @@ export function createAnimator(element, options = {}) {
736
938
  // reaches the curve's end, never from the wall clock.
737
939
  const remaining = remainingCurve(animation);
738
940
  if (remaining != null && remaining > 0) {
739
- retireTimers.set(channel, setTimeout(retire, animation.playState === 'paused' ? RETIRE_RECHECK_MS : remaining));
941
+ retireTimers.set(channel, setTimeout(retire, animation.playState === 'paused' ? RETIRE_RECHECK_MS : Math.max(remaining, END_RECHECK_MS)));
740
942
  return;
741
943
  }
742
944
  running.delete(channel);
945
+ // A pseudo-element holds its resting value, unless the stylesheet
946
+ // takes it back now (a borrowed dip that has ended).
947
+ const handsBack = channel === 'opacity' && borrowedOpacity != null && ![...landings].some(landing => landing.fadeIn?.isBorrowed === true);
948
+ if (pseudoElement != null && !handsBack) {
949
+ hold(channel, now());
950
+ } else {
951
+ // The end goes inline in the task that cancels the animation. Whether
952
+ // an identity end may leave the element is judged after the cancel:
953
+ // until then the end-state tail still holds the end, so the computed
954
+ // style would hide a stylesheet value (an opacity 0) under it.
955
+ writeInline(channel, finalValue, false);
956
+ }
957
+ // A call from rest the browser never started (finished from outside
958
+ // before its first frame, a sampler's finish()): read its start from the
959
+ // animation before the cancel takes it, and with nothing left to wait
960
+ // on the call keeps its own clock, so its landing is still armed.
961
+ const waiting = [...pendingGroups].filter(group => group.animations.includes(animation));
962
+ for (const group of waiting) {
963
+ syncGroup(group);
964
+ }
743
965
  animation.cancel();
966
+ for (const group of waiting) {
967
+ resolveGroup(group, group.provisional);
968
+ }
744
969
  releaseIdentity(channel);
745
970
  flushReleases();
746
971
  };
@@ -750,20 +975,30 @@ export function createAnimator(element, options = {}) {
750
975
  /** The element's own (stylesheet) opacity, read once when a dip starts. */
751
976
  const ownOpacity = () => {
752
977
  const view = target?.ownerDocument.defaultView;
753
- const value = target == null ? NaN : Number.parseFloat(view?.getComputedStyle(target).getPropertyValue('opacity') ?? '');
978
+ const value = target == null ? NaN : Number.parseFloat(view?.getComputedStyle(target, pseudoElement ?? null).getPropertyValue('opacity') ?? '');
754
979
  return Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : 1;
755
980
  };
756
981
 
757
982
  /**
758
983
  * Whether the animator holds an opacity of its own on the element: an inline
759
- * value it wrote (a `set` over a stylesheet that hides or dims it). A dip
760
- * returns to that value.
984
+ * value it wrote, or a pseudo-element's holding animation (a `set` over a
985
+ * stylesheet that hides or dims it). A dip returns to that value.
761
986
  */
762
- const writesOwnOpacity = () => (target?.style.getPropertyValue('opacity') ?? '') !== '';
987
+ const writesOwnOpacity = () => pseudoElement == null ? (target?.style.getPropertyValue('opacity') ?? '') !== '' : running.has('opacity');
763
988
 
764
- /** Gives the element's opacity back to its stylesheet: its inline value goes. */
989
+ /**
990
+ * Gives the element's opacity back to its stylesheet: an element's inline
991
+ * value goes; a pseudo-element, which has no inline style, loses the
992
+ * animation holding its value.
993
+ */
765
994
  const releaseOwnOpacity = () => {
766
- target?.style.removeProperty('opacity');
995
+ if (pseudoElement == null) {
996
+ target?.style.removeProperty('opacity');
997
+ return;
998
+ }
999
+ const held = running.get('opacity');
1000
+ running.delete('opacity');
1001
+ held?.cancel();
767
1002
  };
768
1003
 
769
1004
  /**
@@ -844,6 +1079,9 @@ export function createAnimator(element, options = {}) {
844
1079
  releaseOwnOpacity();
845
1080
  return;
846
1081
  }
1082
+ if (pseudoElement != null) {
1083
+ return;
1084
+ }
847
1085
  if (target.style.getPropertyValue(channel) !== IDENTITY_TEXT[channel]) {
848
1086
  return;
849
1087
  }
@@ -903,9 +1141,17 @@ export function createAnimator(element, options = {}) {
903
1141
 
904
1142
  // -- promotion -------------------------------------------------------------
905
1143
 
906
- /** Writes the promoted channels as will-change. */
1144
+ /** Writes the promoted channels as will-change (or the pseudo's property). */
907
1145
  const writePromotion = element => {
908
1146
  const list = [...promoted].join(', ');
1147
+ if (promotionProperty != null) {
1148
+ if (list === '') {
1149
+ element.style.removeProperty(promotionProperty);
1150
+ } else {
1151
+ element.style.setProperty(promotionProperty, list);
1152
+ }
1153
+ return;
1154
+ }
909
1155
  if (list === '') {
910
1156
  element.style.willChange = ownWillChange ?? '';
911
1157
  ownWillChange = null;
@@ -914,8 +1160,12 @@ export function createAnimator(element, options = {}) {
914
1160
  if (ownWillChange == null) {
915
1161
  ownWillChange = element.style.willChange;
916
1162
  // Without an inline value, the stylesheet's reasons stay alongside the
917
- // promotion's (read once, as the promotion starts).
918
- sheetWillChange = ownWillChange === '' ? element.ownerDocument.defaultView?.getComputedStyle(element).getPropertyValue('will-change') ?? '' : '';
1163
+ // promotion's. They were read in the task after the element was
1164
+ // attached; a promotion that comes first (an element attached in this
1165
+ // task that moves at once) reads them now.
1166
+ if (ownWillChange === '' && !sheetWillChangeRead) {
1167
+ readSheetWillChange(element);
1168
+ }
919
1169
  }
920
1170
  const base = ownWillChange !== '' ? ownWillChange : sheetWillChange;
921
1171
  const own = base === 'auto' ? '' : base;
@@ -923,8 +1173,46 @@ export function createAnimator(element, options = {}) {
923
1173
  element.style.willChange = [...reasons, ...promoted].join(', ');
924
1174
  };
925
1175
 
1176
+ /** Reads the element's own will-change while no promotion of ours is written. */
1177
+ const readSheetWillChange = element => {
1178
+ sheetWillChange = element.ownerDocument.defaultView?.getComputedStyle(element).getPropertyValue('will-change') ?? '';
1179
+ sheetWillChangeRead = true;
1180
+ };
1181
+
926
1182
  /**
927
- * Gives the element a compositing layer for
1183
+ * Reads sheetWillChange in a task of its own, so a later promotion reads no
1184
+ * style in its own task. Skipped while a promotion of ours is written,
1185
+ * which the read would see (demote asks again), and for a node out of the
1186
+ * document. A pseudo-element's promotion is its own property, with
1187
+ * nothing to read.
1188
+ */
1189
+ const readSheetWillChangeLater = () => {
1190
+ cancelSheetWillChangeRead();
1191
+ sheetWillChangeRead = false;
1192
+ if (target == null || promotionProperty != null) {
1193
+ return;
1194
+ }
1195
+ const element = target;
1196
+ sheetReadTimer = setTimeout(() => {
1197
+ sheetReadTimer = null;
1198
+ // A node out of the document has no style to read, and reading one
1199
+ // still costs a style pass: a shared animator (animatorFor) is never
1200
+ // detached, so its node can leave with this read waiting. Skipped, the
1201
+ // read waits for a promotion that needs it.
1202
+ if (target === element && promoted.size === 0 && element.isConnected) {
1203
+ readSheetWillChange(element);
1204
+ }
1205
+ }, 0);
1206
+ };
1207
+ const cancelSheetWillChangeRead = () => {
1208
+ if (sheetReadTimer != null) {
1209
+ clearTimeout(sheetReadTimer);
1210
+ sheetReadTimer = null;
1211
+ }
1212
+ };
1213
+
1214
+ /**
1215
+ * Gives the element (or its pseudo-element) a compositing layer for
928
1216
  * `channel` from the task that starts the motion: Mobile Safari runs an
929
1217
  * animation whose start time is set from script on its compositor at its
930
1218
  * first commit only if the element already has a layer.
@@ -971,6 +1259,8 @@ export function createAnimator(element, options = {}) {
971
1259
  promoted.clear();
972
1260
  if (target != null) {
973
1261
  writePromotion(target);
1262
+ // Its stylesheet may have changed its will-change since.
1263
+ readSheetWillChangeLater();
974
1264
  }
975
1265
  };
976
1266
 
@@ -982,7 +1272,7 @@ export function createAnimator(element, options = {}) {
982
1272
  * pins its clock (`at`). Returns its start group, or null for an explicit
983
1273
  * start.
984
1274
  */
985
- const beginGroup = (time, properties, at) => {
1275
+ const beginGroup = (time, properties, at, start) => {
986
1276
  if (target == null || typeof target.animate !== 'function') {
987
1277
  return null;
988
1278
  }
@@ -1009,7 +1299,11 @@ export function createAnimator(element, options = {}) {
1009
1299
  }
1010
1300
  return null;
1011
1301
  }
1012
- for (const channel of channels) {
1302
+ // A call that continues motion starts now unless it asks for the
1303
+ // browser's start (`commit`). `presented` asks only for a call from rest:
1304
+ // an element still moving is not at rest, so a retarget starts now, from
1305
+ // the value and velocity on screen (spec:AST-094 FR6).
1306
+ for (const channel of start === 'commit' ? [] : channels) {
1013
1307
  for (const property of CHANNELS[channel]) {
1014
1308
  const segment = segments.get(property);
1015
1309
  if (segment != null && time < segment.start + segment.duration && (segment.group == null || segment.group.resolved)) {
@@ -1023,6 +1317,7 @@ export function createAnimator(element, options = {}) {
1023
1317
  });
1024
1318
  return {
1025
1319
  provisional: time,
1320
+ fresh: false,
1026
1321
  segments: [],
1027
1322
  animations: [],
1028
1323
  channels: new Set(),
@@ -1033,7 +1328,7 @@ export function createAnimator(element, options = {}) {
1033
1328
  };
1034
1329
 
1035
1330
  /** Commits a call's changes, from rest when it has a start group. */
1036
- const commitCall = (group, owner, changed, time) => {
1331
+ const commitCall = (group, owner, changed, time, presented = false) => {
1037
1332
  if (group != null) {
1038
1333
  for (const property of changed) {
1039
1334
  const segment = segments.get(property);
@@ -1043,6 +1338,88 @@ export function createAnimator(element, options = {}) {
1043
1338
  }
1044
1339
  }
1045
1340
  }
1341
+ if (presented && group != null && requestFrame != null) {
1342
+ // At rest until then: the animations, and the layer they promote, come
1343
+ // two frames later. Promoting now, a layer at rest for two frames, left
1344
+ // a stale paint of the element's rest in WebKit on iOS 26.2 (a title in
1345
+ // a scroller inside a clipped card) after the motion ended.
1346
+ // Each call waits its own two frames: one queued after another change
1347
+ // flushed the queue, or after an earlier call's first frame, still
1348
+ // waits its two.
1349
+ const call = {
1350
+ group,
1351
+ changed
1352
+ };
1353
+ deferredCalls.push(call);
1354
+ requestFrame(() => requestFrame(() => flushDeferredThrough(call)));
1355
+ return;
1356
+ }
1357
+ startCall(group, changed, time);
1358
+ };
1359
+
1360
+ /** Calls with `start: 'presented'` waiting for their second frame. */
1361
+ const deferredCalls = [];
1362
+
1363
+ /** Creates the animations of the given waiting calls, in call order. */
1364
+ const startDeferred = calls => {
1365
+ for (const {
1366
+ group,
1367
+ changed
1368
+ } of calls) {
1369
+ // Not a channel that holds the curve of a later call still waiting: a
1370
+ // later presented call that took a property over starts that channel
1371
+ // with its own two frames. Every other property starts here, whatever
1372
+ // its segment's group: a value Reduce Motion writes at once, or lands
1373
+ // under a dip, has no curve of this call's.
1374
+ const own = [];
1375
+ let handedTo = null;
1376
+ for (const property of changed) {
1377
+ const holder = CHANNELS[CHANNEL_OF[property]].map(other => segments.get(other)?.group).find(waiting => waiting != null && waiting !== group && deferredCalls.some(call => call.group === waiting));
1378
+ if (holder == null) {
1379
+ own.push(property);
1380
+ continue;
1381
+ }
1382
+ // A curve of this call's in that channel never ran: the element held
1383
+ // it at its start. It starts with the later call, which creates the
1384
+ // channel, dated from that call's start, so the model reads what the
1385
+ // screen shows.
1386
+ const segment = segments.get(property);
1387
+ if (segment != null && segment.group === group) {
1388
+ segment.start += holder.provisional - group.provisional;
1389
+ segment.group = holder;
1390
+ holder.segments.push(segment);
1391
+ group.segments.splice(group.segments.indexOf(segment), 1);
1392
+ handedTo = holder;
1393
+ }
1394
+ }
1395
+ if (own.length === 0 && handedTo != null) {
1396
+ // Everything this call still plays starts with the later call.
1397
+ const adopter = handedTo;
1398
+ group.adoptedBy = adopter;
1399
+ void adopter.started.then(start => resolveGroup(group, start));
1400
+ continue;
1401
+ }
1402
+ // From the call's own time: the curve starts at the browser's commit.
1403
+ startCall(group, own, group.provisional);
1404
+ }
1405
+ };
1406
+
1407
+ /** Creates the animations of every waiting call, in call order. */
1408
+ const flushDeferred = () => {
1409
+ startDeferred(deferredCalls.splice(0));
1410
+ };
1411
+
1412
+ /**
1413
+ * A call's second frame: it starts, with every call queued before it (in
1414
+ * call order), unless another change created it already.
1415
+ */
1416
+ const flushDeferredThrough = call => {
1417
+ const index = deferredCalls.indexOf(call);
1418
+ if (index >= 0) {
1419
+ startDeferred(deferredCalls.splice(0, index + 1));
1420
+ }
1421
+ };
1422
+ const startCall = (group, changed, time) => {
1046
1423
  callGroup = group;
1047
1424
  try {
1048
1425
  commit(changed, time);
@@ -1057,6 +1434,15 @@ export function createAnimator(element, options = {}) {
1057
1434
  return;
1058
1435
  }
1059
1436
  pendingGroups.add(group);
1437
+ group.fresh = true;
1438
+ // The task that creates the animations, not the call's: a presented
1439
+ // call's is its second frame's callback, wherever in its frame the call
1440
+ // was made.
1441
+ group.task = markTask(now(), now);
1442
+ group.madeInFrame = frameDepth > 0;
1443
+ queueMicrotask(() => {
1444
+ group.fresh = false;
1445
+ });
1060
1446
  for (const animation of group.animations) {
1061
1447
  // A cancel before the first frame rejects each one's ready promise.
1062
1448
  animation.ready?.catch(() => {});
@@ -1070,7 +1456,26 @@ export function createAnimator(element, options = {}) {
1070
1456
  // or when its compositor starts them (Chromium). Read it in that first
1071
1457
  // frame, ahead of anything that might pause or seek the animations, and
1072
1458
  // when `ready` settles.
1073
- requestFrame?.(() => syncGroup(group));
1459
+ requestFrame?.(() => {
1460
+ syncGroup(group);
1461
+ group.framed = true;
1462
+ // Chromium's compositor starts a composited animation when the frame
1463
+ // that commits it reaches it, and tells the page that start a frame or
1464
+ // more later (longer under load). Until then the call would read as
1465
+ // not started while the screen moves it, and a retarget or a rebase
1466
+ // would replay its curve from the start. A call made in a task, still
1467
+ // waiting in the first frame after it, starts now, which the compositor
1468
+ // then takes as its start: the time this frame runs, not its timestamp,
1469
+ // which after a block is the frame time from before the block. Only
1470
+ // when this frame is the one that commits it: not for a call made in a
1471
+ // frame callback, whose frame committed it already, nor when a block
1472
+ // ran between the call and this frame (more than LATE_START_MS), after
1473
+ // which this frame cannot tell a call made in a task from one a page's
1474
+ // own frame callback made; those keep the browser's start.
1475
+ if (!group.resolved && group.madeInFrame !== true && now() - (group.task?.first ?? group.provisional) <= LATE_START_MS && group.animations.some(animation => animation.startTime == null && animation.playState === 'running')) {
1476
+ resolveGroup(group, now());
1477
+ }
1478
+ });
1074
1479
  ready.then(() => syncGroup(group), () => settleCancelled(group));
1075
1480
  };
1076
1481
 
@@ -1118,7 +1523,7 @@ export function createAnimator(element, options = {}) {
1118
1523
  }
1119
1524
  for (const animation of group.animations) {
1120
1525
  if (animation.startTime != null) {
1121
- resolveGroup(group, Number(animation.startTime));
1526
+ resolveGroup(group, startAfterBlock(group, Number(animation.startTime)));
1122
1527
  return;
1123
1528
  }
1124
1529
  }
@@ -1139,10 +1544,16 @@ export function createAnimator(element, options = {}) {
1139
1544
  }
1140
1545
  };
1141
1546
 
1142
- /** Reads the start of every call whose first frame has been committed. */
1547
+ /**
1548
+ * Reads the start of every call whose first frame may have been committed:
1549
+ * not those created in the running task, whose start the browser cannot
1550
+ * have set (reading it there can cost a style update per call).
1551
+ */
1143
1552
  const syncPending = () => {
1144
1553
  for (const group of pendingGroups) {
1145
- syncGroup(group);
1554
+ if (!group.fresh) {
1555
+ syncGroup(group);
1556
+ }
1146
1557
  }
1147
1558
  syncFinished();
1148
1559
  };
@@ -1170,6 +1581,50 @@ export function createAnimator(element, options = {}) {
1170
1581
  }
1171
1582
  };
1172
1583
 
1584
+ /**
1585
+ * The start of a call from rest, on the frame that commits it. Chromium,
1586
+ * like Core Animation, starts a pending animation when it commits it, so a
1587
+ * main-thread block later in the call's task delays the motion; WebKit
1588
+ * dates it at its last frame time before that task, so the first frame
1589
+ * after the block would show it skipped into its curve. When the task ran
1590
+ * on more than LATE_START_MS past its first call, a start the browser put
1591
+ * by the task's first animations (a presented call's second frame, not the
1592
+ * call) and more than LATE_START_MS before the call's first read (its
1593
+ * `ready`, once the task has ended, or the first frame after it) moves to
1594
+ * that read, with every animation of the call, and every call of the task
1595
+ * moves to the same read. A shorter task, or a read other tasks delay,
1596
+ * keeps the browser's start.
1597
+ */
1598
+ const startAfterBlock = (group, start) => {
1599
+ const timeline = typeof document === 'undefined' ? null : document.timeline?.currentTime;
1600
+ // A start well after the animations were created is the browser's
1601
+ // commit of them.
1602
+ if (timeline == null || group.framed === true || start > (group.task?.first ?? group.provisional) + LATE_START_MS) {
1603
+ return start;
1604
+ }
1605
+ const {
1606
+ task
1607
+ } = group;
1608
+ // A read in the task's first microtasks comes after its end too.
1609
+ const ended = task?.ended ?? now();
1610
+ if (task == null || ended - task.first <= LATE_START_MS) {
1611
+ return start;
1612
+ }
1613
+ // Read once the task has ended (its `ready`) or in the first frame after
1614
+ // it, both after the block; the task's other calls take the same read.
1615
+ const at = task.at ?? Math.max(now(), timeline);
1616
+ if (at - start <= LATE_START_MS) {
1617
+ return start;
1618
+ }
1619
+ task.at = at;
1620
+ for (const animation of group.animations) {
1621
+ if (animation.playState !== 'idle') {
1622
+ animation.startTime = at;
1623
+ }
1624
+ }
1625
+ return at;
1626
+ };
1627
+
1173
1628
  /** Moves a call from rest onto the time the browser started it. */
1174
1629
  const resolveGroup = (group, start) => {
1175
1630
  if (group.resolved) {
@@ -1208,10 +1663,7 @@ export function createAnimator(element, options = {}) {
1208
1663
  }
1209
1664
  clearTimeout(owner.timer);
1210
1665
  const ends = group.segments.filter(segment => segment.owner === owner).map(segment => segment.start + segment.duration);
1211
- owner.timer = setTimeout(() => {
1212
- owner.timer = null;
1213
- settle(owner, true);
1214
- }, Math.max(0, Math.max(start, ...ends) - now()));
1666
+ owner.timer = setTimeout(() => settleAtEnd(owner), Math.max(0, Math.max(start, ...ends) - now()));
1215
1667
  }
1216
1668
  }
1217
1669
  group.resolve(start);
@@ -1241,26 +1693,70 @@ export function createAnimator(element, options = {}) {
1241
1693
  }
1242
1694
  owner.resolve(finished);
1243
1695
  };
1244
- const makeHandle = (owner, properties, finished, time, group = null) => {
1696
+
1697
+ /**
1698
+ * A handle whose curves have reached their end on the wall clock finishes,
1699
+ * unless a sampler holds one of its animations (paused, or sought back):
1700
+ * then it waits on that animation's own time, as retiring does
1701
+ * (scheduleRetire), so `finished` never resolves under motion still on
1702
+ * screen.
1703
+ */
1704
+ const settleAtEnd = owner => {
1705
+ owner.timer = null;
1706
+ let wait = 0;
1707
+ for (const [channel, animation] of running) {
1708
+ if (!CHANNELS[channel].some(property => segments.get(property)?.owner === owner)) {
1709
+ continue;
1710
+ }
1711
+ const remaining = remainingCurve(animation);
1712
+ if (remaining != null && remaining > 0) {
1713
+ wait = Math.max(wait, animation.playState === 'paused' ? RETIRE_RECHECK_MS : Math.max(remaining, END_RECHECK_MS));
1714
+ }
1715
+ }
1716
+ if (wait > 0) {
1717
+ owner.timer = setTimeout(() => settleAtEnd(owner), wait);
1718
+ return;
1719
+ }
1720
+ settle(owner, true);
1721
+ };
1722
+ const makeHandle = (owner, properties, finished, time, group = null, settlesWithLanding = false) => {
1245
1723
  const ends = properties.map(p => {
1246
1724
  const segment = segments.get(p);
1247
1725
  return segment != null && segment.owner === owner ? segment.start + segment.duration : time;
1248
1726
  });
1249
1727
  const end = Math.max(time, ...ends);
1250
- if (properties.length === 0 || end <= time) {
1728
+ if (settlesWithLanding) {
1729
+ // The landing it joined settles it.
1730
+ } else if (properties.length === 0 || end <= time) {
1251
1731
  settle(owner, true);
1252
1732
  } else {
1253
1733
  // Interruptions settle false as they happen (interrupt); reaching the
1254
1734
  // end untouched is completion.
1255
- owner.timer = setTimeout(() => {
1256
- owner.timer = null;
1257
- settle(owner, true);
1258
- }, Math.max(0, end - now()));
1735
+ owner.timer = setTimeout(() => settleAtEnd(owner), Math.max(0, end - now()));
1736
+ }
1737
+ // The call's own curves, as it started them.
1738
+ const curves = new Map();
1739
+ for (const property of properties) {
1740
+ const segment = segments.get(property);
1741
+ if (segment != null && segment.owner === owner) {
1742
+ curves.set(property, segment);
1743
+ }
1259
1744
  }
1260
1745
  const handle = {
1261
1746
  properties,
1262
1747
  finished,
1263
1748
  started: group?.started ?? Promise.resolve(time),
1749
+ curve: property => {
1750
+ const segment = curves.get(property === 'scale' ? 'scaleX' : property);
1751
+ if (segment == null) {
1752
+ return null;
1753
+ }
1754
+ return {
1755
+ duration: segment.duration / 1000,
1756
+ at: t => t * 1000 >= segment.duration ? segment.target : segment.at(Math.max(0, t * 1000)),
1757
+ velocity: t => t * 1000 >= segment.duration ? 0 : segment.speed(t * 1000)
1758
+ };
1759
+ },
1264
1760
  value: (property, at = now()) => {
1265
1761
  syncPending();
1266
1762
  return valueAt(property, at);
@@ -1309,7 +1805,9 @@ export function createAnimator(element, options = {}) {
1309
1805
  if (from === to && velocity === 0) {
1310
1806
  return null;
1311
1807
  }
1312
- const curve = solveSpring(toSpring(spring), {
1808
+ // The motion role it plays: its table value (DEC-15).
1809
+ const resolved = resolveMotion(target, spring);
1810
+ const curve = solveSpring(toSpring(resolved), {
1313
1811
  from,
1314
1812
  to,
1315
1813
  velocity
@@ -1323,11 +1821,58 @@ export function createAnimator(element, options = {}) {
1323
1821
  speed: t => curve.velocity(t / 1000),
1324
1822
  jumps: [],
1325
1823
  owner,
1326
- spring
1824
+ spring: resolved
1825
+ };
1826
+ };
1827
+
1828
+ /** The retarget of `additive`: the old curve plus a spring of the difference. */
1829
+ const additiveSegment = (owner, property, start, to, spring, old) => {
1830
+ const oldEnd = old.start + old.duration;
1831
+ const resolved = resolveMotion(target, spring);
1832
+ const delta = solveSpring(toSpring(resolved), {
1833
+ from: 0,
1834
+ to: to - old.target,
1835
+ velocity: 0
1836
+ });
1837
+ const deltaMs = Math.min(MAX_DURATION_MS, delta.settleTime(SETTLE_THRESHOLD[property]) * 1000);
1838
+ const ownAt = t => t >= deltaMs ? to - old.target : delta.value(t / 1000);
1839
+ const oldAt = time => time >= oldEnd ? old.target : old.at(Math.max(0, time - old.start));
1840
+ return {
1841
+ start,
1842
+ duration: Math.min(MAX_DURATION_MS, Math.max(oldEnd - start, deltaMs)),
1843
+ target: to,
1844
+ at: t => oldAt(start + t) + ownAt(t),
1845
+ speed: t => (start + t >= oldEnd ? 0 : old.speed(start + t - old.start)) + (t >= deltaMs ? 0 : delta.velocity(t / 1000)),
1846
+ jumps: old.jumps.map(jump => old.start + jump - start).filter(jump => jump > 0),
1847
+ owner,
1848
+ spring: resolved
1849
+ };
1850
+ };
1851
+
1852
+ /**
1853
+ * `additive` for a played curve: the old curve plus the new curve's shape,
1854
+ * scaled to the difference between the two targets.
1855
+ */
1856
+ const additiveCurveSegment = (owner, start, curve, old) => {
1857
+ const from = curve.at(0);
1858
+ const to = curve.at(curve.duration);
1859
+ const scale = (to - old.target) / (to - from);
1860
+ const ms = Math.min(MAX_DURATION_MS, curve.duration * 1000);
1861
+ const oldEnd = old.start + old.duration;
1862
+ const oldAt = time => time >= oldEnd ? old.target : old.at(Math.max(0, time - old.start));
1863
+ return {
1864
+ start,
1865
+ duration: Math.min(MAX_DURATION_MS, Math.max(oldEnd - start, ms)),
1866
+ target: to,
1867
+ at: t => oldAt(start + t) + (t >= ms ? to - old.target : (curve.at(t / 1000) - from) * scale),
1868
+ speed: t => (start + t >= oldEnd ? 0 : old.speed(start + t - old.start)) + (t >= ms ? 0 : curve.velocity(t / 1000) * scale),
1869
+ jumps: old.jumps.map(jump => old.start + jump - start).filter(jump => jump > 0),
1870
+ owner
1327
1871
  };
1328
1872
  };
1329
1873
  const fadeSegment = (owner, start, stops, jumps = []) => {
1330
- const ease = cubicBezier(reducedMotionCrossFade.curve);
1874
+ registerReducedMotionCrossFade();
1875
+ const ease = cubicBezier(resolveMotion(target, reducedMotionCrossFade.curve));
1331
1876
  const duration = stops[stops.length - 1].at;
1332
1877
  const at = t => {
1333
1878
  for (let i = 0; i + 1 < stops.length; i++) {
@@ -1447,6 +1992,27 @@ export function createAnimator(element, options = {}) {
1447
1992
  };
1448
1993
  };
1449
1994
 
1995
+ /**
1996
+ * A call joins the newest waiting dip: it takes the landing over and
1997
+ * settles when the dip ends, and the call it replaces lands with it. Each
1998
+ * value keeps the call whose move it is.
1999
+ */
2000
+ const joinWaitingDip = owner => {
2001
+ const dip = [...landings].reverse().find(landing => landing.fadeIn != null);
2002
+ if (dip == null) {
2003
+ settle(owner, true);
2004
+ return;
2005
+ }
2006
+ for (const property of dip.values.keys()) {
2007
+ if (!dip.owners.has(property)) {
2008
+ dip.owners.set(property, dip.owner);
2009
+ }
2010
+ }
2011
+ dip.carried.push(dip.owner);
2012
+ carriedOwners.add(dip.owner);
2013
+ dip.owner = owner;
2014
+ };
2015
+
1450
2016
  /** Where opacity is heading: past a waiting landing's fade back in. */
1451
2017
  const opacityHeading = () => {
1452
2018
  let to = finalValue('opacity');
@@ -1500,8 +2066,9 @@ export function createAnimator(element, options = {}) {
1500
2066
  * never an animation (DR2: opacity only), so it is never shown in the wrong
1501
2067
  * place. In a dip the fade back in starts from here and takes what is left
1502
2068
  * of the cross-fade, so the dip ends when it was due even when a busy main
1503
- * thread runs this timer late; past the whole fade back in (over 100 ms
1504
- * late) the element appears at once where it landed.
2069
+ * thread runs this timer late; past the whole fade back in (100 ms late or
2070
+ * more) the element appears at once where it landed, with no animation,
2071
+ * and the call settles then.
1505
2072
  */
1506
2073
  const land = landing => {
1507
2074
  landings.delete(landing);
@@ -1514,13 +2081,16 @@ export function createAnimator(element, options = {}) {
1514
2081
  changed.push(property);
1515
2082
  }
1516
2083
  let end = time;
1517
- if (landing.fadeIn != null) {
1518
- // The fade back in takes what is left of the cross-fade: a timer that
1519
- // a busy main thread runs late shortens it, so the dip still ends
1520
- // when it was due (design:reduced-motion DR2, 200 ms or less), and the
1521
- // element is never shown before it lands.
1522
- const late = landing.due == null ? 0 : Math.max(0, time - landing.due);
1523
- const ms = Math.max(1, landing.fadeIn.ms - late);
2084
+ // The fade back in takes what is left of the cross-fade: a timer that a
2085
+ // busy main thread runs late shortens it, so the dip still ends when it
2086
+ // was due (design:reduced-motion DR2, 200 ms or less), and the element is
2087
+ // never shown before it lands. Past the whole fade back in nothing is
2088
+ // left: the element appears at once, a plain write with no fade for the
2089
+ // browser to start a frame later, so the call settles showing it.
2090
+ const late = landing.due == null ? 0 : Math.max(0, time - landing.due);
2091
+ const appears = landing.fadeIn != null && late >= landing.fadeIn.ms;
2092
+ if (landing.fadeIn != null && !appears) {
2093
+ const ms = landing.fadeIn.ms - late;
1524
2094
  segments.set('opacity', fadeSegment(landing.owner, time, [{
1525
2095
  at: 0,
1526
2096
  value: valueAt('opacity', time)
@@ -1530,17 +2100,20 @@ export function createAnimator(element, options = {}) {
1530
2100
  }]));
1531
2101
  changed.push('opacity');
1532
2102
  end = time + ms;
2103
+ } else if (landing.fadeIn != null) {
2104
+ segments.delete('opacity');
2105
+ resting.opacity = landing.fadeIn.isBorrowed === true ? IDENTITY.opacity : landing.fadeIn.to;
2106
+ changed.push('opacity');
1533
2107
  } else if (landing.restore != null) {
1534
2108
  segments.delete('opacity');
1535
2109
  resting.opacity = landing.restoreIsBorrowed === true ? IDENTITY.opacity : landing.restore;
1536
2110
  changed.push('opacity');
1537
2111
  }
1538
2112
  commit(changed, time);
1539
- if (landing.restoreIsBorrowed === true) {
2113
+ if (landing.restoreIsBorrowed === true || appears && landing.fadeIn?.isBorrowed === true) {
1540
2114
  // The stylesheet owns its opacity again.
1541
2115
  releaseOwnOpacity();
1542
- }
1543
- if (landing.fadeIn?.isBorrowed === true) {
2116
+ } else if (landing.fadeIn?.isBorrowed === true) {
1544
2117
  // The fade back in returns to the stylesheet's opacity: it owns it
1545
2118
  // again once the fade ends (releaseIdentity).
1546
2119
  borrowedOpacity = landing.fadeIn.to;
@@ -1561,10 +2134,7 @@ export function createAnimator(element, options = {}) {
1561
2134
  if (end <= time) {
1562
2135
  settle(owner, true);
1563
2136
  } else {
1564
- owner.timer = setTimeout(() => {
1565
- owner.timer = null;
1566
- settle(owner, true);
1567
- }, Math.max(0, end - now()));
2137
+ owner.timer = setTimeout(() => settleAtEnd(owner), Math.max(0, end - now()));
1568
2138
  }
1569
2139
  };
1570
2140
 
@@ -1645,6 +2215,9 @@ export function createAnimator(element, options = {}) {
1645
2215
  },
1646
2216
  get hasPendingLanding() {
1647
2217
  return landings.size > 0;
2218
+ },
2219
+ get hasWaitingDip() {
2220
+ return [...landings].some(landing => landing.fadeIn != null);
1648
2221
  }
1649
2222
  };
1650
2223
 
@@ -1677,7 +2250,8 @@ export function createAnimator(element, options = {}) {
1677
2250
  next,
1678
2251
  holds: plan.holds,
1679
2252
  landing: plan.landing,
1680
- borrowed: plan.borrowed
2253
+ borrowed: plan.borrowed,
2254
+ joins: plan.joins
1681
2255
  };
1682
2256
  };
1683
2257
  const animator = {
@@ -1694,6 +2268,7 @@ export function createAnimator(element, options = {}) {
1694
2268
  if (next === target) {
1695
2269
  return;
1696
2270
  }
2271
+ flushDeferred();
1697
2272
  if (next == null) {
1698
2273
  // Unmount, unless a node replaces this one in the same task (React's
1699
2274
  // replacement order: attach(null), then the new node): nothing is
@@ -1729,6 +2304,9 @@ export function createAnimator(element, options = {}) {
1729
2304
  }
1730
2305
  retireTimers.clear();
1731
2306
  demote();
2307
+ // demote() asks for a fresh will-change read of the node it
2308
+ // demotes; a detached node gets none.
2309
+ cancelSheetWillChangeRead();
1732
2310
  });
1733
2311
  lastDetached = null;
1734
2312
  const time = now();
@@ -1747,7 +2325,11 @@ export function createAnimator(element, options = {}) {
1747
2325
  }
1748
2326
  // After the landing's commit, which can promote the element again.
1749
2327
  demote();
2328
+ // A pseudo-element holds an identity with a static animation, which the
2329
+ // cancel below drops: note the channels to hold again on the next node
2330
+ // (never a borrowed opacity, which is the stylesheet's).
1750
2331
  const isOpacityBorrowed = borrowedOpacity != null || [...landings].some(landing => landing.restoreIsBorrowed === true);
2332
+ const pseudoHeld = pseudoElement == null || target == null ? null : new Set(Object.keys(CHANNELS).filter(channel => running.has(channel) && !(channel === 'opacity' && isOpacityBorrowed) && CHANNELS[channel].every(p => !segments.has(p) && resting[p] === IDENTITY[p])));
1751
2333
  for (const animation of running.values()) {
1752
2334
  animation.cancel();
1753
2335
  }
@@ -1767,10 +2349,13 @@ export function createAnimator(element, options = {}) {
1767
2349
  // differs, kept through a detach for the node that comes next.
1768
2350
  if (target != null) {
1769
2351
  const outgoing = target;
1770
- heldIdentity = new Set(Object.keys(CHANNELS).filter(channel => outgoing.style.getPropertyValue(channel) === IDENTITY_TEXT[channel]));
2352
+ heldIdentity = pseudoHeld ?? new Set(Object.keys(CHANNELS).filter(channel => outgoing.style.getPropertyValue(channel) === IDENTITY_TEXT[channel]));
1771
2353
  }
1772
2354
  const held = heldIdentity;
1773
2355
  target = next;
2356
+ // A new node: its own will-change is read again.
2357
+ cancelSheetWillChangeRead();
2358
+ sheetWillChangeRead = false;
1774
2359
  if (target == null) {
1775
2360
  return;
1776
2361
  }
@@ -1792,11 +2377,17 @@ export function createAnimator(element, options = {}) {
1792
2377
  } else if (held.has(channel)) {
1793
2378
  // An identity the animator held inline over a stylesheet that
1794
2379
  // differs goes onto the new node too (writeInline keeps it only
1795
- // where the new node's stylesheet still differs).
1796
- writeInline(channel, property => resting[property]);
2380
+ // where the new node's stylesheet still differs); a pseudo-element's
2381
+ // is held again.
2382
+ if (pseudoElement != null) {
2383
+ hold(channel, time);
2384
+ } else {
2385
+ writeInline(channel, property => resting[property]);
2386
+ }
1797
2387
  }
1798
2388
  }
1799
2389
  flushReleases();
2390
+ readSheetWillChangeLater();
1800
2391
  },
1801
2392
  get(property, time = now()) {
1802
2393
  syncPending();
@@ -1806,8 +2397,9 @@ export function createAnimator(element, options = {}) {
1806
2397
  syncPending();
1807
2398
  return velocityAt(property === 'scale' ? 'scaleX' : property, time);
1808
2399
  },
1809
- set(values) {
2400
+ set(values, setOptions = {}) {
1810
2401
  syncPending();
2402
+ flushDeferred();
1811
2403
  const time = now();
1812
2404
  const next = expand(values);
1813
2405
  for (const [property, value] of Object.entries(next)) {
@@ -1816,13 +2408,18 @@ export function createAnimator(element, options = {}) {
1816
2408
  resting[property] = value;
1817
2409
  }
1818
2410
  // Direct manipulation: the layer makes each write a composite only.
1819
- for (const property of Object.keys(next)) {
1820
- promote(CHANNEL_OF[property]);
2411
+ if (setOptions.promote !== false) {
2412
+ for (const property of Object.keys(next)) {
2413
+ promote(CHANNEL_OF[property]);
2414
+ }
1821
2415
  }
1822
2416
  commit(Object.keys(next), time);
1823
2417
  },
1824
2418
  animate(to, transition, animateOptions = {}) {
1825
2419
  syncPending();
2420
+ if (animateOptions.start !== 'presented') {
2421
+ flushDeferred();
2422
+ }
1826
2423
  const time = animateOptions.at ?? now();
1827
2424
  const targets = expand(to);
1828
2425
  const velocities = expand(transition.velocity ?? {});
@@ -1839,11 +2436,16 @@ export function createAnimator(element, options = {}) {
1839
2436
  Object.assign(next, plan.next);
1840
2437
  } else {
1841
2438
  for (const property of properties) {
2439
+ const running = animateOptions.additive === true && velocities[property] == null ? segmentAt(property, time) : null;
2440
+ if (running != null && !isHeld(running)) {
2441
+ next[property] = additiveSegment(owner, property, time, targets[property], transition.spring, running);
2442
+ continue;
2443
+ }
1842
2444
  const velocity = velocities[property] ?? velocityAt(property, time);
1843
2445
  next[property] = springSegment(owner, property, time, targets[property], transition.spring, velocity);
1844
2446
  }
1845
2447
  }
1846
- const group = beginGroup(time, Object.keys(next), animateOptions.at);
2448
+ const group = beginGroup(time, Object.keys(next), animateOptions.at, animateOptions.start);
1847
2449
  const adopted = plan?.landing != null ? adoptLandings(plan.landing, Object.keys(next)) : null;
1848
2450
  const changed = [];
1849
2451
  for (const [property, segment] of Object.entries(next)) {
@@ -1858,12 +2460,15 @@ export function createAnimator(element, options = {}) {
1858
2460
  segments.set(property, segment);
1859
2461
  }
1860
2462
  }
1861
- commitCall(group, owner, changed, time);
2463
+ commitCall(group, owner, changed, time, animateOptions.start === 'presented' && animateOptions.at == null);
1862
2464
  if (plan?.borrowed != null) {
1863
2465
  // The dip's own commit cleared it; the borrow lasts the dip.
1864
2466
  borrowedOpacity = plan.borrowed;
1865
2467
  }
1866
- const handle = makeHandle(owner, changed, finished, time, group);
2468
+ if (plan?.joins === true) {
2469
+ joinWaitingDip(owner);
2470
+ }
2471
+ const handle = plan?.joins === true ? makeHandle(owner, ['opacity'], finished, time, group, true) : makeHandle(owner, changed, finished, time, group);
1867
2472
  if (plan?.landing != null) {
1868
2473
  scheduleLanding(owner, handle.started, plan.landing, adopted);
1869
2474
  }
@@ -1871,6 +2476,9 @@ export function createAnimator(element, options = {}) {
1871
2476
  },
1872
2477
  play(curves, playOptions = {}) {
1873
2478
  syncPending();
2479
+ if (playOptions.start !== 'presented') {
2480
+ flushDeferred();
2481
+ }
1874
2482
  const time = playOptions.at ?? now();
1875
2483
  const {
1876
2484
  owner,
@@ -1905,6 +2513,11 @@ export function createAnimator(element, options = {}) {
1905
2513
  continue;
1906
2514
  }
1907
2515
  const curve = byProperty[property];
2516
+ const running = playOptions.additive === true ? segmentAt(property, time) : null;
2517
+ if (running != null && !isHeld(running) && curve.duration > 0 && Math.abs(curve.at(curve.duration) - curve.at(0)) > 1e-9) {
2518
+ next[property] = additiveCurveSegment(owner, time, curve, running);
2519
+ continue;
2520
+ }
1908
2521
  next[property] = curve.duration === 0 ? null : {
1909
2522
  start: time,
1910
2523
  duration: Math.min(MAX_DURATION_MS, curve.duration * 1000),
@@ -1915,7 +2528,7 @@ export function createAnimator(element, options = {}) {
1915
2528
  owner
1916
2529
  };
1917
2530
  }
1918
- const group = beginGroup(time, Object.keys(next), playOptions.at);
2531
+ const group = beginGroup(time, Object.keys(next), playOptions.at, playOptions.start);
1919
2532
  const adopted = plan?.landing != null ? adoptLandings(plan.landing, Object.keys(next)) : null;
1920
2533
  const changed = [];
1921
2534
  for (const [property, segment] of Object.entries(next)) {
@@ -1930,12 +2543,15 @@ export function createAnimator(element, options = {}) {
1930
2543
  segments.set(property, segment);
1931
2544
  }
1932
2545
  }
1933
- commitCall(group, owner, changed, time);
2546
+ commitCall(group, owner, changed, time, playOptions.start === 'presented' && playOptions.at == null);
1934
2547
  if (plan?.borrowed != null) {
1935
2548
  // The dip's own commit cleared it; the borrow lasts the dip.
1936
2549
  borrowedOpacity = plan.borrowed;
1937
2550
  }
1938
- const handle = makeHandle(owner, changed, finished, time, group);
2551
+ if (plan?.joins === true) {
2552
+ joinWaitingDip(owner);
2553
+ }
2554
+ const handle = plan?.joins === true ? makeHandle(owner, ['opacity'], finished, time, group, true) : makeHandle(owner, changed, finished, time, group);
1939
2555
  if (plan?.landing != null) {
1940
2556
  scheduleLanding(owner, handle.started, plan.landing, adopted);
1941
2557
  }
@@ -1943,6 +2559,7 @@ export function createAnimator(element, options = {}) {
1943
2559
  },
1944
2560
  decay(curves, decayOptions = {}) {
1945
2561
  syncPending();
2562
+ flushDeferred();
1946
2563
  const time = decayOptions.at ?? now();
1947
2564
  // Under Reduce Motion only momentum keeps moving (DR2, DEC-2): a curve
1948
2565
  // that is a transition plays as `animate` does, a cross-fade or at once.
@@ -2009,6 +2626,7 @@ export function createAnimator(element, options = {}) {
2009
2626
  },
2010
2627
  stop(properties) {
2011
2628
  syncPending();
2629
+ flushDeferred();
2012
2630
  const time = now();
2013
2631
  const list = properties == null ? PROPERTIES : expandList(properties);
2014
2632
  const changed = [];
@@ -2037,6 +2655,7 @@ export function createAnimator(element, options = {}) {
2037
2655
  },
2038
2656
  rebase(deltas, rebaseOptions = {}) {
2039
2657
  syncPending();
2658
+ flushDeferred();
2040
2659
  const time = rebaseOptions.at ?? now();
2041
2660
  const changed = [];
2042
2661
  const owners = new Set();
@@ -2108,10 +2727,7 @@ export function createAnimator(element, options = {}) {
2108
2727
  end = Math.max(end, segment.start + segment.duration);
2109
2728
  }
2110
2729
  }
2111
- owner.timer = setTimeout(() => {
2112
- owner.timer = null;
2113
- settle(owner, true);
2114
- }, Math.max(0, end - now()));
2730
+ owner.timer = setTimeout(() => settleAtEnd(owner), Math.max(0, end - now()));
2115
2731
  }
2116
2732
  },
2117
2733
  async atRest(properties) {
@@ -2155,6 +2771,7 @@ export function createAnimator(element, options = {}) {
2155
2771
  });
2156
2772
  },
2157
2773
  dispose() {
2774
+ flushDeferred();
2158
2775
  // A Reduce Motion move still waiting to land is written at its end
2159
2776
  // state, so the element is left visible where it was going (the node
2160
2777
  // just detached, when an unmount is pending); its call and the calls
@@ -2183,6 +2800,7 @@ export function createAnimator(element, options = {}) {
2183
2800
  retireTimers.clear();
2184
2801
  handBackBorrow();
2185
2802
  demote();
2803
+ cancelSheetWillChangeRead();
2186
2804
  target = null;
2187
2805
  }
2188
2806
  };