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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (798) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +4 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +46 -6
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +11 -3
  6. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  7. package/dist/BottomSheet/BottomSheet.js +1 -0
  8. package/dist/BottomSheet/BottomSheetPanel.d.ts +1 -1
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetPanel.js +55 -18
  11. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  12. package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
  13. package/dist/BottomSheet/bottomSheetStack.js +1 -1
  14. package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
  15. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  16. package/dist/BottomSheet/useSheetGestures.js +16 -1
  17. package/dist/Button/Button.d.ts.map +1 -1
  18. package/dist/Button/Button.js +17 -1
  19. package/dist/Calendar/Calendar.d.ts.map +1 -1
  20. package/dist/Calendar/Calendar.js +18 -22
  21. package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
  22. package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
  23. package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
  24. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  25. package/dist/Calendar/hooks/useCalendarDays.js +2 -10
  26. package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
  27. package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
  28. package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
  29. package/dist/Carousel/Carousel.d.ts.map +1 -1
  30. package/dist/Carousel/Carousel.js +2 -0
  31. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  32. package/dist/Chat/ChatComposerInput.js +6 -1
  33. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  34. package/dist/Chat/ChatMessageList.js +2 -1
  35. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  36. package/dist/Chat/useChatDictation.js +2 -0
  37. package/dist/Chat/useChatNewMessages.js +1 -1
  38. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  39. package/dist/Chat/useChatStreamScroll.js +2 -0
  40. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  41. package/dist/Chat/useSpeechRecognition.js +3 -0
  42. package/dist/Chat/useTriggerMenu.js +1 -1
  43. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  44. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  45. package/dist/CheckboxList/CheckboxList.d.ts +20 -2
  46. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  47. package/dist/CheckboxList/CheckboxList.js +12 -4
  48. package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
  49. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  50. package/dist/CheckboxList/CheckboxListContext.js +2 -1
  51. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  52. package/dist/CheckboxList/CheckboxListItem.js +14 -2
  53. package/dist/CheckboxList/requiredGroup.d.ts +22 -0
  54. package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
  55. package/dist/CheckboxList/requiredGroup.js +52 -0
  56. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  57. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  58. package/dist/CodeBlock/CodeBlock.js +28 -11
  59. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  60. package/dist/CommandPalette/CommandPalette.js +2 -0
  61. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  62. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  63. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  64. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  65. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  66. package/dist/ContextMenu/ContextMenu.js +2 -2
  67. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  68. package/dist/DateInput/MonthScroller.js +5 -2
  69. package/dist/DateInput/PickerWheel.d.ts +19 -0
  70. package/dist/DateInput/PickerWheel.d.ts.map +1 -0
  71. package/dist/DateInput/PickerWheel.js +646 -0
  72. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  73. package/dist/DateInput/TouchDateField.js +9 -30
  74. package/dist/DateInput/Wheel.d.ts +18 -37
  75. package/dist/DateInput/Wheel.d.ts.map +1 -1
  76. package/dist/DateInput/Wheel.js +133 -120
  77. package/dist/DateInput/datePickerTouch.d.ts +13 -0
  78. package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
  79. package/dist/DateInput/datePickerTouch.js +14 -0
  80. package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
  81. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  82. package/dist/DateInput/useOwnScrollGesture.js +16 -3
  83. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  84. package/dist/DateInput/usePointerDragScroll.js +2 -0
  85. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  86. package/dist/DateInput/useScrollSettle.js +3 -0
  87. package/dist/DateInput/useWheelListbox.d.ts +59 -0
  88. package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
  89. package/dist/DateInput/useWheelListbox.js +88 -0
  90. package/dist/DateInput/wheelOptions.d.ts +94 -0
  91. package/dist/DateInput/wheelOptions.d.ts.map +1 -0
  92. package/dist/DateInput/wheelOptions.js +110 -0
  93. package/dist/DateInput/wheelPhysics.d.ts +127 -0
  94. package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
  95. package/dist/DateInput/wheelPhysics.js +341 -0
  96. package/dist/DateInput/wheelStrip.d.ts +92 -0
  97. package/dist/DateInput/wheelStrip.d.ts.map +1 -0
  98. package/dist/DateInput/wheelStrip.js +258 -0
  99. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  100. package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
  101. package/dist/Dialog/Dialog.d.ts.map +1 -1
  102. package/dist/Dialog/Dialog.js +9 -32
  103. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  104. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  105. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  106. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  107. package/dist/Field/Field.js +2 -2
  108. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  109. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  110. package/dist/FormLayout/FormLayout.d.ts +5 -1
  111. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  112. package/dist/HoverCard/HoverCard.d.ts +6 -4
  113. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  114. package/dist/HoverCard/HoverCard.js +48 -3
  115. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  116. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  117. package/dist/HoverCard/useHoverCard.js +26 -34
  118. package/dist/Icon/Icon.d.ts +5 -1
  119. package/dist/Icon/Icon.d.ts.map +1 -1
  120. package/dist/Icon/Icon.js +20 -3
  121. package/dist/InfoTip/InfoTip.d.ts +5 -5
  122. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  123. package/dist/InfoTip/InfoTip.js +58 -19
  124. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  125. package/dist/Item/useSwipeAction.js +3 -0
  126. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  127. package/dist/Layer/modalOutlet.js +2 -0
  128. package/dist/Layer/outsidePress.d.ts.map +1 -1
  129. package/dist/Layer/outsidePress.js +1 -0
  130. package/dist/Layer/useLayer.d.ts.map +1 -1
  131. package/dist/Layer/useLayer.js +4 -1
  132. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  133. package/dist/Layer/useLayerDismissal.js +3 -0
  134. package/dist/Layer/useTouchTrigger.d.ts +13 -7
  135. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  136. package/dist/Layer/useTouchTrigger.js +20 -6
  137. package/dist/Layout/index.d.ts +1 -1
  138. package/dist/Layout/index.d.ts.map +1 -1
  139. package/dist/Layout/index.js +1 -1
  140. package/dist/Layout/layoutReset.js +1 -1
  141. package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
  142. package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
  143. package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
  144. package/dist/Layout/padding.stylex.d.ts +5 -129
  145. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  146. package/dist/Layout/padding.stylex.js +9 -143
  147. package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
  148. package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
  149. package/dist/Layout/paddingStyles.stylex.js +99 -0
  150. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  151. package/dist/Lightbox/Lightbox.js +20 -1
  152. package/dist/MobileNav/MobileNav.d.ts +3 -2
  153. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  154. package/dist/MobileNav/MobileNav.js +10 -26
  155. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  156. package/dist/MultiSelector/MultiSelector.js +2 -1
  157. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  158. package/dist/NumberInput/NumberInput.js +2 -1
  159. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  160. package/dist/Outline/useOutlineFromDOM.js +3 -0
  161. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  162. package/dist/Outline/useScrollSpy.js +3 -0
  163. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  164. package/dist/OverflowList/OverflowList.js +3 -0
  165. package/dist/Overlay/Overlay.d.ts.map +1 -1
  166. package/dist/Overlay/Overlay.js +7 -2
  167. package/dist/Popover/Popover.d.ts.map +1 -1
  168. package/dist/Popover/Popover.js +6 -0
  169. package/dist/Popover/usePopover.js +2 -2
  170. package/dist/PowerSearch/PowerSearch.d.ts +41 -4
  171. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  172. package/dist/PowerSearch/PowerSearch.js +441 -134
  173. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
  174. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  175. package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
  176. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  177. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  178. package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
  179. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  180. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  181. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  182. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  183. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  184. package/dist/PowerSearch/PowerSearchToken.js +3 -2
  185. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  186. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  187. package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
  188. package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
  189. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  190. package/dist/PowerSearch/formatFilterValue.js +31 -23
  191. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  192. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  193. package/dist/PowerSearch/formatTokenValue.js +161 -0
  194. package/dist/PowerSearch/index.d.ts +1 -1
  195. package/dist/PowerSearch/index.d.ts.map +1 -1
  196. package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
  197. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  198. package/dist/PowerSearch/powerSearchDateZone.js +57 -0
  199. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  200. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  201. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  202. package/dist/PowerSearch/types.d.ts +8 -1
  203. package/dist/PowerSearch/types.d.ts.map +1 -1
  204. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  205. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  206. package/dist/RadioList/RadioList.d.ts.map +1 -1
  207. package/dist/RadioList/RadioList.js +3 -2
  208. package/dist/RadioList/RadioListItem.d.ts +1 -1
  209. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  210. package/dist/RadioList/RadioListItem.js +5 -3
  211. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  212. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  213. package/dist/Resizable/ResizeHandle.js +116 -92
  214. package/dist/Resizable/createResizable.d.ts +199 -0
  215. package/dist/Resizable/createResizable.d.ts.map +1 -0
  216. package/dist/Resizable/createResizable.js +733 -0
  217. package/dist/Resizable/separatorAttributes.d.ts +45 -0
  218. package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
  219. package/dist/Resizable/separatorAttributes.js +35 -0
  220. package/dist/Resizable/useResizable.d.ts +3 -3
  221. package/dist/Resizable/useResizable.d.ts.map +1 -1
  222. package/dist/Resizable/useResizable.js +252 -459
  223. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  224. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  225. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  226. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  227. package/dist/SelectableCard/SelectableCard.js +36 -11
  228. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  229. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  230. package/dist/SelectableCard/selectableCardInput.js +20 -0
  231. package/dist/Selector/Selector.d.ts.map +1 -1
  232. package/dist/Selector/Selector.js +7 -9
  233. package/dist/SideNav/SideNav.d.ts.map +1 -1
  234. package/dist/SideNav/SideNav.js +36 -5
  235. package/dist/Slider/Slider.d.ts.map +1 -1
  236. package/dist/Slider/Slider.js +16 -11
  237. package/dist/Slider/sliderTouchController.js +2 -2
  238. package/dist/Spinner/Spinner.d.ts +1 -1
  239. package/dist/Spinner/Spinner.d.ts.map +1 -1
  240. package/dist/Spinner/Spinner.js +60 -58
  241. package/dist/Stepper/Stepper.d.ts.map +1 -1
  242. package/dist/Stepper/Stepper.js +10 -15
  243. package/dist/Switch/Switch.d.ts.map +1 -1
  244. package/dist/Switch/Switch.js +4 -10
  245. package/dist/Switch/useSwitchTouch.js +4 -4
  246. package/dist/Table/BaseTable.d.ts.map +1 -1
  247. package/dist/Table/BaseTable.js +29 -8
  248. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  249. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  250. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  251. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  252. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
  253. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  254. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
  255. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  256. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  257. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  258. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  259. package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
  260. package/dist/TextArea/TextArea.d.ts.map +1 -1
  261. package/dist/TextArea/TextArea.js +2 -1
  262. package/dist/TextInput/TextInput.d.ts +2 -2
  263. package/dist/TextInput/TextInput.d.ts.map +1 -1
  264. package/dist/TextInput/TextInput.js +12 -8
  265. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  266. package/dist/TimeInput/TimeInput.js +2 -0
  267. package/dist/TimeInput/TimeWheels.d.ts +32 -0
  268. package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
  269. package/dist/TimeInput/TimeWheels.js +144 -0
  270. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  271. package/dist/TimeInput/TouchTimeField.js +63 -116
  272. package/dist/TimeInput/timeWheelRules.d.ts +124 -0
  273. package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
  274. package/dist/TimeInput/timeWheelRules.js +277 -0
  275. package/dist/Timer/Timer.d.ts.map +1 -1
  276. package/dist/Timer/Timer.js +2 -0
  277. package/dist/Timestamp/Timestamp.js +1 -1
  278. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  279. package/dist/Timestamp/formatInstant.js +1 -23
  280. package/dist/Toast/Toast.d.ts +11 -1
  281. package/dist/Toast/Toast.d.ts.map +1 -1
  282. package/dist/Toast/Toast.js +25 -15
  283. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  284. package/dist/Toast/ToastViewport.js +97 -34
  285. package/dist/Toast/types.d.ts +9 -3
  286. package/dist/Toast/types.d.ts.map +1 -1
  287. package/dist/Toast/useToast.d.ts.map +1 -1
  288. package/dist/Toast/useToast.js +1 -0
  289. package/dist/Tokenizer/Tokenizer.d.ts +44 -46
  290. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  291. package/dist/Tokenizer/Tokenizer.js +20 -21
  292. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  293. package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
  294. package/dist/Tokenizer/index.d.ts +1 -1
  295. package/dist/Tokenizer/index.d.ts.map +1 -1
  296. package/dist/Tooltip/Tooltip.d.ts +2 -23
  297. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  298. package/dist/Tooltip/Tooltip.js +5 -29
  299. package/dist/Tooltip/useTooltip.d.ts +23 -30
  300. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  301. package/dist/Tooltip/useTooltip.js +200 -108
  302. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  303. package/dist/Typeahead/BaseTypeahead.js +27 -18
  304. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  305. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  306. package/dist/animator/createAnimator.d.ts +98 -0
  307. package/dist/animator/createAnimator.d.ts.map +1 -0
  308. package/dist/animator/createAnimator.js +259 -0
  309. package/dist/astryx.css +53 -8
  310. package/dist/gestures/GestureHost.d.ts +16 -1
  311. package/dist/gestures/GestureHost.d.ts.map +1 -1
  312. package/dist/gestures/GestureHost.js +4 -1
  313. package/dist/gestures/PressTracker.d.ts.map +1 -1
  314. package/dist/gestures/PressTracker.js +4 -3
  315. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  316. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  317. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  318. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  319. package/dist/hooks/actionGroupTracker.js +18 -7
  320. package/dist/hooks/index.d.ts +1 -0
  321. package/dist/hooks/index.d.ts.map +1 -1
  322. package/dist/hooks/index.js +1 -0
  323. package/dist/hooks/longPressDetector.d.ts +66 -0
  324. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  325. package/dist/hooks/longPressDetector.js +200 -0
  326. package/dist/hooks/pressGroupContext.d.ts +6 -0
  327. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  328. package/dist/hooks/pressGroupContext.js +20 -0
  329. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  330. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  331. package/dist/hooks/rootScrollStyles.js +207 -0
  332. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  333. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  334. package/dist/hooks/scrollLockTouchGuard.js +117 -0
  335. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  336. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  337. package/dist/hooks/scrollbarGutter.js +36 -23
  338. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  339. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  340. package/dist/hooks/useActionGroupTracking.js +174 -0
  341. package/dist/hooks/useAnimator.d.ts +41 -0
  342. package/dist/hooks/useAnimator.d.ts.map +1 -0
  343. package/dist/hooks/useAnimator.js +70 -0
  344. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  345. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  346. package/dist/hooks/useAttachment.d.ts +1 -1
  347. package/dist/hooks/useAttachment.js +1 -1
  348. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  349. package/dist/hooks/useAutoMediaMode.js +1 -0
  350. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  351. package/dist/hooks/useBusyAnnouncement.js +2 -0
  352. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  353. package/dist/hooks/useDevWarning.js +2 -0
  354. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  355. package/dist/hooks/useFocusTrap.js +2 -0
  356. package/dist/hooks/useGridFocus.d.ts +8 -5
  357. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  358. package/dist/hooks/useGridFocus.js +4 -3
  359. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  360. package/dist/hooks/useHotkeys.js +3 -0
  361. package/dist/hooks/useImageMode.d.ts.map +1 -1
  362. package/dist/hooks/useImageMode.js +3 -0
  363. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  364. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  365. package/dist/hooks/useInputStatusIcon.js +2 -2
  366. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  367. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  368. package/dist/hooks/useKeyboardHint.js +1 -1
  369. package/dist/hooks/useLongPress.d.ts +8 -9
  370. package/dist/hooks/useLongPress.d.ts.map +1 -1
  371. package/dist/hooks/useLongPress.js +23 -106
  372. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  373. package/dist/hooks/useMenuHover.js +2 -0
  374. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  375. package/dist/hooks/useMenuPress.js +3 -0
  376. package/dist/hooks/useOverflow.d.ts.map +1 -1
  377. package/dist/hooks/useOverflow.js +2 -1
  378. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  379. package/dist/hooks/usePressFeedback.js +1 -0
  380. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  381. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  382. package/dist/hooks/useResolvedRequired.js +3 -0
  383. package/dist/hooks/useScrollLock.d.ts +8 -9
  384. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  385. package/dist/hooks/useScrollLock.js +50 -48
  386. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  387. package/dist/hooks/useScrollableArea.js +5 -0
  388. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  389. package/dist/hooks/useStreamingText.js +3 -0
  390. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  391. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  392. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +45 -0
  393. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  394. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  395. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  396. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  397. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  398. package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts +8 -0
  399. package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
  400. package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
  401. package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
  402. package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
  403. package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
  404. package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
  405. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
  406. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
  407. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
  408. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  409. package/dist/i18n/generated-locales/en.generated.js +37 -0
  410. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  411. package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
  412. package/dist/index.d.ts +1 -0
  413. package/dist/index.d.ts.map +1 -1
  414. package/dist/index.js +4 -0
  415. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  416. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  417. package/dist/internal/indicatorPress.stylex.js +26 -0
  418. package/dist/internal/selectable-card.d.ts +21 -0
  419. package/dist/internal/selectable-card.d.ts.map +1 -0
  420. package/dist/internal/selectable-card.js +20 -0
  421. package/dist/internal/sheetDraft.d.ts +2 -2
  422. package/dist/internal/sheetDraft.js +2 -2
  423. package/dist/keyboard/index.d.ts +17 -0
  424. package/dist/keyboard/index.d.ts.map +1 -0
  425. package/dist/keyboard/index.js +19 -0
  426. package/dist/keyboard/keyboardHeight.d.ts +149 -0
  427. package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
  428. package/dist/keyboard/keyboardHeight.js +432 -0
  429. package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
  430. package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
  431. package/dist/keyboard/keyboardLayoutGuide.js +207 -0
  432. package/dist/keyboard/keyboardModel.d.ts +93 -0
  433. package/dist/keyboard/keyboardModel.d.ts.map +1 -0
  434. package/dist/keyboard/keyboardModel.js +220 -0
  435. package/dist/keyboard/rideKeyboard.d.ts +42 -0
  436. package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
  437. package/dist/keyboard/rideKeyboard.js +77 -0
  438. package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
  439. package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
  440. package/dist/keyboard/useMobileKeyboard.js +699 -0
  441. package/dist/motion/android/index.d.ts +16 -0
  442. package/dist/motion/android/index.d.ts.map +1 -0
  443. package/dist/motion/android/index.js +18 -0
  444. package/dist/motion/android/keyboard.d.ts +83 -0
  445. package/dist/motion/android/keyboard.d.ts.map +1 -0
  446. package/dist/motion/android/keyboard.js +96 -0
  447. package/dist/motion/animatedLayout.d.ts +8 -0
  448. package/dist/motion/animatedLayout.d.ts.map +1 -1
  449. package/dist/motion/animatedLayout.js +246 -53
  450. package/dist/motion/animator.d.ts +14 -14
  451. package/dist/motion/animator.d.ts.map +1 -1
  452. package/dist/motion/animator.js +45 -26
  453. package/dist/motion/frameBlock.d.ts +14 -0
  454. package/dist/motion/frameBlock.d.ts.map +1 -0
  455. package/dist/motion/frameBlock.js +16 -0
  456. package/dist/motion/progress.d.ts +88 -0
  457. package/dist/motion/progress.d.ts.map +1 -0
  458. package/dist/motion/progress.js +128 -0
  459. package/dist/motion/reducedMotion.d.ts.map +1 -1
  460. package/dist/motion/reducedMotion.js +3 -1
  461. package/dist/motion/uikit/alert.d.ts +41 -0
  462. package/dist/motion/uikit/alert.d.ts.map +1 -0
  463. package/dist/motion/uikit/alert.js +43 -0
  464. package/dist/motion/uikit/datePicker.d.ts +58 -0
  465. package/dist/motion/uikit/datePicker.d.ts.map +1 -0
  466. package/dist/motion/uikit/datePicker.js +60 -0
  467. package/dist/motion/uikit/index.d.ts +6 -4
  468. package/dist/motion/uikit/index.d.ts.map +1 -1
  469. package/dist/motion/uikit/index.js +6 -4
  470. package/dist/motion/uikit/picker.d.ts +96 -0
  471. package/dist/motion/uikit/picker.d.ts.map +1 -0
  472. package/dist/motion/uikit/picker.js +117 -0
  473. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  474. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  475. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  476. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  477. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  478. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  479. package/dist/theme/Theme.d.ts.map +1 -1
  480. package/dist/theme/Theme.js +29 -4
  481. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  482. package/dist/theme/generateThemeRules.js +14 -13
  483. package/dist/theme/motionKnobs.d.ts +4 -3
  484. package/dist/theme/motionKnobs.d.ts.map +1 -1
  485. package/dist/theme/motionKnobs.js +3 -2
  486. package/dist/theme/themeMotion.d.ts +6 -0
  487. package/dist/theme/themeMotion.d.ts.map +1 -1
  488. package/dist/theme/themeMotion.js +15 -2
  489. package/dist/theme/tokens.stylex.d.ts +3 -0
  490. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  491. package/dist/theme/tokens.stylex.js +4 -1
  492. package/dist/utils/dateParser.d.ts.map +1 -1
  493. package/dist/utils/dateParser.js +12 -0
  494. package/dist/utils/disabledInteraction.d.ts +10 -2
  495. package/dist/utils/disabledInteraction.d.ts.map +1 -1
  496. package/dist/utils/disabledInteraction.js +16 -2
  497. package/dist/utils/focusReturn.d.ts +22 -25
  498. package/dist/utils/focusReturn.d.ts.map +1 -1
  499. package/dist/utils/focusReturn.js +36 -29
  500. package/dist/utils/index.d.ts +1 -1
  501. package/dist/utils/index.d.ts.map +1 -1
  502. package/dist/utils/index.js +1 -1
  503. package/dist/utils/interactionModality.d.ts.map +1 -1
  504. package/dist/utils/interactionModality.js +4 -0
  505. package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
  506. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  507. package/dist/utils/interactionOverlay.stylex.js +6 -4
  508. package/dist/utils/isFocusDetached.d.ts +27 -0
  509. package/dist/utils/isFocusDetached.d.ts.map +1 -0
  510. package/dist/utils/isFocusDetached.js +32 -0
  511. package/dist/utils/layoutViewport.d.ts +25 -0
  512. package/dist/utils/layoutViewport.d.ts.map +1 -0
  513. package/dist/utils/layoutViewport.js +102 -0
  514. package/dist/utils/plainDate.d.ts +31 -0
  515. package/dist/utils/plainDate.d.ts.map +1 -1
  516. package/dist/utils/plainDate.js +68 -4
  517. package/dist/utils/pressFeedback.d.ts +6 -0
  518. package/dist/utils/pressFeedback.d.ts.map +1 -1
  519. package/dist/utils/pressFeedback.js +97 -18
  520. package/dist/utils/pressGesture.d.ts +4 -2
  521. package/dist/utils/pressGesture.d.ts.map +1 -1
  522. package/dist/utils/pressGesture.js +3 -1
  523. package/dist/utils/selectionLock.d.ts +10 -1
  524. package/dist/utils/selectionLock.d.ts.map +1 -1
  525. package/dist/utils/selectionLock.js +31 -5
  526. package/dist/utils/sharedMutationObserver.d.ts +2 -1
  527. package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
  528. package/dist/utils/sharedMutationObserver.js +2 -1
  529. package/dist/utils/timeParser.d.ts +2 -1
  530. package/dist/utils/timeParser.d.ts.map +1 -1
  531. package/dist/utils/timeParser.js +29 -3
  532. package/dist/utils/triggerFocus.d.ts +36 -0
  533. package/dist/utils/triggerFocus.d.ts.map +1 -0
  534. package/dist/utils/triggerFocus.js +65 -0
  535. package/locales/en.json +148 -0
  536. package/locales/pseudo.json +111 -0
  537. package/package.json +14 -9
  538. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  539. package/src/AlertDialog/AlertDialog.tsx +46 -5
  540. package/src/AppShell/AppShell.tsx +13 -4
  541. package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
  542. package/src/BottomSheet/BottomSheet.tsx +1 -0
  543. package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
  544. package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
  545. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  546. package/src/BottomSheet/bottomSheetStack.ts +1 -1
  547. package/src/BottomSheet/useSheetGestures.ts +16 -1
  548. package/src/Button/Button.tsx +26 -4
  549. package/src/Calendar/Calendar.tsx +40 -32
  550. package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
  551. package/src/Calendar/hooks/useCalendarDays.ts +5 -10
  552. package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
  553. package/src/Carousel/Carousel.tsx +1 -0
  554. package/src/Chat/ChatComposerInput.tsx +4 -7
  555. package/src/Chat/ChatMessageList.tsx +2 -1
  556. package/src/Chat/useChatDictation.ts +1 -0
  557. package/src/Chat/useChatNewMessages.ts +1 -1
  558. package/src/Chat/useChatStreamScroll.ts +2 -0
  559. package/src/Chat/useSpeechRecognition.ts +2 -0
  560. package/src/Chat/useTriggerMenu.tsx +1 -1
  561. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  562. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  563. package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
  564. package/src/CheckboxList/CheckboxList.tsx +43 -2
  565. package/src/CheckboxList/CheckboxListContext.tsx +9 -1
  566. package/src/CheckboxList/CheckboxListItem.tsx +23 -2
  567. package/src/CheckboxList/requiredGroup.ts +77 -0
  568. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  569. package/src/CodeBlock/CodeBlock.tsx +41 -4
  570. package/src/CommandPalette/CommandPalette.tsx +1 -0
  571. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  572. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  573. package/src/ContextMenu/ContextMenu.tsx +2 -2
  574. package/src/DateInput/MonthScroller.tsx +8 -2
  575. package/src/DateInput/PickerWheel.tsx +796 -0
  576. package/src/DateInput/TouchDateField.tsx +6 -32
  577. package/src/DateInput/Wheel.tsx +188 -171
  578. package/src/DateInput/datePickerTouch.ts +15 -0
  579. package/src/DateInput/useOwnScrollGesture.ts +25 -3
  580. package/src/DateInput/usePointerDragScroll.ts +1 -0
  581. package/src/DateInput/useScrollSettle.ts +2 -0
  582. package/src/DateInput/useWheelListbox.ts +112 -0
  583. package/src/DateInput/wheelOptions.ts +184 -0
  584. package/src/DateInput/wheelPhysics.ts +406 -0
  585. package/src/DateInput/wheelStrip.ts +341 -0
  586. package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
  587. package/src/Dialog/Dialog.tsx +12 -32
  588. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  589. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  590. package/src/Field/Field.tsx +2 -2
  591. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  592. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  593. package/src/FormLayout/FormLayout.tsx +5 -1
  594. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  595. package/src/HoverCard/HoverCard.tsx +58 -6
  596. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  597. package/src/HoverCard/useHoverCard.tsx +55 -55
  598. package/src/Icon/Icon.doc.mjs +51 -10
  599. package/src/Icon/Icon.tsx +31 -8
  600. package/src/IconButton/IconButton.doc.mjs +141 -21
  601. package/src/InfoTip/InfoTip.tsx +72 -16
  602. package/src/Item/useSwipeAction.ts +2 -0
  603. package/src/Layer/modalOutlet.ts +2 -0
  604. package/src/Layer/outsidePress.ts +1 -0
  605. package/src/Layer/useLayer.tsx +3 -1
  606. package/src/Layer/useLayerDismissal.ts +2 -0
  607. package/src/Layer/useTouchTrigger.ts +19 -6
  608. package/src/Layout/index.ts +1 -1
  609. package/src/Layout/layoutReset.ts +1 -1
  610. package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
  611. package/src/Layout/padding.stylex.ts +9 -133
  612. package/src/Layout/paddingStyles.stylex.ts +87 -0
  613. package/src/Lightbox/Lightbox.tsx +20 -1
  614. package/src/Lightbox/useLightbox.doc.mjs +167 -0
  615. package/src/MobileNav/MobileNav.tsx +10 -31
  616. package/src/MultiSelector/MultiSelector.tsx +2 -7
  617. package/src/NumberInput/NumberInput.tsx +2 -7
  618. package/src/Outline/useOutlineFromDOM.ts +2 -0
  619. package/src/Outline/useScrollSpy.ts +2 -0
  620. package/src/OverflowList/OverflowList.tsx +2 -0
  621. package/src/Overlay/Overlay.tsx +7 -2
  622. package/src/Popover/Popover.tsx +4 -0
  623. package/src/Popover/usePopover.tsx +2 -2
  624. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  625. package/src/PowerSearch/PowerSearch.tsx +622 -157
  626. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
  627. package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
  628. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  629. package/src/PowerSearch/PowerSearchToken.tsx +2 -0
  630. package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
  631. package/src/PowerSearch/formatFilterValue.ts +49 -27
  632. package/src/PowerSearch/formatTokenValue.ts +220 -0
  633. package/src/PowerSearch/index.ts +5 -1
  634. package/src/PowerSearch/powerSearchDateZone.ts +95 -0
  635. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  636. package/src/PowerSearch/types.ts +8 -1
  637. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  638. package/src/RadioList/RadioList.tsx +3 -2
  639. package/src/RadioList/RadioListItem.tsx +5 -3
  640. package/src/Resizable/Resizable.doc.mjs +5 -4
  641. package/src/Resizable/ResizeHandle.tsx +187 -135
  642. package/src/Resizable/createResizable.ts +1046 -0
  643. package/src/Resizable/separatorAttributes.ts +73 -0
  644. package/src/Resizable/useResizable.ts +292 -623
  645. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  646. package/src/SelectableCard/SelectableCard.tsx +39 -10
  647. package/src/SelectableCard/selectableCardInput.ts +30 -0
  648. package/src/Selector/Selector.tsx +7 -19
  649. package/src/SideNav/SideNav.tsx +41 -5
  650. package/src/Slider/Slider.tsx +20 -11
  651. package/src/Slider/sliderTouchController.ts +2 -2
  652. package/src/Spinner/Spinner.tsx +77 -63
  653. package/src/Stepper/Stepper.tsx +10 -27
  654. package/src/Switch/Switch.tsx +2 -6
  655. package/src/Switch/useSwitchTouch.ts +4 -4
  656. package/src/Table/BaseTable.tsx +46 -12
  657. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  658. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  659. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
  660. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  661. package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
  662. package/src/Table/useTableRowExpansion.doc.mjs +9 -0
  663. package/src/Table/useTableTreeData.doc.mjs +15 -3
  664. package/src/TextArea/TextArea.tsx +2 -7
  665. package/src/TextInput/TextInput.tsx +13 -17
  666. package/src/TimeInput/TimeInput.tsx +2 -0
  667. package/src/TimeInput/TimeWheels.tsx +218 -0
  668. package/src/TimeInput/TouchTimeField.tsx +93 -155
  669. package/src/TimeInput/timeWheelRules.ts +352 -0
  670. package/src/Timer/Timer.tsx +1 -0
  671. package/src/Timestamp/Timestamp.tsx +1 -1
  672. package/src/Timestamp/formatInstant.ts +1 -33
  673. package/src/Toast/Toast.doc.mjs +4 -3
  674. package/src/Toast/Toast.tsx +52 -32
  675. package/src/Toast/ToastViewport.tsx +123 -35
  676. package/src/Toast/types.ts +9 -3
  677. package/src/Toast/useToast.tsx +1 -0
  678. package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
  679. package/src/Tokenizer/Tokenizer.tsx +61 -62
  680. package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
  681. package/src/Tokenizer/index.ts +1 -0
  682. package/src/Tooltip/Tooltip.tsx +6 -42
  683. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  684. package/src/Tooltip/useTooltip.tsx +243 -134
  685. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  686. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  687. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  688. package/src/animator/createAnimator.doc.mjs +153 -0
  689. package/src/animator/createAnimator.ts +324 -0
  690. package/src/gestures/GestureHost.ts +6 -5
  691. package/src/gestures/PressTracker.ts +4 -3
  692. package/src/gestures/README.md +10 -4
  693. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  694. package/src/hooks/actionGroupTracker.ts +25 -9
  695. package/src/hooks/index.ts +2 -0
  696. package/src/hooks/longPressDetector.ts +273 -0
  697. package/src/hooks/pressGroupContext.ts +21 -0
  698. package/src/hooks/rootScrollStyles.ts +247 -0
  699. package/src/hooks/scrollLockTouchGuard.ts +149 -0
  700. package/src/hooks/scrollbarGutter.ts +41 -26
  701. package/src/hooks/useActionGroupTracking.ts +224 -0
  702. package/src/hooks/useAnimator.doc.mjs +109 -0
  703. package/src/hooks/useAnimator.ts +67 -0
  704. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  705. package/src/hooks/useAttachment.ts +1 -1
  706. package/src/hooks/useAutoMediaMode.ts +1 -0
  707. package/src/hooks/useBusyAnnouncement.ts +2 -0
  708. package/src/hooks/useDevWarning.ts +2 -0
  709. package/src/hooks/useFocusTrap.ts +2 -0
  710. package/src/hooks/useGridFocus.doc.mjs +6 -6
  711. package/src/hooks/useGridFocus.ts +10 -7
  712. package/src/hooks/useHotkeys.ts +2 -0
  713. package/src/hooks/useImageMode.ts +2 -0
  714. package/src/hooks/useInputStatusIcon.tsx +3 -2
  715. package/src/hooks/useKeyboardHint.tsx +1 -1
  716. package/src/hooks/useLongPress.doc.mjs +2 -2
  717. package/src/hooks/useLongPress.ts +32 -122
  718. package/src/hooks/useMenuHover.ts +1 -0
  719. package/src/hooks/useMenuPress.ts +2 -0
  720. package/src/hooks/useOverflow.ts +2 -1
  721. package/src/hooks/usePressFeedback.ts +1 -0
  722. package/src/hooks/useResolvedRequired.ts +3 -0
  723. package/src/hooks/useScrollLock.doc.mjs +51 -12
  724. package/src/hooks/useScrollLock.ts +53 -60
  725. package/src/hooks/useScrollableArea.ts +4 -0
  726. package/src/hooks/useStreamingText.ts +2 -0
  727. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -0
  728. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  729. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  730. package/src/i18n/generated-english/Resizable/createResizable.generated.ts +14 -0
  731. package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
  732. package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
  733. package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
  734. package/src/i18n/generated-locales/en.generated.ts +47 -0
  735. package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
  736. package/src/index.ts +13 -0
  737. package/src/internal/indicatorPress.stylex.ts +24 -0
  738. package/src/internal/selectable-card.ts +21 -0
  739. package/src/internal/sheetDraft.ts +2 -2
  740. package/src/keyboard/README.md +197 -0
  741. package/src/keyboard/index.ts +48 -0
  742. package/src/keyboard/keyboardHeight.ts +543 -0
  743. package/src/keyboard/keyboardLayoutGuide.ts +266 -0
  744. package/src/keyboard/keyboardModel.ts +301 -0
  745. package/src/keyboard/rideKeyboard.ts +100 -0
  746. package/src/keyboard/useMobileKeyboard.ts +866 -0
  747. package/src/motion/MEASUREMENTS.md +28 -0
  748. package/src/motion/README.md +12 -5
  749. package/src/motion/android/index.ts +18 -0
  750. package/src/motion/android/keyboard.ts +96 -0
  751. package/src/motion/animatedLayout.ts +323 -60
  752. package/src/motion/animator.ts +66 -37
  753. package/src/motion/frameBlock.ts +16 -0
  754. package/src/motion/progress.ts +155 -0
  755. package/src/motion/reducedMotion.ts +3 -1
  756. package/src/motion/uikit/alert.ts +43 -0
  757. package/src/motion/uikit/datePicker.ts +60 -0
  758. package/src/motion/uikit/index.ts +6 -4
  759. package/src/motion/uikit/picker.ts +116 -0
  760. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  761. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  762. package/src/theme/Theme.tsx +37 -3
  763. package/src/theme/generateThemeRules.ts +14 -12
  764. package/src/theme/motionKnobs.ts +4 -3
  765. package/src/theme/themeMotion.ts +17 -2
  766. package/src/theme/tokens.stylex.ts +2 -0
  767. package/src/utils/dateParser.ts +16 -0
  768. package/src/utils/disabledInteraction.ts +23 -2
  769. package/src/utils/focusReturn.ts +38 -31
  770. package/src/utils/index.ts +1 -1
  771. package/src/utils/interactionModality.ts +4 -0
  772. package/src/utils/interactionOverlay.stylex.ts +6 -4
  773. package/src/utils/isFocusDetached.ts +34 -0
  774. package/src/utils/layoutViewport.ts +104 -0
  775. package/src/utils/plainDate.ts +80 -4
  776. package/src/utils/pressFeedback.ts +126 -30
  777. package/src/utils/pressGesture.ts +4 -2
  778. package/src/utils/selectionLock.ts +40 -6
  779. package/src/utils/sharedMutationObserver.ts +2 -1
  780. package/src/utils/timeParser.ts +40 -3
  781. package/src/utils/triggerFocus.ts +80 -0
  782. package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
  783. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
  784. package/dist/BottomSheet/useMobileKeyboard.js +0 -407
  785. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
  786. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
  787. package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
  788. package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
  789. package/dist/Layer/usePressPin.d.ts +0 -93
  790. package/dist/Layer/usePressPin.d.ts.map +0 -1
  791. package/dist/Layer/usePressPin.js +0 -363
  792. package/dist/internal/touch-sheet.d.ts +0 -21
  793. package/dist/internal/touch-sheet.d.ts.map +0 -1
  794. package/dist/internal/touch-sheet.js +0 -19
  795. package/src/BottomSheet/useMobileKeyboard.ts +0 -538
  796. package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
  797. package/src/Layer/usePressPin.ts +0 -510
  798. package/src/internal/touch-sheet.ts +0 -21
