@astryxdesign/core 0.7.7 → 0.7.8-canary.0588a13

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 (798) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +4 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +46 -6
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +11 -3
  6. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  7. package/dist/BottomSheet/BottomSheet.js +1 -0
  8. package/dist/BottomSheet/BottomSheetPanel.d.ts +1 -1
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetPanel.js +55 -18
  11. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  12. package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
  13. package/dist/BottomSheet/bottomSheetStack.js +1 -1
  14. package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
  15. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  16. package/dist/BottomSheet/useSheetGestures.js +16 -1
  17. package/dist/Button/Button.d.ts.map +1 -1
  18. package/dist/Button/Button.js +17 -1
  19. package/dist/Calendar/Calendar.d.ts.map +1 -1
  20. package/dist/Calendar/Calendar.js +18 -22
  21. package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
  22. package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
  23. package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
  24. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  25. package/dist/Calendar/hooks/useCalendarDays.js +2 -10
  26. package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
  27. package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
  28. package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
  29. package/dist/Carousel/Carousel.d.ts.map +1 -1
  30. package/dist/Carousel/Carousel.js +2 -0
  31. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  32. package/dist/Chat/ChatComposerInput.js +6 -1
  33. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  34. package/dist/Chat/ChatMessageList.js +2 -1
  35. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  36. package/dist/Chat/useChatDictation.js +2 -0
  37. package/dist/Chat/useChatNewMessages.js +1 -1
  38. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  39. package/dist/Chat/useChatStreamScroll.js +2 -0
  40. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  41. package/dist/Chat/useSpeechRecognition.js +3 -0
  42. package/dist/Chat/useTriggerMenu.js +1 -1
  43. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  44. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  45. package/dist/CheckboxList/CheckboxList.d.ts +20 -2
  46. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  47. package/dist/CheckboxList/CheckboxList.js +12 -4
  48. package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
  49. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  50. package/dist/CheckboxList/CheckboxListContext.js +2 -1
  51. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  52. package/dist/CheckboxList/CheckboxListItem.js +14 -2
  53. package/dist/CheckboxList/requiredGroup.d.ts +22 -0
  54. package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
  55. package/dist/CheckboxList/requiredGroup.js +52 -0
  56. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  57. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  58. package/dist/CodeBlock/CodeBlock.js +28 -11
  59. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  60. package/dist/CommandPalette/CommandPalette.js +2 -0
  61. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  62. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  63. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  64. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  65. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  66. package/dist/ContextMenu/ContextMenu.js +2 -2
  67. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  68. package/dist/DateInput/MonthScroller.js +5 -2
  69. package/dist/DateInput/PickerWheel.d.ts +19 -0
  70. package/dist/DateInput/PickerWheel.d.ts.map +1 -0
  71. package/dist/DateInput/PickerWheel.js +646 -0
  72. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  73. package/dist/DateInput/TouchDateField.js +9 -30
  74. package/dist/DateInput/Wheel.d.ts +18 -37
  75. package/dist/DateInput/Wheel.d.ts.map +1 -1
  76. package/dist/DateInput/Wheel.js +133 -120
  77. package/dist/DateInput/datePickerTouch.d.ts +13 -0
  78. package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
  79. package/dist/DateInput/datePickerTouch.js +14 -0
  80. package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
  81. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  82. package/dist/DateInput/useOwnScrollGesture.js +16 -3
  83. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  84. package/dist/DateInput/usePointerDragScroll.js +2 -0
  85. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  86. package/dist/DateInput/useScrollSettle.js +3 -0
  87. package/dist/DateInput/useWheelListbox.d.ts +59 -0
  88. package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
  89. package/dist/DateInput/useWheelListbox.js +88 -0
  90. package/dist/DateInput/wheelOptions.d.ts +94 -0
  91. package/dist/DateInput/wheelOptions.d.ts.map +1 -0
  92. package/dist/DateInput/wheelOptions.js +110 -0
  93. package/dist/DateInput/wheelPhysics.d.ts +127 -0
  94. package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
  95. package/dist/DateInput/wheelPhysics.js +341 -0
  96. package/dist/DateInput/wheelStrip.d.ts +92 -0
  97. package/dist/DateInput/wheelStrip.d.ts.map +1 -0
  98. package/dist/DateInput/wheelStrip.js +258 -0
  99. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  100. package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
  101. package/dist/Dialog/Dialog.d.ts.map +1 -1
  102. package/dist/Dialog/Dialog.js +9 -32
  103. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  104. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  105. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  106. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  107. package/dist/Field/Field.js +2 -2
  108. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  109. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  110. package/dist/FormLayout/FormLayout.d.ts +5 -1
  111. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  112. package/dist/HoverCard/HoverCard.d.ts +6 -4
  113. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  114. package/dist/HoverCard/HoverCard.js +48 -3
  115. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  116. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  117. package/dist/HoverCard/useHoverCard.js +26 -34
  118. package/dist/Icon/Icon.d.ts +5 -1
  119. package/dist/Icon/Icon.d.ts.map +1 -1
  120. package/dist/Icon/Icon.js +20 -3
  121. package/dist/InfoTip/InfoTip.d.ts +5 -5
  122. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  123. package/dist/InfoTip/InfoTip.js +58 -19
  124. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  125. package/dist/Item/useSwipeAction.js +3 -0
  126. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  127. package/dist/Layer/modalOutlet.js +2 -0
  128. package/dist/Layer/outsidePress.d.ts.map +1 -1
  129. package/dist/Layer/outsidePress.js +1 -0
  130. package/dist/Layer/useLayer.d.ts.map +1 -1
  131. package/dist/Layer/useLayer.js +4 -1
  132. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  133. package/dist/Layer/useLayerDismissal.js +3 -0
  134. package/dist/Layer/useTouchTrigger.d.ts +13 -7
  135. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  136. package/dist/Layer/useTouchTrigger.js +20 -6
  137. package/dist/Layout/index.d.ts +1 -1
  138. package/dist/Layout/index.d.ts.map +1 -1
  139. package/dist/Layout/index.js +1 -1
  140. package/dist/Layout/layoutReset.js +1 -1
  141. package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
  142. package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
  143. package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
  144. package/dist/Layout/padding.stylex.d.ts +5 -129
  145. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  146. package/dist/Layout/padding.stylex.js +9 -143
  147. package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
  148. package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
  149. package/dist/Layout/paddingStyles.stylex.js +99 -0
  150. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  151. package/dist/Lightbox/Lightbox.js +20 -1
  152. package/dist/MobileNav/MobileNav.d.ts +3 -2
  153. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  154. package/dist/MobileNav/MobileNav.js +10 -26
  155. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  156. package/dist/MultiSelector/MultiSelector.js +2 -1
  157. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  158. package/dist/NumberInput/NumberInput.js +2 -1
  159. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  160. package/dist/Outline/useOutlineFromDOM.js +3 -0
  161. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  162. package/dist/Outline/useScrollSpy.js +3 -0
  163. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  164. package/dist/OverflowList/OverflowList.js +3 -0
  165. package/dist/Overlay/Overlay.d.ts.map +1 -1
  166. package/dist/Overlay/Overlay.js +7 -2
  167. package/dist/Popover/Popover.d.ts.map +1 -1
  168. package/dist/Popover/Popover.js +6 -0
  169. package/dist/Popover/usePopover.js +2 -2
  170. package/dist/PowerSearch/PowerSearch.d.ts +41 -4
  171. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  172. package/dist/PowerSearch/PowerSearch.js +441 -134
  173. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
  174. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  175. package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
  176. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  177. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  178. package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
  179. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  180. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  181. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  182. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  183. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  184. package/dist/PowerSearch/PowerSearchToken.js +3 -2
  185. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  186. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  187. package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
  188. package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
  189. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  190. package/dist/PowerSearch/formatFilterValue.js +31 -23
  191. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  192. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  193. package/dist/PowerSearch/formatTokenValue.js +161 -0
  194. package/dist/PowerSearch/index.d.ts +1 -1
  195. package/dist/PowerSearch/index.d.ts.map +1 -1
  196. package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
  197. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  198. package/dist/PowerSearch/powerSearchDateZone.js +57 -0
  199. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  200. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  201. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  202. package/dist/PowerSearch/types.d.ts +8 -1
  203. package/dist/PowerSearch/types.d.ts.map +1 -1
  204. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  205. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  206. package/dist/RadioList/RadioList.d.ts.map +1 -1
  207. package/dist/RadioList/RadioList.js +3 -2
  208. package/dist/RadioList/RadioListItem.d.ts +1 -1
  209. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  210. package/dist/RadioList/RadioListItem.js +5 -3
  211. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  212. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  213. package/dist/Resizable/ResizeHandle.js +116 -92
  214. package/dist/Resizable/createResizable.d.ts +199 -0
  215. package/dist/Resizable/createResizable.d.ts.map +1 -0
  216. package/dist/Resizable/createResizable.js +733 -0
  217. package/dist/Resizable/separatorAttributes.d.ts +45 -0
  218. package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
  219. package/dist/Resizable/separatorAttributes.js +35 -0
  220. package/dist/Resizable/useResizable.d.ts +3 -3
  221. package/dist/Resizable/useResizable.d.ts.map +1 -1
  222. package/dist/Resizable/useResizable.js +252 -459
  223. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  224. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  225. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  226. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  227. package/dist/SelectableCard/SelectableCard.js +36 -11
  228. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  229. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  230. package/dist/SelectableCard/selectableCardInput.js +20 -0
  231. package/dist/Selector/Selector.d.ts.map +1 -1
  232. package/dist/Selector/Selector.js +7 -9
  233. package/dist/SideNav/SideNav.d.ts.map +1 -1
  234. package/dist/SideNav/SideNav.js +36 -5
  235. package/dist/Slider/Slider.d.ts.map +1 -1
  236. package/dist/Slider/Slider.js +16 -11
  237. package/dist/Slider/sliderTouchController.js +2 -2
  238. package/dist/Spinner/Spinner.d.ts +1 -1
  239. package/dist/Spinner/Spinner.d.ts.map +1 -1
  240. package/dist/Spinner/Spinner.js +60 -58
  241. package/dist/Stepper/Stepper.d.ts.map +1 -1
  242. package/dist/Stepper/Stepper.js +10 -15
  243. package/dist/Switch/Switch.d.ts.map +1 -1
  244. package/dist/Switch/Switch.js +4 -10
  245. package/dist/Switch/useSwitchTouch.js +4 -4
  246. package/dist/Table/BaseTable.d.ts.map +1 -1
  247. package/dist/Table/BaseTable.js +29 -8
  248. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  249. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  250. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  251. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  252. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
  253. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  254. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
  255. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  256. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  257. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  258. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  259. package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
  260. package/dist/TextArea/TextArea.d.ts.map +1 -1
  261. package/dist/TextArea/TextArea.js +2 -1
  262. package/dist/TextInput/TextInput.d.ts +2 -2
  263. package/dist/TextInput/TextInput.d.ts.map +1 -1
  264. package/dist/TextInput/TextInput.js +12 -8
  265. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  266. package/dist/TimeInput/TimeInput.js +2 -0
  267. package/dist/TimeInput/TimeWheels.d.ts +32 -0
  268. package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
  269. package/dist/TimeInput/TimeWheels.js +144 -0
  270. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  271. package/dist/TimeInput/TouchTimeField.js +63 -116
  272. package/dist/TimeInput/timeWheelRules.d.ts +124 -0
  273. package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
  274. package/dist/TimeInput/timeWheelRules.js +277 -0
  275. package/dist/Timer/Timer.d.ts.map +1 -1
  276. package/dist/Timer/Timer.js +2 -0
  277. package/dist/Timestamp/Timestamp.js +1 -1
  278. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  279. package/dist/Timestamp/formatInstant.js +1 -23
  280. package/dist/Toast/Toast.d.ts +11 -1
  281. package/dist/Toast/Toast.d.ts.map +1 -1
  282. package/dist/Toast/Toast.js +25 -15
  283. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  284. package/dist/Toast/ToastViewport.js +97 -34
  285. package/dist/Toast/types.d.ts +9 -3
  286. package/dist/Toast/types.d.ts.map +1 -1
  287. package/dist/Toast/useToast.d.ts.map +1 -1
  288. package/dist/Toast/useToast.js +1 -0
  289. package/dist/Tokenizer/Tokenizer.d.ts +44 -46
  290. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  291. package/dist/Tokenizer/Tokenizer.js +20 -21
  292. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  293. package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
  294. package/dist/Tokenizer/index.d.ts +1 -1
  295. package/dist/Tokenizer/index.d.ts.map +1 -1
  296. package/dist/Tooltip/Tooltip.d.ts +2 -23
  297. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  298. package/dist/Tooltip/Tooltip.js +5 -29
  299. package/dist/Tooltip/useTooltip.d.ts +23 -30
  300. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  301. package/dist/Tooltip/useTooltip.js +200 -108
  302. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  303. package/dist/Typeahead/BaseTypeahead.js +27 -18
  304. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  305. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  306. package/dist/animator/createAnimator.d.ts +98 -0
  307. package/dist/animator/createAnimator.d.ts.map +1 -0
  308. package/dist/animator/createAnimator.js +259 -0
  309. package/dist/astryx.css +53 -8
  310. package/dist/gestures/GestureHost.d.ts +16 -1
  311. package/dist/gestures/GestureHost.d.ts.map +1 -1
  312. package/dist/gestures/GestureHost.js +4 -1
  313. package/dist/gestures/PressTracker.d.ts.map +1 -1
  314. package/dist/gestures/PressTracker.js +4 -3
  315. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  316. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  317. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  318. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  319. package/dist/hooks/actionGroupTracker.js +18 -7
  320. package/dist/hooks/index.d.ts +1 -0
  321. package/dist/hooks/index.d.ts.map +1 -1
  322. package/dist/hooks/index.js +1 -0
  323. package/dist/hooks/longPressDetector.d.ts +66 -0
  324. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  325. package/dist/hooks/longPressDetector.js +200 -0
  326. package/dist/hooks/pressGroupContext.d.ts +6 -0
  327. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  328. package/dist/hooks/pressGroupContext.js +20 -0
  329. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  330. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  331. package/dist/hooks/rootScrollStyles.js +207 -0
  332. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  333. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  334. package/dist/hooks/scrollLockTouchGuard.js +117 -0
  335. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  336. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  337. package/dist/hooks/scrollbarGutter.js +36 -23
  338. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  339. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  340. package/dist/hooks/useActionGroupTracking.js +174 -0
  341. package/dist/hooks/useAnimator.d.ts +41 -0
  342. package/dist/hooks/useAnimator.d.ts.map +1 -0
  343. package/dist/hooks/useAnimator.js +70 -0
  344. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  345. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  346. package/dist/hooks/useAttachment.d.ts +1 -1
  347. package/dist/hooks/useAttachment.js +1 -1
  348. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  349. package/dist/hooks/useAutoMediaMode.js +1 -0
  350. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  351. package/dist/hooks/useBusyAnnouncement.js +2 -0
  352. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  353. package/dist/hooks/useDevWarning.js +2 -0
  354. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  355. package/dist/hooks/useFocusTrap.js +2 -0
  356. package/dist/hooks/useGridFocus.d.ts +8 -5
  357. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  358. package/dist/hooks/useGridFocus.js +4 -3
  359. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  360. package/dist/hooks/useHotkeys.js +3 -0
  361. package/dist/hooks/useImageMode.d.ts.map +1 -1
  362. package/dist/hooks/useImageMode.js +3 -0
  363. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  364. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  365. package/dist/hooks/useInputStatusIcon.js +2 -2
  366. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  367. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  368. package/dist/hooks/useKeyboardHint.js +1 -1
  369. package/dist/hooks/useLongPress.d.ts +8 -9
  370. package/dist/hooks/useLongPress.d.ts.map +1 -1
  371. package/dist/hooks/useLongPress.js +23 -106
  372. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  373. package/dist/hooks/useMenuHover.js +2 -0
  374. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  375. package/dist/hooks/useMenuPress.js +3 -0
  376. package/dist/hooks/useOverflow.d.ts.map +1 -1
  377. package/dist/hooks/useOverflow.js +2 -1
  378. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  379. package/dist/hooks/usePressFeedback.js +1 -0
  380. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  381. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  382. package/dist/hooks/useResolvedRequired.js +3 -0
  383. package/dist/hooks/useScrollLock.d.ts +8 -9
  384. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  385. package/dist/hooks/useScrollLock.js +50 -48
  386. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  387. package/dist/hooks/useScrollableArea.js +5 -0
  388. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  389. package/dist/hooks/useStreamingText.js +3 -0
  390. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  391. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  392. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +45 -0
  393. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  394. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  395. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  396. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  397. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  398. package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts +8 -0
  399. package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
  400. package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
  401. package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
  402. package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
  403. package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
  404. package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
  405. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
  406. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
  407. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
  408. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  409. package/dist/i18n/generated-locales/en.generated.js +37 -0
  410. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  411. package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
  412. package/dist/index.d.ts +1 -0
  413. package/dist/index.d.ts.map +1 -1
  414. package/dist/index.js +4 -0
  415. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  416. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  417. package/dist/internal/indicatorPress.stylex.js +26 -0
  418. package/dist/internal/selectable-card.d.ts +21 -0
  419. package/dist/internal/selectable-card.d.ts.map +1 -0
  420. package/dist/internal/selectable-card.js +20 -0
  421. package/dist/internal/sheetDraft.d.ts +2 -2
  422. package/dist/internal/sheetDraft.js +2 -2
  423. package/dist/keyboard/index.d.ts +17 -0
  424. package/dist/keyboard/index.d.ts.map +1 -0
  425. package/dist/keyboard/index.js +19 -0
  426. package/dist/keyboard/keyboardHeight.d.ts +149 -0
  427. package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
  428. package/dist/keyboard/keyboardHeight.js +432 -0
  429. package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
  430. package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
  431. package/dist/keyboard/keyboardLayoutGuide.js +207 -0
  432. package/dist/keyboard/keyboardModel.d.ts +93 -0
  433. package/dist/keyboard/keyboardModel.d.ts.map +1 -0
  434. package/dist/keyboard/keyboardModel.js +220 -0
  435. package/dist/keyboard/rideKeyboard.d.ts +42 -0
  436. package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
  437. package/dist/keyboard/rideKeyboard.js +77 -0
  438. package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
  439. package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
  440. package/dist/keyboard/useMobileKeyboard.js +699 -0
  441. package/dist/motion/android/index.d.ts +16 -0
  442. package/dist/motion/android/index.d.ts.map +1 -0
  443. package/dist/motion/android/index.js +18 -0
  444. package/dist/motion/android/keyboard.d.ts +83 -0
  445. package/dist/motion/android/keyboard.d.ts.map +1 -0
  446. package/dist/motion/android/keyboard.js +96 -0
  447. package/dist/motion/animatedLayout.d.ts +8 -0
  448. package/dist/motion/animatedLayout.d.ts.map +1 -1
  449. package/dist/motion/animatedLayout.js +246 -53
  450. package/dist/motion/animator.d.ts +14 -14
  451. package/dist/motion/animator.d.ts.map +1 -1
  452. package/dist/motion/animator.js +45 -26
  453. package/dist/motion/frameBlock.d.ts +14 -0
  454. package/dist/motion/frameBlock.d.ts.map +1 -0
  455. package/dist/motion/frameBlock.js +16 -0
  456. package/dist/motion/progress.d.ts +88 -0
  457. package/dist/motion/progress.d.ts.map +1 -0
  458. package/dist/motion/progress.js +128 -0
  459. package/dist/motion/reducedMotion.d.ts.map +1 -1
  460. package/dist/motion/reducedMotion.js +3 -1
  461. package/dist/motion/uikit/alert.d.ts +41 -0
  462. package/dist/motion/uikit/alert.d.ts.map +1 -0
  463. package/dist/motion/uikit/alert.js +43 -0
  464. package/dist/motion/uikit/datePicker.d.ts +58 -0
  465. package/dist/motion/uikit/datePicker.d.ts.map +1 -0
  466. package/dist/motion/uikit/datePicker.js +60 -0
  467. package/dist/motion/uikit/index.d.ts +6 -4
  468. package/dist/motion/uikit/index.d.ts.map +1 -1
  469. package/dist/motion/uikit/index.js +6 -4
  470. package/dist/motion/uikit/picker.d.ts +96 -0
  471. package/dist/motion/uikit/picker.d.ts.map +1 -0
  472. package/dist/motion/uikit/picker.js +117 -0
  473. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  474. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  475. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  476. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  477. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  478. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  479. package/dist/theme/Theme.d.ts.map +1 -1
  480. package/dist/theme/Theme.js +29 -4
  481. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  482. package/dist/theme/generateThemeRules.js +14 -13
  483. package/dist/theme/motionKnobs.d.ts +4 -3
  484. package/dist/theme/motionKnobs.d.ts.map +1 -1
  485. package/dist/theme/motionKnobs.js +3 -2
  486. package/dist/theme/themeMotion.d.ts +6 -0
  487. package/dist/theme/themeMotion.d.ts.map +1 -1
  488. package/dist/theme/themeMotion.js +15 -2
  489. package/dist/theme/tokens.stylex.d.ts +3 -0
  490. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  491. package/dist/theme/tokens.stylex.js +4 -1
  492. package/dist/utils/dateParser.d.ts.map +1 -1
  493. package/dist/utils/dateParser.js +12 -0
  494. package/dist/utils/disabledInteraction.d.ts +10 -2
  495. package/dist/utils/disabledInteraction.d.ts.map +1 -1
  496. package/dist/utils/disabledInteraction.js +16 -2
  497. package/dist/utils/focusReturn.d.ts +22 -25
  498. package/dist/utils/focusReturn.d.ts.map +1 -1
  499. package/dist/utils/focusReturn.js +36 -29
  500. package/dist/utils/index.d.ts +1 -1
  501. package/dist/utils/index.d.ts.map +1 -1
  502. package/dist/utils/index.js +1 -1
  503. package/dist/utils/interactionModality.d.ts.map +1 -1
  504. package/dist/utils/interactionModality.js +4 -0
  505. package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
  506. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  507. package/dist/utils/interactionOverlay.stylex.js +6 -4
  508. package/dist/utils/isFocusDetached.d.ts +27 -0
  509. package/dist/utils/isFocusDetached.d.ts.map +1 -0
  510. package/dist/utils/isFocusDetached.js +32 -0
  511. package/dist/utils/layoutViewport.d.ts +25 -0
  512. package/dist/utils/layoutViewport.d.ts.map +1 -0
  513. package/dist/utils/layoutViewport.js +102 -0
  514. package/dist/utils/plainDate.d.ts +31 -0
  515. package/dist/utils/plainDate.d.ts.map +1 -1
  516. package/dist/utils/plainDate.js +68 -4
  517. package/dist/utils/pressFeedback.d.ts +6 -0
  518. package/dist/utils/pressFeedback.d.ts.map +1 -1
  519. package/dist/utils/pressFeedback.js +97 -18
  520. package/dist/utils/pressGesture.d.ts +4 -2
  521. package/dist/utils/pressGesture.d.ts.map +1 -1
  522. package/dist/utils/pressGesture.js +3 -1
  523. package/dist/utils/selectionLock.d.ts +10 -1
  524. package/dist/utils/selectionLock.d.ts.map +1 -1
  525. package/dist/utils/selectionLock.js +31 -5
  526. package/dist/utils/sharedMutationObserver.d.ts +2 -1
  527. package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
  528. package/dist/utils/sharedMutationObserver.js +2 -1
  529. package/dist/utils/timeParser.d.ts +2 -1
  530. package/dist/utils/timeParser.d.ts.map +1 -1
  531. package/dist/utils/timeParser.js +29 -3
  532. package/dist/utils/triggerFocus.d.ts +36 -0
  533. package/dist/utils/triggerFocus.d.ts.map +1 -0
  534. package/dist/utils/triggerFocus.js +65 -0
  535. package/locales/en.json +148 -0
  536. package/locales/pseudo.json +111 -0
  537. package/package.json +14 -9
  538. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  539. package/src/AlertDialog/AlertDialog.tsx +46 -5
  540. package/src/AppShell/AppShell.tsx +13 -4
  541. package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
  542. package/src/BottomSheet/BottomSheet.tsx +1 -0
  543. package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
  544. package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
  545. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  546. package/src/BottomSheet/bottomSheetStack.ts +1 -1
  547. package/src/BottomSheet/useSheetGestures.ts +16 -1
  548. package/src/Button/Button.tsx +26 -4
  549. package/src/Calendar/Calendar.tsx +40 -32
  550. package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
  551. package/src/Calendar/hooks/useCalendarDays.ts +5 -10
  552. package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
  553. package/src/Carousel/Carousel.tsx +1 -0
  554. package/src/Chat/ChatComposerInput.tsx +4 -7
  555. package/src/Chat/ChatMessageList.tsx +2 -1
  556. package/src/Chat/useChatDictation.ts +1 -0
  557. package/src/Chat/useChatNewMessages.ts +1 -1
  558. package/src/Chat/useChatStreamScroll.ts +2 -0
  559. package/src/Chat/useSpeechRecognition.ts +2 -0
  560. package/src/Chat/useTriggerMenu.tsx +1 -1
  561. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  562. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  563. package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
  564. package/src/CheckboxList/CheckboxList.tsx +43 -2
  565. package/src/CheckboxList/CheckboxListContext.tsx +9 -1
  566. package/src/CheckboxList/CheckboxListItem.tsx +23 -2
  567. package/src/CheckboxList/requiredGroup.ts +77 -0
  568. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  569. package/src/CodeBlock/CodeBlock.tsx +41 -4
  570. package/src/CommandPalette/CommandPalette.tsx +1 -0
  571. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  572. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  573. package/src/ContextMenu/ContextMenu.tsx +2 -2
  574. package/src/DateInput/MonthScroller.tsx +8 -2
  575. package/src/DateInput/PickerWheel.tsx +796 -0
  576. package/src/DateInput/TouchDateField.tsx +6 -32
  577. package/src/DateInput/Wheel.tsx +188 -171
  578. package/src/DateInput/datePickerTouch.ts +15 -0
  579. package/src/DateInput/useOwnScrollGesture.ts +25 -3
  580. package/src/DateInput/usePointerDragScroll.ts +1 -0
  581. package/src/DateInput/useScrollSettle.ts +2 -0
  582. package/src/DateInput/useWheelListbox.ts +112 -0
  583. package/src/DateInput/wheelOptions.ts +184 -0
  584. package/src/DateInput/wheelPhysics.ts +406 -0
  585. package/src/DateInput/wheelStrip.ts +341 -0
  586. package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
  587. package/src/Dialog/Dialog.tsx +12 -32
  588. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  589. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  590. package/src/Field/Field.tsx +2 -2
  591. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  592. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  593. package/src/FormLayout/FormLayout.tsx +5 -1
  594. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  595. package/src/HoverCard/HoverCard.tsx +58 -6
  596. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  597. package/src/HoverCard/useHoverCard.tsx +55 -55
  598. package/src/Icon/Icon.doc.mjs +51 -10
  599. package/src/Icon/Icon.tsx +31 -8
  600. package/src/IconButton/IconButton.doc.mjs +141 -21
  601. package/src/InfoTip/InfoTip.tsx +72 -16
  602. package/src/Item/useSwipeAction.ts +2 -0
  603. package/src/Layer/modalOutlet.ts +2 -0
  604. package/src/Layer/outsidePress.ts +1 -0
  605. package/src/Layer/useLayer.tsx +3 -1
  606. package/src/Layer/useLayerDismissal.ts +2 -0
  607. package/src/Layer/useTouchTrigger.ts +19 -6
  608. package/src/Layout/index.ts +1 -1
  609. package/src/Layout/layoutReset.ts +1 -1
  610. package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
  611. package/src/Layout/padding.stylex.ts +9 -133
  612. package/src/Layout/paddingStyles.stylex.ts +87 -0
  613. package/src/Lightbox/Lightbox.tsx +20 -1
  614. package/src/Lightbox/useLightbox.doc.mjs +167 -0
  615. package/src/MobileNav/MobileNav.tsx +10 -31
  616. package/src/MultiSelector/MultiSelector.tsx +2 -7
  617. package/src/NumberInput/NumberInput.tsx +2 -7
  618. package/src/Outline/useOutlineFromDOM.ts +2 -0
  619. package/src/Outline/useScrollSpy.ts +2 -0
  620. package/src/OverflowList/OverflowList.tsx +2 -0
  621. package/src/Overlay/Overlay.tsx +7 -2
  622. package/src/Popover/Popover.tsx +4 -0
  623. package/src/Popover/usePopover.tsx +2 -2
  624. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  625. package/src/PowerSearch/PowerSearch.tsx +622 -157
  626. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
  627. package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
  628. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  629. package/src/PowerSearch/PowerSearchToken.tsx +2 -0
  630. package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
  631. package/src/PowerSearch/formatFilterValue.ts +49 -27
  632. package/src/PowerSearch/formatTokenValue.ts +220 -0
  633. package/src/PowerSearch/index.ts +5 -1
  634. package/src/PowerSearch/powerSearchDateZone.ts +95 -0
  635. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  636. package/src/PowerSearch/types.ts +8 -1
  637. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  638. package/src/RadioList/RadioList.tsx +3 -2
  639. package/src/RadioList/RadioListItem.tsx +5 -3
  640. package/src/Resizable/Resizable.doc.mjs +5 -4
  641. package/src/Resizable/ResizeHandle.tsx +187 -135
  642. package/src/Resizable/createResizable.ts +1046 -0
  643. package/src/Resizable/separatorAttributes.ts +73 -0
  644. package/src/Resizable/useResizable.ts +292 -623
  645. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  646. package/src/SelectableCard/SelectableCard.tsx +39 -10
  647. package/src/SelectableCard/selectableCardInput.ts +30 -0
  648. package/src/Selector/Selector.tsx +7 -19
  649. package/src/SideNav/SideNav.tsx +41 -5
  650. package/src/Slider/Slider.tsx +20 -11
  651. package/src/Slider/sliderTouchController.ts +2 -2
  652. package/src/Spinner/Spinner.tsx +77 -63
  653. package/src/Stepper/Stepper.tsx +10 -27
  654. package/src/Switch/Switch.tsx +2 -6
  655. package/src/Switch/useSwitchTouch.ts +4 -4
  656. package/src/Table/BaseTable.tsx +46 -12
  657. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  658. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  659. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
  660. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  661. package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
  662. package/src/Table/useTableRowExpansion.doc.mjs +9 -0
  663. package/src/Table/useTableTreeData.doc.mjs +15 -3
  664. package/src/TextArea/TextArea.tsx +2 -7
  665. package/src/TextInput/TextInput.tsx +13 -17
  666. package/src/TimeInput/TimeInput.tsx +2 -0
  667. package/src/TimeInput/TimeWheels.tsx +218 -0
  668. package/src/TimeInput/TouchTimeField.tsx +93 -155
  669. package/src/TimeInput/timeWheelRules.ts +352 -0
  670. package/src/Timer/Timer.tsx +1 -0
  671. package/src/Timestamp/Timestamp.tsx +1 -1
  672. package/src/Timestamp/formatInstant.ts +1 -33
  673. package/src/Toast/Toast.doc.mjs +4 -3
  674. package/src/Toast/Toast.tsx +52 -32
  675. package/src/Toast/ToastViewport.tsx +123 -35
  676. package/src/Toast/types.ts +9 -3
  677. package/src/Toast/useToast.tsx +1 -0
  678. package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
  679. package/src/Tokenizer/Tokenizer.tsx +61 -62
  680. package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
  681. package/src/Tokenizer/index.ts +1 -0
  682. package/src/Tooltip/Tooltip.tsx +6 -42
  683. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  684. package/src/Tooltip/useTooltip.tsx +243 -134
  685. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  686. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  687. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  688. package/src/animator/createAnimator.doc.mjs +153 -0
  689. package/src/animator/createAnimator.ts +324 -0
  690. package/src/gestures/GestureHost.ts +6 -5
  691. package/src/gestures/PressTracker.ts +4 -3
  692. package/src/gestures/README.md +10 -4
  693. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  694. package/src/hooks/actionGroupTracker.ts +25 -9
  695. package/src/hooks/index.ts +2 -0
  696. package/src/hooks/longPressDetector.ts +273 -0
  697. package/src/hooks/pressGroupContext.ts +21 -0
  698. package/src/hooks/rootScrollStyles.ts +247 -0
  699. package/src/hooks/scrollLockTouchGuard.ts +149 -0
  700. package/src/hooks/scrollbarGutter.ts +41 -26
  701. package/src/hooks/useActionGroupTracking.ts +224 -0
  702. package/src/hooks/useAnimator.doc.mjs +109 -0
  703. package/src/hooks/useAnimator.ts +67 -0
  704. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  705. package/src/hooks/useAttachment.ts +1 -1
  706. package/src/hooks/useAutoMediaMode.ts +1 -0
  707. package/src/hooks/useBusyAnnouncement.ts +2 -0
  708. package/src/hooks/useDevWarning.ts +2 -0
  709. package/src/hooks/useFocusTrap.ts +2 -0
  710. package/src/hooks/useGridFocus.doc.mjs +6 -6
  711. package/src/hooks/useGridFocus.ts +10 -7
  712. package/src/hooks/useHotkeys.ts +2 -0
  713. package/src/hooks/useImageMode.ts +2 -0
  714. package/src/hooks/useInputStatusIcon.tsx +3 -2
  715. package/src/hooks/useKeyboardHint.tsx +1 -1
  716. package/src/hooks/useLongPress.doc.mjs +2 -2
  717. package/src/hooks/useLongPress.ts +32 -122
  718. package/src/hooks/useMenuHover.ts +1 -0
  719. package/src/hooks/useMenuPress.ts +2 -0
  720. package/src/hooks/useOverflow.ts +2 -1
  721. package/src/hooks/usePressFeedback.ts +1 -0
  722. package/src/hooks/useResolvedRequired.ts +3 -0
  723. package/src/hooks/useScrollLock.doc.mjs +51 -12
  724. package/src/hooks/useScrollLock.ts +53 -60
  725. package/src/hooks/useScrollableArea.ts +4 -0
  726. package/src/hooks/useStreamingText.ts +2 -0
  727. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -0
  728. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  729. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  730. package/src/i18n/generated-english/Resizable/createResizable.generated.ts +14 -0
  731. package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
  732. package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
  733. package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
  734. package/src/i18n/generated-locales/en.generated.ts +47 -0
  735. package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
  736. package/src/index.ts +13 -0
  737. package/src/internal/indicatorPress.stylex.ts +24 -0
  738. package/src/internal/selectable-card.ts +21 -0
  739. package/src/internal/sheetDraft.ts +2 -2
  740. package/src/keyboard/README.md +197 -0
  741. package/src/keyboard/index.ts +48 -0
  742. package/src/keyboard/keyboardHeight.ts +543 -0
  743. package/src/keyboard/keyboardLayoutGuide.ts +266 -0
  744. package/src/keyboard/keyboardModel.ts +301 -0
  745. package/src/keyboard/rideKeyboard.ts +100 -0
  746. package/src/keyboard/useMobileKeyboard.ts +866 -0
  747. package/src/motion/MEASUREMENTS.md +28 -0
  748. package/src/motion/README.md +12 -5
  749. package/src/motion/android/index.ts +18 -0
  750. package/src/motion/android/keyboard.ts +96 -0
  751. package/src/motion/animatedLayout.ts +323 -60
  752. package/src/motion/animator.ts +66 -37
  753. package/src/motion/frameBlock.ts +16 -0
  754. package/src/motion/progress.ts +155 -0
  755. package/src/motion/reducedMotion.ts +3 -1
  756. package/src/motion/uikit/alert.ts +43 -0
  757. package/src/motion/uikit/datePicker.ts +60 -0
  758. package/src/motion/uikit/index.ts +6 -4
  759. package/src/motion/uikit/picker.ts +116 -0
  760. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  761. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  762. package/src/theme/Theme.tsx +37 -3
  763. package/src/theme/generateThemeRules.ts +14 -12
  764. package/src/theme/motionKnobs.ts +4 -3
  765. package/src/theme/themeMotion.ts +17 -2
  766. package/src/theme/tokens.stylex.ts +2 -0
  767. package/src/utils/dateParser.ts +16 -0
  768. package/src/utils/disabledInteraction.ts +23 -2
  769. package/src/utils/focusReturn.ts +38 -31
  770. package/src/utils/index.ts +1 -1
  771. package/src/utils/interactionModality.ts +4 -0
  772. package/src/utils/interactionOverlay.stylex.ts +6 -4
  773. package/src/utils/isFocusDetached.ts +34 -0
  774. package/src/utils/layoutViewport.ts +104 -0
  775. package/src/utils/plainDate.ts +80 -4
  776. package/src/utils/pressFeedback.ts +126 -30
  777. package/src/utils/pressGesture.ts +4 -2
  778. package/src/utils/selectionLock.ts +40 -6
  779. package/src/utils/sharedMutationObserver.ts +2 -1
  780. package/src/utils/timeParser.ts +40 -3
  781. package/src/utils/triggerFocus.ts +80 -0
  782. package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
  783. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
  784. package/dist/BottomSheet/useMobileKeyboard.js +0 -407
  785. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
  786. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
  787. package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
  788. package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
  789. package/dist/Layer/usePressPin.d.ts +0 -93
  790. package/dist/Layer/usePressPin.d.ts.map +0 -1
  791. package/dist/Layer/usePressPin.js +0 -363
  792. package/dist/internal/touch-sheet.d.ts +0 -21
  793. package/dist/internal/touch-sheet.d.ts.map +0 -1
  794. package/dist/internal/touch-sheet.js +0 -19
  795. package/src/BottomSheet/useMobileKeyboard.ts +0 -538
  796. package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
  797. package/src/Layer/usePressPin.ts +0 -510
  798. package/src/internal/touch-sheet.ts +0 -21
