@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
@@ -0,0 +1,341 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file wheelPhysics.ts
5
+ * @input A wheel's offset and release velocity, its rows, and the UIKit
6
+ * picker constants (motion/uikit/picker.ts)
7
+ * @output The curves a picker wheel moves on: the release plan, the tap spin,
8
+ * the rubber band, and the row crossings that tick
9
+ * @position Pure math of the touch picker wheel (PickerWheel.tsx)
10
+ *
11
+ * Positions are px, times seconds and velocities px/s. Row k is under the
12
+ * band at an offset of k rows. UIKit's pt values scale by `scale`.
13
+ *
14
+ * SYNC: When modified, update wheelPhysics.test.ts and PickerWheel.tsx.
15
+ */
16
+
17
+ import { cubicBezier } from "../motion/bezier.js";
18
+ import { projectDistance } from "../motion/projection.js";
19
+ import { solveDecay } from "../motion/decay.js";
20
+ import { rubberBand } from "../motion/rubberBand.js";
21
+ import { solveSpring, toSpring } from "../motion/spring.js";
22
+ import { picker } from "../motion/uikit/picker.js";
23
+ import { scroll } from "../motion/uikit/scroll.js";
24
+
25
+ /** A motion of the wheel's offset, from t = 0 to `duration` (seconds). */
26
+
27
+ /** How a release moves the wheel. */
28
+
29
+ /** What a release does: the curve, and the row it ends on. */
30
+
31
+ /** The rows a wheel moves over. */
32
+
33
+ /** UIKit's row height in pt: the unit the picker constants are measured in. */
34
+ const UIKIT_ROW_HEIGHT = picker.geometry.rowHeight;
35
+
36
+ /** Below half a device pixel at 3×, a motion is on its row. */
37
+ const AT_REST_PT = 1 / 6;
38
+
39
+ /**
40
+ * The longest a plan runs, s: the animator's limit (`MAX_DURATION_MS` in
41
+ * motion/animator.ts). A spring that has not settled by then (an undamped
42
+ * one, which never does) snaps onto its end.
43
+ */
44
+ export const MAX_PLAN_SECONDS = 30;
45
+
46
+ /** The constants' scale for a wheel whose rows are `rowHeight` px tall. */
47
+ export function scaleFor(rowHeight) {
48
+ return rowHeight / UIKIT_ROW_HEIGHT;
49
+ }
50
+
51
+ /** The wheel at rest on `offset`: a curve that does not move. */
52
+ export function restCurve(offset) {
53
+ return {
54
+ duration: 0,
55
+ to: offset,
56
+ value: () => offset,
57
+ velocity: () => 0
58
+ };
59
+ }
60
+
61
+ /** The offsets of the first and last rows. */
62
+ export function offsetBounds({
63
+ rowHeight,
64
+ rowCount
65
+ }) {
66
+ return {
67
+ min: 0,
68
+ max: Math.max(0, rowCount - 1) * rowHeight
69
+ };
70
+ }
71
+
72
+ /**
73
+ * The offset a drag shows for the finger's `offset`: past the first or last
74
+ * row it is rubber-banded, as a UIPickerView's table is.
75
+ */
76
+ export function dragOffset(offset, layout) {
77
+ const {
78
+ min,
79
+ max
80
+ } = offsetBounds(layout);
81
+ const dimension = picker.geometry.rubberBandDimension * scaleFor(layout.rowHeight);
82
+ if (offset < min) {
83
+ return min + rubberBand(offset - min, dimension);
84
+ }
85
+ if (offset > max) {
86
+ return max + rubberBand(offset - max, dimension);
87
+ }
88
+ return offset;
89
+ }
90
+
91
+ /** The nearest row to `offset`, clamped to the rows. */
92
+ export function nearestIndex(offset, layout) {
93
+ const index = Math.round(offset / layout.rowHeight);
94
+ return Math.min(Math.max(index, 0), Math.max(0, layout.rowCount - 1));
95
+ }
96
+
97
+ /**
98
+ * Ease from `from` onto `to` as UIKit does after a release without velocity.
99
+ * The distance left falls as e^(−k t), and the ease ends within half a device
100
+ * pixel.
101
+ */
102
+ export function snapCurve(from, to, scale = 1) {
103
+ const distance = from - to;
104
+ const rate = picker.snapRate * 1000;
105
+ const epsilon = AT_REST_PT * scale;
106
+ if (Math.abs(distance) <= epsilon) {
107
+ return {
108
+ duration: 0,
109
+ to,
110
+ value: () => to,
111
+ velocity: () => 0
112
+ };
113
+ }
114
+ const duration = Math.log(Math.abs(distance) / epsilon) / rate;
115
+ return {
116
+ duration,
117
+ to,
118
+ value: t => t >= duration ? to : to + distance * Math.exp(-rate * t),
119
+ velocity: t => t >= duration ? 0 : -rate * distance * Math.exp(-rate * t)
120
+ };
121
+ }
122
+
123
+ /**
124
+ * A coast from `from` at `velocity` that keeps the velocity and ends on `to` at
125
+ * the stop speed. The rate is re-solved, so the speed falls from |velocity| to
126
+ * the stop speed over exactly `to − from`.
127
+ */
128
+ export function coastCurve(from, velocity, to, scale = 1) {
129
+ const stopSpeed = picker.release.stopSpeed * 1000 * scale;
130
+ const distance = to - from;
131
+ const speed = Math.abs(velocity);
132
+ if (distance === 0 || Math.sign(distance) !== Math.sign(velocity) || speed <= stopSpeed) {
133
+ return snapCurve(from, to, scale);
134
+ }
135
+ const direction = Math.sign(distance);
136
+ // Per second: the speed falls by λ × the distance covered.
137
+ const lambda = (speed - stopSpeed) / Math.abs(distance);
138
+ const duration = Math.log(speed / stopSpeed) / lambda;
139
+ return {
140
+ duration,
141
+ to,
142
+ value: t => t >= duration ? to : from + direction * speed * -Math.expm1(-lambda * t) / lambda,
143
+ velocity: t => t >= duration ? 0 : direction * speed * Math.exp(-lambda * t)
144
+ };
145
+ }
146
+
147
+ /**
148
+ * The bounce spring, from `from` with `velocity`, onto `to`. `bounce` is
149
+ * `scroll.bounce`'s spring as its caller resolves it.
150
+ */
151
+ export function bounceCurve(from, velocity, to, scale = 1, bounce = scroll.bounce) {
152
+ const spring = solveSpring(toSpring(bounce), {
153
+ from,
154
+ to,
155
+ velocity
156
+ });
157
+ const duration = Math.min(MAX_PLAN_SECONDS, spring.settleTime(AT_REST_PT * scale));
158
+ return {
159
+ duration,
160
+ to,
161
+ value: t => t >= duration ? to : spring.value(t),
162
+ velocity: t => t >= duration ? 0 : spring.velocity(t)
163
+ };
164
+ }
165
+
166
+ /**
167
+ * A coast that runs into an end: the normal decay until the offset reaches
168
+ * `edge`, then the bounce spring with the velocity it has there.
169
+ */
170
+ export function edgeCurve(from, velocity, edge, scale = 1, bounceSpring = scroll.bounce) {
171
+ const decay = solveDecay({
172
+ from,
173
+ velocity
174
+ });
175
+ const hit = decay.timeToReach(edge);
176
+ if (hit == null) {
177
+ return bounceCurve(from, velocity, edge, scale, bounceSpring);
178
+ }
179
+ const bounce = bounceCurve(edge, decay.velocity(hit), edge, scale, bounceSpring);
180
+ const duration = Math.min(MAX_PLAN_SECONDS, hit + bounce.duration);
181
+ return {
182
+ duration,
183
+ to: edge,
184
+ value: t => t >= duration ? edge : t < hit ? decay.value(t) : bounce.value(t - hit),
185
+ velocity: t => t >= duration ? 0 : t < hit ? decay.velocity(t) : bounce.velocity(t - hit)
186
+ };
187
+ }
188
+
189
+ /**
190
+ * Where the scroll view projects a release. This is the coast's rest point at
191
+ * the normal rate, short of the stop speed. UIScrollView sums it the same way
192
+ * (`projectDistance`: r ÷ (1 − r) ms of the speed).
193
+ */
194
+ export function projectRelease(offset, velocity, scale = 1) {
195
+ const stopSpeed = picker.release.stopSpeed * 1000 * scale;
196
+ const speed = Math.abs(velocity);
197
+ if (speed <= stopSpeed) {
198
+ return offset;
199
+ }
200
+ return offset + Math.sign(velocity) * projectDistance(speed - stopSpeed);
201
+ }
202
+
203
+ /**
204
+ * What the wheel does when the finger lifts at `offset` with `velocity`
205
+ * (px/s, positive when the rows move up). `bounce` is `scroll.bounce`'s
206
+ * spring as the wheel resolves it. The velocity is the pan's
207
+ * `scrollVelocity()` at the lift. The plan follows UIKit, as measured:
208
+ *
209
+ * - Inside the rows, a release slower than `release.minimumSpeed` carries no
210
+ * velocity. Past an end, the velocity is kept.
211
+ * - The scroll view projects the coast (`projectRelease`), and the picker
212
+ * snaps that to the nearest row. The coast keeps the release velocity and
213
+ * stops exactly on that row.
214
+ * - A projection past an end is not re-solved. The coast decays at the normal
215
+ * rate into the end, and the bounce takes its velocity there.
216
+ * - A release without velocity eases onto the nearest row at `snapRate`.
217
+ * - A release past an end returns on the bounce spring.
218
+ * - A spring that has not settled by the animator's limit snaps onto its end
219
+ * there, as the animator's own motion does.
220
+ *
221
+ * @example
222
+ * ```
223
+ * const plan = planRelease(963.67, 933.4, {rowHeight: 32, rowCount: 60});
224
+ * plan.index; // 45: the coast stops on row 45 after about 2.3 s
225
+ * ```
226
+ */
227
+ export function planRelease(offset, velocity, layout, bounce = scroll.bounce) {
228
+ const scale = scaleFor(layout.rowHeight);
229
+ const {
230
+ min,
231
+ max
232
+ } = offsetBounds(layout);
233
+ if (offset < min || offset > max) {
234
+ const edge = offset < min ? min : max;
235
+ return {
236
+ kind: 'return',
237
+ index: nearestIndex(edge, layout),
238
+ curve: bounceCurve(offset, velocity, edge, scale, bounce)
239
+ };
240
+ }
241
+ const minimumSpeed = picker.release.minimumSpeed * 1000 * scale;
242
+ const speed = Math.abs(velocity) < minimumSpeed ? 0 : velocity;
243
+ const projected = projectRelease(offset, speed, scale);
244
+ if (projected < min || projected > max) {
245
+ const edge = projected < min ? min : max;
246
+ return {
247
+ kind: 'edge',
248
+ index: nearestIndex(edge, layout),
249
+ curve: edgeCurve(offset, speed, edge, scale, bounce)
250
+ };
251
+ }
252
+ const index = nearestIndex(projected, layout);
253
+ const target = index * layout.rowHeight;
254
+ if (speed === 0) {
255
+ return {
256
+ kind: 'snap',
257
+ index,
258
+ curve: snapCurve(offset, target, scale)
259
+ };
260
+ }
261
+ const curve = coastCurve(offset, speed, target, scale);
262
+ return {
263
+ kind: curve.duration > 0 ? 'coast' : 'snap',
264
+ index,
265
+ curve
266
+ };
267
+ }
268
+
269
+ /**
270
+ * The tap spin onto a row: UIKit's animated setContentOffset, over
271
+ * `duration` seconds on `curve`.
272
+ */
273
+ export function spinCurve(from, to, duration, curve) {
274
+ if (from === to || !(duration > 0)) {
275
+ return restCurve(to);
276
+ }
277
+ const ease = cubicBezier(curve);
278
+ const distance = to - from;
279
+ // Velocity from the eased progress's slope, by a central difference.
280
+ const step = 1e-4;
281
+ return {
282
+ duration,
283
+ to,
284
+ value: t => t >= duration ? to : from + distance * ease(t / duration),
285
+ velocity: t => {
286
+ if (t >= duration || t < 0) {
287
+ return 0;
288
+ }
289
+ const a = ease(Math.max(0, t / duration - step));
290
+ const b = ease(Math.min(1, t / duration + step));
291
+ return distance * (b - a) / (2 * step * duration);
292
+ }
293
+ };
294
+ }
295
+
296
+ /**
297
+ * The times (seconds, ascending) at which a row's centre reaches the band's
298
+ * centre during `curve`, after `after` and up to `until`. They are thinned so
299
+ * that two are never closer than the selection tick's minimum interval. `last`
300
+ * is the time of the previous tick, if any. Leaving the row the wheel starts on
301
+ * is not a tick; reaching the next one is.
302
+ */
303
+ export function tickTimes(curve, rowHeight, {
304
+ after = 0,
305
+ until = curve.duration,
306
+ last = -Infinity,
307
+ step = 1 / 240
308
+ } = {}) {
309
+ const interval = picker.selectionTick.minimumIntervalMs / 1000;
310
+ const times = [];
311
+ let previous = curve.value(after);
312
+ let lastTick = last;
313
+ for (let t = after + step; t < until + step; t += step) {
314
+ const time = Math.min(t, until);
315
+ const value = curve.value(time);
316
+ if (reachesRow(previous, value, rowHeight) && time - lastTick >= interval) {
317
+ times.push(time);
318
+ lastTick = time;
319
+ }
320
+ previous = value;
321
+ if (time === until) {
322
+ break;
323
+ }
324
+ }
325
+ return times;
326
+ }
327
+
328
+ /**
329
+ * Whether moving from offset `from` to `to` brings a row's centre onto the
330
+ * band's. That is a multiple of `rowHeight` in (from, to] moving up, or in [to,
331
+ * from) moving down.
332
+ */
333
+ export function reachesRow(from, to, rowHeight) {
334
+ if (to > from) {
335
+ return Math.floor(to / rowHeight) > Math.floor(from / rowHeight);
336
+ }
337
+ if (to < from) {
338
+ return Math.ceil(to / rowHeight) < Math.ceil(from / rowHeight);
339
+ }
340
+ return false;
341
+ }
@@ -0,0 +1,92 @@
1
+ import { type WheelCurve, type WheelLayout } from './wheelPhysics.js';
2
+ /** How a motion ended: arrived on its row, or stopped before. */
3
+ export type WheelMotionOutcome = 'arrived' | 'stopped';
4
+ /** Options for one motion. */
5
+ export interface PlayOptions {
6
+ /** Tick as rows reach the band (a drag's release); a tap's spin does not. */
7
+ ticks?: boolean;
8
+ /** Called once when the motion ends, either way. */
9
+ onEnd?: (outcome: WheelMotionOutcome, offset: number) => void;
10
+ /** Started by a touch drag's release, which cross-fades under Reduce Motion. */
11
+ touchRelease?: boolean;
12
+ /**
13
+ * The momentum that continues a throw: a coast, and its bounce at an end.
14
+ * It is direct movement, so it plays under Reduce Motion too, as scrolling
15
+ * keeps decelerating under iOS Reduce Motion.
16
+ */
17
+ momentum?: boolean;
18
+ }
19
+ /** One picker column's offset and everything that moves it. */
20
+ export interface WheelStrip {
21
+ /** The strip the offset moves (null detaches it). */
22
+ attach(strip: HTMLElement | null): void;
23
+ /** Update the rows (a new option list); keeps the offset. */
24
+ setLayout(layout: WheelLayout): void;
25
+ /**
26
+ * Tell `listener` the position of the row nearest the band whenever it
27
+ * changes. That is on a drag frame, where a motion stops or ends, and at
28
+ * rest. A cross-fade's landing counts as an end. A motion itself reports
29
+ * nothing until it ends, so the compositor plays it without the main thread
30
+ * painting a mark per row.
31
+ */
32
+ onNearestChange(listener: ((position: number) => void) | null): void;
33
+ /** Whether a motion is playing. */
34
+ isMoving(): boolean;
35
+ /**
36
+ * The offset on screen at `time` (ms, the document timeline's clock; default
37
+ * now). It is the animator's presentation value. So a motion that has not
38
+ * started on screen yet shows its start.
39
+ */
40
+ offset(time?: number): number;
41
+ /** Where the wheel will be at rest: the motion's end, or the offset now. */
42
+ target(): number;
43
+ /**
44
+ * Show `offset` at once, stopping any motion: a drag frame or a park. A drag
45
+ * frame passes `ticks`, which also keeps the strip on its own compositing
46
+ * layer for the frames that follow.
47
+ */
48
+ setOffset(offset: number, options?: {
49
+ ticks?: boolean;
50
+ }): void;
51
+ /** Forget the previous drag frame (a new gesture starts). */
52
+ resetDrag(): void;
53
+ /**
54
+ * Stop the motion where it was on screen at `time` (a finger landing on a
55
+ * spinning wheel: its touch-down time). Returns that offset.
56
+ */
57
+ stop(time?: number): number;
58
+ /** Play `curve` from the current offset; the strip ends at `curve.to`. */
59
+ play(curve: WheelCurve, options?: PlayOptions): void;
60
+ /**
61
+ * Forget the row last reported nearest the band, so the next report names it
62
+ * again even unchanged. A caller that clears its mark as a motion starts then
63
+ * gets it back. That happens when the motion ends on the row it began on.
64
+ */
65
+ forgetNearest(): void;
66
+ /** Stop everything; a motion still running ends as stopped. */
67
+ dispose(): void;
68
+ }
69
+ /**
70
+ * Creates a wheel's strip on a fresh animator. It uses the internal animator
71
+ * for three jobs the public handle lacks:
72
+ *
73
+ * - It plays a closed-form curve on the compositor: a coast onto a row, a
74
+ * snap, a spin.
75
+ * - It times haptic ticks on that curve's clock.
76
+ * - It substitutes Reduce Motion's cross-fade for a move.
77
+ *
78
+ * A release's coast and its bounce at an end are momentum (`decay`), so they
79
+ * keep their motion under Reduce Motion. Every other curve is a transition
80
+ * (`play`). Under Reduce Motion the animator cross-fades it after a touch or
81
+ * on a coarse pointer. Otherwise it lands at once.
82
+ *
83
+ * @example
84
+ * ```
85
+ * const strip = createWheelStrip({rowHeight: 28, rowCount: 60});
86
+ * strip.attach(element);
87
+ * strip.setOffset(30 * 28);
88
+ * strip.play(planRelease(strip.offset(), 900, layout).curve, {ticks: true, momentum: true});
89
+ * ```
90
+ */
91
+ export declare function createWheelStrip(initialLayout: WheelLayout): WheelStrip;
92
+ //# sourceMappingURL=wheelStrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wheelStrip.d.ts","sourceRoot":"","sources":["../../src/DateInput/wheelStrip.ts"],"names":[],"mappings":"AAqBA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAExB,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvD,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,6DAA6D;IAC7D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACrE,mCAAmC;IACnC,QAAQ,IAAI,OAAO,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,MAAM,IAAI,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC;IAC7D,6DAA6D;IAC7D,SAAS,IAAI,IAAI,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,0EAA0E;IAC1E,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACrD;;;;OAIG;IACH,aAAa,IAAI,IAAI,CAAC;IACtB,+DAA+D;IAC/D,OAAO,IAAI,IAAI,CAAC;CACjB;AAgBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,WAAW,GAAG,UAAU,CA+MvE"}
@@ -0,0 +1,258 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file wheelStrip.ts
5
+ * @input The touch wheel's strip (its flat rows in one element), its layout,
6
+ * and curves from wheelPhysics.ts
7
+ * @output createWheelStrip: the one owner of a wheel's offset. It writes a
8
+ * drag's frames, plays and stops curves, ticks, and reports the nearest row
9
+ * @position Glue of the touch picker wheel (PickerWheel.tsx) over the shared
10
+ * animator (motion/animator.ts)
11
+ *
12
+ * The strip is the one element that moves, on `translate`, so a motion plays
13
+ * on the compositor with no layout or paint per frame.
14
+ *
15
+ * SYNC: When modified, update wheelStrip.test.ts and PickerWheel.tsx.
16
+ */
17
+
18
+ import { canVibrate, playHaptic } from "../gestures/haptics.js";
19
+ import { createMotionAnimator } from "../motion/animator.js";
20
+ import { reducedMotionFade } from "../motion/reducedMotion.js";
21
+ import { picker } from "../motion/uikit/picker.js";
22
+ import { nearestIndex, reachesRow, tickTimes } from "./wheelPhysics.js";
23
+
24
+ /** How a motion ended: arrived on its row, or stopped before. */
25
+
26
+ /** Options for one motion. */
27
+
28
+ /** One picker column's offset and everything that moves it. */
29
+
30
+ function now() {
31
+ const time = typeof document !== 'undefined' ? document.timeline?.currentTime : null;
32
+ return typeof time === 'number' ? time : performance.now();
33
+ }
34
+
35
+ /**
36
+ * Creates a wheel's strip on a fresh animator. It uses the internal animator
37
+ * for three jobs the public handle lacks:
38
+ *
39
+ * - It plays a closed-form curve on the compositor: a coast onto a row, a
40
+ * snap, a spin.
41
+ * - It times haptic ticks on that curve's clock.
42
+ * - It substitutes Reduce Motion's cross-fade for a move.
43
+ *
44
+ * A release's coast and its bounce at an end are momentum (`decay`), so they
45
+ * keep their motion under Reduce Motion. Every other curve is a transition
46
+ * (`play`). Under Reduce Motion the animator cross-fades it after a touch or
47
+ * on a coarse pointer. Otherwise it lands at once.
48
+ *
49
+ * @example
50
+ * ```
51
+ * const strip = createWheelStrip({rowHeight: 28, rowCount: 60});
52
+ * strip.attach(element);
53
+ * strip.setOffset(30 * 28);
54
+ * strip.play(planRelease(strip.offset(), 900, layout).curve, {ticks: true, momentum: true});
55
+ * ```
56
+ */
57
+ export function createWheelStrip(initialLayout) {
58
+ const animator = createMotionAnimator(null);
59
+ let layout = initialLayout;
60
+ let running = null;
61
+ let nearestListener = null;
62
+ let lastNearest = null;
63
+ let lastTick = -Infinity;
64
+ /** Last offset a drag frame showed, for its ticks. */
65
+ let dragPrevious = null;
66
+ const shown = time =>
67
+ // The strip's top sits on the band's row: offset `o` is `translate` −o.
68
+ -animator.get('y', time);
69
+ const reportNearest = offset => {
70
+ const position = nearestIndex(offset, layout);
71
+ if (position === lastNearest) {
72
+ return;
73
+ }
74
+ lastNearest = position;
75
+ nearestListener?.(position);
76
+ };
77
+ const tick = time => {
78
+ if (time - lastTick < picker.selectionTick.minimumIntervalMs) {
79
+ return;
80
+ }
81
+ lastTick = time;
82
+ playHaptic('selection');
83
+ };
84
+ const clear = motion => {
85
+ for (const timer of motion.timers) {
86
+ clearTimeout(timer);
87
+ }
88
+ motion.timers.length = 0;
89
+ if (running === motion) {
90
+ running = null;
91
+ }
92
+ };
93
+
94
+ /**
95
+ * The motion's timers, from `origin` (when it started on screen): its
96
+ * ticks, a cross-fade's landing, and its end.
97
+ */
98
+ const schedule = (motion, origin, {
99
+ endMs,
100
+ ticks,
101
+ landingMs
102
+ }) => {
103
+ for (const timer of motion.timers) {
104
+ clearTimeout(timer);
105
+ }
106
+ motion.timers.length = 0;
107
+ const elapsed = now() - origin;
108
+ if (ticks) {
109
+ for (const t of tickTimes(motion.curve, layout.rowHeight)) {
110
+ motion.timers.push(setTimeout(() => {
111
+ if (running === motion) {
112
+ tick(now());
113
+ }
114
+ }, Math.max(0, t * 1000 - elapsed)));
115
+ }
116
+ }
117
+ if (landingMs != null) {
118
+ motion.timers.push(setTimeout(() => {
119
+ if (running === motion) {
120
+ reportNearest(motion.curve.to);
121
+ }
122
+ }, Math.max(0, landingMs - elapsed)));
123
+ }
124
+ motion.timers.push(setTimeout(() => {
125
+ if (running !== motion) {
126
+ return;
127
+ }
128
+ clear(motion);
129
+ reportNearest(motion.curve.to);
130
+ motion.onEnd?.('arrived', motion.curve.to);
131
+ }, Math.max(0, endMs - elapsed)));
132
+ };
133
+ const stop = time => {
134
+ const motion = running;
135
+ if (motion == null) {
136
+ return shown();
137
+ }
138
+ const offset = shown(time);
139
+ clear(motion);
140
+ // `set` ends the strip's animation and puts it where it was shown.
141
+ animator.set({
142
+ y: -offset
143
+ });
144
+ reportNearest(offset);
145
+ motion.onEnd?.('stopped', offset);
146
+ return offset;
147
+ };
148
+ return {
149
+ attach(strip) {
150
+ animator.attach(strip);
151
+ },
152
+ setLayout(next) {
153
+ layout = next;
154
+ },
155
+ onNearestChange(listener) {
156
+ nearestListener = listener;
157
+ lastNearest = null;
158
+ },
159
+ isMoving() {
160
+ return running != null;
161
+ },
162
+ offset(time) {
163
+ return shown(time);
164
+ },
165
+ target() {
166
+ return running?.curve.to ?? shown();
167
+ },
168
+ setOffset(offset, {
169
+ ticks = false
170
+ } = {}) {
171
+ if (running != null) {
172
+ stop();
173
+ }
174
+ if (ticks && dragPrevious != null && canVibrate() && reachesRow(dragPrevious, offset, layout.rowHeight)) {
175
+ tick(now());
176
+ }
177
+ dragPrevious = offset;
178
+ // A park is a one-off write: no layer for a strip at rest.
179
+ animator.set({
180
+ y: -offset
181
+ }, {
182
+ promote: ticks
183
+ });
184
+ reportNearest(offset);
185
+ },
186
+ resetDrag() {
187
+ dragPrevious = null;
188
+ },
189
+ stop,
190
+ play(curve, {
191
+ ticks = false,
192
+ onEnd,
193
+ touchRelease = false,
194
+ momentum = false
195
+ } = {}) {
196
+ stop();
197
+ dragPrevious = null;
198
+ const element = animator.element;
199
+ // What Reduce Motion makes of a transition: null while motion plays.
200
+ // Momentum is never substituted.
201
+ const fade = momentum ? null : reducedMotionFade(element, {
202
+ touchRelease
203
+ });
204
+ const endMs = fade == null ? curve.duration * 1000 : fade.duration;
205
+ if (!(endMs > 0)) {
206
+ animator.set({
207
+ y: -curve.to
208
+ });
209
+ reportNearest(curve.to);
210
+ onEnd?.('arrived', curve.to);
211
+ return;
212
+ }
213
+ const motionCurve = {
214
+ duration: curve.duration,
215
+ at: t => -curve.value(t),
216
+ velocity: t => -curve.velocity(t)
217
+ };
218
+ const handle = momentum ? animator.decay({
219
+ y: motionCurve
220
+ }, {
221
+ touchRelease
222
+ }) : animator.play({
223
+ y: motionCurve
224
+ }, {
225
+ touchRelease
226
+ });
227
+ const motion = {
228
+ curve,
229
+ onEnd,
230
+ timers: []
231
+ };
232
+ running = motion;
233
+ const plan = {
234
+ endMs,
235
+ // A cross-fade has no travel to tick through.
236
+ ticks: ticks && fade == null && canVibrate(),
237
+ // A cross-fade lands its rows at its midpoint, faded out.
238
+ landingMs: fade == null ? null : endMs / 2
239
+ };
240
+ schedule(motion, now(), plan);
241
+ // A busy main thread can hold a motion's first frame: its timers then
242
+ // follow the start the browser gives it. The animator's start promise
243
+ // only resolves, so nothing here waits on a rejection.
244
+ void handle.started.then(start => {
245
+ if (running === motion) {
246
+ schedule(motion, start, plan);
247
+ }
248
+ });
249
+ },
250
+ forgetNearest() {
251
+ lastNearest = null;
252
+ },
253
+ dispose() {
254
+ stop();
255
+ animator.dispose();
256
+ }
257
+ };
258
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"TouchDateTimeField.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/TouchDateTimeField.tsx"],"names":[],"mappings":"AA6GA,OAAO,KAAK,EAAC,kBAAkB,EAAoB,MAAM,iBAAiB,CAAC;AAoV3E,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,eAAe,EACf,UAAkB,EAClB,UAAkB,EAElB,aAAa,EAAE,cAAc,EAC7B,kBAAkB,EAAE,mBAAmB,EACvC,QAAgB,EAChB,WAAW,EAAE,oBAAoB,EACjC,eAAe,EAAE,wBAAwB,EACzC,SAAS,EACT,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,YAAY,EAEZ,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,gBAAoB,EAClC,KAAK,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,GAAG,SAAS,EACb,EAAE,kBAAkB,+BA8/BpB;yBAriCe,kBAAkB"}
1
+ {"version":3,"file":"TouchDateTimeField.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/TouchDateTimeField.tsx"],"names":[],"mappings":"AAuHA,OAAO,KAAK,EAAC,kBAAkB,EAAoB,MAAM,iBAAiB,CAAC;AA6S3E,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,eAAe,EACf,UAAkB,EAClB,UAAkB,EAElB,aAAa,EAAE,cAAc,EAC7B,kBAAkB,EAAE,mBAAmB,EACvC,QAAgB,EAChB,WAAW,EAAE,oBAAoB,EACjC,eAAe,EAAE,wBAAwB,EACzC,SAAS,EACT,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,YAAY,EAEZ,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,gBAAoB,EAClC,KAAK,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,GAAG,SAAS,EACb,EAAE,kBAAkB,+BAk8BpB;yBAz+Be,kBAAkB"}