@@ -0,0 +1,733 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file createResizable.ts
5
+ * @input A handle element, or null for a region with no handle yet, and the
6
+ * region's options
7
+ * @output createResizable; readInitialResizableState for the hook's first
8
+ * render; createResizableAs and the internal channel for the hooks
9
+ * @position The Resizable family's factory, internal to the package. Its
10
+ * input is resizeGesture.ts: it listens with it on a plain handle, and
11
+ * ResizeHandle drives the region through its model. The
12
+ * configuration-object useResizable builds on it. No DOM work on import
13
+ */
14
+
15
+ import { registerEnglishFallback } from "../i18n/englishFallback.js";
16
+ import english from "../i18n/generated-english/Resizable/createResizable.generated.js";
17
+ import { observeResize } from "../utils/sharedResizeObserver.js";
18
+ import { devWarn } from "../utils/devWarning.js";
19
+ import { DEFAULT_COLLAPSED_SIZE, DEFAULT_MIN, DEFAULT_SIZE_FALLBACK, RESIZABLE_SIZE_GUIDANCE, SERVER_BASIS, clampSize, dependsOnBasis, loadPersistedState, measureContentBox, parseSize, persistState, resolveBound } from "./resizableModel.js";
20
+ import { createResizeGesture } from "./resizeGesture.js";
21
+ import { separatorAttributes } from "./separatorAttributes.js";
22
+ // The English for the two messages it names, and nothing more of the catalog.
23
+ registerEnglishFallback(english);
24
+
25
+ /**
26
+ * The catalog's messages for a plain handle: its name and what it announces
27
+ * while collapsed, when the options give neither `label` nor
28
+ * `collapsedLabel`. The factory uses the shipped English messages.
29
+ */
30
+ const LABEL_KEY = '@astryx.resizable.handle.label';
31
+ const COLLAPSED_LABEL_KEY = '@astryx.resizable.collapsed';
32
+ /** The viewport width, the basis without a container. */
33
+ function readViewportBasis() {
34
+ return typeof window === 'undefined' ? SERVER_BASIS : window.innerWidth;
35
+ }
36
+
37
+ /** The window's extent along the axis, for an unbounded region's maximum. */
38
+ function readWindowExtent(direction) {
39
+ if (typeof window === 'undefined') {
40
+ return null;
41
+ }
42
+ return direction === 'vertical' ? window.innerHeight : window.innerWidth;
43
+ }
44
+
45
+ /** Starts as warned: the factory warns, and this first-render read does not. */
46
+ const QUIET = {
47
+ current: true
48
+ };
49
+
50
+ /**
51
+ * The state a region with `options` starts in, before its handle exists: the
52
+ * server's render and a hook's first render. A container is not measured
53
+ * yet, so a percentage of it resolves against the deterministic 1200px basis
54
+ * until the factory measures it. `'server'` reads the state the server
55
+ * rendered, for a render that hydrates it: the 1200px basis for a viewport
56
+ * percentage too, and nothing saved.
57
+ */
58
+ export function readInitialResizableState(options = {}, environment = 'client') {
59
+ const {
60
+ defaultSize,
61
+ minSize,
62
+ maxSize,
63
+ containerRef,
64
+ collapsible = false,
65
+ snaps = [],
66
+ autoSaveId,
67
+ defaultIsCollapsed,
68
+ isCollapsed: controlled
69
+ } = options;
70
+ const isServer = environment === 'server';
71
+ const persisted = autoSaveId && !isServer ? loadPersistedState(autoSaveId) : null;
72
+ const parsedDefault = parseSize(defaultSize);
73
+ const parsedMin = parseSize(minSize);
74
+ const parsedMax = parseSize(maxSize);
75
+ const hasContainer = containerRef != null;
76
+ const needsContainer = hasContainer && (dependsOnBasis(parsedMin) || dependsOnBasis(parsedMax) || persisted?.size == null && dependsOnBasis(parsedDefault));
77
+ const basis = hasContainer || isServer ? SERVER_BASIS : readViewportBasis();
78
+ const min = resolveBound(minSize, parsedMin, basis, DEFAULT_MIN, 'minSize', RESIZABLE_SIZE_GUIDANCE, QUIET);
79
+ const max = resolveBound(maxSize, parsedMax, basis, Infinity, 'maxSize', RESIZABLE_SIZE_GUIDANCE, QUIET);
80
+ const defaultPx = resolveBound(defaultSize, parsedDefault, basis, DEFAULT_SIZE_FALLBACK, 'defaultSize', RESIZABLE_SIZE_GUIDANCE, QUIET);
81
+ const chosen = persisted?.size ?? (needsContainer ? null : clampSize(defaultPx, min, max, snaps));
82
+ const size = clampSize(chosen ?? defaultPx, min, max, snaps);
83
+ const isCollapsed = collapsible && (controlled !== undefined ? controlled : persisted?.isCollapsed ?? defaultIsCollapsed ?? false);
84
+ // A container is not measured yet; without one the window's extent stands
85
+ // in for a missing maximum, as the factory reports it.
86
+ const windowExtent = hasContainer || isServer ? null : readWindowExtent(options.direction ?? 'horizontal');
87
+ return {
88
+ size: isCollapsed ? 0 : size,
89
+ isCollapsed,
90
+ expandedSize: size,
91
+ minPx: min,
92
+ maxPx: max,
93
+ effectiveMaxPx: max !== Infinity ? max : windowExtent == null ? undefined : Math.max(windowExtent, isCollapsed ? min : size)
94
+ };
95
+ }
96
+
97
+ /**
98
+ * What a React form of the region renders. A change to any part replaces it
99
+ * as a whole. It holds the size (0 while collapsed), the collapse state, the
100
+ * size as expanded, and the bounds the handle announces.
101
+ */
102
+
103
+ /**
104
+ * The package's own channel into a factory, for useResizable: kept off the
105
+ * exported ResizableController, so it adds no public member.
106
+ */
107
+
108
+ const internals = new WeakMap();
109
+
110
+ /** The factory's internal channel, or undefined for anything else. */
111
+ export function readResizableInternals(controller) {
112
+ return internals.get(controller);
113
+ }
114
+
115
+ /** An attribute's value as the DOM takes it; undefined removes it. */
116
+ function toAttribute(value) {
117
+ return value == null ? null : String(value);
118
+ }
119
+
120
+ /** The attributes the factory writes on a handle, restored by `destroy`. */
121
+ const MANAGED_ATTRIBUTES = ['role', 'tabindex', 'aria-label', 'aria-orientation', 'aria-valuenow', 'aria-valuemin', 'aria-valuemax', 'aria-valuetext', 'aria-disabled', 'data-resizing'];
122
+
123
+ /**
124
+ * Make `handle` a window splitter that resizes a region. The factory never
125
+ * sizes the panel: it reports the size, and the caller applies it.
126
+ *
127
+ * It gives the handle `role="separator"`, its orientation and its value. It
128
+ * adds a tab stop and an accessible name when the handle has none. It answers
129
+ * a pointer drag, the arrow keys, Home and End, and holds the pointer for a
130
+ * whole drag. Enter and a double-click collapse and restore. A horizontal
131
+ * region resizes along the inline axis, and under right-to-left the drag
132
+ * follows the pointer. `destroy` takes all of it away. With a null handle the
133
+ * region still answers collapse, expand, resize and subscribe, and touches no
134
+ * element. Outside a provider, its name and its collapsed text are the
135
+ * shipped English messages. `label` names it, and `collapsedLabel` replaces
136
+ * its collapsed text in another language.
137
+ *
138
+ * @example
139
+ * ```
140
+ * const sidebar = document.querySelector('#sidebar');
141
+ * const resizable = createResizable(document.querySelector('#divider'), {
142
+ * defaultSize: 260,
143
+ * minSize: 180,
144
+ * maxSize: 480,
145
+ * collapsible: true,
146
+ * autoSaveId: 'sidebar',
147
+ * });
148
+ * const paint = () => {
149
+ * sidebar.style.width = `${resizable.size}px`;
150
+ * };
151
+ * paint();
152
+ * resizable.subscribe(paint);
153
+ * ```
154
+ */
155
+ export function createResizable(handle, options = {}) {
156
+ return createResizableAs('createResizable', handle, options);
157
+ }
158
+
159
+ /**
160
+ * Who a factory's development warnings speak for: the bare factory, or the
161
+ * configuration-object useResizable built on it, whose warnings keep the
162
+ * hook's name and words.
163
+ */
164
+
165
+ /**
166
+ * createResizable, with its development warnings in the words of `source`:
167
+ * the package's own entry, for useResizable.
168
+ */
169
+ export function createResizableAs(source, handle, options = {}) {
170
+ // The configuration-object useResizable keeps its warnings word for word.
171
+ const isHook = source === 'useResizable';
172
+ let opts = options;
173
+ let isDestroyed = false;
174
+ // Let go of the page by `suspend`, with the region kept.
175
+ let isSuspended = false;
176
+ const listeners = new Set();
177
+ const isReversed = () => opts.isReversed ?? false;
178
+ const isDisabled = () => opts.isDisabled ?? false;
179
+ const didWarn = {
180
+ min: {
181
+ current: false
182
+ },
183
+ max: {
184
+ current: false
185
+ },
186
+ defaultSize: {
187
+ current: false
188
+ },
189
+ inverted: false
190
+ };
191
+ let persistedKey = opts.autoSaveId;
192
+ let persisted = persistedKey ? loadPersistedState(persistedKey) : null;
193
+
194
+ // The percentage basis. The container is followed through the shared
195
+ // observer only while some option needs it; the viewport only while a
196
+ // percentage bound needs it.
197
+ let containerElement = null;
198
+ let observedDirection = null;
199
+ let containerBasis = null;
200
+ let stopObservingContainer = null;
201
+ let isSubscribing = false;
202
+ let isObservingViewport = false;
203
+
204
+ // One stable basis per gesture: a container that resizes mid-drag would
205
+ // otherwise move the bound under the pointer.
206
+ let gestureBasis = null;
207
+ let isGestureActive = false;
208
+ let dragStartSize = 0;
209
+ let initialDefault = null;
210
+ let chosenSize;
211
+ let committedBounds = null;
212
+ let uncontrolledIsCollapsed = persisted?.isCollapsed ?? opts.defaultIsCollapsed ?? false;
213
+ let derived = {
214
+ size: 0,
215
+ isCollapsed: false,
216
+ min: DEFAULT_MIN,
217
+ max: Infinity,
218
+ effectiveMax: undefined,
219
+ isBasisMeasured: true
220
+ };
221
+ let notified = null;
222
+ let written = null;
223
+ let mustWrite = false;
224
+ let snapshot = null;
225
+ const snapshotListeners = new Set();
226
+ const direction = () => opts.direction ?? 'horizontal';
227
+ const collapsible = () => opts.collapsible ?? false;
228
+ const isControlled = () => opts.isCollapsed !== undefined;
229
+ const snaps = () => opts.snaps ?? [];
230
+ const onViewportResize = () => {
231
+ commit();
232
+ };
233
+
234
+ /** Which bases the options need followed right now. */
235
+ function observation() {
236
+ const parsedDefault = parseSize(opts.defaultSize);
237
+ const boundsDependOnBasis = dependsOnBasis(parseSize(opts.minSize)) || dependsOnBasis(parseSize(opts.maxSize));
238
+ const defaultNeedsInitialBasis = persisted?.size == null && dependsOnBasis(parsedDefault) && initialDefault?.isFinal !== true;
239
+ const hasContainer = opts.containerRef != null;
240
+ return {
241
+ hasContainer,
242
+ container: hasContainer && (boundsDependOnBasis || defaultNeedsInitialBasis),
243
+ viewport: !hasContainer && boundsDependOnBasis
244
+ };
245
+ }
246
+
247
+ /** Follow the bases `observation()` names, and nothing else. */
248
+ function syncObservation() {
249
+ const needs = observation();
250
+ const element = needs.container ? opts.containerRef?.current ?? null : null;
251
+ if (element !== containerElement || observedDirection !== direction()) {
252
+ stopObservingContainer?.();
253
+ stopObservingContainer = null;
254
+ containerElement = element;
255
+ containerBasis = null;
256
+ observedDirection = direction();
257
+ if (element != null) {
258
+ // The observer measures once as it registers; that measurement is
259
+ // read by the computation this call is part of.
260
+ isSubscribing = true;
261
+ const observed = element;
262
+ stopObservingContainer = observeResize(observed, entry => {
263
+ containerBasis = measureContentBox(observed, direction(), entry);
264
+ if (!isSubscribing) {
265
+ commit();
266
+ }
267
+ });
268
+ isSubscribing = false;
269
+ }
270
+ }
271
+ const watchViewport = needs.viewport && typeof window !== 'undefined';
272
+ if (watchViewport && !isObservingViewport) {
273
+ window.addEventListener('resize', onViewportResize);
274
+ isObservingViewport = true;
275
+ } else if (!watchViewport && isObservingViewport) {
276
+ window.removeEventListener('resize', onViewportResize);
277
+ isObservingViewport = false;
278
+ }
279
+ }
280
+
281
+ /** The region's state from its options, its basis and its selection. */
282
+ function compute() {
283
+ const needs = observation();
284
+ const hasPositiveMeasurement = containerBasis != null && containerBasis > 0;
285
+ // Before a supplied container is measured, the deterministic 1200px
286
+ // stands in. It also stands in while the container measures 0, as a
287
+ // hidden or detached one does. The first real measurement replaces it.
288
+ const liveBasis = needs.hasContainer ? hasPositiveMeasurement ? containerBasis : SERVER_BASIS : readViewportBasis();
289
+ const isBasisMeasured = needs.container ? hasPositiveMeasurement : true;
290
+ const basis = gestureBasis ?? liveBasis;
291
+ const min = resolveBound(opts.minSize, parseSize(opts.minSize), basis, DEFAULT_MIN, 'minSize', RESIZABLE_SIZE_GUIDANCE, didWarn.min, source);
292
+ const max = resolveBound(opts.maxSize, parseSize(opts.maxSize), basis, Infinity, 'maxSize', RESIZABLE_SIZE_GUIDANCE, didWarn.max, source);
293
+ // A basis-dependent default resolves ONCE into a pixel size; it is final
294
+ // once its basis is real.
295
+ if (initialDefault == null || !initialDefault.isFinal) {
296
+ initialDefault = {
297
+ px: resolveBound(opts.defaultSize, parseSize(opts.defaultSize), basis, DEFAULT_SIZE_FALLBACK, 'defaultSize', RESIZABLE_SIZE_GUIDANCE, didWarn.defaultSize, source),
298
+ isFinal: isBasisMeasured
299
+ };
300
+ }
301
+ const defaultPx = initialDefault.px;
302
+ if (chosenSize === undefined) {
303
+ chosenSize = persisted?.size ?? (isBasisMeasured ? clampSize(defaultPx, min, max, snaps()) : null);
304
+ }
305
+ if (isBasisMeasured && chosenSize == null) {
306
+ // The container is measured now: the selection the temporary basis
307
+ // stood in for is made against the real one. Not an interaction, so it
308
+ // reports nothing through onSizeChange.
309
+ chosenSize = clampSize(defaultPx, min, max, snaps());
310
+ }
311
+ // A re-resolved bound clamps the SELECTION, once the basis is final and
312
+ // no gesture holds it.
313
+ if (isBasisMeasured && gestureBasis == null && (committedBounds == null || committedBounds.min !== min || committedBounds.max !== max)) {
314
+ committedBounds = {
315
+ min,
316
+ max
317
+ };
318
+ if (chosenSize != null) {
319
+ chosenSize = clampSize(chosenSize, min, max, snaps());
320
+ }
321
+ }
322
+ const size = clampSize(chosenSize ?? defaultPx, min, max, snaps());
323
+ const isCollapsed = collapsible() && (isControlled() ? Boolean(opts.isCollapsed) : uncontrolledIsCollapsed);
324
+ if (min > max && !didWarn.inverted) {
325
+ didWarn.inverted = true;
326
+ devWarn(source, `the resolved minimum (${min}px) is above the resolved maximum ` + `(${max}px). The maximum wins${isHook ? ', as it always has' : ''}.`);
327
+ }
328
+
329
+ // The maximum the handle REPORTS: a configured maximum, or a measured
330
+ // extent standing in for it, never below what the handle announces.
331
+ const measuredForMax = needs.hasContainer ? hasPositiveMeasurement && needs.container ? containerBasis : null : readWindowExtent(direction());
332
+ const effectiveMax = max !== Infinity ? max : measuredForMax == null ? undefined : Math.max(measuredForMax, isCollapsed ? min : size);
333
+ derived = {
334
+ size,
335
+ isCollapsed,
336
+ min,
337
+ max,
338
+ effectiveMax,
339
+ isBasisMeasured
340
+ };
341
+ }
342
+
343
+ /** Recompute, then bring the observers, the handle, storage and subscribers along. */
344
+ function commit() {
345
+ if (isDestroyed) {
346
+ return;
347
+ }
348
+ if (isSuspended) {
349
+ // No observers and no handle: the last measured basis stands.
350
+ compute();
351
+ } else {
352
+ // The observation a computation needs can change with it (a default
353
+ // made final stops following its container): settle both.
354
+ for (let pass = 0; pass < 3; pass++) {
355
+ const before = observation();
356
+ syncObservation();
357
+ compute();
358
+ const after = observation();
359
+ if (before.container === after.container && before.viewport === after.viewport) {
360
+ break;
361
+ }
362
+ }
363
+ }
364
+ if (handle != null && !isSuspended) {
365
+ announce();
366
+ }
367
+ persist();
368
+ const reported = {
369
+ size: derived.isCollapsed ? 0 : derived.size,
370
+ isCollapsed: derived.isCollapsed
371
+ };
372
+ const next = {
373
+ size: reported.size,
374
+ isCollapsed: reported.isCollapsed,
375
+ expandedSize: derived.size,
376
+ minPx: derived.min,
377
+ maxPx: derived.max,
378
+ effectiveMaxPx: derived.effectiveMax
379
+ };
380
+ const isSnapshotChanged = snapshot == null || Object.keys(next).some(key => snapshot?.[key] !== next[key]);
381
+ if (isSnapshotChanged) {
382
+ snapshot = next;
383
+ }
384
+ if (notified == null || notified.size !== reported.size || notified.isCollapsed !== reported.isCollapsed) {
385
+ const isFirst = notified == null;
386
+ notified = reported;
387
+ if (!isFirst) {
388
+ for (const listener of [...listeners]) {
389
+ listener();
390
+ }
391
+ }
392
+ }
393
+ if (isSnapshotChanged) {
394
+ for (const listener of [...snapshotListeners]) {
395
+ listener();
396
+ }
397
+ }
398
+ }
399
+
400
+ /** Nothing is written while the basis stands in, nor while a gesture runs. */
401
+ function persist() {
402
+ const key = opts.autoSaveId;
403
+ if (key == null || key === '' || !derived.isBasisMeasured) {
404
+ return;
405
+ }
406
+ if (isGestureActive) {
407
+ return;
408
+ }
409
+ const next = {
410
+ key,
411
+ size: derived.size,
412
+ isCollapsed: derived.isCollapsed
413
+ };
414
+ if (mustWrite || written == null || written.key !== next.key || written.size !== next.size || written.isCollapsed !== next.isCollapsed) {
415
+ mustWrite = false;
416
+ written = next;
417
+ persistState(key, {
418
+ size: next.size,
419
+ isCollapsed: next.isCollapsed
420
+ });
421
+ }
422
+ }
423
+ const original = new Map();
424
+ if (handle != null) {
425
+ for (const name of MANAGED_ATTRIBUTES) {
426
+ original.set(name, handle.getAttribute(name));
427
+ }
428
+ }
429
+ const hasOwnName = handle != null && (handle.hasAttribute('aria-label') || handle.hasAttribute('aria-labelledby'));
430
+ const setAttribute = (name, value) => {
431
+ if (handle == null) {
432
+ return;
433
+ }
434
+ if (value == null) {
435
+ handle.removeAttribute(name);
436
+ } else if (handle.getAttribute(name) !== value) {
437
+ handle.setAttribute(name, value);
438
+ }
439
+ };
440
+ function announce() {
441
+ if (original.get('role') == null) {
442
+ setAttribute('role', 'separator');
443
+ }
444
+ if (!hasOwnName) {
445
+ setAttribute('aria-label', opts.label ?? english[LABEL_KEY]);
446
+ }
447
+ const {
448
+ size,
449
+ isCollapsed,
450
+ min,
451
+ effectiveMax
452
+ } = derived;
453
+ // The attributes ResizeHandle renders, from the same derivation.
454
+ const aria = separatorAttributes({
455
+ direction: direction(),
456
+ isDisabled: isDisabled(),
457
+ value: {
458
+ size: isCollapsed ? 0 : size,
459
+ minPx: min,
460
+ maxPx: effectiveMax,
461
+ isCollapsed,
462
+ collapsedText: opts.collapsedLabel ?? english[COLLAPSED_LABEL_KEY]
463
+ }
464
+ });
465
+ if (original.get('tabindex') == null) {
466
+ setAttribute('tabindex', String(aria.tabIndex));
467
+ }
468
+ setAttribute('aria-orientation', aria['aria-orientation']);
469
+ setAttribute('aria-valuenow', toAttribute(aria['aria-valuenow']));
470
+ setAttribute('aria-valuemin', toAttribute(aria['aria-valuemin']));
471
+ setAttribute('aria-valuemax', toAttribute(aria['aria-valuemax']));
472
+ setAttribute('aria-valuetext', toAttribute(aria['aria-valuetext']));
473
+ setAttribute('aria-disabled', toAttribute(aria['aria-disabled']));
474
+ }
475
+ const setCollapsed = value => {
476
+ if (!isControlled()) {
477
+ uncontrolledIsCollapsed = value;
478
+ }
479
+ };
480
+ function collapse() {
481
+ if (isDestroyed || !collapsible() || derived.isCollapsed) {
482
+ return;
483
+ }
484
+ setCollapsed(true);
485
+ commit();
486
+ opts.onCollapseChange?.(true);
487
+ opts.onSizeChange?.(0);
488
+ }
489
+ function expand() {
490
+ if (isDestroyed) {
491
+ return;
492
+ }
493
+ const wasCollapsed = derived.isCollapsed;
494
+ setCollapsed(false);
495
+ commit();
496
+ if (wasCollapsed) {
497
+ opts.onCollapseChange?.(false);
498
+ }
499
+ opts.onSizeChange?.(derived.size);
500
+ }
501
+ function resize(next) {
502
+ if (isDestroyed) {
503
+ return;
504
+ }
505
+ // An invalid size repairs nothing: it must not replace a legal selection
506
+ // with NaN, which would reach storage and aria-valuenow.
507
+ if (!Number.isFinite(next) || next < 0) {
508
+ devWarn(source, `resize(${String(next)}) is not a pixel size. Keeping the current ` + `size. Percentages configure the ${isHook ? 'hook' : 'region'}; ` + 'they are not a programmatic input.');
509
+ return;
510
+ }
511
+ const clamped = clampSize(next, derived.min, derived.max, snaps());
512
+ const wasCollapsed = derived.isCollapsed;
513
+ chosenSize = clamped;
514
+ setCollapsed(false);
515
+ commit();
516
+ // Resizing out of the collapsed state is an implicit expand.
517
+ if (wasCollapsed) {
518
+ opts.onCollapseChange?.(false);
519
+ }
520
+ opts.onSizeChange?.(clamped);
521
+ }
522
+ const model = {
523
+ state() {
524
+ return {
525
+ size: derived.isCollapsed ? 0 : derived.size,
526
+ isCollapsed: derived.isCollapsed,
527
+ minPx: derived.min,
528
+ maxPx: derived.max,
529
+ snaps: snaps(),
530
+ collapsedSize: opts.collapsedSize ?? DEFAULT_COLLAPSED_SIZE,
531
+ collapsible: collapsible()
532
+ };
533
+ },
534
+ start() {
535
+ // The basis holds still for the whole gesture.
536
+ gestureBasis = readLiveBasis();
537
+ isGestureActive = true;
538
+ dragStartSize = derived.isCollapsed ? 0 : derived.size;
539
+ },
540
+ move(delta) {
541
+ const raw = dragStartSize + delta;
542
+ const collapsedSize = opts.collapsedSize ?? DEFAULT_COLLAPSED_SIZE;
543
+ if (collapsible() && raw < collapsedSize) {
544
+ if (!derived.isCollapsed) {
545
+ setCollapsed(true);
546
+ commit();
547
+ opts.onCollapseChange?.(true);
548
+ opts.onSizeChange?.(0);
549
+ }
550
+ return;
551
+ }
552
+ const reopens = derived.isCollapsed && raw >= collapsedSize;
553
+ if (reopens) {
554
+ setCollapsed(false);
555
+ }
556
+ const clamped = clampSize(raw, derived.min, derived.max, snaps());
557
+ chosenSize = clamped;
558
+ commit();
559
+ if (reopens) {
560
+ opts.onCollapseChange?.(false);
561
+ }
562
+ opts.onSizeChange?.(clamped);
563
+ },
564
+ end() {
565
+ endGesture();
566
+ },
567
+ // A cancelled gesture is still over: the basis it held comes back, and
568
+ // the size it reached is saved once, like a completed one.
569
+ cancel() {
570
+ endGesture();
571
+ },
572
+ collapse,
573
+ expand
574
+ };
575
+ function readLiveBasis() {
576
+ const needs = observation();
577
+ if (!needs.hasContainer) {
578
+ return readViewportBasis();
579
+ }
580
+ return containerBasis != null && containerBasis > 0 ? containerBasis : SERVER_BASIS;
581
+ }
582
+ function endGesture() {
583
+ if (!isGestureActive) {
584
+ return;
585
+ }
586
+ gestureBasis = null;
587
+ isGestureActive = false;
588
+ mustWrite = true;
589
+ commit();
590
+ }
591
+ const gesture = createResizeGesture(() => handle, model, () => ({
592
+ direction: direction(),
593
+ isReversed: isReversed(),
594
+ isDisabled: isDisabled()
595
+ }), dragging => {
596
+ setAttribute('data-resizing', dragging ? '' : null);
597
+ });
598
+ const onPointerDown = event => {
599
+ gesture.pointerDown(event);
600
+ };
601
+ const onPointerMove = event => {
602
+ gesture.pointerMove(event);
603
+ };
604
+ const onPointerUp = event => {
605
+ gesture.pointerUp(event);
606
+ };
607
+ const onPointerCancel = event => {
608
+ gesture.pointerCancel(event);
609
+ };
610
+ const onKeyDown = event => {
611
+ gesture.keyDown(event);
612
+ };
613
+ const onDoubleClick = () => {
614
+ gesture.doubleClick();
615
+ };
616
+ function bindHandle() {
617
+ handle?.addEventListener('pointerdown', onPointerDown);
618
+ handle?.addEventListener('pointermove', onPointerMove);
619
+ handle?.addEventListener('pointerup', onPointerUp);
620
+ handle?.addEventListener('pointercancel', onPointerCancel);
621
+ handle?.addEventListener('lostpointercapture', onPointerCancel);
622
+ handle?.addEventListener('keydown', onKeyDown);
623
+ handle?.addEventListener('dblclick', onDoubleClick);
624
+ }
625
+
626
+ /**
627
+ * The handle's listeners and the observers go, and the handle gets its own
628
+ * attributes back; a gesture in flight has ended first.
629
+ */
630
+ function letGoOfPage() {
631
+ handle?.removeEventListener('pointerdown', onPointerDown);
632
+ handle?.removeEventListener('pointermove', onPointerMove);
633
+ handle?.removeEventListener('pointerup', onPointerUp);
634
+ handle?.removeEventListener('pointercancel', onPointerCancel);
635
+ handle?.removeEventListener('lostpointercapture', onPointerCancel);
636
+ handle?.removeEventListener('keydown', onKeyDown);
637
+ handle?.removeEventListener('dblclick', onDoubleClick);
638
+ stopObservingContainer?.();
639
+ stopObservingContainer = null;
640
+ containerElement = null;
641
+ if (isObservingViewport) {
642
+ window.removeEventListener('resize', onViewportResize);
643
+ isObservingViewport = false;
644
+ }
645
+ for (const [name, value] of original) {
646
+ setAttribute(name, value);
647
+ }
648
+ }
649
+ bindHandle();
650
+ commit();
651
+ const controller = {
652
+ get size() {
653
+ return derived.isCollapsed ? 0 : derived.size;
654
+ },
655
+ get isCollapsed() {
656
+ return derived.isCollapsed;
657
+ },
658
+ collapse,
659
+ expand,
660
+ resize,
661
+ update(next) {
662
+ if (isDestroyed) {
663
+ return;
664
+ }
665
+ opts = next;
666
+ if (opts.autoSaveId !== persistedKey) {
667
+ persistedKey = opts.autoSaveId;
668
+ persisted = persistedKey ? loadPersistedState(persistedKey) : null;
669
+ }
670
+ commit();
671
+ },
672
+ subscribe(listener) {
673
+ listeners.add(listener);
674
+ return () => {
675
+ listeners.delete(listener);
676
+ };
677
+ },
678
+ destroy() {
679
+ if (isDestroyed) {
680
+ return;
681
+ }
682
+ // A drag in flight ends first, as cancelled, so the size it reached is
683
+ // saved and the pointer and the body's cursor are released.
684
+ gesture.interrupt();
685
+ // A gesture a ResizeHandle drove through the region's model, rather
686
+ // than the factory's own, ends the same way.
687
+ endGesture();
688
+ isDestroyed = true;
689
+ if (!isSuspended) {
690
+ letGoOfPage();
691
+ }
692
+ listeners.clear();
693
+ snapshotListeners.clear();
694
+ }
695
+ };
696
+ internals.set(controller, {
697
+ snapshot: () => snapshot,
698
+ subscribeSnapshot(listener) {
699
+ snapshotListeners.add(listener);
700
+ return () => {
701
+ snapshotListeners.delete(listener);
702
+ };
703
+ },
704
+ model,
705
+ suspend() {
706
+ if (isDestroyed || isSuspended) {
707
+ return;
708
+ }
709
+ gesture.interrupt();
710
+ endGesture();
711
+ isSuspended = true;
712
+ letGoOfPage();
713
+ },
714
+ resume() {
715
+ if (isDestroyed || !isSuspended) {
716
+ return;
717
+ }
718
+ isSuspended = false;
719
+ bindHandle();
720
+ commit();
721
+ },
722
+ syncContainer() {
723
+ if (isDestroyed || isSuspended) {
724
+ return;
725
+ }
726
+ const element = observation().container ? opts.containerRef?.current ?? null : null;
727
+ if (element !== containerElement) {
728
+ commit();
729
+ }
730
+ }
731
+ });
732
+ return controller;
733
+ }