@@ -3,15 +3,16 @@
3
3
  /**
4
4
  * @file animatedLayout.ts
5
5
  * @input The DOM (layout rectangles, computed style), Web Animations, the
6
- * internal `springs.settle` motion role (motion/roles.ts) and the Reduce Motion
7
- * cross-fade clock (uikit/timing.ts)
8
- * @output Exports `createAnimatedLayout` and the opaque `AnimatedLayout`
9
- * handle, `reportLayoutChange`, `playLayoutChange`, `holdLayoutExit` /
10
- * `releaseLayoutExit`, the in-place swap (`holdLayoutSwap` /
11
- * `playLayoutSwap`), the edge reveal's two-state form (`holdLayoutEdge` /
12
- * `playLayoutEdge`), `playLayoutFrames` and `applyLayoutChangeTransition`:
13
- * the one module that produces the size-change glide and the edge reveal
14
- * `spec:AST-105` defines (`architecture:react-component-runtime` INV12)
6
+ * internal `springs.settle` motion role (motion/roles.ts), the Reduce Motion
7
+ * cross-fade clock (uikit/timing.ts) and the block measure (frameBlock.ts)
8
+ * @output Exports `createAnimatedLayout`, the opaque `AnimatedLayout` handle,
9
+ * `reportLayoutChange`, `playLayoutChange` and `layoutStartFor`. It also
10
+ * exports the exit hold (`holdLayoutExit`, `releaseLayoutExit`), the
11
+ * in-place swap (`holdLayoutSwap`, `playLayoutSwap`), the edge reveal's
12
+ * two-state form (`holdLayoutEdge`, `playLayoutEdge`), `playLayoutFrames`
13
+ * and `applyLayoutChangeTransition`. It is the one module that produces the
14
+ * size-change glide and the edge reveal `spec:AST-105` defines
15
+ * (`architecture:react-component-runtime` INV12)
15
16
  * @position Motion foundation, internal to core. A handle comes from the
16
17
  * public `useAnimatedLayout` hook; a component that takes it reports its
17
18
  * size changes through this module.
@@ -79,6 +80,7 @@
79
80
  * (`spec:AST-105` FR2).
80
81
  */
