@astryxdesign/core 0.7.7-canary.c0929c8 → 0.7.7-canary.c19ca12

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 (472) 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 +36 -6
  4. package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts +13 -0
  5. package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts.map +1 -0
  6. package/dist/AppShell/useCloseMobileDrawerOnActivate.js +45 -0
  7. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  8. package/dist/BottomSheet/BottomSheet.js +79 -9
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetPanel.js +23 -4
  11. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
  12. package/dist/BottomSheet/bottomSheetStack.js +5 -4
  13. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  14. package/dist/BottomSheet/useSheetGestures.js +3 -1
  15. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +2 -1
  16. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  17. package/dist/Breadcrumbs/BreadcrumbItem.js +7 -3
  18. package/dist/Button/Button.d.ts.map +1 -1
  19. package/dist/Button/Button.js +47 -3
  20. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  21. package/dist/CheckboxInput/CheckboxInput.js +13 -2
  22. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  23. package/dist/CheckboxList/CheckboxList.js +7 -1
  24. package/dist/CheckboxList/CheckboxListContext.d.ts +6 -0
  25. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  26. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  27. package/dist/CheckboxList/CheckboxListItem.js +10 -2
  28. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  29. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  30. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  31. package/dist/ContextMenu/ContextMenu.js +2 -2
  32. package/dist/DateInput/DateInput.d.ts.map +1 -1
  33. package/dist/DateInput/DateInput.js +5 -2
  34. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  35. package/dist/DateInput/MonthScroller.js +13 -27
  36. package/dist/DateInput/Wheel.d.ts.map +1 -1
  37. package/dist/DateInput/Wheel.js +22 -41
  38. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  39. package/dist/DateTimeInput/DateTimeInput.js +5 -2
  40. package/dist/Dialog/Dialog.d.ts.map +1 -1
  41. package/dist/Dialog/Dialog.js +23 -45
  42. package/dist/Drawer/Drawer.d.ts.map +1 -1
  43. package/dist/Drawer/Drawer.js +15 -11
  44. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  45. package/dist/Drawer/useDrawerDialogPresence.js +5 -1
  46. package/dist/Field/Field.js +2 -2
  47. package/dist/Field/PanelSearchInput.d.ts +9 -1
  48. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  49. package/dist/Field/PanelSearchInput.js +3 -1
  50. package/dist/HoverCard/HoverCard.d.ts +4 -3
  51. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  52. package/dist/HoverCard/HoverCard.js +27 -2
  53. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  54. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  55. package/dist/HoverCard/useHoverCard.js +17 -31
  56. package/dist/Icon/Icon.d.ts +5 -1
  57. package/dist/Icon/Icon.d.ts.map +1 -1
  58. package/dist/Icon/Icon.js +5 -2
  59. package/dist/InfoTip/InfoTip.d.ts +63 -0
  60. package/dist/InfoTip/InfoTip.d.ts.map +1 -0
  61. package/dist/InfoTip/InfoTip.js +126 -0
  62. package/dist/InfoTip/index.d.ts +10 -0
  63. package/dist/InfoTip/index.d.ts.map +1 -0
  64. package/dist/InfoTip/index.js +12 -0
  65. package/dist/Layer/layerAnimations.stylex.d.ts +7 -8
  66. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  67. package/dist/Layer/layerAnimations.stylex.js +25 -20
  68. package/dist/Layer/useBackdropPress.d.ts +27 -0
  69. package/dist/Layer/useBackdropPress.d.ts.map +1 -0
  70. package/dist/Layer/useBackdropPress.js +53 -0
  71. package/dist/Layer/usePressPin.d.ts +20 -10
  72. package/dist/Layer/usePressPin.d.ts.map +1 -1
  73. package/dist/Layer/usePressPin.js +66 -18
  74. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  75. package/dist/Lightbox/Lightbox.js +18 -0
  76. package/dist/MobileNav/MobileNav.js +0 -1
  77. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  78. package/dist/MultiSelector/hooks.js +2 -4
  79. package/dist/Outline/Outline.d.ts +2 -4
  80. package/dist/Outline/Outline.d.ts.map +1 -1
  81. package/dist/Outline/Outline.js +4 -52
  82. package/dist/Outline/useOutlineFromMarkdown.d.ts.map +1 -1
  83. package/dist/Outline/useOutlineFromMarkdown.js +1 -0
  84. package/dist/Outline/useScrollSpy.js +3 -3
  85. package/dist/PowerSearch/PowerSearch.d.ts +36 -3
  86. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  87. package/dist/PowerSearch/PowerSearch.js +571 -302
  88. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +100 -0
  89. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  90. package/dist/PowerSearch/PowerSearchBottomSheet.js +1913 -0
  91. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +32 -1
  92. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  93. package/dist/PowerSearch/PowerSearchEditPopover.js +17 -6
  94. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  95. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  96. package/dist/PowerSearch/PowerSearchValueEditor.js +170 -61
  97. package/dist/PowerSearch/formatFilterValue.d.ts +7 -0
  98. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  99. package/dist/PowerSearch/formatFilterValue.js +11 -1
  100. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  101. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  102. package/dist/PowerSearch/formatTokenValue.js +160 -0
  103. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  104. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  105. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  106. package/dist/RadioList/RadioList.d.ts.map +1 -1
  107. package/dist/RadioList/RadioList.js +8 -2
  108. package/dist/RadioList/RadioListItem.d.ts +1 -1
  109. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  110. package/dist/RadioList/RadioListItem.js +5 -3
  111. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  112. package/dist/Resizable/ResizeHandle.js +118 -260
  113. package/dist/Resizable/resizeGesture.d.ts +91 -0
  114. package/dist/Resizable/resizeGesture.d.ts.map +1 -0
  115. package/dist/Resizable/resizeGesture.js +251 -0
  116. package/dist/SegmentedControl/SegmentedControl.d.ts +3 -1
  117. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  118. package/dist/SegmentedControl/SegmentedControl.js +115 -8
  119. package/dist/SegmentedControl/SegmentedControlContext.d.ts +6 -0
  120. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  121. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -0
  122. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  123. package/dist/SegmentedControl/SegmentedControlItem.js +8 -1
  124. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts +357 -0
  125. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -0
  126. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +1349 -0
  127. package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts +70 -0
  128. package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts.map +1 -0
  129. package/dist/SegmentedControl/useSegmentedTouchTracking.js +264 -0
  130. package/dist/Selector/Selector.d.ts.map +1 -1
  131. package/dist/Selector/Selector.js +96 -67
  132. package/dist/Selector/optionShape.d.ts +24 -0
  133. package/dist/Selector/optionShape.d.ts.map +1 -0
  134. package/dist/Selector/optionShape.js +48 -0
  135. package/dist/Selector/selectableOptionEntries.d.ts +20 -0
  136. package/dist/Selector/selectableOptionEntries.d.ts.map +1 -0
  137. package/dist/Selector/selectableOptionEntries.js +38 -0
  138. package/dist/Selector/utils.d.ts +2 -17
  139. package/dist/Selector/utils.d.ts.map +1 -1
  140. package/dist/Selector/utils.js +3 -51
  141. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  142. package/dist/SideNav/SideNavItem.js +3 -9
  143. package/dist/Slider/sliderTouchController.js +2 -2
  144. package/dist/Spinner/Spinner.d.ts +1 -1
  145. package/dist/Spinner/Spinner.d.ts.map +1 -1
  146. package/dist/Spinner/Spinner.js +60 -58
  147. package/dist/Switch/switchTouch.d.ts +0 -7
  148. package/dist/Switch/switchTouch.d.ts.map +1 -1
  149. package/dist/Switch/switchTouch.js +2 -10
  150. package/dist/Switch/useSwitchTouch.d.ts +2 -11
  151. package/dist/Switch/useSwitchTouch.d.ts.map +1 -1
  152. package/dist/Switch/useSwitchTouch.js +35 -93
  153. package/dist/Table/BaseTable.d.ts.map +1 -1
  154. package/dist/Table/BaseTable.js +29 -8
  155. package/dist/TextInput/TextInput.d.ts +2 -2
  156. package/dist/TextInput/TextInput.d.ts.map +1 -1
  157. package/dist/TextInput/TextInput.js +10 -7
  158. package/dist/Toast/Toast.d.ts +11 -1
  159. package/dist/Toast/Toast.d.ts.map +1 -1
  160. package/dist/Toast/Toast.js +30 -15
  161. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  162. package/dist/Toast/ToastViewport.js +94 -34
  163. package/dist/Toast/types.d.ts +9 -3
  164. package/dist/Toast/types.d.ts.map +1 -1
  165. package/dist/Token/Token.d.ts +2 -2
  166. package/dist/Token/Token.d.ts.map +1 -1
  167. package/dist/Token/Token.js +13 -4
  168. package/dist/Token/TokenNamingContext.d.ts +14 -0
  169. package/dist/Token/TokenNamingContext.d.ts.map +1 -0
  170. package/dist/Token/TokenNamingContext.js +23 -0
  171. package/dist/Tokenizer/Tokenizer.d.ts +46 -59
  172. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  173. package/dist/Tokenizer/Tokenizer.js +40 -57
  174. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +25 -28
  175. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -1
  176. package/dist/Tokenizer/TokenizerBottomSheet.js +157 -54
  177. package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts +3 -0
  178. package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts.map +1 -0
  179. package/dist/Tokenizer/TokenizerItemRemovableContext.js +19 -0
  180. package/dist/Tooltip/Tooltip.d.ts +25 -30
  181. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  182. package/dist/Tooltip/Tooltip.js +24 -5
  183. package/dist/Tooltip/index.d.ts +1 -1
  184. package/dist/Tooltip/index.d.ts.map +1 -1
  185. package/dist/Tooltip/useTooltip.d.ts +45 -28
  186. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  187. package/dist/Tooltip/useTooltip.js +52 -59
  188. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  189. package/dist/TopNav/TopNavItem.js +4 -7
  190. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  191. package/dist/TopNav/TopNavMegaMenuItem.js +4 -7
  192. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  193. package/dist/TopNav/TopNavMenu.js +4 -7
  194. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  195. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  196. package/dist/animator/createAnimator.d.ts +98 -0
  197. package/dist/animator/createAnimator.d.ts.map +1 -0
  198. package/dist/animator/createAnimator.js +259 -0
  199. package/dist/astryx.css +96 -7
  200. package/dist/gestures/GestureHost.d.ts +27 -1
  201. package/dist/gestures/GestureHost.d.ts.map +1 -1
  202. package/dist/gestures/GestureHost.js +157 -21
  203. package/dist/gestures/PressTracker.d.ts.map +1 -1
  204. package/dist/gestures/PressTracker.js +4 -3
  205. package/dist/hooks/actionGroupTracker.d.ts +7 -4
  206. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  207. package/dist/hooks/actionGroupTracker.js +19 -56
  208. package/dist/hooks/index.d.ts +1 -0
  209. package/dist/hooks/index.d.ts.map +1 -1
  210. package/dist/hooks/index.js +1 -0
  211. package/dist/hooks/pressGroupContext.d.ts +6 -0
  212. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  213. package/dist/hooks/pressGroupContext.js +20 -0
  214. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  215. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  216. package/dist/hooks/useActionGroupTracking.js +174 -0
  217. package/dist/hooks/useAnimator.d.ts +41 -0
  218. package/dist/hooks/useAnimator.d.ts.map +1 -0
  219. package/dist/hooks/useAnimator.js +70 -0
  220. package/dist/hooks/useAttachment.d.ts +1 -1
  221. package/dist/hooks/useAttachment.js +1 -1
  222. package/dist/hooks/useHighlightedOptionScroll.d.ts +11 -1
  223. package/dist/hooks/useHighlightedOptionScroll.d.ts.map +1 -1
  224. package/dist/hooks/useHighlightedOptionScroll.js +112 -11
  225. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  226. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  227. package/dist/hooks/useInputStatusIcon.js +2 -2
  228. package/dist/hooks/useLongPress.d.ts +6 -2
  229. package/dist/hooks/useLongPress.d.ts.map +1 -1
  230. package/dist/hooks/useLongPress.js +95 -15
  231. package/dist/hooks/useMediaQuery.d.ts +2 -1
  232. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  233. package/dist/hooks/useMediaQuery.js +7 -4
  234. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  235. package/dist/hooks/useMenuPress.js +4 -2
  236. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts +8 -0
  237. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts.map +1 -0
  238. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.js +12 -0
  239. package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.d.ts.map +1 -1
  240. package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.js +1 -0
  241. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  242. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  243. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  244. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  245. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  246. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  247. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  248. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  249. package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.d.ts.map +1 -1
  250. package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.js +7 -1
  251. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  252. package/dist/i18n/generated-locales/en.generated.js +33 -1
  253. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  254. package/dist/i18n/generated-locales/pseudo.generated.js +33 -1
  255. package/dist/index.d.ts +2 -0
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +5 -0
  258. package/dist/internal/SheetConfirmation.d.ts +11 -0
  259. package/dist/internal/SheetConfirmation.d.ts.map +1 -0
  260. package/dist/internal/SheetConfirmation.js +92 -0
  261. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  262. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  263. package/dist/internal/indicatorPress.stylex.js +26 -0
  264. package/dist/internal/sheetDraft.d.ts +35 -0
  265. package/dist/internal/sheetDraft.d.ts.map +1 -0
  266. package/dist/internal/sheetDraft.js +65 -0
  267. package/dist/internal/touch-sheet.d.ts +21 -0
  268. package/dist/internal/touch-sheet.d.ts.map +1 -0
  269. package/dist/internal/touch-sheet.js +19 -0
  270. package/dist/internal/useDismissSearchOnTouchDrag.d.ts +24 -0
  271. package/dist/internal/useDismissSearchOnTouchDrag.d.ts.map +1 -0
  272. package/dist/internal/useDismissSearchOnTouchDrag.js +56 -0
  273. package/dist/motion/animator.d.ts +14 -14
  274. package/dist/motion/animator.d.ts.map +1 -1
  275. package/dist/motion/animator.js +41 -18
  276. package/dist/motion/reducedMotion.d.ts +24 -0
  277. package/dist/motion/reducedMotion.d.ts.map +1 -1
  278. package/dist/motion/reducedMotion.js +78 -1
  279. package/dist/motion/roles.d.ts +7 -1
  280. package/dist/motion/roles.d.ts.map +1 -1
  281. package/dist/motion/roles.js +20 -1
  282. package/dist/motion/uikit/alert.d.ts +41 -0
  283. package/dist/motion/uikit/alert.d.ts.map +1 -0
  284. package/dist/motion/uikit/alert.js +43 -0
  285. package/dist/motion/uikit/index.d.ts +6 -5
  286. package/dist/motion/uikit/index.d.ts.map +1 -1
  287. package/dist/motion/uikit/index.js +6 -5
  288. package/dist/motion/uikit/segmented.d.ts +55 -0
  289. package/dist/motion/uikit/segmented.d.ts.map +1 -0
  290. package/dist/motion/uikit/segmented.js +77 -0
  291. package/dist/motion/uikit/springs.d.ts +0 -18
  292. package/dist/motion/uikit/springs.d.ts.map +1 -1
  293. package/dist/motion/uikit/springs.js +5 -21
  294. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +15 -0
  295. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  296. package/dist/privateAttributes/pressGroupItem.stylex.js +23 -0
  297. package/dist/privateAttributes/segmentTitle.stylex.d.ts +5 -0
  298. package/dist/privateAttributes/segmentTitle.stylex.d.ts.map +1 -0
  299. package/dist/privateAttributes/segmentTitle.stylex.js +22 -0
  300. package/dist/utils/browserClickWait.d.ts +35 -0
  301. package/dist/utils/browserClickWait.d.ts.map +1 -0
  302. package/dist/utils/browserClickWait.js +123 -0
  303. package/dist/utils/clickGuard.d.ts +14 -1
  304. package/dist/utils/clickGuard.d.ts.map +1 -1
  305. package/dist/utils/clickGuard.js +46 -1
  306. package/dist/utils/dateParser.d.ts.map +1 -1
  307. package/dist/utils/dateParser.js +12 -0
  308. package/dist/utils/focusReturn.d.ts +15 -0
  309. package/dist/utils/focusReturn.d.ts.map +1 -1
  310. package/dist/utils/focusReturn.js +28 -0
  311. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  312. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  313. package/dist/utils/interactionOverlay.stylex.js +3 -2
  314. package/dist/utils/pressFeedback.d.ts.map +1 -1
  315. package/dist/utils/pressFeedback.js +19 -6
  316. package/dist/utils/triggerFocus.d.ts +36 -0
  317. package/dist/utils/triggerFocus.d.ts.map +1 -0
  318. package/dist/utils/triggerFocus.js +65 -0
  319. package/locales/en.json +128 -0
  320. package/locales/pseudo.json +96 -0
  321. package/package.json +18 -8
  322. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  323. package/src/AlertDialog/AlertDialog.tsx +37 -5
  324. package/src/AppShell/useCloseMobileDrawerOnActivate.ts +52 -0
  325. package/src/BottomSheet/BottomSheet.tsx +95 -10
  326. package/src/BottomSheet/BottomSheetPanel.tsx +40 -5
  327. package/src/BottomSheet/bottomSheetStack.ts +8 -4
  328. package/src/BottomSheet/useSheetGestures.ts +3 -1
  329. package/src/Breadcrumbs/BreadcrumbItem.tsx +13 -3
  330. package/src/Button/Button.tsx +63 -5
  331. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  332. package/src/CheckboxInput/CheckboxInput.tsx +36 -9
  333. package/src/CheckboxList/CheckboxList.doc.mjs +4 -2
  334. package/src/CheckboxList/CheckboxList.tsx +6 -0
  335. package/src/CheckboxList/CheckboxListContext.tsx +6 -0
  336. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  337. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  338. package/src/ContextMenu/ContextMenu.tsx +2 -2
  339. package/src/DateInput/DateInput.tsx +8 -2
  340. package/src/DateInput/MonthScroller.tsx +18 -22
  341. package/src/DateInput/Wheel.tsx +30 -32
  342. package/src/DateTimeInput/DateTimeInput.tsx +8 -2
  343. package/src/Dialog/Dialog.tsx +54 -45
  344. package/src/Drawer/Drawer.tsx +28 -11
  345. package/src/Drawer/useDrawerDialogPresence.ts +5 -1
  346. package/src/Field/Field.tsx +2 -2
  347. package/src/Field/PanelSearchInput.tsx +11 -0
  348. package/src/HoverCard/HoverCard.doc.mjs +4 -2
  349. package/src/HoverCard/HoverCard.tsx +35 -4
  350. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  351. package/src/HoverCard/useHoverCard.tsx +46 -52
  352. package/src/Icon/Icon.doc.mjs +49 -8
  353. package/src/Icon/Icon.tsx +15 -7
  354. package/src/InfoTip/InfoTip.doc.mjs +192 -0
  355. package/src/InfoTip/InfoTip.tsx +186 -0
  356. package/src/InfoTip/index.ts +14 -0
  357. package/src/Layer/layerAnimations.stylex.ts +24 -16
  358. package/src/Layer/useBackdropPress.ts +81 -0
  359. package/src/Layer/usePressPin.ts +86 -26
  360. package/src/Lightbox/Lightbox.tsx +18 -0
  361. package/src/MobileNav/MobileNav.tsx +1 -1
  362. package/src/MultiSelector/hooks.ts +2 -4
  363. package/src/Outline/Outline.doc.mjs +177 -51
  364. package/src/Outline/Outline.tsx +5 -57
  365. package/src/Outline/useOutlineFromMarkdown.doc.mjs +157 -0
  366. package/src/Outline/useOutlineFromMarkdown.ts +1 -0
  367. package/src/Outline/useScrollSpy.ts +3 -3
  368. package/src/PowerSearch/PowerSearch.doc.mjs +55 -6
  369. package/src/PowerSearch/PowerSearch.tsx +798 -324
  370. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2515 -0
  371. package/src/PowerSearch/PowerSearchEditPopover.tsx +28 -6
  372. package/src/PowerSearch/PowerSearchValueEditor.tsx +203 -38
  373. package/src/PowerSearch/formatFilterValue.ts +18 -1
  374. package/src/PowerSearch/formatTokenValue.ts +215 -0
  375. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  376. package/src/RadioList/RadioList.doc.mjs +4 -2
  377. package/src/RadioList/RadioList.tsx +7 -2
  378. package/src/RadioList/RadioListItem.tsx +5 -3
  379. package/src/Resizable/ResizeHandle.tsx +133 -328
  380. package/src/Resizable/resizeGesture.ts +368 -0
  381. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  382. package/src/SegmentedControl/SegmentedControl.tsx +179 -5
  383. package/src/SegmentedControl/SegmentedControlContext.ts +6 -0
  384. package/src/SegmentedControl/SegmentedControlItem.tsx +12 -1
  385. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +1640 -0
  386. package/src/SegmentedControl/useSegmentedTouchTracking.ts +308 -0
  387. package/src/Selector/Selector.tsx +136 -89
  388. package/src/Selector/optionShape.ts +64 -0
  389. package/src/Selector/selectableOptionEntries.ts +39 -0
  390. package/src/Selector/utils.ts +9 -68
  391. package/src/SideNav/SideNavItem.tsx +3 -7
  392. package/src/Slider/sliderTouchController.ts +2 -2
  393. package/src/Spinner/Spinner.tsx +77 -63
  394. package/src/Switch/switchTouch.ts +2 -10
  395. package/src/Switch/useSwitchTouch.ts +38 -104
  396. package/src/Table/BaseTable.tsx +46 -12
  397. package/src/TextInput/TextInput.tsx +11 -10
  398. package/src/Toast/Toast.doc.mjs +4 -3
  399. package/src/Toast/Toast.tsx +57 -32
  400. package/src/Toast/ToastViewport.tsx +121 -35
  401. package/src/Toast/types.ts +9 -3
  402. package/src/Token/Token.tsx +15 -4
  403. package/src/Token/TokenNamingContext.ts +28 -0
  404. package/src/Tokenizer/Tokenizer.doc.mjs +16 -0
  405. package/src/Tokenizer/Tokenizer.tsx +89 -85
  406. package/src/Tokenizer/TokenizerBottomSheet.tsx +219 -93
  407. package/src/Tokenizer/TokenizerItemRemovableContext.ts +24 -0
  408. package/src/Tooltip/Tooltip.doc.mjs +123 -54
  409. package/src/Tooltip/Tooltip.tsx +36 -39
  410. package/src/Tooltip/index.ts +0 -1
  411. package/src/Tooltip/useTooltip.doc.mjs +171 -33
  412. package/src/Tooltip/useTooltip.tsx +98 -86
  413. package/src/TopNav/TopNavItem.tsx +6 -5
  414. package/src/TopNav/TopNavMegaMenuItem.tsx +6 -5
  415. package/src/TopNav/TopNavMenu.tsx +6 -5
  416. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  417. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  418. package/src/animator/createAnimator.doc.mjs +153 -0
  419. package/src/animator/createAnimator.ts +324 -0
  420. package/src/gestures/GestureHost.ts +198 -20
  421. package/src/gestures/PressTracker.ts +4 -3
  422. package/src/gestures/README.md +7 -1
  423. package/src/hooks/actionGroupTracker.ts +32 -61
  424. package/src/hooks/index.ts +2 -0
  425. package/src/hooks/pressGroupContext.ts +21 -0
  426. package/src/hooks/useActionGroupTracking.ts +224 -0
  427. package/src/hooks/useAnimator.doc.mjs +109 -0
  428. package/src/hooks/useAnimator.ts +67 -0
  429. package/src/hooks/useAttachment.ts +1 -1
  430. package/src/hooks/useHighlightedOptionScroll.ts +123 -15
  431. package/src/hooks/useInputStatusIcon.tsx +3 -2
  432. package/src/hooks/useLongPress.doc.mjs +2 -2
  433. package/src/hooks/useLongPress.ts +136 -15
  434. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  435. package/src/hooks/useMediaQuery.ts +13 -4
  436. package/src/hooks/useMenuPress.ts +8 -2
  437. package/src/i18n/generated-english/InfoTip/InfoTip.generated.ts +13 -0
  438. package/src/i18n/generated-english/PowerSearch/PowerSearch.generated.ts +1 -0
  439. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  440. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  441. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  442. package/src/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.ts +7 -1
  443. package/src/i18n/generated-locales/en.generated.ts +43 -0
  444. package/src/i18n/generated-locales/pseudo.generated.ts +44 -0
  445. package/src/index.ts +14 -0
  446. package/src/internal/SheetConfirmation.tsx +101 -0
  447. package/src/internal/indicatorPress.stylex.ts +24 -0
  448. package/src/internal/sheetDraft.ts +80 -0
  449. package/src/internal/touch-sheet.ts +21 -0
  450. package/src/internal/useDismissSearchOnTouchDrag.ts +69 -0
  451. package/src/motion/MEASUREMENTS.md +7 -0
  452. package/src/motion/README.md +9 -5
  453. package/src/motion/animator.ts +61 -29
  454. package/src/motion/reducedMotion.ts +79 -1
  455. package/src/motion/roles.ts +20 -1
  456. package/src/motion/uikit/alert.ts +43 -0
  457. package/src/motion/uikit/index.ts +5 -5
  458. package/src/motion/uikit/segmented.ts +74 -0
  459. package/src/motion/uikit/springs.ts +5 -21
  460. package/src/privateAttributes/pressGroupItem.stylex.ts +23 -0
  461. package/src/privateAttributes/segmentTitle.stylex.ts +22 -0
  462. package/src/utils/browserClickWait.ts +133 -0
  463. package/src/utils/clickGuard.ts +64 -1
  464. package/src/utils/dateParser.ts +16 -0
  465. package/src/utils/focusReturn.ts +30 -0
  466. package/src/utils/interactionOverlay.stylex.ts +3 -2
  467. package/src/utils/pressFeedback.ts +19 -6
  468. package/src/utils/triggerFocus.ts +80 -0
  469. package/dist/internal/tokenizer-presentation.d.ts +0 -21
  470. package/dist/internal/tokenizer-presentation.d.ts.map +0 -1
  471. package/dist/internal/tokenizer-presentation.js +0 -21
  472. package/src/internal/tokenizer-presentation.ts +0 -25
