@astryxdesign/core 0.7.7 → 0.7.8-canary.30b1896

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 (540) 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 +5 -0
  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.map +1 -1
  9. package/dist/BottomSheet/BottomSheetPanel.js +25 -4
  10. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  11. package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
  12. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -1
  13. package/dist/BottomSheet/useMobileKeyboard.js +6 -0
  14. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  15. package/dist/BottomSheet/useSheetGestures.js +12 -1
  16. package/dist/Button/Button.d.ts.map +1 -1
  17. package/dist/Button/Button.js +17 -1
  18. package/dist/Calendar/Calendar.d.ts.map +1 -1
  19. package/dist/Calendar/Calendar.js +15 -16
  20. package/dist/Carousel/Carousel.d.ts.map +1 -1
  21. package/dist/Carousel/Carousel.js +2 -0
  22. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  23. package/dist/Chat/ChatComposerInput.js +4 -0
  24. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  25. package/dist/Chat/ChatMessageList.js +2 -1
  26. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  27. package/dist/Chat/useChatDictation.js +2 -0
  28. package/dist/Chat/useChatNewMessages.js +1 -1
  29. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  30. package/dist/Chat/useChatStreamScroll.js +2 -0
  31. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  32. package/dist/Chat/useSpeechRecognition.js +3 -0
  33. package/dist/Chat/useTriggerMenu.js +1 -1
  34. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  35. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  36. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  37. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  38. package/dist/CodeBlock/CodeBlock.js +28 -11
  39. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  40. package/dist/CommandPalette/CommandPalette.js +2 -0
  41. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  42. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  43. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  44. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  45. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  46. package/dist/ContextMenu/ContextMenu.js +2 -2
  47. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  48. package/dist/DateInput/MonthScroller.js +5 -2
  49. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  50. package/dist/DateInput/TouchDateField.js +1 -0
  51. package/dist/DateInput/Wheel.d.ts.map +1 -1
  52. package/dist/DateInput/Wheel.js +4 -0
  53. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  54. package/dist/DateInput/useOwnScrollGesture.js +3 -0
  55. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  56. package/dist/DateInput/usePointerDragScroll.js +2 -0
  57. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  58. package/dist/DateInput/useScrollSettle.js +3 -0
  59. package/dist/Dialog/Dialog.d.ts.map +1 -1
  60. package/dist/Dialog/Dialog.js +9 -32
  61. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  62. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  63. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  64. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  65. package/dist/Field/Field.js +2 -2
  66. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  67. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  68. package/dist/FormLayout/FormLayout.d.ts +5 -1
  69. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  70. package/dist/HoverCard/HoverCard.d.ts +6 -4
  71. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  72. package/dist/HoverCard/HoverCard.js +48 -3
  73. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  74. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  75. package/dist/HoverCard/useHoverCard.js +20 -33
  76. package/dist/Icon/Icon.d.ts +5 -1
  77. package/dist/Icon/Icon.d.ts.map +1 -1
  78. package/dist/Icon/Icon.js +5 -2
  79. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  80. package/dist/Item/useSwipeAction.js +3 -0
  81. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  82. package/dist/Layer/modalOutlet.js +2 -0
  83. package/dist/Layer/outsidePress.d.ts.map +1 -1
  84. package/dist/Layer/outsidePress.js +1 -0
  85. package/dist/Layer/useLayer.d.ts.map +1 -1
  86. package/dist/Layer/useLayer.js +3 -0
  87. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  88. package/dist/Layer/useLayerDismissal.js +3 -0
  89. package/dist/Layer/usePressPin.d.ts +17 -5
  90. package/dist/Layer/usePressPin.d.ts.map +1 -1
  91. package/dist/Layer/usePressPin.js +62 -12
  92. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  93. package/dist/Layer/useTouchTrigger.js +3 -0
  94. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  95. package/dist/Lightbox/Lightbox.js +19 -0
  96. package/dist/MobileNav/MobileNav.d.ts +3 -2
  97. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  98. package/dist/MobileNav/MobileNav.js +9 -25
  99. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  100. package/dist/Outline/useOutlineFromDOM.js +3 -0
  101. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  102. package/dist/Outline/useScrollSpy.js +3 -0
  103. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  104. package/dist/OverflowList/OverflowList.js +3 -0
  105. package/dist/Popover/Popover.d.ts.map +1 -1
  106. package/dist/Popover/Popover.js +6 -0
  107. package/dist/PowerSearch/PowerSearch.d.ts +43 -4
  108. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  109. package/dist/PowerSearch/PowerSearch.js +445 -134
  110. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +102 -0
  111. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  112. package/dist/PowerSearch/PowerSearchBottomSheet.js +1919 -0
  113. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  114. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  115. package/dist/PowerSearch/PowerSearchEditPopover.js +25 -6
  116. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  117. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  118. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  119. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  120. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  121. package/dist/PowerSearch/PowerSearchToken.js +7 -2
  122. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  123. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  124. package/dist/PowerSearch/PowerSearchValueEditor.js +193 -83
  125. package/dist/PowerSearch/formatFilterValue.d.ts +18 -6
  126. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  127. package/dist/PowerSearch/formatFilterValue.js +33 -12
  128. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  129. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  130. package/dist/PowerSearch/formatTokenValue.js +162 -0
  131. package/dist/PowerSearch/powerSearchDateZone.d.ts +21 -0
  132. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  133. package/dist/PowerSearch/powerSearchDateZone.js +37 -0
  134. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  135. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  136. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  137. package/dist/PowerSearch/types.d.ts +2 -0
  138. package/dist/PowerSearch/types.d.ts.map +1 -1
  139. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  140. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  141. package/dist/RadioList/RadioList.d.ts.map +1 -1
  142. package/dist/RadioList/RadioList.js +3 -2
  143. package/dist/RadioList/RadioListItem.d.ts +1 -1
  144. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  145. package/dist/RadioList/RadioListItem.js +5 -3
  146. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  147. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  148. package/dist/Resizable/ResizeHandle.js +101 -77
  149. package/dist/Resizable/createResizable.d.ts +145 -0
  150. package/dist/Resizable/createResizable.d.ts.map +1 -0
  151. package/dist/Resizable/createResizable.js +575 -0
  152. package/dist/Resizable/useResizable.d.ts +3 -3
  153. package/dist/Resizable/useResizable.d.ts.map +1 -1
  154. package/dist/Resizable/useResizable.js +252 -459
  155. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  156. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  157. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  158. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  159. package/dist/SelectableCard/SelectableCard.js +36 -11
  160. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  161. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  162. package/dist/SelectableCard/selectableCardInput.js +20 -0
  163. package/dist/Selector/Selector.d.ts.map +1 -1
  164. package/dist/Selector/Selector.js +5 -8
  165. package/dist/Slider/sliderTouchController.js +2 -2
  166. package/dist/Spinner/Spinner.d.ts +1 -1
  167. package/dist/Spinner/Spinner.d.ts.map +1 -1
  168. package/dist/Spinner/Spinner.js +60 -58
  169. package/dist/Switch/Switch.d.ts.map +1 -1
  170. package/dist/Switch/Switch.js +4 -10
  171. package/dist/Switch/useSwitchTouch.js +4 -4
  172. package/dist/Table/BaseTable.d.ts.map +1 -1
  173. package/dist/Table/BaseTable.js +29 -8
  174. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  175. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  176. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  177. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  178. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  179. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +4 -0
  180. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  181. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  182. package/dist/TextInput/TextInput.d.ts +2 -2
  183. package/dist/TextInput/TextInput.d.ts.map +1 -1
  184. package/dist/TextInput/TextInput.js +10 -7
  185. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  186. package/dist/TimeInput/TimeInput.js +2 -0
  187. package/dist/Timer/Timer.d.ts.map +1 -1
  188. package/dist/Timer/Timer.js +2 -0
  189. package/dist/Timestamp/Timestamp.js +1 -1
  190. package/dist/Toast/Toast.d.ts +11 -1
  191. package/dist/Toast/Toast.d.ts.map +1 -1
  192. package/dist/Toast/Toast.js +25 -15
  193. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  194. package/dist/Toast/ToastViewport.js +97 -34
  195. package/dist/Toast/types.d.ts +9 -3
  196. package/dist/Toast/types.d.ts.map +1 -1
  197. package/dist/Toast/useToast.d.ts.map +1 -1
  198. package/dist/Toast/useToast.js +1 -0
  199. package/dist/Tokenizer/Tokenizer.d.ts +49 -37
  200. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  201. package/dist/Tokenizer/Tokenizer.js +22 -19
  202. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  203. package/dist/Tokenizer/TokenizerBottomSheet.js +1 -1
  204. package/dist/Tokenizer/index.d.ts +1 -1
  205. package/dist/Tokenizer/index.d.ts.map +1 -1
  206. package/dist/Tooltip/useTooltip.d.ts +19 -1
  207. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  208. package/dist/Tooltip/useTooltip.js +34 -53
  209. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  210. package/dist/Typeahead/BaseTypeahead.js +27 -18
  211. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  212. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  213. package/dist/animator/createAnimator.d.ts +98 -0
  214. package/dist/animator/createAnimator.d.ts.map +1 -0
  215. package/dist/animator/createAnimator.js +259 -0
  216. package/dist/astryx.css +36 -6
  217. package/dist/gestures/PressTracker.d.ts.map +1 -1
  218. package/dist/gestures/PressTracker.js +4 -3
  219. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  220. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  221. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  222. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  223. package/dist/hooks/actionGroupTracker.js +13 -3
  224. package/dist/hooks/index.d.ts +1 -0
  225. package/dist/hooks/index.d.ts.map +1 -1
  226. package/dist/hooks/index.js +1 -0
  227. package/dist/hooks/longPressDetector.d.ts +66 -0
  228. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  229. package/dist/hooks/longPressDetector.js +200 -0
  230. package/dist/hooks/pressGroupContext.d.ts +6 -0
  231. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  232. package/dist/hooks/pressGroupContext.js +20 -0
  233. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  234. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  235. package/dist/hooks/rootScrollStyles.js +207 -0
  236. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  237. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  238. package/dist/hooks/scrollLockTouchGuard.js +134 -0
  239. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  240. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  241. package/dist/hooks/scrollbarGutter.js +36 -23
  242. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  243. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  244. package/dist/hooks/useActionGroupTracking.js +174 -0
  245. package/dist/hooks/useAnimator.d.ts +41 -0
  246. package/dist/hooks/useAnimator.d.ts.map +1 -0
  247. package/dist/hooks/useAnimator.js +70 -0
  248. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  249. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  250. package/dist/hooks/useAttachment.d.ts +1 -1
  251. package/dist/hooks/useAttachment.js +1 -1
  252. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  253. package/dist/hooks/useAutoMediaMode.js +1 -0
  254. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  255. package/dist/hooks/useBusyAnnouncement.js +2 -0
  256. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  257. package/dist/hooks/useDevWarning.js +2 -0
  258. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  259. package/dist/hooks/useFocusTrap.js +2 -0
  260. package/dist/hooks/useGridFocus.d.ts +8 -5
  261. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  262. package/dist/hooks/useGridFocus.js +4 -3
  263. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  264. package/dist/hooks/useHotkeys.js +3 -0
  265. package/dist/hooks/useImageMode.d.ts.map +1 -1
  266. package/dist/hooks/useImageMode.js +3 -0
  267. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  268. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  269. package/dist/hooks/useInputStatusIcon.js +2 -2
  270. package/dist/hooks/useKeyboardHint.js +1 -1
  271. package/dist/hooks/useLongPress.d.ts +8 -9
  272. package/dist/hooks/useLongPress.d.ts.map +1 -1
  273. package/dist/hooks/useLongPress.js +23 -106
  274. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  275. package/dist/hooks/useMenuHover.js +2 -0
  276. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  277. package/dist/hooks/useMenuPress.js +3 -0
  278. package/dist/hooks/useOverflow.d.ts.map +1 -1
  279. package/dist/hooks/useOverflow.js +2 -1
  280. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  281. package/dist/hooks/usePressFeedback.js +1 -0
  282. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  283. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  284. package/dist/hooks/useResolvedRequired.js +3 -0
  285. package/dist/hooks/useScrollLock.d.ts +7 -9
  286. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  287. package/dist/hooks/useScrollLock.js +55 -48
  288. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  289. package/dist/hooks/useScrollableArea.js +5 -0
  290. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  291. package/dist/hooks/useStreamingText.js +3 -0
  292. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  293. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  294. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  295. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  296. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  297. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  298. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  299. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  300. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  301. package/dist/i18n/generated-locales/en.generated.js +30 -0
  302. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  303. package/dist/i18n/generated-locales/pseudo.generated.js +30 -0
  304. package/dist/index.d.ts +1 -0
  305. package/dist/index.d.ts.map +1 -1
  306. package/dist/index.js +4 -0
  307. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  308. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  309. package/dist/internal/indicatorPress.stylex.js +26 -0
  310. package/dist/internal/selectable-card.d.ts +21 -0
  311. package/dist/internal/selectable-card.d.ts.map +1 -0
  312. package/dist/internal/selectable-card.js +20 -0
  313. package/dist/internal/sheetDraft.d.ts +2 -2
  314. package/dist/internal/sheetDraft.js +2 -2
  315. package/dist/motion/animatedLayout.d.ts.map +1 -1
  316. package/dist/motion/animatedLayout.js +7 -7
  317. package/dist/motion/animator.d.ts +14 -14
  318. package/dist/motion/animator.d.ts.map +1 -1
  319. package/dist/motion/animator.js +45 -20
  320. package/dist/motion/progress.d.ts +88 -0
  321. package/dist/motion/progress.d.ts.map +1 -0
  322. package/dist/motion/progress.js +128 -0
  323. package/dist/motion/reducedMotion.d.ts.map +1 -1
  324. package/dist/motion/reducedMotion.js +3 -1
  325. package/dist/motion/uikit/alert.d.ts +41 -0
  326. package/dist/motion/uikit/alert.d.ts.map +1 -0
  327. package/dist/motion/uikit/alert.js +43 -0
  328. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  329. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  330. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  331. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  332. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  333. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  334. package/dist/theme/Theme.d.ts.map +1 -1
  335. package/dist/theme/Theme.js +29 -4
  336. package/dist/theme/motionKnobs.d.ts +4 -3
  337. package/dist/theme/motionKnobs.d.ts.map +1 -1
  338. package/dist/theme/motionKnobs.js +3 -2
  339. package/dist/theme/themeMotion.d.ts +6 -0
  340. package/dist/theme/themeMotion.d.ts.map +1 -1
  341. package/dist/theme/themeMotion.js +7 -0
  342. package/dist/utils/dateParser.d.ts.map +1 -1
  343. package/dist/utils/dateParser.js +12 -0
  344. package/dist/utils/focusReturn.d.ts +15 -0
  345. package/dist/utils/focusReturn.d.ts.map +1 -1
  346. package/dist/utils/focusReturn.js +28 -0
  347. package/dist/utils/interactionModality.d.ts.map +1 -1
  348. package/dist/utils/interactionModality.js +4 -0
  349. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  350. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  351. package/dist/utils/interactionOverlay.stylex.js +3 -2
  352. package/dist/utils/plainDate.d.ts +8 -0
  353. package/dist/utils/plainDate.d.ts.map +1 -1
  354. package/dist/utils/plainDate.js +19 -0
  355. package/dist/utils/pressFeedback.d.ts.map +1 -1
  356. package/dist/utils/pressFeedback.js +20 -6
  357. package/dist/utils/triggerFocus.d.ts +36 -0
  358. package/dist/utils/triggerFocus.d.ts.map +1 -0
  359. package/dist/utils/triggerFocus.js +65 -0
  360. package/locales/en.json +120 -0
  361. package/locales/pseudo.json +90 -0
  362. package/package.json +14 -9
  363. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  364. package/src/AlertDialog/AlertDialog.tsx +46 -5
  365. package/src/AppShell/AppShell.tsx +4 -0
  366. package/src/BottomSheet/BottomSheet.tsx +1 -0
  367. package/src/BottomSheet/BottomSheetPanel.tsx +39 -3
  368. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  369. package/src/BottomSheet/useMobileKeyboard.ts +4 -0
  370. package/src/BottomSheet/useSheetGestures.ts +10 -1
  371. package/src/Button/Button.tsx +26 -4
  372. package/src/Calendar/Calendar.tsx +36 -25
  373. package/src/Carousel/Carousel.tsx +1 -0
  374. package/src/Chat/ChatComposerInput.tsx +2 -0
  375. package/src/Chat/ChatMessageList.tsx +2 -1
  376. package/src/Chat/useChatDictation.ts +1 -0
  377. package/src/Chat/useChatNewMessages.ts +1 -1
  378. package/src/Chat/useChatStreamScroll.ts +2 -0
  379. package/src/Chat/useSpeechRecognition.ts +2 -0
  380. package/src/Chat/useTriggerMenu.tsx +1 -1
  381. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  382. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  383. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  384. package/src/CodeBlock/CodeBlock.tsx +41 -4
  385. package/src/CommandPalette/CommandPalette.tsx +1 -0
  386. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  387. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  388. package/src/ContextMenu/ContextMenu.tsx +2 -2
  389. package/src/DateInput/MonthScroller.tsx +8 -2
  390. package/src/DateInput/TouchDateField.tsx +1 -0
  391. package/src/DateInput/Wheel.tsx +4 -0
  392. package/src/DateInput/useOwnScrollGesture.ts +2 -0
  393. package/src/DateInput/usePointerDragScroll.ts +1 -0
  394. package/src/DateInput/useScrollSettle.ts +2 -0
  395. package/src/Dialog/Dialog.tsx +12 -32
  396. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  397. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  398. package/src/Field/Field.tsx +2 -2
  399. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  400. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  401. package/src/FormLayout/FormLayout.tsx +5 -1
  402. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  403. package/src/HoverCard/HoverCard.tsx +58 -6
  404. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  405. package/src/HoverCard/useHoverCard.tsx +49 -54
  406. package/src/Icon/Icon.doc.mjs +49 -8
  407. package/src/Icon/Icon.tsx +15 -7
  408. package/src/IconButton/IconButton.doc.mjs +141 -21
  409. package/src/Item/useSwipeAction.ts +2 -0
  410. package/src/Layer/modalOutlet.ts +2 -0
  411. package/src/Layer/outsidePress.ts +1 -0
  412. package/src/Layer/useLayer.tsx +2 -0
  413. package/src/Layer/useLayerDismissal.ts +2 -0
  414. package/src/Layer/usePressPin.ts +81 -15
  415. package/src/Layer/useTouchTrigger.ts +2 -0
  416. package/src/Lightbox/Lightbox.tsx +19 -0
  417. package/src/MobileNav/MobileNav.tsx +9 -30
  418. package/src/Outline/useOutlineFromDOM.ts +2 -0
  419. package/src/Outline/useScrollSpy.ts +2 -0
  420. package/src/OverflowList/OverflowList.tsx +2 -0
  421. package/src/Popover/Popover.tsx +4 -0
  422. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  423. package/src/PowerSearch/PowerSearch.tsx +627 -157
  424. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -0
  425. package/src/PowerSearch/PowerSearchEditPopover.tsx +39 -6
  426. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  427. package/src/PowerSearch/PowerSearchToken.tsx +7 -0
  428. package/src/PowerSearch/PowerSearchValueEditor.tsx +244 -58
  429. package/src/PowerSearch/formatFilterValue.ts +55 -17
  430. package/src/PowerSearch/formatTokenValue.ts +222 -0
  431. package/src/PowerSearch/powerSearchDateZone.ts +64 -0
  432. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  433. package/src/PowerSearch/types.ts +2 -0
  434. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  435. package/src/RadioList/RadioList.tsx +3 -2
  436. package/src/RadioList/RadioListItem.tsx +5 -3
  437. package/src/Resizable/Resizable.doc.mjs +5 -4
  438. package/src/Resizable/ResizeHandle.tsx +169 -109
  439. package/src/Resizable/createResizable.ts +831 -0
  440. package/src/Resizable/useResizable.ts +292 -623
  441. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  442. package/src/SelectableCard/SelectableCard.tsx +39 -10
  443. package/src/SelectableCard/selectableCardInput.ts +30 -0
  444. package/src/Selector/Selector.tsx +5 -12
  445. package/src/Slider/sliderTouchController.ts +2 -2
  446. package/src/Spinner/Spinner.tsx +77 -63
  447. package/src/Switch/Switch.tsx +2 -6
  448. package/src/Switch/useSwitchTouch.ts +4 -4
  449. package/src/Table/BaseTable.tsx +46 -12
  450. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  451. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  452. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +4 -0
  453. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  454. package/src/TextInput/TextInput.tsx +11 -10
  455. package/src/TimeInput/TimeInput.tsx +2 -0
  456. package/src/Timer/Timer.tsx +1 -0
  457. package/src/Timestamp/Timestamp.tsx +1 -1
  458. package/src/Toast/Toast.doc.mjs +4 -3
  459. package/src/Toast/Toast.tsx +52 -32
  460. package/src/Toast/ToastViewport.tsx +123 -35
  461. package/src/Toast/types.ts +9 -3
  462. package/src/Toast/useToast.tsx +1 -0
  463. package/src/Tokenizer/Tokenizer.doc.mjs +19 -3
  464. package/src/Tokenizer/Tokenizer.tsx +73 -51
  465. package/src/Tokenizer/TokenizerBottomSheet.tsx +1 -1
  466. package/src/Tokenizer/index.ts +1 -0
  467. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  468. package/src/Tooltip/useTooltip.tsx +61 -56
  469. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  470. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  471. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  472. package/src/animator/createAnimator.doc.mjs +153 -0
  473. package/src/animator/createAnimator.ts +324 -0
  474. package/src/gestures/PressTracker.ts +4 -3
  475. package/src/gestures/README.md +10 -4
  476. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  477. package/src/hooks/actionGroupTracker.ts +20 -5
  478. package/src/hooks/index.ts +2 -0
  479. package/src/hooks/longPressDetector.ts +273 -0
  480. package/src/hooks/pressGroupContext.ts +21 -0
  481. package/src/hooks/rootScrollStyles.ts +247 -0
  482. package/src/hooks/scrollLockTouchGuard.ts +182 -0
  483. package/src/hooks/scrollbarGutter.ts +41 -26
  484. package/src/hooks/useActionGroupTracking.ts +224 -0
  485. package/src/hooks/useAnimator.doc.mjs +109 -0
  486. package/src/hooks/useAnimator.ts +67 -0
  487. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  488. package/src/hooks/useAttachment.ts +1 -1
  489. package/src/hooks/useAutoMediaMode.ts +1 -0
  490. package/src/hooks/useBusyAnnouncement.ts +2 -0
  491. package/src/hooks/useDevWarning.ts +2 -0
  492. package/src/hooks/useFocusTrap.ts +2 -0
  493. package/src/hooks/useGridFocus.doc.mjs +6 -6
  494. package/src/hooks/useGridFocus.ts +10 -7
  495. package/src/hooks/useHotkeys.ts +2 -0
  496. package/src/hooks/useImageMode.ts +2 -0
  497. package/src/hooks/useInputStatusIcon.tsx +3 -2
  498. package/src/hooks/useKeyboardHint.tsx +1 -1
  499. package/src/hooks/useLongPress.doc.mjs +2 -2
  500. package/src/hooks/useLongPress.ts +32 -122
  501. package/src/hooks/useMenuHover.ts +1 -0
  502. package/src/hooks/useMenuPress.ts +2 -0
  503. package/src/hooks/useOverflow.ts +2 -1
  504. package/src/hooks/usePressFeedback.ts +1 -0
  505. package/src/hooks/useResolvedRequired.ts +3 -0
  506. package/src/hooks/useScrollLock.doc.mjs +51 -12
  507. package/src/hooks/useScrollLock.ts +57 -60
  508. package/src/hooks/useScrollableArea.ts +4 -0
  509. package/src/hooks/useStreamingText.ts +2 -0
  510. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  511. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  512. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  513. package/src/i18n/generated-locales/en.generated.ts +41 -0
  514. package/src/i18n/generated-locales/pseudo.generated.ts +42 -0
  515. package/src/index.ts +13 -0
  516. package/src/internal/indicatorPress.stylex.ts +24 -0
  517. package/src/internal/selectable-card.ts +21 -0
  518. package/src/internal/sheetDraft.ts +2 -2
  519. package/src/motion/README.md +9 -5
  520. package/src/motion/animatedLayout.ts +10 -5
  521. package/src/motion/animator.ts +66 -31
  522. package/src/motion/progress.ts +155 -0
  523. package/src/motion/reducedMotion.ts +3 -1
  524. package/src/motion/uikit/alert.ts +43 -0
  525. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  526. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  527. package/src/theme/Theme.tsx +37 -3
  528. package/src/theme/motionKnobs.ts +4 -3
  529. package/src/theme/themeMotion.ts +7 -0
  530. package/src/utils/dateParser.ts +16 -0
  531. package/src/utils/focusReturn.ts +30 -0
  532. package/src/utils/interactionModality.ts +4 -0
  533. package/src/utils/interactionOverlay.stylex.ts +3 -2
  534. package/src/utils/plainDate.ts +21 -0
  535. package/src/utils/pressFeedback.ts +24 -6
  536. package/src/utils/triggerFocus.ts +80 -0
  537. package/dist/internal/touch-sheet.d.ts +0 -21
  538. package/dist/internal/touch-sheet.d.ts.map +0 -1
  539. package/dist/internal/touch-sheet.js +0 -19
  540. package/src/internal/touch-sheet.ts +0 -21
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollLockTouchGuard.d.ts","sourceRoot":"","sources":["../../src/hooks/scrollLockTouchGuard.ts"],"names":[],"mappings":"AAqHA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAErD;AAWD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAqCT"}
@@ -0,0 +1,134 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file scrollLockTouchGuard.ts
7
+ * @input The node under a finger and the pan's direction, while a scroll lock
8
+ * holds the page
9
+ * @output isPanAbsorbedBeforePage and isPageZoomedIn, for the page hold
10
+ * @position Internal hook utility; gestures/pageHold calls it for
11
+ * useScrollLock.
12
+ */
13
+
14
+ // iOS Safari scrolls an `overflow: hidden` page under a finger.
15
+ // The page hold cancels each pan that would reach the page. This walk decides
16
+ // which pans those are. A scroller that can move in the pan's direction takes
17
+ // the pan. A scroller at its edge that contains its overscroll also takes it.
18
+ // The walk follows flat-tree parents. It ends at a top-layer or fixed-position
19
+ // element, whose containing block is the viewport, so its untaken pans go to
20
+ // the page.
21
+ import { parentAcrossShadow } from "../utils/flatTree.js";
22
+ import { isRtlElement } from "./isRtlElement.js";
23
+ const SCROLLABLE = new Set(['auto', 'scroll']);
24
+
25
+ /** Overflow at or below this many px is a box that fits, not a scroller. */
26
+ const EDGE_TOLERANCE = 1;
27
+ function canMoveY(element, dy, range) {
28
+ // A finger moving down drags the content down: scrollTop decreases.
29
+ return dy > 0 ? element.scrollTop > EDGE_TOLERANCE - 0.5 : element.scrollTop < range - EDGE_TOLERANCE + 0.5;
30
+ }
31
+ function canMoveX(element, dx, range, isRtl) {
32
+ const min = isRtl ? -range : 0;
33
+ const max = isRtl ? 0 : range;
34
+ // A finger moving right drags the content right: scrollLeft decreases.
35
+ return dx > 0 ? element.scrollLeft > min + EDGE_TOLERANCE - 0.5 : element.scrollLeft < max - EDGE_TOLERANCE + 0.5;
36
+ }
37
+
38
+ /**
39
+ * Whether `element` itself takes a pan. It does when it can still scroll that
40
+ * way, or when its `overscroll-behavior` contains the overscroll at its edge.
41
+ */
42
+ function takesPan(element, style, isVertical, dx, dy) {
43
+ if (!SCROLLABLE.has(isVertical ? style.overflowY : style.overflowX)) {
44
+ return false;
45
+ }
46
+ const range = isVertical ? element.scrollHeight - element.clientHeight : element.scrollWidth - element.clientWidth;
47
+ // Content that fits has nothing to scroll. The pan goes on to the next
48
+ // scroller in the chain, and at last to the page.
49
+ if (range <= EDGE_TOLERANCE) {
50
+ return false;
51
+ }
52
+ const canMove = isVertical ? canMoveY(element, dy, range) : canMoveX(element, dx, range, isRtlElement(element));
53
+ if (canMove) {
54
+ return true;
55
+ }
56
+ const behavior = isVertical ? style.overscrollBehaviorY : style.overscrollBehaviorX;
57
+ return behavior === 'contain' || behavior === 'none';
58
+ }
59
+
60
+ /**
61
+ * Whether `element` is in the state that a pseudo-class names (`:modal`,
62
+ * `:popover-open`). An engine without the pseudo-class has no element in that
63
+ * state. Its `matches` throws on the selector, so the engine is not asked.
64
+ * Other errors surface.
65
+ */
66
+ function isInState(element, pseudoClass) {
67
+ const css = element.ownerDocument.defaultView?.CSS;
68
+ return typeof css?.supports === 'function' && css.supports(`selector(${pseudoClass})`) && element.matches(pseudoClass);
69
+ }
70
+
71
+ /**
72
+ * Whether a pan that `element` does not take goes to the viewport, not to its
73
+ * DOM parent. The browser chains scrolling along containing blocks. A
74
+ * top-layer element (an open modal dialog or popover) or a fixed-position one
75
+ * has the viewport as its containing block. So a Dialog inside a scrolling
76
+ * container gives an untaken pan to the page.
77
+ */
78
+ function chainsToViewport(element, style) {
79
+ return style.position === 'fixed' || isInState(element, ':modal') || isInState(element, ':popover-open');
80
+ }
81
+
82
+ /**
83
+ * Whether the page is pinch-zoomed in (`visualViewport.scale > 1`). A
84
+ * one-finger drag then pans the zoomed view, which a zoomed-in reader needs
85
+ * around an open overlay. The value is read per touch, so a pinch during the
86
+ * lock counts from the next drag.
87
+ */
88
+ export function isPageZoomedIn(doc) {
89
+ return (doc.defaultView?.visualViewport?.scale ?? 1) > 1;
90
+ }
91
+
92
+ /**
93
+ * Whether `element` is a native control that takes a finger's drag itself. A
94
+ * range input moves its thumb, so the drag never reaches the page.
95
+ */
96
+ function takesDragItself(element) {
97
+ // `:disabled` also covers a slider inside a disabled fieldset.
98
+ return element.matches('input[type="range"]:not(:disabled)');
99
+ }
100
+
101
+ /**
102
+ * Whether a scroller in the scroll chain of `target` takes a pan of (`dx`,
103
+ * `dy`) before the page does.
104
+ */
105
+ export function isPanAbsorbedBeforePage(target, dx, dy) {
106
+ if (!(target instanceof Node)) {
107
+ return false;
108
+ }
109
+ const doc = target.ownerDocument ?? document;
110
+ const view = doc.defaultView;
111
+ if (view == null) {
112
+ return false;
113
+ }
114
+ const isVertical = Math.abs(dy) >= Math.abs(dx);
115
+ for (let node = target; node != null; node = parentAcrossShadow(node)) {
116
+ if (!(node instanceof Element)) {
117
+ continue;
118
+ }
119
+ if (takesDragItself(node)) {
120
+ return true;
121
+ }
122
+ if (node === doc.documentElement || node === doc.body || node === doc.scrollingElement) {
123
+ break;
124
+ }
125
+ const style = view.getComputedStyle(node);
126
+ if (takesPan(node, style, isVertical, dx, dy)) {
127
+ return true;
128
+ }
129
+ if (chainsToViewport(node, style)) {
130
+ break;
131
+ }
132
+ }
133
+ return false;
134
+ }
@@ -1,7 +1,7 @@
1
1
  export interface ScrollbarGutterHold {
2
2
  /**
3
- * Call once the lock's own styles are applied: measures whether the element
4
- * grew anyway and, only then, pads the difference away.
3
+ * Call once the lock's own styles apply. It holds the gutter open, or,
4
+ * without `scrollbar-gutter`, pads away only the width the element gained.
5
5
  */
6
6
  settle(): void;
7
7
  /** Call on unlock: restores everything this hold changed. */
@@ -16,8 +16,8 @@ export interface ScrollbarGutterHold {
16
16
  * ScrollbarGutterHold.release} on unlock:
17
17
  *
18
18
  * ```
19
- * const hold = holdScrollbarGutter(document.body);
20
- * body.style.position = 'fixed';
19
+ * const hold = holdScrollbarGutter(document.documentElement);
20
+ * document.documentElement.style.overflow = 'hidden';
21
21
  * hold.settle();
22
22
  * ```
23
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"scrollbarGutter.d.ts","sourceRoot":"","sources":["../../src/hooks/scrollbarGutter.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,MAAM,IAAI,IAAI,CAAC;IACf,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,CA+D7E"}
1
+ {"version":3,"file":"scrollbarGutter.d.ts","sourceRoot":"","sources":["../../src/hooks/scrollbarGutter.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,MAAM,IAAI,IAAI,CAAC;IACf,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACjB;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,CAkE7E"}
@@ -2,7 +2,8 @@
2
2
 
3
3
  /**
4
4
  * @file scrollbarGutter.ts
5
- * @input The element a scroll lock pins, plus live layout measurements
5
+ * @input The element whose width a scroll lock holds, plus live layout
6
+ * measurements
6
7
  * @output holdScrollbarGutter and the ScrollbarGutterHold it returns
7
8
  * @position Internal hook utility; used by useScrollLock and MobileNav so that
8
9
  * locking background scroll does not resize the layout viewport.
@@ -16,10 +17,16 @@
16
17
  // engines without `scrollbar-gutter`, and it applies only when a measurement
17
18
  // shows that the element moved.
18
19
 
20
+ import { claimRootScrollStyle } from "./rootScrollStyles.js";
19
21
  const NOOP = {
20
22
  settle() {},
21
23
  release() {}
22
24
  };
25
+ /** Whether the engine reserves a gutter for `scrollbar-gutter: stable`. */
26
+ function supportsScrollbarGutter() {
27
+ return typeof CSS !== 'undefined' && typeof CSS.supports === 'function' && CSS.supports('scrollbar-gutter', 'stable');
28
+ }
29
+
23
30
  /**
24
31
  * Keeps `element`'s content box the width it is right now, across a scroll
25
32
  * lock that is about to hide the document's scrollbar.
@@ -29,8 +36,8 @@ const NOOP = {
29
36
  * ScrollbarGutterHold.release} on unlock:
30
37
  *
31
38
  * ```
32
- * const hold = holdScrollbarGutter(document.body);
33
- * body.style.position = 'fixed';
39
+ * const hold = holdScrollbarGutter(document.documentElement);
40
+ * document.documentElement.style.overflow = 'hidden';
34
41
  * hold.settle();
35
42
  * ```
36
43
  *
@@ -44,25 +51,37 @@ export function holdScrollbarGutter(element) {
44
51
  const root = document.documentElement;
45
52
  const viewportWidth = root.clientWidth;
46
53
 
47
- // 0 means "no layout to measure" (jsdom, and any non-visual environment),
48
- // not "the scrollbar is as wide as the window".
49
- if (viewportWidth === 0) {
54
+ // 0 means that there is no layout to measure, as in jsdom. An overlay
55
+ // scrollbar takes no space, so there is nothing to hold. A gutter held open
56
+ // on such a page would add space that was never there.
57
+ if (viewportWidth === 0 || window.innerWidth <= viewportWidth) {
50
58
  return NOOP;
51
59
  }
52
- const previousGutter = root.style.scrollbarGutter;
60
+ if (supportsScrollbarGutter()) {
61
+ // The gutter holds the width by construction, so the lock forces no second
62
+ // layout. Each hold is a stacked claim, so one release keeps the gutter
63
+ // that another hold still needs.
64
+ let releaseGutter = null;
65
+ return {
66
+ settle() {
67
+ releaseGutter ??= claimRootScrollStyle({
68
+ scrollbarGutter: 'stable'
69
+ });
70
+ },
71
+ release() {
72
+ releaseGutter?.();
73
+ releaseGutter = null;
74
+ }
75
+ };
76
+ }
77
+
78
+ // An engine without `scrollbar-gutter`: measure the element now, again
79
+ // once the lock's styles apply, and pad away what it grew. This is the one
80
+ // path that reads layout after a write.
53
81
  const previousPadding = element.style.paddingRight;
54
82
  const widthBefore = element.getBoundingClientRect().width;
55
- let heldGutter = false;
56
83
  let padded = false;
57
84
  let settled = false;
58
-
59
- // Only when a space-taking scrollbar is actually there. Holding the gutter
60
- // open on a page that never had one would carve out 15px that was never
61
- // reserved — the same shift, in the other direction.
62
- if (window.innerWidth > viewportWidth) {
63
- root.style.scrollbarGutter = 'stable';
64
- heldGutter = true;
65
- }
66
85
  return {
67
86
  settle() {
68
87
  if (settled) {
@@ -71,9 +90,7 @@ export function holdScrollbarGutter(element) {
71
90
  settled = true;
72
91
 
73
92
  // What the lock actually did to this element, rather than what we
74
- // assumed it would do. 0 on any engine where the gutter held — and on a
75
- // page that already sets `scrollbar-gutter: stable` itself, where the
76
- // scrollbar was never taking the space back.
93
+ // assumed it would do.
77
94
  const grew = element.getBoundingClientRect().width - widthBefore;
78
95
  if (grew <= 0) {
79
96
  return;
@@ -87,10 +104,6 @@ export function holdScrollbarGutter(element) {
87
104
  element.style.paddingRight = previousPadding;
88
105
  padded = false;
89
106
  }
90
- if (heldGutter) {
91
- root.style.scrollbarGutter = previousGutter;
92
- heldGutter = false;
93
- }
94
107
  }
95
108
  };
96
109
  }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file useActionGroupTracking.ts
3
+ * @input A ref to a group of sibling actions, the actions' selector, and the
4
+ * component's tracking constants
5
+ * @output Exports useActionGroupTracking and ActionGroupTrackingOptions
6
+ * @position Internal hook, not exported from the hooks entry. A long press
7
+ * drives the shared action-group tracker (hooks/actionGroupTracker.ts) for
8
+ * a group that a held pointer slides across. AlertDialog consumes it.
9
+ *
10
+ * SYNC: When modified, update useActionGroupTracking.test.tsx
11
+ */
12
+ import { type RefObject } from 'react';
13
+ import { LongPressGestureRecognizer } from '../gestures/LongPressGestureRecognizer.js';
14
+ import type { GestureTouch, PointerKind } from '../gestures/types.js';
15
+ export interface ActionGroupTrackingOptions {
16
+ /** Selects the actions inside the tracked element. */
17
+ itemSelector: string;
18
+ /** How long after touch-down the touched action highlights, ms. */
19
+ highlightOnsetMs: number;
20
+ /**
21
+ * How far outside an action a finger keeps it highlighted, px. A mouse or a
22
+ * pen hit-tests the actions' exact rects.
23
+ */
24
+ highlightExpansion: number;
25
+ /** Pointers that are tracked; others keep the browser's click. @default every pointer */
26
+ pointerTypes?: ReadonlyArray<PointerKind>;
27
+ /** A press whose target this rejects is not tracked. */
28
+ shouldTrack?: (target: unknown) => boolean;
29
+ /** Off, nothing is attached and nothing is tracked. @default true */
30
+ isEnabled?: boolean;
31
+ /**
32
+ * Let the gesture host write the group's `touch-action` and refuse a text
33
+ * selection while a finger or a pen holds it.
34
+ * @default true
35
+ */
36
+ manageStyle?: boolean;
37
+ /** Runs the action under the finger at the lift. @default its own click */
38
+ onActivate?: (item: HTMLElement) => void;
39
+ }
40
+ /**
41
+ * The group's press: a long press that a second finger on the group ends with
42
+ * nothing acting. A plain long press ignores a second finger.
43
+ */
44
+ declare class ActionGroupPress extends LongPressGestureRecognizer {
45
+ protected acceptsTouch(touch: GestureTouch): boolean;
46
+ }
47
+ /**
48
+ * Track a held pointer on the group behind `ref` across the actions inside
49
+ * it, through the shared action-group tracker.
50
+ */
51
+ export declare function useActionGroupTracking(ref: RefObject<HTMLElement | null>, options: ActionGroupTrackingOptions): ActionGroupPress;
52
+ export {};
53
+ //# sourceMappingURL=useActionGroupTracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActionGroupTracking.d.ts","sourceRoot":"","sources":["../../src/hooks/useActionGroupTracking.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAA8B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAElE,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAElF,OAAO,KAAK,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAOjE,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,YAAY,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,wDAAwD;IACxD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC3C,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CAC1C;AASD;;;GAGG;AACH,cAAM,gBAAiB,SAAQ,0BAA0B;cACpC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;CAO9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,OAAO,EAAE,0BAA0B,GAClC,gBAAgB,CAoHlB"}
@@ -0,0 +1,174 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useActionGroupTracking.ts
7
+ * @input A ref to a group of sibling actions, the actions' selector, and the
8
+ * component's tracking constants
9
+ * @output Exports useActionGroupTracking and ActionGroupTrackingOptions
10
+ * @position Internal hook, not exported from the hooks entry. A long press
11
+ * drives the shared action-group tracker (hooks/actionGroupTracker.ts) for
12
+ * a group that a held pointer slides across. AlertDialog consumes it.
13
+ *
14
+ * SYNC: When modified, update useActionGroupTracking.test.tsx
15
+ */
16
+ import { useEffect, useRef, useState } from 'react';
17
+ import { isActive } from "../gestures/GestureRecognizer.js";
18
+ import { LongPressGestureRecognizer } from "../gestures/LongPressGestureRecognizer.js";
19
+ import { lockSelection } from "../utils/selectionLock.js";
20
+ import { useGestureRecognizer } from "../gestures/useGestureRecognizer.js";
21
+ import { UIKIT_PRESS } from "../motion/uikit/gestures.js";
22
+ import { isIosWebKit } from "../utils/touchQueries.js";
23
+ import { createActionGroupTracker } from "./actionGroupTracker.js";
24
+ import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
25
+ const PRESS = UIKIT_PRESS;
26
+
27
+ /** The ref handed to the recognizer while tracking is off: no element. */
28
+ const DETACHED = {
29
+ current: null
30
+ };
31
+ const EVERY_POINTER = ['touch', 'pen', 'mouse'];
32
+
33
+ /**
34
+ * The group's press: a long press that a second finger on the group ends with
35
+ * nothing acting. A plain long press ignores a second finger.
36
+ */
37
+ class ActionGroupPress extends LongPressGestureRecognizer {
38
+ acceptsTouch(touch) {
39
+ if (isActive(this.state)) {
40
+ this.setState('cancelled');
41
+ return false;
42
+ }
43
+ return super.acceptsTouch(touch);
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Track a held pointer on the group behind `ref` across the actions inside
49
+ * it, through the shared action-group tracker.
50
+ */
51
+ export function useActionGroupTracking(ref, options) {
52
+ const optionsRef = useRef(options);
53
+ // Keeps the recognizer's delegate and the tracker, which run outside
54
+ // render, reading the latest options.
55
+ useIsomorphicLayoutEffect(() => {
56
+ optionsRef.current = options;
57
+ });
58
+ // The pointer that started the current press. Only a finger gets the hit
59
+ // expansion; a mouse or a pen hit-tests the actions' exact rects.
60
+ const pointerRef = useRef('touch');
61
+ const landedRef = useRef(null);
62
+ const [tracker] = useState(() => createActionGroupTracker(() => ({
63
+ roots: () => [ref.current],
64
+ itemSelector: optionsRef.current.itemSelector,
65
+ highlightExpansion: pointerRef.current === 'touch' ? optionsRef.current.highlightExpansion : 0,
66
+ onActivate: optionsRef.current.onActivate,
67
+ // The browser's own click for a press the group ran is taken, so the
68
+ // action runs once. The gesture host swallows it for a press it claims.
69
+ // This covers one it does not claim, a mouse under a coarse pointer.
70
+ swallowsNativeClick: true
71
+ })));
72
+ const isEnabled = options.isEnabled ?? true;
73
+ // Synchronizes the tracker with tracking on and mounted. Turning tracking
74
+ // off, or unmounting, drops a tracked press and ends its release fades.
75
+ // The host reports no cancellation to a disabled recognizer, and the lift
76
+ // that runs an action often closes the owner before its fade ends.
77
+ useEffect(() => () => {
78
+ tracker.cancel();
79
+ tracker.dispose();
80
+ }, [tracker, isEnabled]);
81
+ return useGestureRecognizer(isEnabled ? ref : DETACHED, () => new ActionGroupPress({
82
+ name: 'ActionGroupTracking',
83
+ minimumPressDuration: options.highlightOnsetMs,
84
+ allowableMovement: Number.POSITIVE_INFINITY,
85
+ allowedPointerTypes: options.pointerTypes ?? EVERY_POINTER,
86
+ delaysTouchesBegan: true,
87
+ // The hold picks an action, so a held finger or pen starts no text
88
+ // selection and opens no callout while down. A long press brings this
89
+ // lock by default; this hold has no minimum duration, so it names it.
90
+ selectionLock: lockSelection,
91
+ shouldReceiveTouch: (recognizer, touch) => {
92
+ if (recognizer.numberOfTouches === 0) {
93
+ pointerRef.current = touch.pointerType;
94
+ const target = touch.target;
95
+ landedRef.current = typeof target?.nodeType === 'number' ? target : null;
96
+ }
97
+ return receiveTouch(recognizer, touch, optionsRef.current);
98
+ }
99
+ }), recognizer => {
100
+ switch (recognizer.state) {
101
+ case 'began':
102
+ {
103
+ const {
104
+ x,
105
+ y
106
+ } = recognizer.location();
107
+ tracker.begin(x, y, {
108
+ landed: landedRef.current
109
+ });
110
+ break;
111
+ }
112
+ case 'changed':
113
+ {
114
+ const {
115
+ x,
116
+ y
117
+ } = recognizer.location();
118
+ tracker.move(x, y);
119
+ break;
120
+ }
121
+ case 'ended':
122
+ {
123
+ const doc = ref.current?.ownerDocument;
124
+ const focusedBefore = doc?.activeElement ?? null;
125
+ const beganOn = tracker.beganOn;
126
+ // Whether a click on the lifted action would focus it. A mouse's or
127
+ // a pen's pointerdown already gave the engine's answer, on the action
128
+ // it began on. A tap focuses on a later mousedown, which the claimed
129
+ // touch cancels, so the platform answers for a finger.
130
+ // iOS WebKit focuses no tapped button; Chromium and Firefox do.
131
+ const clickFocuses = pointerRef.current === 'touch' ? !isIosWebKit(doc?.defaultView) : beganOn != null && focusedBefore === beganOn;
132
+ const lifted = tracker.end();
133
+ // The lift runs the action's own click(), which moves no focus. So
134
+ // focus moves to the lifted action, unless its click moved focus.
135
+ if (clickFocuses && lifted != null && lifted.isConnected && doc?.activeElement === focusedBefore && focusedBefore !== lifted) {
136
+ lifted.focus({
137
+ preventScroll: true,
138
+ focusVisible: false
139
+ });
140
+ }
141
+ break;
142
+ }
143
+ case 'cancelled':
144
+ tracker.cancel();
145
+ break;
146
+ case 'possible':
147
+ case 'failed':
148
+ // Listeners are not called for these.
149
+ break;
150
+ }
151
+ }, {
152
+ isEnabled,
153
+ manageStyle: options.manageStyle ?? true,
154
+ actionGroup: true
155
+ });
156
+ }
157
+
158
+ /**
159
+ * The recognizer's should-receive delegate. It also picks the press's clock.
160
+ * Inside a scroller the press waits the content-touch delay and fails past
161
+ * the slop, so the scroller takes a flick. Elsewhere it begins at once, with
162
+ * no movement limit.
163
+ */
164
+ function receiveTouch(recognizer, touch, options) {
165
+ if (options.shouldTrack?.(touch.target) === false) {
166
+ return false;
167
+ }
168
+ if (recognizer.numberOfTouches === 0) {
169
+ const isInsideScroller = touch.scroll?.isInsideScroller === true;
170
+ recognizer.minimumPressDuration = isInsideScroller ? PRESS.contentTouchDelay.value : options.highlightOnsetMs;
171
+ recognizer.allowableMovement = isInsideScroller ? PRESS.slop.value : Number.POSITIVE_INFINITY;
172
+ }
173
+ return true;
174
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @file useAnimator.ts
3
+ * @input React (useState), the element ref the caller owns, the public
4
+ * animator factory (animator/createAnimator.ts) and useAttachment
5
+ * @output Exports `useAnimator(ref)`: the public animator for the element
6
+ * behind `ref`
7
+ * @position Public hook, exported from `@astryxdesign/core/hooks`. A thin
8
+ * wrapper over `createAnimator` with no behavior of its own.
9
+ *
10
+ * SYNC: When modified, update:
11
+ * - /packages/core/src/hooks/useAnimator.test.tsx
12
+ * - /packages/core/src/hooks/useAnimator.doc.mjs
13
+ */
14
+ import { type RefObject } from 'react';
15
+ import { type AnimatorHandle } from '../animator/createAnimator.js';
16
+ /**
17
+ * Animates the element behind `ref` with the motion Core uses. Call
18
+ * `animate`, `decay`, `set`, `get`, `getVelocity` or `stop` on the returned
19
+ * animator from event handlers and effects. Pass the same `ref` to a gesture
20
+ * hook to drag and animate one element.
21
+ *
22
+ * The hook makes the animator once, and animating never re-renders the
23
+ * component. After each commit, the animator follows the element behind
24
+ * `ref`, also a node that replaces it. An unmount stops running motion and
25
+ * drops the values. A remount, or a node that replaces the element, starts
26
+ * at rest. While no element is attached, every call does nothing, and
27
+ * `animate` and `decay` resolve at once.
28
+ *
29
+ * @example
30
+ * ```
31
+ * const ref = useRef<HTMLDivElement>(null);
32
+ * const animator = useAnimator(ref);
33
+ * return (
34
+ * <div ref={ref} onClick={() => animator.animate({scale: 1.2})}>
35
+ * Card
36
+ * </div>
37
+ * );
38
+ * ```
39
+ */
40
+ export declare function useAnimator(ref: RefObject<HTMLElement | null>): AnimatorHandle;
41
+ //# sourceMappingURL=useAnimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnimator.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnimator.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GACjC,cAAc,CAehB"}
@@ -0,0 +1,70 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useAnimator.ts
7
+ * @input React (useState), the element ref the caller owns, the public
8
+ * animator factory (animator/createAnimator.ts) and useAttachment
9
+ * @output Exports `useAnimator(ref)`: the public animator for the element
10
+ * behind `ref`
11
+ * @position Public hook, exported from `@astryxdesign/core/hooks`. A thin
12
+ * wrapper over `createAnimator` with no behavior of its own.
13
+ *
14
+ * SYNC: When modified, update:
15
+ * - /packages/core/src/hooks/useAnimator.test.tsx
16
+ * - /packages/core/src/hooks/useAnimator.doc.mjs
17
+ */
18
+ import { useState } from 'react';
19
+ import { createAttachableAnimator } from "../animator/createAnimator.js";
20
+ import { useAttachment } from "./useAttachment.js";
21
+
22
+ /**
23
+ * Animates the element behind `ref` with the motion Core uses. Call
24
+ * `animate`, `decay`, `set`, `get`, `getVelocity` or `stop` on the returned
25
+ * animator from event handlers and effects. Pass the same `ref` to a gesture
26
+ * hook to drag and animate one element.
27
+ *
28
+ * The hook makes the animator once, and animating never re-renders the
29
+ * component. After each commit, the animator follows the element behind
30
+ * `ref`, also a node that replaces it. An unmount stops running motion and
31
+ * drops the values. A remount, or a node that replaces the element, starts
32
+ * at rest. While no element is attached, every call does nothing, and
33
+ * `animate` and `decay` resolve at once.
34
+ *
35
+ * @example
36
+ * ```
37
+ * const ref = useRef<HTMLDivElement>(null);
38
+ * const animator = useAnimator(ref);
39
+ * return (
40
+ * <div ref={ref} onClick={() => animator.animate({scale: 1.2})}>
41
+ * Card
42
+ * </div>
43
+ * );
44
+ * ```
45
+ */
46
+ export function useAnimator(ref) {
47
+ const [{
48
+ handle,
49
+ attach
50
+ }] = useState(() => {
51
+ const {
52
+ animator,
53
+ attach: attachElement
54
+ } = createAttachableAnimator();
55
+ // The handle without `destroy`: the hook owns the element's lifetime.
56
+ const {
57
+ destroy: _destroy,
58
+ ...handle
59
+ } = animator;
60
+ return {
61
+ handle,
62
+ attach: element => {
63
+ attachElement(element);
64
+ return () => attachElement(null);
65
+ }
66
+ };
67
+ });
68
+ useAttachment(ref, attach, null);
69
+ return handle;
70
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"useAnnounceRenderedText.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnounceRenderedText.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAcH,OAAO,EAA8B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAClE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAgCvB,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAOzD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,EACE,eAAuB,EACvB,UAAqB,EACrB,QAAQ,EAAE,aAAa,GACxB,GAAE,2BAAgC,GAClC,IAAI,CAoDN"}
1
+ {"version":3,"file":"useAnnounceRenderedText.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnounceRenderedText.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAcH,OAAO,EAA8B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAClE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAgCvB,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAOzD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,EACE,eAAuB,EACvB,UAAqB,EACrB,QAAQ,EAAE,aAAa,GACxB,GAAE,2BAAgC,GAClC,IAAI,CAqDN"}
@@ -95,6 +95,7 @@ export function useAnnounceRenderedText(ref, isShown, occasion, {
95
95
  const [renderedWithPage] = useState(() => isHydrating || document.readyState !== 'complete');
96
96
  const isFirstRunRef = useRef(true);
97
97
 
98
+ // Syncs the live region with the rendered text.
98
99
  // No dependency array: the text lives in the DOM, and a caller can change it
99
100
  // without a prop that this hook sees. One text read per render is cheap, and
100
101
  // the dedupe below makes later renders no-ops.
@@ -5,7 +5,7 @@
5
5
  * @output Exports useAttachment and useAttachmentPair (two elements): they keep
6
6
  * the attach function bound to the nodes the refs hold across commits
7
7
  * @position Internal React helper, not in hooks/index.ts: the one attach and
8
- * release lifecycle of the gesture hooks and the pager
8
+ * release lifecycle of the gesture hooks, the pager and useAnimator
9
9
  *
10
10
  * SYNC: When modified, update gestures/__tests__/useGestureRecognizer.test.tsx,
11
11
  * gestures/__tests__/useFingerScroll.test.tsx and
@@ -9,7 +9,7 @@
9
9
  * @output Exports useAttachment and useAttachmentPair (two elements): they keep
10
10
  * the attach function bound to the nodes the refs hold across commits
11
11
  * @position Internal React helper, not in hooks/index.ts: the one attach and
12
- * release lifecycle of the gesture hooks and the pager
12
+ * release lifecycle of the gesture hooks, the pager and useAnimator
13
13
  *
14
14
  * SYNC: When modified, update gestures/__tests__/useGestureRecognizer.test.tsx,
15
15
  * gestures/__tests__/useFingerScroll.test.tsx and
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoMediaMode.d.ts","sourceRoot":"","sources":["../../src/hooks/useAutoMediaMode.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAMzC,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AA4EzD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,IAAI,GAAG,IAAI,EACpB,MAAM,EAAE,IAAI,GAAG,IAAI,EACnB,OAAO,EAAE,IAAI,GAAG,IAAI,GACnB,iBAAiB,GAAG,IAAI,CAe1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,SAAS,EAAE,OAAO,GACjB,iBAAiB,GAAG,IAAI,CAmD1B"}
1
+ {"version":3,"file":"useAutoMediaMode.d.ts","sourceRoot":"","sources":["../../src/hooks/useAutoMediaMode.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAMzC,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AA4EzD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,IAAI,GAAG,IAAI,EACpB,MAAM,EAAE,IAAI,GAAG,IAAI,EACnB,OAAO,EAAE,IAAI,GAAG,IAAI,GACnB,iBAAiB,GAAG,IAAI,CAe1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,SAAS,EAAE,OAAO,GACjB,iBAAiB,GAAG,IAAI,CAoD1B"}