81
82
 
83
+ import {LATE_START_MS} from './frameBlock';
82
84
  import {motionRole} from './roles';
83
85
  import {
84
86
  inertCopy,
@@ -89,8 +91,10 @@ import {
89
91
  wrapText,
90
92
  } from './transientCopy';
91
93
  import {isSpring} from './roleValue';
92
- import {solveSpring, toSpring, type SpringDescription} from './spring';
94
+ import {progressCurve} from './progress';
95
+ import type {SpringDescription} from './spring';
93
96
  import {registerSpringsTable, SETTLE_SPRING} from './uikit/springs';
97
+ import {themeReducesMotion} from '../privateAttributes/reducedMotion.stylex';
94
98
  import {reducedMotionCrossFade} from './uikit/timing';
95
99
 
96
100
  /** The shared motion role (`spec:AST-105` FR4). */
@@ -142,17 +146,20 @@ function settleSpring(): SpringDescription {
142
146
  }
143
147
 
144
148
  function springProgress(description: SpringDescription): SpringProgress {
145
- const curve = solveSpring(toSpring(description), {from: 1, to: 0});
146
- const durationMs = Math.max(1, curve.settleTime(0.001) * 1000);
149
+ const curve = progressCurve(description, {epsilon: 0.001});
150
+ const durationMs = Math.max(1, curve.duration * 1000);
147
151
  return {
148
152
  durationMs,
149
- remaining: t => (t >= durationMs ? 0 : curve.value(t / 1000)),
153
+ remaining: t => (t >= durationMs ? 0 : 1 - curve.at(t / 1000)),
150
154
  };
151
155
  }
152
156
 
153
157
  /** The motion a change in `area` plays now. */
154
158
  function layoutMotion(area: Element): LayoutMotion {
155
- if (matches(area, '(prefers-reduced-motion: reduce)')) {
159
+ if (
160
+ matches(area, '(prefers-reduced-motion: reduce)') ||
161
+ themeReducesMotion(area)
162
+ ) {
156
163
  if (!matches(area, '(pointer: coarse)')) {
157
164
  return {kind: 'instant'};
158
165
  }
@@ -223,6 +230,7 @@ function safeAnimate(
223
230
  element: Element,
224
231
  keyframes: Keyframe[],
225
232
  options: KeyframeAnimationOptions,
233
+ change?: ChangeStart,
226
234
  ): Animation | null {
227
235
  if (typeof (element as HTMLElement).animate !== 'function') {
228
236
  return null;
@@ -234,16 +242,152 @@ function safeAnimate(
234
242
  return null;
235
243
  }
236
244
  ours.add(animation);
237
- // Started on the document timeline's current time, not on the next frame:
238
- // a retargeted glide keeps moving through the frame it is replaced in, and
239
- // every animation of one change shares the same start.
240
- const now = element.ownerDocument.timeline?.currentTime;
245
+ // The animation starts on the document timeline's current time, not on the
246
+ // next frame. So a retargeted glide keeps moving through the frame it is
247
+ // replaced in. After a block since that frame, Chromium's timeline still
248
+ // reads the frame before the block. A motion started there would skip into
249
+ // its curve, or past all of it. So it starts at the moment of the change
250
+ // instead, and the block delays the motion (startFor). Every animation of
251
+ // one change, in one document, shares that start.
252
+ const doc = element.ownerDocument;
253
+ const now = doc.timeline?.currentTime;
241
254
  if (now != null) {
242
- animation.startTime = now;
255
+ // The start of the change it is part of, captured when that change made
256
+ // its first animation (changeStartOf); otherwise the document's.
257
+ const start =
258
+ change != null && change.frame === Number(now)
259
+ ? change
260
+ : startFor(doc, Number(now));
261
+ start.last = clockOf(doc);
262
+ animation.startTime = start.at;
263
+ if (start.at !== Number(now)) {
264
+ // Started after the frame time the timeline still reads: until the
265
+ // timeline gets there it shows its first keyframe, not the element at
266
+ // rest.
267
+ const fill = animation.effect?.getTiming().fill;
268
+ animation.effect?.updateTiming({
269
+ fill: fill === 'forwards' || fill === 'both' ? 'both' : 'backwards',
270
+ });
271
+ }
243
272
  }
244
273
  return animation;
245
274
  }
246
275
 
276
+ /**
277
+ * The start a change's animations share. It is the timeline's frame time,
278
+ * unless a block ran more than LATE_START_MS past that frame before the first
279
+ * of them was made. Then they start at the moment the first of them is made.
280
+ * The frame time is from before the block, so a motion started on it would
281
+ * skip into its curve, or past all of it. Chromium holds the timeline at the
282
+ * frame before a long task once anything in the task reads it.
283
+ */
284
+ interface ChangeStart {
285
+ /** The frame time the timeline read. */
286
+ readonly frame: number;
287
+ /** When the change's animations start. */
288
+ readonly at: number;
289
+ /** When the last of them was made, on the document's clock. */
290
+ last: number;
291
+ }
292
+
293
+ /**
294
+ * Each document's change start: an iframe or a Picture-in-Picture window
295
+ * keeps its own clock, with its own origin and frames.
296
+ */
297
+ const changeStarts = new WeakMap<Document, ChangeStart>();
298
+
299
+ /** The clock of the document whose timeline a start is read on. */
300
+ function clockOf(doc: Document): number {
301
+ return (doc.defaultView?.performance ?? performance).now();
302
+ }
303
+
304
+ /**
305
+ * The start the current change's animations share. A change keeps one start
306
+ * from its first animation through the flush of its glides and the parts that
307
+ * ride them. That holds however long the work between them runs, such as the
308
+ * rest of a commit or a slow swap. The start holds while the timeline reads
309
+ * the same frame: through the task that made it and the microtasks after it.
310
+ * A change that begins after a block takes a start of its own (beginChange).
311
+ */
312
+ function startFor(doc: Document, frame: number): ChangeStart {
313
+ const now = clockOf(doc);
314
+ const held = changeStarts.get(doc);
315
+ if (held != null && held.frame === frame) {
316
+ held.last = now;
317
+ return held;
318
+ }
319
+ const start: ChangeStart = {
320
+ frame,
321
+ at: now - frame <= LATE_START_MS ? frame : now,
322
+ last: now,
323
+ };
324
+ changeStarts.set(doc, start);
325
+ // Let go in a later task: every microtask of this one, where the glides
326
+ // flush and the parts riding them play, has run by then.
327
+ const view = doc.defaultView;
328
+ (view?.setTimeout ?? setTimeout)(() => {
329
+ if (changeStarts.get(doc) === start) {
330
+ changeStarts.delete(doc);
331
+ }
332
+ }, 0);
333
+ return start;
334
+ }
335
+
336
+ /**
337
+ * A change begins as its "before" is read. After a block since the last
338
+ * animation of the change before it, it takes a start of its own. So a change
339
+ * made after a block that follows an earlier layout motion still plays.
340
+ * Changes made together, with no block between them, share one start.
341
+ */
342
+ function beginChange(doc: Document): void {
343
+ const held = changeStarts.get(doc);
344
+ if (held != null && clockOf(doc) - held.last > LATE_START_MS) {
345
+ changeStarts.delete(doc);
346
+ }
347
+ }
348
+
349
+ /**
350
+ * When the animations of the layout change being made start. Code that
351
+ * follows the change on its own clock reads it, such as a rail's width or a
352
+ * swap's fade. It is the document timeline's current time. After a block
353
+ * since that frame, it is the moment the change made its first animation.
354
+ * Until the timeline reaches it, the change has not started.
355
+ */
356
+ export function layoutStartFor(document: Document): number {
357
+ const now = document.timeline?.currentTime;
358
+ return now == null ? 0 : startFor(document, Number(now)).at;
359
+ }
360
+
361
+ /**
362
+ * Where `element` shows at the timeline's time `at`: its layout box, moved by
363
+ * its glide's offset then. After a block, WebKit evaluates a running
364
+ * translate on the live clock. The timeline still reads the frame before the
365
+ * block, as every glide here does, so the evaluated box would sit ahead.
366
+ * Glides write px; a translate in percent is not ours, so the box stays.
367
+ */
368
+ function shownBoxAt(element: Element, at: number): DOMRect {
369
+ const box = element.getBoundingClientRect();
370
+ const glide = glides.get(element);
371
+ const startTime = glide?.animation.startTime;
372
+ if (glide == null || startTime == null) {
373
+ return box;
374
+ }
375
+ const translate =
376
+ element.ownerDocument.defaultView?.getComputedStyle(element).translate ??
377
+ '';
378
+ if (translate.includes('%')) {
379
+ return box;
380
+ }
381
+ const [appliedX = 0, appliedY = 0] = numbersIn(translate);
382
+ const offset = glide.offsetAt(Math.max(0, at - Number(startTime)));
383
+ return new DOMRect(
384
+ box.x + (offset.x - appliedX) * glide.scale.x,
385
+ box.y + (offset.y - appliedY) * glide.scale.y,
386
+ box.width,
387
+ box.height,
388
+ );
389
+ }
390
+
247
391
  /** Every animation this module started, so it can tell the app's apart. */
248
392
  const ours = new WeakSet<Animation>();
249
393
 
@@ -373,6 +517,13 @@ interface Glide {
373
517
  readonly animation: Animation;
374
518
  readonly offsetAt: OffsetCurve;
375
519
  readonly durationMs: number;
520
+ /**
521
+ * The offset where the element showed when its old place was read. After a
522
+ * block the glide starts further on, where the compositor has it.
523
+ */
524
+ readonly shownBefore: {readonly x: number; readonly y: number};
525
+ /** Its ancestors' scale: page px per px of its own offset. */
526
+ readonly scale: {readonly x: number; readonly y: number};
376
527
  }
377
528
 
378
529
  const glides = new WeakMap<Element, Glide>();
@@ -818,6 +969,12 @@ interface Batch {
818
969
  scheduled: boolean;
819
970
  /** Called after every reading and before any glide starts. */
820
971
  readonly beforeMove: ((candidates: ReadonlyArray<Element>) => void)[];
972
+ /**
973
+ * The start the change's animations share, taken by its first one: its
974
+ * entrance, or its glides at the flush. A change begun after a block,
975
+ * before this one flushes, takes its own and leaves this one's.
976
+ */
977
+ start: ChangeStart | null;
821
978
  }
822
979
 
823
980
  const batches = new Map<Element, Batch>();
@@ -840,6 +997,7 @@ function batchFor(area: Element): Batch {
840
997
  cache: {rects: new Map(), parts: new Map()},
841
998
  scheduled: false,
842
999
  beforeMove: [],
1000
+ start: null,
843
1001
  };
844
1002
  batches.set(area, created);
845
1003
  // A measurement no commit claims by the next frame (a controlled owner
@@ -861,6 +1019,39 @@ function batchFor(area: Element): Batch {
861
1019
  return batch;
862
1020
  }
863
1021
 
1022
+ /**
1023
+ * The start `batch`'s change shares: taken by its first animation, from the
1024
+ * document's (startFor), and kept with the batch through its flush.
1025
+ */
1026
+ function changeStartOf(batch: Batch): ChangeStart | undefined {
1027
+ const doc = batch.area.ownerDocument;
1028
+ const now = doc.timeline?.currentTime;
1029
+ if (now == null) {
1030
+ return undefined;
1031
+ }
1032
+ if (batch.start == null || batch.start.frame !== Number(now)) {
1033
+ batch.start = startFor(doc, Number(now));
1034
+ }
1035
+ return batch.start;
1036
+ }
1037
+
1038
+ /**
1039
+ * The start of the change being made in `area`, captured now for animations
1040
+ * made later in the task, such as the parts riding a glide. It is its batch's
1041
+ * when one is open there, otherwise the document's.
1042
+ */
1043
+ function changeStartIn(
1044
+ area: Element | null | undefined,
1045
+ doc: Document,
1046
+ ): ChangeStart | undefined {
1047
+ const batch = area == null ? undefined : batches.get(area);
1048
+ if (batch != null) {
1049
+ return changeStartOf(batch);
1050
+ }
1051
+ const now = doc.timeline?.currentTime;
1052
+ return now == null ? undefined : startFor(doc, Number(now));
1053
+ }
1054
+
864
1055
  function intersects(a: DOMRect, b: DOMRect): boolean {
865
1056
  return (
866
1057
  a.width > 0 &&
@@ -979,6 +1170,9 @@ function flush(batch: Batch): void {
979
1170
  notify([]);
980
1171
  return;
981
1172
  }
1173
+ // The change's own start, taken by its entrance when it played one, even
1174
+ // when another change has begun since.
1175
+ const change = changeStartOf(batch);
982
1176
  const visible = visibleRect(batch.area);
983
1177
  // Every running glide stops first and every new place is read before any
984
1178
  // glide starts, so no reading includes another's new motion.
@@ -987,6 +1181,8 @@ function flush(batch: Batch): void {
987
1181
  readonly before: DOMRect;
988
1182
  readonly carried: OffsetCurve;
989
1183
  readonly carriedMs: number;
1184
+ /** The running glide's offset inside `before`, read on the held frame. */
1185
+ readonly held: {readonly x: number; readonly y: number};
990
1186
  after?: DOMRect;
991
1187
  rawX?: number;
992
1188
  rawY?: number;
@@ -1008,17 +1204,28 @@ function flush(batch: Batch): void {
1008
1204
  const running = glides.get(element);
1009
1205
  let carried = AT_REST;
1010
1206
  let carriedMs = 0;
1207
+ let held = AT_REST(0);
1011
1208
  if (running != null) {
1012
1209
  const time = Number(running.animation.currentTime);
1013
1210
  const elapsed = Number.isFinite(time) ? Math.max(0, time) : 0;
1014
1211
  if (elapsed < running.durationMs) {
1015
- carried = t => running.offsetAt(elapsed + t);
1016
- carriedMs = running.durationMs - elapsed;
1212
+ held = running.offsetAt(elapsed);
1213
+ }
1214
+ // The new glide starts at the change's start. After a block, the
1215
+ // compositor kept this glide moving past the held frame until then.
1216
+ const {startTime} = running.animation;
1217
+ const shownAt =
1218
+ change != null && startTime != null
1219
+ ? Math.max(elapsed, change.at - Number(startTime))
1220
+ : elapsed;
1221
+ if (shownAt < running.durationMs) {
1222
+ carried = t => running.offsetAt(shownAt + t);
1223
+ carriedMs = running.durationMs - shownAt;
1017
1224
  }
1018
1225
  running.animation.cancel();
1019
1226
  glides.delete(element);
1020
1227
  }
1021
- entries.push({element, before, carried, carriedMs});
1228
+ entries.push({element, before, carried, carriedMs, held});
1022
1229
  }
1023
1230
  // Every reading (places, transforms, scales) before any glide starts: a
1024
1231
  // glide started between two readings would make the next one lay the page
@@ -1077,7 +1284,7 @@ function flush(batch: Batch): void {
1077
1284
  // An adopter's own readings join them here, before any glide starts.
1078
1285
  notify(entries.map(entry => entry.element));
1079
1286
  for (const entry of entries) {
1080
- const {element, before, carried, carriedMs} = entry;
1287
+ const {element, before, carried, carriedMs, held} = entry;
1081
1288
  const after = entry.after as DOMRect;
1082
1289
  // Nested changes compose: an element inside another moving element moves
1083
1290
  // only by its own change, whatever order the changes were reported in.
@@ -1103,10 +1310,12 @@ function flush(batch: Batch): void {
1103
1310
  continue;
1104
1311
  }
1105
1312
  if (motion.kind === 'fade') {
1106
- safeAnimate(element, [{opacity: 0}, {opacity: 1}], {
1107
- duration: motion.durationMs,
1108
- easing: motion.easing,
1109
- });
1313
+ safeAnimate(
1314
+ element,
1315
+ [{opacity: 0}, {opacity: 1}],
1316
+ {duration: motion.durationMs, easing: motion.easing},
1317
+ change,
1318
+ );
1110
1319
  continue;
1111
1320
  }
1112
1321
  if (entry.isMovedByApp === true) {
@@ -1114,12 +1323,11 @@ function flush(batch: Batch): void {
1114
1323
  // (`spec:AST-105` Coverage).
1115
1324
  continue;
1116
1325
  }
1117
- // Where it shows now, against its new place, in its own px; the part the
1118
- // carried glide does not cover is the new move.
1326
+ // Where it showed before the change, against its new place, in its own
1327
+ // px. The part the glide's offset then does not cover is the new move.
1119
1328
  const scale = entry.scale ?? {x: 1, y: 1};
1120
- const now = carried(0);
1121
- const moveX = dx / scale.x - now.x;
1122
- const moveY = dy / scale.y - now.y;
1329
+ const moveX = dx / scale.x - held.x;
1330
+ const moveY = dy / scale.y - held.y;
1123
1331
  const {progress} = motion;
1124
1332
  const offsetAt: OffsetCurve = t => {
1125
1333
  const remaining = progress.remaining(t);
@@ -1135,9 +1343,16 @@ function flush(batch: Batch): void {
1135
1343
  return {translate: `${offset.x}px ${offset.y}px`};
1136
1344
  }),
1137
1345
  {duration: durationMs, easing: 'linear'},
1346
+ change,
1138
1347
  );
1139
1348
  if (animation != null) {
1140
- const glide: Glide = {animation, offsetAt, durationMs};
1349
+ const glide: Glide = {
1350
+ animation,
1351
+ offsetAt,
1352
+ durationMs,
1353
+ shownBefore: {x: dx / scale.x, y: dy / scale.y},
1354
+ scale,
1355
+ };
1141
1356
  glides.set(element, glide);
1142
1357
  animation.addEventListener?.('finish', () => {
1143
1358
  if (glides.get(element) === glide) {
@@ -1191,6 +1406,7 @@ export function reportLayoutChange(
1191
1406
  if (area == null) {
1192
1407
  return;
1193
1408
  }
1409
+ beginChange(element.ownerDocument);
1194
1410
  const batch = batchFor(area);
1195
1411
  if (batch.changed.has(element)) {
1196
1412
  return;
@@ -1587,11 +1803,22 @@ export function playLayoutChange(
1587
1803
  return null;
1588
1804
  }
1589
1805
  const from = shownAtStart(element, 0);
1806
+ // The start of the change it enters with, which its glides then share.
1807
+ const batch = batches.get(area);
1808
+ const change =
1809
+ batch != null &&
1810
+ [...batch.changed].some(
1811
+ changed => changed === element || changed.contains(element),
1812
+ )
1813
+ ? changeStartOf(batch)
1814
+ : undefined;
1590
1815
  if (motion.kind === 'fade') {
1591
- return safeAnimate(element, [{opacity: from}, {opacity: 1}], {
1592
- duration: motion.durationMs,
1593
- easing: motion.easing,
1594
- });
1816
+ return safeAnimate(
1817
+ element,
1818
+ [{opacity: from}, {opacity: 1}],
1819
+ {duration: motion.durationMs, easing: motion.easing},
1820
+ change,
1821
+ );
1595
1822
  }
1596
1823
  const {progress} = motion;
1597
1824
  const rtl = edge.startsWith('inline') && isRtl(element);
@@ -1602,6 +1829,7 @@ export function playLayoutChange(
1602
1829
  return {opacity: 1 - hidden, clipPath: fractionClip(edge, hidden, rtl)};
1603
1830
  }),
1604
1831
  {duration: progress.durationMs, easing: 'linear'},
1832
+ change,
1605
1833
  );
1606
1834
  if (animation != null) {
1607
1835
  const tracked = trackEdgeMotion(
@@ -1884,13 +2112,16 @@ export function holdLayoutExit(
1884
2112
  // there.
1885
2113
  const from = shownAtStart(element, 1);
1886
2114
  const rtl = edge.startsWith('inline') && isRtl(element);
2115
+ // The start of the change it exits with, which its glides then share.
2116
+ const change = changeStartOf(batch);
1887
2117
  let animation: Animation | null;
1888
2118
  if (motion.kind === 'fade') {
1889
- animation = safeAnimate(element, [{opacity: from}, {opacity: 0}], {
1890
- duration: motion.durationMs,
1891
- easing: motion.easing,
1892
- fill: 'forwards',
1893
- });
2119
+ animation = safeAnimate(
2120
+ element,
2121
+ [{opacity: from}, {opacity: 0}],
2122
+ {duration: motion.durationMs, easing: motion.easing, fill: 'forwards'},
2123
+ change,
2124
+ );
1894
2125
  } else {
1895
2126
  const {progress} = motion;
1896
2127
  animation = safeAnimate(
@@ -1900,6 +2131,7 @@ export function holdLayoutExit(
1900
2131
  return {opacity: shown, clipPath: fractionClip(edge, 1 - shown, rtl)};
1901
2132
  }),
1902
2133
  {duration: progress.durationMs, easing: 'linear', fill: 'forwards'},
2134
+ change,
1903
2135
  );
1904
2136
  if (animation != null) {
1905
2137
  const tracked = trackEdgeMotion(
@@ -2041,6 +2273,7 @@ export function holdLayoutSwap(
2041
2273
  ) {
2042
2274
  return null;
2043
2275
  }
2276
+ beginChange(element.ownerDocument);
2044
2277
  const box = element.getBoundingClientRect();
2045
2278
  if (!isVisiblePart) {
2046
2279
  const copy = inertCopy(element);
@@ -2066,6 +2299,9 @@ export function playLayoutSwap(
2066
2299
  return () => {};
2067
2300
  }
2068
2301
  const {copy} = swap;
2302
+ // Captured now: the parts riding a glide play a microtask later, on the
2303
+ // start of the change they are part of.
2304
+ const change = changeStartIn(swap.area, copy.ownerDocument);
2069
2305
  placeOver(copy, how.host, swap.rect);
2070
2306
  if (how.isOpaque === true) {
2071
2307
  copy.style.zIndex = '1';
@@ -2121,6 +2357,7 @@ export function playLayoutSwap(
2121
2357
  element,
2122
2358
  sample(t => shape(progressAt(t), rideAt(t))),
2123
2359
  {duration: durationMs, fill: 'both', ...options},
2360
+ change,
2124
2361
  );
2125
2362
  if (animation != null) {
2126
2363
  animations.push(animation);
@@ -2168,8 +2405,10 @@ export function playLayoutSwap(
2168
2405
  if (glide == null) {
2169
2406
  return {x: -rideWith.travel.x, y: -rideWith.travel.y};
2170
2407
  }
2408
+ // The parts were read where the ridden element showed then. After a
2409
+ // block it has moved on by the glide's start, so they move with it.
2171
2410
  const now = glide.offsetAt(t);
2172
- const start = glide.offsetAt(0);
2411
+ const start = glide.shownBefore;
2173
2412
  return {x: now.x - start.x, y: now.y - start.y};
2174
2413
  };
2175
2414
  playAll(durationMs, progressAt, rideAt, {easing: 'linear'}, shape =>
@@ -2192,9 +2431,10 @@ export function playLayoutFrames(
2192
2431
  ): () => void {
2193
2432
  const area = handle?.[AREA]() ?? null;
2194
2433
  const motion = area == null ? null : layoutMotion(area);
2195
- if (motion == null || motion.kind === 'instant') {
2434
+ if (area == null || motion == null || motion.kind === 'instant') {
2196
2435
  return () => {};
2197
2436
  }
2437
+ const change = changeStartIn(area, area.ownerDocument);
2198
2438
  const animations: Animation[] = [];
2199
2439
  for (const {element, frames: shape} of parts) {
2200
2440
  const animation =
@@ -2209,11 +2449,14 @@ export function playLayoutFrames(
2209
2449
  easing: 'linear',
2210
2450
  fill: 'both',
2211
2451
  },
2452
+ change,
2212
2453
  )
2213
- : safeAnimate(element, [{opacity: 0}, {opacity: 1}], {
2214
- duration: motion.durationMs,
2215
- easing: motion.easing,
2216
- });
2454
+ : safeAnimate(
2455
+ element,
2456
+ [{opacity: 0}, {opacity: 1}],
2457
+ {duration: motion.durationMs, easing: motion.easing},
2458
+ change,
2459
+ );
2217
2460
  if (animation != null) {
2218
2461
  animations.push(animation);
2219
2462
  }
@@ -2290,6 +2533,7 @@ export function holdLayoutEdge(
2290
2533
  if (element == null || typeof element.animate !== 'function') {
2291
2534
  return null;
2292
2535
  }
2536
+ beginChange(element.ownerDocument);
2293
2537
  const rect = element.getBoundingClientRect();
2294
2538
  return {
2295
2539
  element,
@@ -2365,20 +2609,32 @@ export function playLayoutEdge(
2365
2609
  rides ? from + towards(ride) : from + (to - from) * p;
2366
2610
  const clip = (hidden: number) => pxClip(edge, hidden, rtl);
2367
2611
  const now = () => Number(element.ownerDocument.timeline?.currentTime ?? 0);
2368
- const startedAt = now();
2612
+ // The start this change's animations share, which after a block is later
2613
+ // than the frame time the timeline still reads (startFor).
2614
+ const startedAt =
2615
+ changeStartIn(areaOf(handle, element), element.ownerDocument)?.at ?? 0;
2369
2616
  const durationMs =
2370
2617
  motion.kind === 'spring' ? motion.progress.durationMs : motion.durationMs;
2618
+ const progressAt = (ms: number) =>
2619
+ motion.kind === 'spring'
2620
+ ? 1 - motion.progress.remaining(Math.min(ms, durationMs))
2621
+ : 0;
2371
2622
  const shown = (): {extent: number; progress: number} | null => {
2372
- const elapsed = now() - startedAt;
2623
+ const elapsed = Math.max(0, now() - startedAt);
2373
2624
  if (elapsed >= durationMs) {
2374
2625
  return null;
2375
2626
  }
2376
- const progress =
2377
- motion.kind === 'spring' ? 1 - motion.progress.remaining(elapsed) : 0;
2378
- let extent = from + (to - from) * progress;
2627
+ // The fades are read at the change's start, where the glide it retargets
2628
+ // carries on. The extent stays on the timeline's frame, the frame a ride
2629
+ // is measured from.
2630
+ const progress = progressAt(
2631
+ Math.max(elapsed, layoutStartFor(element.ownerDocument) - startedAt),
2632
+ );
2633
+ let extent = from + (to - from) * progressAt(elapsed);
2379
2634
  if (rides && rideWith != null) {
2380
- // The edge is the ridden element's: read it where it shows.
2381
- const ridden = rideWith.getBoundingClientRect();
2635
+ // The edge is the ridden element's: read it where it shows, on the
2636
+ // timeline's clock.
2637
+ const ridden = shownBoxAt(rideWith, now());
2382
2638
  const own = element.getBoundingClientRect();
2383
2639
  extent = !isInline
2384
2640
  ? isEnd
@@ -2651,6 +2907,7 @@ export function reportLayoutEdge(
2651
2907
  const element = getElement();
2652
2908
  measured = null;
2653
2909
  if (element != null) {
2910
+ beginChange(element.ownerDocument);
2654
2911
  const running = resizeReveals.get(element);
2655
2912
  const elapsed = Number(running?.animation?.currentTime);
2656
2913
  const rect = element.getBoundingClientRect();
@@ -2662,7 +2919,9 @@ export function reportLayoutEdge(
2662
2919
  rect,
2663
2920
  }
2664
2921
  : {
2665
- shown: running.shownAt(Number.isFinite(elapsed) ? elapsed : 0),
2922
+ shown: running.shownAt(
2923
+ Number.isFinite(elapsed) ? Math.max(0, elapsed) : 0,
2924
+ ),
2666
2925
  box: running.box,
2667
2926
  rect,
2668
2927
  };
@@ -2700,12 +2959,15 @@ export function reportLayoutEdge(
2700
2959
  return;
2701
2960
  }
2702
2961
  const isConceal = after < before.shown;
2962
+ const change = changeStartIn(area, element.ownerDocument);
2703
2963
  if (motion.kind === 'fade') {
2704
2964
  if (!isConceal) {
2705
- safeAnimate(element, [{opacity: 0}, {opacity: 1}], {
2706
- duration: motion.durationMs,
2707
- easing: motion.easing,
2708
- });
2965
+ safeAnimate(
2966
+ element,
2967
+ [{opacity: 0}, {opacity: 1}],
2968
+ {duration: motion.durationMs, easing: motion.easing},
2969
+ change,
2970
+ );
2709
2971
  }
2710
2972
  return;
2711
2973
  }
@@ -2730,6 +2992,7 @@ export function reportLayoutEdge(
2730
2992
  clipPath: pxClip(edge, curve(t), rtl),
2731
2993
  })),
2732
2994
  {duration: progress.durationMs, easing: 'linear'},
2995
+ change,
2733
2996
  );
2734
2997
  const reveal: ResizeReveal = {
2735
2998
  animation,