@@ -0,0 +1,92 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file SheetConfirmation.tsx
7
+ * @input Dialog, Layout, Heading, Text, Button; caller-owned copy
8
+ * @output SheetConfirmation — the confirmation a touch sheet opens over
9
+ * itself for Clear all and for discarding a changed draft
10
+ * @position Core-internal, shared by the Tokenizer sheet and the PowerSearch
11
+ * sheets; not a public export
12
+ *
13
+ * AlertDialog fixes its purpose to form and its safe action to ghost. A touch
14
+ * sheet's confirmation allows scrim dismissal. Its two full-width large
15
+ * actions are stacked and separated: the destructive action first in reading
16
+ * order, the safe action focused first. The alert-dialog theme target stays.
17
+ */
18
+ import { useId } from 'react';
19
+ import * as stylex from '@stylexjs/stylex';
20
+ import { Button } from "../Button/Button.js";
21
+ import { Dialog } from "../Dialog/Dialog.js";
22
+ import { Heading } from "../Heading/Heading.js";
23
+ import { Layout } from "../Layout/Layout.js";
24
+ import { LayoutContent } from "../Layout/LayoutContent.js";
25
+ import { LayoutFooter } from "../Layout/LayoutFooter.js";
26
+ import { Stack } from "../Stack/Stack.js";
27
+ import { Text } from "../Text/Text.js";
28
+ import { themeProps } from "../utils/themeProps.js";
29
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
+ const styles = {
31
+ action: {
32
+ kzqmXN: "xh8yej3",
33
+ $$css: true
34
+ }
35
+ };
36
+ export function SheetConfirmation({
37
+ isOpen,
38
+ onOpenChange,
39
+ title,
40
+ description,
41
+ cancelLabel,
42
+ actionLabel,
43
+ onAction
44
+ }) {
45
+ const titleId = useId();
46
+ const descriptionId = useId();
47
+ return /*#__PURE__*/_jsx(Dialog, {
48
+ ...themeProps('alert-dialog'),
49
+ isOpen: isOpen,
50
+ onOpenChange: onOpenChange,
51
+ purpose: "info",
52
+ role: "alertdialog",
53
+ "aria-labelledby": titleId,
54
+ "aria-describedby": descriptionId,
55
+ width: 400,
56
+ children: /*#__PURE__*/_jsx(Layout, {
57
+ content: /*#__PURE__*/_jsxs(LayoutContent, {
58
+ children: [/*#__PURE__*/_jsx(Heading, {
59
+ level: 2,
60
+ id: titleId,
61
+ children: title
62
+ }), /*#__PURE__*/_jsx(Text, {
63
+ type: "body",
64
+ color: "secondary",
65
+ id: descriptionId,
66
+ children: description
67
+ })]
68
+ }),
69
+ footer: /*#__PURE__*/_jsx(LayoutFooter, {
70
+ children: /*#__PURE__*/_jsxs(Stack, {
71
+ direction: "vertical",
72
+ gap: 4,
73
+ hAlign: "stretch",
74
+ children: [/*#__PURE__*/_jsx(Button, {
75
+ label: actionLabel,
76
+ variant: "destructive",
77
+ size: "lg",
78
+ onClick: onAction,
79
+ xstyle: styles.action
80
+ }), /*#__PURE__*/_jsx(Button, {
81
+ label: cancelLabel,
82
+ variant: "secondary",
83
+ size: "lg",
84
+ onClick: () => onOpenChange(false),
85
+ "data-autofocus": true,
86
+ xstyle: styles.action
87
+ })]
88
+ })
89
+ })
90
+ })
91
+ });
92
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file indicatorPress.stylex.ts
3
+ * @input Uses StyleX
4
+ * @output Exports `indicatorPressScope`, the marker of a first-party
5
+ * indicator that paints its own press
6
+ * @position Internal entry for Astryx's own replacement indicators;
7
+ * CheckboxInput reads it
8
+ */
9
+ import * as stylex from '@stylexjs/stylex';
10
+ /**
11
+ * Marks a first-party replacement indicator that paints its own press, for
12
+ * a shape that CheckboxInput's rounded-square press layer would tint past,
13
+ * such as a circle. CheckboxInput leaves that layer off over an indicator
14
+ * with this marker.
15
+ *
16
+ * @internal Not public API: the touch press reaches the indicator through a
17
+ * private property.
18
+ */
19
+ export declare const indicatorPressScope: ReturnType<typeof stylex.defineMarker>;
20
+ //# sourceMappingURL=indicatorPress.stylex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indicatorPress.stylex.d.ts","sourceRoot":"","sources":["../../src/internal/indicatorPress.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,YAAY,CAChD,CAAC"}
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file indicatorPress.stylex.ts
5
+ * @input Uses StyleX
6
+ * @output Exports `indicatorPressScope`, the marker of a first-party
7
+ * indicator that paints its own press
8
+ * @position Internal entry for Astryx's own replacement indicators;
9
+ * CheckboxInput reads it
10
+ */
11
+
12
+ import * as stylex from '@stylexjs/stylex';
13
+
14
+ /**
15
+ * Marks a first-party replacement indicator that paints its own press, for
16
+ * a shape that CheckboxInput's rounded-square press layer would tint past,
17
+ * such as a circle. CheckboxInput leaves that layer off over an indicator
18
+ * with this marker.
19
+ *
20
+ * @internal Not public API: the touch press reaches the indicator through a
21
+ * private property.
22
+ */
23
+ export const indicatorPressScope = {
24
+ x1lrrceh: "x1lrrceh",
25
+ $$css: true
26
+ };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @file sheetDraft.ts
3
+ * @input A sheet's selection at open, its draft, and the last edit made
4
+ * @output SheetDraftChange, hasSameSelection, nameSheetDraftChange — the
5
+ * rules a touch sheet's Save and dismissal share
6
+ * @position Core-internal, shared by the Tokenizer sheet and the Lab sheets
7
+ * through `internal/touch-sheet`; not a public export
8
+ *
9
+ * A touch sheet edits a draft and reports it once, on Save, with one change:
10
+ * the last edit that still holds, else the nearest net add or remove. A
11
+ * dismissal asks before discarding only while the draft differs from the
12
+ * selection at open, as a set: a row unchecked and checked again is no change.
13
+ */
14
+ interface SheetDraftItem {
15
+ id: string | number;
16
+ }
17
+ /** An edit of a sheet's draft, and the shape Save reports. */
18
+ export type SheetDraftChange<T> = {
19
+ item: T;
20
+ type: 'add' | 'create' | 'remove';
21
+ };
22
+ /** Whether two selections hold the same items, in any order. */
23
+ export declare function hasSameSelection<T extends SheetDraftItem>(a: ReadonlyArray<T>, b: ReadonlyArray<T>): boolean;
24
+ /**
25
+ * The change Save reports for a draft that differs from the selection at
26
+ * open, or `null` when nothing differs. The last edit names it when it still
27
+ * holds: its item is in the draft and was not selected at open, or was
28
+ * selected at open and is gone. Otherwise, after a removal, a `remove` names
29
+ * an item that is gone; otherwise an `add` (`create` when the last edit
30
+ * created that item) names an item that is new; otherwise a `remove` names
31
+ * an item that is gone.
32
+ */
33
+ export declare function nameSheetDraftChange<T extends SheetDraftItem>(valueAtOpen: ReadonlyArray<T>, draftValue: ReadonlyArray<T>, lastDraftChange: SheetDraftChange<T> | null): SheetDraftChange<T> | null;
34
+ export {};
35
+ //# sourceMappingURL=sheetDraft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheetDraft.d.ts","sourceRoot":"","sources":["../../src/internal/sheetDraft.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAEH,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACnC,CAAC;AAEF,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,cAAc,EACvD,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACnB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAClB,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,cAAc,EAC3D,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAC7B,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAC5B,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,GAC1C,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CA6B5B"}
@@ -0,0 +1,65 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ /**
3
+ * @file sheetDraft.ts
4
+ * @input A sheet's selection at open, its draft, and the last edit made
5
+ * @output SheetDraftChange, hasSameSelection, nameSheetDraftChange — the
6
+ * rules a touch sheet's Save and dismissal share
7
+ * @position Core-internal, shared by the Tokenizer sheet and the Lab sheets
8
+ * through `internal/touch-sheet`; not a public export
9
+ *
10
+ * A touch sheet edits a draft and reports it once, on Save, with one change:
11
+ * the last edit that still holds, else the nearest net add or remove. A
12
+ * dismissal asks before discarding only while the draft differs from the
13
+ * selection at open, as a set: a row unchecked and checked again is no change.
14
+ */
15
+
16
+ /** An edit of a sheet's draft, and the shape Save reports. */
17
+
18
+ /** Whether two selections hold the same items, in any order. */
19
+ export function hasSameSelection(a, b) {
20
+ if (a.length !== b.length) {
21
+ return false;
22
+ }
23
+ const ids = new Set(a.map(item => item.id));
24
+ return b.every(item => ids.has(item.id));
25
+ }
26
+
27
+ /**
28
+ * The change Save reports for a draft that differs from the selection at
29
+ * open, or `null` when nothing differs. The last edit names it when it still
30
+ * holds: its item is in the draft and was not selected at open, or was
31
+ * selected at open and is gone. Otherwise, after a removal, a `remove` names
32
+ * an item that is gone; otherwise an `add` (`create` when the last edit
33
+ * created that item) names an item that is new; otherwise a `remove` names
34
+ * an item that is gone.
35
+ */
36
+ export function nameSheetDraftChange(valueAtOpen, draftValue, lastDraftChange) {
37
+ const wasSelected = id => valueAtOpen.some(item => item.id === id);
38
+ const isSelected = id => draftValue.some(item => item.id === id);
39
+ const added = draftValue.find(item => !wasSelected(item.id));
40
+ const removed = valueAtOpen.find(item => !isSelected(item.id));
41
+ const lastChangeIsNet = lastDraftChange != null && (lastDraftChange.type === 'remove' ? wasSelected(lastDraftChange.item.id) && !isSelected(lastDraftChange.item.id) : isSelected(lastDraftChange.item.id) && !wasSelected(lastDraftChange.item.id));
42
+ if (lastChangeIsNet) {
43
+ return lastDraftChange;
44
+ }
45
+ if (lastDraftChange?.type === 'remove' && removed != null) {
46
+ return {
47
+ item: removed,
48
+ type: 'remove'
49
+ };
50
+ }
51
+ if (added != null) {
52
+ const type = lastDraftChange?.item.id === added.id && lastDraftChange.type === 'create' ? 'create' : 'add';
53
+ return {
54
+ item: added,
55
+ type
56
+ };
57
+ }
58
+ if (removed != null) {
59
+ return {
60
+ item: removed,
61
+ type: 'remove'
62
+ };
63
+ }
64
+ return null;
65
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file touch-sheet.ts
3
+ * @input The touch sheets' shared confirmation, search-drag dismissal and
4
+ * draft rules
5
+ * @output `@astryxdesign/core/internal/touch-sheet`: SheetConfirmation,
6
+ * useDismissSearchOnTouchDrag, hasSameSelection and nameSheetDraftChange,
7
+ * re-exported by name for Lab's sheets
8
+ * @position An internal entry reserved for Astryx's own packages:
9
+ * undocumented, outside the public API and its compatibility promise,
10
+ * versioned in lockstep with Core, and allowed only in Core and Lab by the
11
+ * `@astryx/no-core-internal-import` lint rule. Core components import the
12
+ * same modules by relative path. Named re-exports only.
13
+ *
14
+ * SYNC: When modified, update scripts/sync-exports.js.
15
+ */
16
+ export { SheetConfirmation } from './SheetConfirmation.js';
17
+ export type { SheetConfirmationProps } from './SheetConfirmation.js';
18
+ export { useDismissSearchOnTouchDrag } from './useDismissSearchOnTouchDrag.js';
19
+ export { hasSameSelection, nameSheetDraftChange } from './sheetDraft.js';
20
+ export type { SheetDraftChange } from './sheetDraft.js';
21
+ //# sourceMappingURL=touch-sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"touch-sheet.d.ts","sourceRoot":"","sources":["../../src/internal/touch-sheet.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,cAAc,CAAC;AACpE,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ /**
3
+ * @file touch-sheet.ts
4
+ * @input The touch sheets' shared confirmation, search-drag dismissal and
5
+ * draft rules
6
+ * @output `@astryxdesign/core/internal/touch-sheet`: SheetConfirmation,
7
+ * useDismissSearchOnTouchDrag, hasSameSelection and nameSheetDraftChange,
8
+ * re-exported by name for Lab's sheets
9
+ * @position An internal entry reserved for Astryx's own packages:
10
+ * undocumented, outside the public API and its compatibility promise,
11
+ * versioned in lockstep with Core, and allowed only in Core and Lab by the
12
+ * `@astryx/no-core-internal-import` lint rule. Core components import the
13
+ * same modules by relative path. Named re-exports only.
14
+ *
15
+ * SYNC: When modified, update scripts/sync-exports.js.
16
+ */
17
+ export { SheetConfirmation } from "./SheetConfirmation.js";
18
+ export { useDismissSearchOnTouchDrag } from "./useDismissSearchOnTouchDrag.js";
19
+ export { hasSameSelection, nameSheetDraftChange } from "./sheetDraft.js";
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @file useDismissSearchOnTouchDrag.ts
3
+ * @input Caller-owned search inputs, a focus target, and touch events from a
4
+ * separate results list
5
+ * @output useDismissSearchOnTouchDrag — touch handlers for the results list
6
+ * @position Core-internal, shared by the touch sheets; not a public export
7
+ *
8
+ * A direct vertical touch drag on the results moves focus off a focused
9
+ * search input. The on-screen keyboard then leaves and the rows come into
10
+ * view; the query stays. Focus goes to the caller's target (the sheet's
11
+ * panel), never to the page body behind an open modal. Scroll events are not
12
+ * observed: filtering can clamp scrollTop and fire scroll while someone is
13
+ * typing. Small moves, taps and multi-touch gestures leave focus alone.
14
+ */
15
+ import { type TouchEvent } from 'react';
16
+ type SearchInput = HTMLInputElement | null | undefined;
17
+ export declare function useDismissSearchOnTouchDrag(getSearchInputs: () => ReadonlyArray<SearchInput>, getFocusTarget?: () => HTMLElement | null | undefined): {
18
+ onTouchStart: (event: TouchEvent<HTMLElement>) => void;
19
+ onTouchMove: (event: TouchEvent<HTMLElement>) => void;
20
+ onTouchEnd: () => void;
21
+ onTouchCancel: () => void;
22
+ };
23
+ export {};
24
+ //# sourceMappingURL=useDismissSearchOnTouchDrag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDismissSearchOnTouchDrag.d.ts","sourceRoot":"","sources":["../../src/internal/useDismissSearchOnTouchDrag.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAS,KAAK,UAAU,EAAC,MAAM,OAAO,CAAC;AAI9C,KAAK,WAAW,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvD,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,EACjD,cAAc,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS;0BAQ7B,UAAU,CAAC,WAAW,CAAC;yBAIxB,UAAU,CAAC,WAAW,CAAC;;;EA6B/C"}
@@ -0,0 +1,56 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useDismissSearchOnTouchDrag.ts
7
+ * @input Caller-owned search inputs, a focus target, and touch events from a
8
+ * separate results list
9
+ * @output useDismissSearchOnTouchDrag — touch handlers for the results list
10
+ * @position Core-internal, shared by the touch sheets; not a public export
11
+ *
12
+ * A direct vertical touch drag on the results moves focus off a focused
13
+ * search input. The on-screen keyboard then leaves and the rows come into
14
+ * view; the query stays. Focus goes to the caller's target (the sheet's
15
+ * panel), never to the page body behind an open modal. Scroll events are not
16
+ * observed: filtering can clamp scrollTop and fire scroll while someone is
17
+ * typing. Small moves, taps and multi-touch gestures leave focus alone.
18
+ */
19
+ import { useRef } from 'react';
20
+ const DRAG_THRESHOLD_PX = 8;
21
+ export function useDismissSearchOnTouchDrag(getSearchInputs, getFocusTarget) {
22
+ const startYRef = useRef(null);
23
+ const reset = () => {
24
+ startYRef.current = null;
25
+ };
26
+ return {
27
+ onTouchStart: event => {
28
+ startYRef.current = event.touches.length === 1 ? event.touches[0].clientY : null;
29
+ },
30
+ onTouchMove: event => {
31
+ if (event.touches.length !== 1) {
32
+ reset();
33
+ return;
34
+ }
35
+ const startY = startYRef.current;
36
+ if (startY == null || Math.abs(event.touches[0].clientY - startY) < DRAG_THRESHOLD_PX) {
37
+ return;
38
+ }
39
+ reset();
40
+ const focusedSearch = getSearchInputs().find(input => input != null && input === document.activeElement);
41
+ if (focusedSearch == null) {
42
+ return;
43
+ }
44
+ const target = getFocusTarget?.();
45
+ if (target != null) {
46
+ target.focus({
47
+ preventScroll: true
48
+ });
49
+ } else {
50
+ focusedSearch.blur();
51
+ }
52
+ },
53
+ onTouchEnd: reset,
54
+ onTouchCancel: reset
55
+ };
56
+ }
@@ -50,18 +50,18 @@ export interface AnimateOptions {
50
50
  crossfadeAs?: 'entrance' | 'exit';
51
51
  /**
52
52
  * When the call's animations start. By default a call from rest starts
53
- * when the browser commits it, and a call that continues motion on screen
54
- * (a retarget) starts now, from the value on screen. Ignored with `at`.
53
+ * when the browser commits it. A call that continues motion on screen (a
54
+ * retarget) starts now, from the value on screen. A curve whose tail
55
+ * already shows as at rest counts as rest. Ignored with `at`.
55
56
  * - `'commit'`: a call that continues motion also starts when the browser
56
- * commits it, dated by the browser rather than by the main thread, as a
57
- * call from rest is.
58
- * - `'presented'`: a call from rest leaves its element at rest and creates
59
- * its animations two frames later, once the frame that carries the
60
- * element at rest has been presented; they then start at their commit. A
61
- * busy UI process delays the motion instead of skipping into it, for two
62
- * frames more before an idle start. Any other change to the animator
63
- * before then creates the animations first, in call order. A call that
64
- * continues motion on screen (a retarget) starts now, as by default.
57
+ * commits it. The browser dates it, as it dates a call from rest.
58
+ * - `'presented'`: a call from rest leaves its element at rest. Its
59
+ * animations are created two frames later, once the frame with the
60
+ * element at rest has been presented. They then start at their commit,
61
+ * so a busy UI process delays the motion instead of skipping into it.
62
+ * Any other change to the animator before then creates the animations
63
+ * first, in call order. A call that continues motion on screen starts
64
+ * now, as by default.
65
65
  */
66
66
  start?: 'commit' | 'presented';
67
67
  /**
@@ -101,7 +101,7 @@ export interface MotionCurve {
101
101
  readonly isTransition?: boolean;
102
102
  }
103
103
  /**
104
- * Options of `createAnimator`.
104
+ * Options of `createMotionAnimator`.
105
105
  */
106
106
  /** How `set` puts values in place. */
107
107
  export interface SetOptions {
@@ -302,7 +302,7 @@ export declare function defaultIsCoarsePointer(): boolean;
302
302
  *
303
303
  * @example
304
304
  * ```
305
- * const animator = createAnimator(sheet);
305
+ * const animator = createMotionAnimator(sheet);
306
306
  * // finger lifts at 1200 px/s heading for the detent at 0 (a component
307
307
  * // passes the spring of its motion role):
308
308
  * animator.animate({y: 0}, {spring: {response: 0.45, dampingRatio: 0.9}, velocity: {y: 1200}});
@@ -311,5 +311,5 @@ export declare function defaultIsCoarsePointer(): boolean;
311
311
  * animator.stop(['y']);
312
312
  * ```
313
313
  */
314
- export declare function createAnimator(element: HTMLElement | null, options?: AnimatorOptions): Animator;
314
+ export declare function createMotionAnimator(element: HTMLElement | null, options?: AnimatorOptions): Animator;
315
315
  //# sourceMappingURL=animator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"animator.d.ts","sourceRoot":"","sources":["../../src/motion/animator.ts"],"names":[],"mappings":"AAsLA,OAAO,EAAwB,KAAK,iBAAiB,EAAC,MAAM,UAAU,CAAC;AASvE;;GAEG;AACH,MAAM,MAAM,cAAc,GACxB,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC/B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,sCAAsC;AACtC,MAAM,WAAW,UAAU;IACzB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACnD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,gEAAgE;IAChE,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvD,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1D;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC;IAC9D,sEAAsE;IACtE,QAAQ,CACN,EAAE,EAAE,YAAY,EAChB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,CAAC;IAChB,mEAAmE;IACnE,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE;QACtB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1C,kEAAkE;IAClE,GAAG,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/D,8DAA8D;IAC9D,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACtD,oDAAoD;IACpD,OAAO,CACL,EAAE,EAAE,YAAY,EAChB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,CAAC;IAChB;;;;;;;;OAQG;IACH,IAAI,CACF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,EAC9D,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,KAAK,CACH,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC,EAC/C,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,cAAc,CAAC,GACpD,YAAY,CAAC;IAChB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACzE,wEAAwE;IACxE,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,uCAAuC;IACvC,OAAO,IAAI,IAAI,CAAC;CACjB;AAoKD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAO3D,CAAC;AAqEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,WAAW,QAAS,CAAC;AAalC,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AA6CvC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CAaV;AAyED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAMrD;AAED,kEAAkE;AAClE,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CAk9FV"}
1
+ {"version":3,"file":"animator.d.ts","sourceRoot":"","sources":["../../src/motion/animator.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,12 @@
4
4
  * @file animator.ts
5
5
  * @input An element, target values, and a spring, momentum curves (coast.ts)
6
6
  * or any closed-form curve
7
- * @output Exports `createAnimator`: a compositor animator for translate,
8
- * rotate, scale and opacity, with presentation values and velocities read
9
- * from the analytic curves, velocity-preserving retargeting, freeze-in-place
10
- * `stop`, completion promises, a shared clock, and UIKit's Reduced Motion
11
- * substitution; plus its option, handle and transition types
7
+ * @output Exports `createMotionAnimator`, a compositor animator for
8
+ * translate, rotate, scale and opacity, and its option, handle and
9
+ * transition types. It reads presentation values and velocities from the
10
+ * analytic curves. It retargets with the velocity kept, freezes in place on
11
+ * `stop`, and gives completion promises, a shared clock, and UIKit's
12
+ * Reduced Motion substitution.
12
13
  * @position Motion foundation (DOM). Internal to core: components use it for
13
14
  * every touch-presentation animation; not exported from the package entry
14
15
  *
@@ -212,7 +213,7 @@ import { planReducedMotion } from "./reducedMotionPlan.js";
212
213
  */
213
214
 
214
215
  /**
215
- * Options of `createAnimator`.
216
+ * Options of `createMotionAnimator`.
216
217
  */
217
218
  /** How `set` puts values in place. */
218
219
 
@@ -292,6 +293,18 @@ const SAMPLE_TOLERANCE = {
292
293
  /** Keyframes start on this grid (ms) and are split where the curve needs it. */
293
294
  const SAMPLE_GRID_MS = 1000 / 30;
294
295
 
296
+ /**
297
+ * A curve within this many sample tolerances of its target can show as at
298
+ * rest. A call on it then starts as one from rest does, at the browser's start.
299
+ */
300
+ const REST_DISTANCE_TOLERANCES = 2;
301
+
302
+ /**
303
+ * A curve shows as at rest only while it moves at most one `SAMPLE_TOLERANCE`
304
+ * a frame at this rate.
305
+ */
306
+ const REST_FRAMES_PER_SECOND = 60;
307
+
295
308
  /** A curve that has not settled by then (an undamped spring) snaps. */
296
309
  const MAX_DURATION_MS = 30_000;
297
310
 
@@ -420,7 +433,7 @@ export function animatorFor(element, options = {}) {
420
433
  const key = options.pseudoElement ?? '';
421
434
  let animator = byPseudo.get(key);
422
435
  if (animator == null) {
423
- animator = createAnimator(element, options);
436
+ animator = createMotionAnimator(element, options);
424
437
  byPseudo.set(key, animator);
425
438
  }
426
439
  return animator;
@@ -524,7 +537,7 @@ const REDUCED_TRANSITION = {
524
537
  *
525
538
  * @example
526
539
  * ```
527
- * const animator = createAnimator(sheet);
540
+ * const animator = createMotionAnimator(sheet);
528
541
  * // finger lifts at 1200 px/s heading for the detent at 0 (a component
529
542
  * // passes the spring of its motion role):
530
543
  * animator.animate({y: 0}, {spring: {response: 0.45, dampingRatio: 0.9}, velocity: {y: 1200}});
@@ -533,7 +546,7 @@ const REDUCED_TRANSITION = {
533
546
  * animator.stop(['y']);
534
547
  * ```
535
548
  */
536
- export function createAnimator(element, options = {}) {
549
+ export function createMotionAnimator(element, options = {}) {
537
550
  const now = options.now ?? defaultNow;
538
551
  const frameSource = options.requestFrame ?? (typeof requestAnimationFrame === 'function' ? callback => {
539
552
  requestAnimationFrame(() => callback());
@@ -737,6 +750,14 @@ export function createAnimator(element, options = {}) {
737
750
  }
738
751
  return curveAt(property, time);
739
752
  };
753
+
754
+ /**
755
+ * Whether a curve's tail already shows as at rest at `time`. Under a
756
+ * starved main thread the browser commits a call late. A call that starts
757
+ * at its own time then skips that far into its curve. One that starts at
758
+ * the commit holds an element that hardly moves.
759
+ */
760
+ const showsAtRest = (property, segment, time) => Math.abs(valueAt(property, time) - segment.target) <= REST_DISTANCE_TOLERANCES * SAMPLE_TOLERANCE[property] && Math.abs(velocityAt(property, time)) <= SAMPLE_TOLERANCE[property] * REST_FRAMES_PER_SECOND;
740
761
  const velocityAt = (property, time) => {
741
762
  const held = segments.get(property);
742
763
  if (held != null && isHeld(held)) {
@@ -1506,10 +1527,10 @@ export function createAnimator(element, options = {}) {
1506
1527
  // -- starting from rest ---------------------------------------------------
1507
1528
 
1508
1529
  /**
1509
- * A call starts from rest when nothing on the channels it drives is moving
1510
- * (a curve still waiting for its first frame counts as rest) and nothing
1511
- * pins its clock (`at`). Returns its start group, or null for an explicit
1512
- * start.
1530
+ * A call starts from rest when nothing on the channels it drives moves on
1531
+ * screen and nothing pins its clock (`at`). A curve still waiting for its
1532
+ * first frame counts as rest, as does one whose tail already shows as at
1533
+ * rest. Returns its start group, or null for an explicit start.
1513
1534
  */
1514
1535
  const beginGroup = (time, properties, at, start) => {
1515
1536
  if (target == null || typeof target.animate !== 'function') {
@@ -1538,16 +1559,18 @@ export function createAnimator(element, options = {}) {
1538
1559
  }
1539
1560
  return null;
1540
1561
  }
1541
- // A call that continues motion starts now unless it asks for the
1542
- // browser's start (`commit`). `presented` asks only for a call from rest:
1543
- // an element still moving is not at rest, so a retarget starts now, from
1544
- // the value and velocity on screen (spec:AST-094 FR6).
1562
+ // A call that continues motion starts now, unless it asks for the
1563
+ // browser's start (`commit`). `presented` asks only for a call from rest.
1564
+ // A curve that still moves is not at rest, so a call on it starts now,
1565
+ // from the value and velocity on screen. A tail that shows as at rest
1566
+ // counts as rest, so a call on it waits, under `presented` for its two
1567
+ // frames.
1545
1568
  for (const channel of start === 'commit' ? [] : channels) {
1546
1569
  for (const property of CHANNELS[channel]) {
1547
1570
  const segment = segments.get(property);
1548
1571
  // A call's first frame puts its channels on screen, even before the
1549
1572
  // browser reports the start. So such a channel is not at rest either.
1550
- if (segment != null && time < endOf(property, segment) && (segment.group == null || segment.group.resolved || shownSince(property, segment) != null)) {
1573
+ if (segment != null && time < endOf(property, segment) && (segment.group == null || segment.group.resolved || shownSince(property, segment) != null) && !showsAtRest(property, segment, time)) {
1551
1574
  return null;
1552
1575
  }
1553
1576
  }
@@ -22,4 +22,28 @@ export declare function reducedMotionFade(element?: Element | null, options?: {
22
22
  /** The change starts from the release of a touch drag (DR2). */
23
23
  touchRelease?: boolean;
24
24
  }): ReducedMotionFade | null;
25
+ /** A running Reduced Motion dip. */
26
+ export interface ReducedMotionDip {
27
+ /** Stops the dip. A change that has not landed yet never lands. */
28
+ cancel(): void;
29
+ }
30
+ /**
31
+ * Plays `fade` on `element` as a dip, and runs `land` at its middle: the
32
+ * fade-out, the change, then the fade-in. The fade-out holds at 0 until `land`
33
+ * has run, and the fade-in starts only after it. So the change never shows at
34
+ * full opacity, however late the main thread runs. A timer at the middle can
35
+ * fire after the fade-in has begun.
36
+ *
37
+ * `land` must apply the change before it returns: the fade-in starts right
38
+ * after it. `from` is the opacity the fade-out starts at: a leaving element
39
+ * fades out from where it is.
40
+ *
41
+ * @example
42
+ * ```
43
+ * const dip = playReducedMotionDip(scroller, fade, () => scroller.scrollTo({top}));
44
+ * // A newer change replaces it:
45
+ * dip.cancel();
46
+ * ```
47
+ */
48
+ export declare function playReducedMotionDip(element: Element, fade: ReducedMotionFade, land: () => void, from?: number): ReducedMotionDip;
25
49
  //# sourceMappingURL=reducedMotion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducedMotion.d.ts","sourceRoot":"","sources":["../../src/motion/reducedMotion.ts"],"names":[],"mappings":"AAqDA,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,2DACoB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,iEACuB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,EACxB,OAAO,GAAE;IACP,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,iBAAiB,GAAG,IAAI,CAmB1B"}
1
+ {"version":3,"file":"reducedMotion.d.ts","sourceRoot":"","sources":["../../src/motion/reducedMotion.ts"],"names":[],"mappings":"AAqDA,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,2DACoB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,iEACuB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,EACxB,OAAO,GAAE;IACP,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,iBAAiB,GAAG,IAAI,CAmB1B;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,IAAI,EAChB,IAAI,SAAI,GACP,gBAAgB,CAyClB"}