@astryxdesign/core 0.7.8 → 0.7.9-canary.0200dfe

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 (585) hide show
  1. package/dist/AppShell/observeMainOverflow.d.ts.map +1 -1
  2. package/dist/AppShell/observeMainOverflow.js +9 -6
  3. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  4. package/dist/BottomSheet/BottomSheet.js +37 -3
  5. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  6. package/dist/BottomSheet/BottomSheetPanel.js +40 -8
  7. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
  8. package/dist/BottomSheet/bottomSheetStack.js +4 -3
  9. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  10. package/dist/BottomSheet/useSheetGestures.js +61 -21
  11. package/dist/Calendar/Calendar.d.ts +14 -2
  12. package/dist/Calendar/Calendar.d.ts.map +1 -1
  13. package/dist/Calendar/Calendar.js +63 -74
  14. package/dist/Calendar/getInitialFocusDate.d.ts +4 -1
  15. package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -1
  16. package/dist/Calendar/getInitialFocusDate.js +7 -5
  17. package/dist/Calendar/hooks/useCalendarDays.d.ts +19 -2
  18. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  19. package/dist/Calendar/hooks/useCalendarDays.js +57 -64
  20. package/dist/Calendar/hooks/useCalendarNavigation.d.ts +28 -3
  21. package/dist/Calendar/hooks/useCalendarNavigation.d.ts.map +1 -1
  22. package/dist/Calendar/hooks/useCalendarNavigation.js +33 -22
  23. package/dist/Calendar/styles.d.ts +1 -1
  24. package/dist/CheckboxInput/CheckboxInput.d.ts +2 -1
  25. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  26. package/dist/CheckboxInput/CheckboxInput.js +74 -18
  27. package/dist/CheckboxInput/CheckboxRowPressContext.d.ts +2 -0
  28. package/dist/CheckboxInput/CheckboxRowPressContext.d.ts.map +1 -0
  29. package/dist/CheckboxInput/CheckboxRowPressContext.js +20 -0
  30. package/dist/CheckboxList/CheckboxListItem.d.ts +2 -1
  31. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  32. package/dist/CheckboxList/CheckboxListItem.js +40 -14
  33. package/dist/ClickableCard/ClickableCard.d.ts +1 -1
  34. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  35. package/dist/ClickableCard/ClickableCard.js +5 -1
  36. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  37. package/dist/ContextMenu/ContextMenu.js +2 -0
  38. package/dist/DateInput/DateInput.d.ts +37 -6
  39. package/dist/DateInput/DateInput.d.ts.map +1 -1
  40. package/dist/DateInput/DateInput.js +97 -124
  41. package/dist/DateInput/MonthScroller.d.ts +5 -2
  42. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  43. package/dist/DateInput/MonthScroller.js +26 -29
  44. package/dist/DateInput/MonthYearWheels.d.ts +10 -1
  45. package/dist/DateInput/MonthYearWheels.d.ts.map +1 -1
  46. package/dist/DateInput/MonthYearWheels.js +54 -42
  47. package/dist/DateInput/PickerWheel.d.ts.map +1 -1
  48. package/dist/DateInput/PickerWheel.js +7 -1
  49. package/dist/DateInput/TouchDateField.d.ts +1 -1
  50. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  51. package/dist/DateInput/TouchDateField.js +26 -21
  52. package/dist/DateInput/monthGeometry.d.ts +42 -8
  53. package/dist/DateInput/monthGeometry.d.ts.map +1 -1
  54. package/dist/DateInput/monthGeometry.js +81 -7
  55. package/dist/DateInput/useCalendarPresentation.d.ts +10 -0
  56. package/dist/DateInput/useCalendarPresentation.d.ts.map +1 -0
  57. package/dist/DateInput/useCalendarPresentation.js +32 -0
  58. package/dist/DateInput/useTypedDate.d.ts +92 -0
  59. package/dist/DateInput/useTypedDate.d.ts.map +1 -0
  60. package/dist/DateInput/useTypedDate.js +269 -0
  61. package/dist/DateInput/wheelStrip.js +2 -2
  62. package/dist/DateRangeInput/DateRangeInput.d.ts +17 -1
  63. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  64. package/dist/DateRangeInput/DateRangeInput.js +15 -8
  65. package/dist/DateTimeInput/DateTimeInput.d.ts +26 -3
  66. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  67. package/dist/DateTimeInput/DateTimeInput.js +92 -88
  68. package/dist/DateTimeInput/TouchDateTimeField.d.ts +1 -1
  69. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  70. package/dist/DateTimeInput/TouchDateTimeField.js +26 -20
  71. package/dist/Dialog/Dialog.d.ts +2 -1
  72. package/dist/Dialog/Dialog.d.ts.map +1 -1
  73. package/dist/Dialog/Dialog.js +14 -3
  74. package/dist/Drawer/useDrawerDialogPresence.d.ts +2 -1
  75. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  76. package/dist/Drawer/useDrawerDialogPresence.js +11 -2
  77. package/dist/DropdownMenu/DropdownMenu.d.ts +9 -1
  78. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  79. package/dist/DropdownMenu/DropdownMenu.js +11 -8
  80. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  81. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +3 -2
  82. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  83. package/dist/DropdownMenu/DropdownMenuItem.js +3 -2
  84. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  85. package/dist/DropdownMenu/DropdownMenuRadioItem.js +3 -2
  86. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  87. package/dist/DropdownMenu/DropdownMenuSubMenu.js +3 -2
  88. package/dist/Field/inputDisabledFocus.d.ts +4 -4
  89. package/dist/Field/inputStyles.stylex.d.ts +1 -1
  90. package/dist/FileInput/FileInput.d.ts.map +1 -1
  91. package/dist/FileInput/FileInput.js +16 -2
  92. package/dist/HoverCard/useHoverCard.d.ts +3 -1
  93. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  94. package/dist/Icon/Icon.d.ts +1 -1
  95. package/dist/InfoTip/InfoTip.d.ts +1 -0
  96. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  97. package/dist/InfoTip/InfoTip.js +6 -18
  98. package/dist/InputGroup/InputGroup.d.ts +4 -3
  99. package/dist/InputGroup/InputGroup.d.ts.map +1 -1
  100. package/dist/InputGroup/InputGroup.js +2 -2
  101. package/dist/InputGroup/InputGroupText.d.ts +2 -1
  102. package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
  103. package/dist/InputGroup/InputGroupText.js +2 -1
  104. package/dist/InputGroup/groupStyles.d.ts +1 -1
  105. package/dist/InputGroup/groupStyles.d.ts.map +1 -1
  106. package/dist/InputGroup/groupStyles.js +1 -1
  107. package/dist/Item/Item.d.ts +20 -1
  108. package/dist/Item/Item.d.ts.map +1 -1
  109. package/dist/Item/Item.js +97 -29
  110. package/dist/Item/ItemListRowContext.d.ts +2 -0
  111. package/dist/Item/ItemListRowContext.d.ts.map +1 -0
  112. package/dist/Item/ItemListRowContext.js +16 -0
  113. package/dist/Layer/holdEntranceInput.d.ts +24 -0
  114. package/dist/Layer/holdEntranceInput.d.ts.map +1 -0
  115. package/dist/Layer/holdEntranceInput.js +65 -0
  116. package/dist/Layer/inputHold.d.ts +49 -0
  117. package/dist/Layer/inputHold.d.ts.map +1 -0
  118. package/dist/Layer/inputHold.js +636 -0
  119. package/dist/Layer/outsidePress.d.ts +4 -0
  120. package/dist/Layer/outsidePress.d.ts.map +1 -1
  121. package/dist/Layer/outsidePress.js +18 -1
  122. package/dist/Layer/preserveAnimations.d.ts +1 -5
  123. package/dist/Layer/preserveAnimations.d.ts.map +1 -1
  124. package/dist/Layer/preserveAnimations.js +12 -214
  125. package/dist/Layer/useBackdropPress.d.ts +8 -0
  126. package/dist/Layer/useBackdropPress.d.ts.map +1 -1
  127. package/dist/Layer/useBackdropPress.js +31 -2
  128. package/dist/Layer/useLayer.d.ts +3 -1
  129. package/dist/Layer/useLayer.d.ts.map +1 -1
  130. package/dist/Layer/useLayer.js +64 -4
  131. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  132. package/dist/Layer/useTouchTrigger.js +4 -0
  133. package/dist/Layout/LayoutContent.d.ts +3 -1
  134. package/dist/Layout/LayoutContent.d.ts.map +1 -1
  135. package/dist/Layout/LayoutContent.js +12 -4
  136. package/dist/Layout/LayoutPanel.d.ts +13 -10
  137. package/dist/Layout/LayoutPanel.d.ts.map +1 -1
  138. package/dist/Layout/LayoutPanel.js +81 -11
  139. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  140. package/dist/Lightbox/Lightbox.js +4 -0
  141. package/dist/List/List.d.ts.map +1 -1
  142. package/dist/List/List.js +1 -0
  143. package/dist/List/ListItem.d.ts +5 -4
  144. package/dist/List/ListItem.d.ts.map +1 -1
  145. package/dist/List/ListItem.js +45 -9
  146. package/dist/Markdown/parser.d.ts.map +1 -1
  147. package/dist/Markdown/parser.js +56 -39
  148. package/dist/MetadataList/MetadataList.js +1 -1
  149. package/dist/MobileNav/MobileNav.d.ts +11 -1
  150. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  151. package/dist/MobileNav/MobileNav.js +39 -1
  152. package/dist/MoreMenu/MoreMenu.d.ts +5 -3
  153. package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
  154. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  155. package/dist/MultiSelector/MultiSelector.js +6 -9
  156. package/dist/NumberInput/NumberInput.d.ts +4 -2
  157. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  158. package/dist/NumberInput/NumberInput.js +244 -11
  159. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  160. package/dist/OverflowList/OverflowList.js +7 -2
  161. package/dist/Popover/usePopover.d.ts +1 -0
  162. package/dist/Popover/usePopover.d.ts.map +1 -1
  163. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  164. package/dist/PowerSearch/PowerSearch.js +12 -5
  165. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -1
  166. package/dist/PowerSearch/PowerSearchBottomSheet.js +4 -2
  167. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  168. package/dist/PowerSearch/PowerSearchToken.js +3 -1
  169. package/dist/PowerSearch/formatFilterValue.d.ts +9 -3
  170. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  171. package/dist/PowerSearch/formatFilterValue.js +14 -11
  172. package/dist/PowerSearch/formatTokenValue.d.ts +6 -2
  173. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -1
  174. package/dist/PowerSearch/formatTokenValue.js +6 -3
  175. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  176. package/dist/RadioList/RadioListItem.js +16 -3
  177. package/dist/Resizable/ResizeHandle.d.ts +5 -5
  178. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  179. package/dist/Resizable/ResizeHandle.js +44 -5
  180. package/dist/Resizable/resizablePane.d.ts +58 -0
  181. package/dist/Resizable/resizablePane.d.ts.map +1 -0
  182. package/dist/Resizable/resizablePane.js +137 -0
  183. package/dist/Resizable/useResizable.d.ts +7 -0
  184. package/dist/Resizable/useResizable.d.ts.map +1 -1
  185. package/dist/Resizable/useResizable.js +13 -0
  186. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  187. package/dist/SelectableCard/SelectableCard.d.ts +1 -1
  188. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  189. package/dist/SelectableCard/SelectableCard.js +5 -1
  190. package/dist/Selector/Selector.d.ts.map +1 -1
  191. package/dist/Selector/Selector.js +51 -10
  192. package/dist/SideNav/SideNav.d.ts +9 -3
  193. package/dist/SideNav/SideNav.d.ts.map +1 -1
  194. package/dist/SideNav/SideNav.js +45 -10
  195. package/dist/Slider/sliderTouchController.js +2 -2
  196. package/dist/Spinner/Spinner.d.ts.map +1 -1
  197. package/dist/Spinner/Spinner.js +14 -71
  198. package/dist/Spinner/index.d.ts +1 -1
  199. package/dist/Spinner/index.d.ts.map +1 -1
  200. package/dist/Spinner/spinnerRotor.d.ts +28 -0
  201. package/dist/Spinner/spinnerRotor.d.ts.map +1 -0
  202. package/dist/Spinner/spinnerRotor.js +98 -0
  203. package/dist/Stack/StackItem.d.ts +8 -4
  204. package/dist/Stack/StackItem.d.ts.map +1 -1
  205. package/dist/Stack/StackItem.js +17 -4
  206. package/dist/Switch/Switch.d.ts.map +1 -1
  207. package/dist/Switch/Switch.js +13 -10
  208. package/dist/Switch/useSwitchTouch.js +4 -4
  209. package/dist/TabList/Tab.d.ts.map +1 -1
  210. package/dist/TabList/Tab.js +5 -1
  211. package/dist/Table/plugins/sortable/useTableSortable.js +1 -1
  212. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  213. package/dist/Timestamp/Timestamp.js +14 -8
  214. package/dist/Timestamp/formatInstant.d.ts +10 -1
  215. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  216. package/dist/Timestamp/formatInstant.js +13 -27
  217. package/dist/Timestamp/tooltipEntries.d.ts +5 -3
  218. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  219. package/dist/Timestamp/tooltipEntries.js +6 -4
  220. package/dist/Token/Token.d.ts.map +1 -1
  221. package/dist/Token/Token.js +9 -0
  222. package/dist/Token/TokenLink.d.ts +1 -1
  223. package/dist/Token/TokenLink.d.ts.map +1 -1
  224. package/dist/Token/TokenLink.js +4 -1
  225. package/dist/Tokenizer/Tokenizer.d.ts +14 -10
  226. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  227. package/dist/Tokenizer/Tokenizer.js +189 -89
  228. package/dist/Tooltip/useTooltip.d.ts +3 -1
  229. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  230. package/dist/Tooltip/useTooltip.js +164 -59
  231. package/dist/TreeList/TreeListItem.d.ts +2 -1
  232. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  233. package/dist/TreeList/TreeListItem.js +27 -3
  234. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  235. package/dist/Typeahead/BaseTypeahead.js +2 -1
  236. package/dist/animator/createAnimator.js +2 -2
  237. package/dist/astryx.css +362 -325
  238. package/dist/gestures/GestureHost.d.ts +2 -2
  239. package/dist/gestures/GestureHost.d.ts.map +1 -1
  240. package/dist/gestures/GestureHost.js +21 -6
  241. package/dist/gestures/PanGestureRecognizer.d.ts +11 -1
  242. package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
  243. package/dist/gestures/PanGestureRecognizer.js +15 -1
  244. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +6 -1
  245. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -1
  246. package/dist/gestures/nativeScroll.d.ts +3 -6
  247. package/dist/gestures/nativeScroll.d.ts.map +1 -1
  248. package/dist/gestures/nativeScroll.js +7 -52
  249. package/dist/gestures/wheelSegmenter.d.ts +68 -1
  250. package/dist/gestures/wheelSegmenter.d.ts.map +1 -1
  251. package/dist/gestures/wheelSegmenter.js +199 -10
  252. package/dist/hooks/StackItemScrollRegion.d.ts +31 -0
  253. package/dist/hooks/StackItemScrollRegion.d.ts.map +1 -0
  254. package/dist/hooks/StackItemScrollRegion.js +40 -0
  255. package/dist/hooks/computeOverflow.d.ts +2 -0
  256. package/dist/hooks/computeOverflow.d.ts.map +1 -1
  257. package/dist/hooks/computeOverflow.js +1 -1
  258. package/dist/hooks/menuPressGesture.d.ts +133 -21
  259. package/dist/hooks/menuPressGesture.d.ts.map +1 -1
  260. package/dist/hooks/menuPressGesture.js +155 -30
  261. package/dist/hooks/menuPressValues.d.ts +16 -0
  262. package/dist/hooks/menuPressValues.d.ts.map +1 -0
  263. package/dist/hooks/menuPressValues.js +18 -0
  264. package/dist/hooks/useClickableContainer.d.ts +36 -7
  265. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  266. package/dist/hooks/useClickableContainer.js +63 -14
  267. package/dist/hooks/useFocusTrap.d.ts +10 -0
  268. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  269. package/dist/hooks/useFocusTrap.js +225 -132
  270. package/dist/hooks/useKeyboardHighlight.d.ts +17 -0
  271. package/dist/hooks/useKeyboardHighlight.d.ts.map +1 -0
  272. package/dist/hooks/useKeyboardHighlight.js +38 -0
  273. package/dist/hooks/useMediaQuery.d.ts +2 -1
  274. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  275. package/dist/hooks/useMediaQuery.js +37 -12
  276. package/dist/hooks/useMenuPress.d.ts +34 -1
  277. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  278. package/dist/hooks/useMenuPress.js +93 -5
  279. package/dist/hooks/useOverflow.d.ts +10 -0
  280. package/dist/hooks/useOverflow.d.ts.map +1 -1
  281. package/dist/hooks/useOverflow.js +214 -23
  282. package/dist/hooks/usePressFeedback.d.ts +6 -6
  283. package/dist/hooks/usePressFeedback.js +6 -6
  284. package/dist/hooks/useScrollRegionProps.d.ts +35 -0
  285. package/dist/hooks/useScrollRegionProps.d.ts.map +1 -0
  286. package/dist/hooks/useScrollRegionProps.js +51 -0
  287. package/dist/i18n/InternationalizationContext.d.ts +6 -0
  288. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  289. package/dist/i18n/InternationalizationProvider.d.ts +23 -3
  290. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  291. package/dist/i18n/InternationalizationProvider.js +8 -3
  292. package/dist/i18n/generated-english/DateInput/DateInput.generated.d.ts.map +1 -1
  293. package/dist/i18n/generated-english/DateInput/DateInput.generated.js +0 -1
  294. package/dist/i18n/generated-english/DateInput/useTypedDate.generated.d.ts +8 -0
  295. package/dist/i18n/generated-english/DateInput/useTypedDate.generated.d.ts.map +1 -0
  296. package/dist/i18n/generated-english/DateInput/useTypedDate.generated.js +16 -0
  297. package/dist/i18n/generated-english/DateTimeInput/DateTimeInput.generated.d.ts.map +1 -1
  298. package/dist/i18n/generated-english/DateTimeInput/DateTimeInput.generated.js +0 -1
  299. package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.d.ts +8 -0
  300. package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.d.ts.map +1 -0
  301. package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.js +12 -0
  302. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  303. package/dist/i18n/generated-locales/en.generated.js +5 -0
  304. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  305. package/dist/i18n/generated-locales/pseudo.generated.js +5 -0
  306. package/dist/i18n/index.d.ts +2 -0
  307. package/dist/i18n/index.d.ts.map +1 -1
  308. package/dist/i18n/index.js +1 -0
  309. package/dist/i18n/useCalendarSystem.d.ts +19 -0
  310. package/dist/i18n/useCalendarSystem.d.ts.map +1 -0
  311. package/dist/i18n/useCalendarSystem.js +61 -0
  312. package/dist/internal/calendar-system.d.ts +18 -0
  313. package/dist/internal/calendar-system.d.ts.map +1 -0
  314. package/dist/internal/calendar-system.js +19 -0
  315. package/dist/internal/spinner-rotor.d.ts +16 -0
  316. package/dist/internal/spinner-rotor.d.ts.map +1 -0
  317. package/dist/internal/spinner-rotor.js +16 -0
  318. package/dist/internal/touch.d.ts +20 -2
  319. package/dist/internal/touch.d.ts.map +1 -1
  320. package/dist/internal/touch.js +29 -3
  321. package/dist/motion/animator.d.ts +5 -5
  322. package/dist/motion/animator.d.ts.map +1 -1
  323. package/dist/motion/animator.js +7 -6
  324. package/dist/motion/carryAnimations.d.ts +58 -0
  325. package/dist/motion/carryAnimations.d.ts.map +1 -0
  326. package/dist/motion/carryAnimations.js +305 -0
  327. package/dist/motion/transientCopy.d.ts +4 -2
  328. package/dist/motion/transientCopy.d.ts.map +1 -1
  329. package/dist/motion/transientCopy.js +34 -5
  330. package/dist/motion/uikit/gestures.d.ts +41 -0
  331. package/dist/motion/uikit/gestures.d.ts.map +1 -1
  332. package/dist/motion/uikit/gestures.js +25 -0
  333. package/dist/motion/uikit/index.d.ts +1 -1
  334. package/dist/motion/uikit/index.d.ts.map +1 -1
  335. package/dist/motion/uikit/index.js +1 -1
  336. package/dist/motion/uikit/timing.d.ts +14 -10
  337. package/dist/motion/uikit/timing.d.ts.map +1 -1
  338. package/dist/motion/uikit/timing.js +7 -5
  339. package/dist/privateAttributes/menuPressLit.stylex.d.ts +52 -0
  340. package/dist/privateAttributes/menuPressLit.stylex.d.ts.map +1 -0
  341. package/dist/privateAttributes/menuPressLit.stylex.js +99 -0
  342. package/dist/privateAttributes/press.stylex.d.ts +142 -0
  343. package/dist/privateAttributes/press.stylex.d.ts.map +1 -0
  344. package/dist/privateAttributes/press.stylex.js +101 -0
  345. package/dist/theme/themeMotion.d.ts +3 -2
  346. package/dist/theme/themeMotion.d.ts.map +1 -1
  347. package/dist/theme/themeMotion.js +3 -2
  348. package/dist/theme/tokens.stylex.d.ts +2 -2
  349. package/dist/theme/tokens.stylex.js +1 -1
  350. package/dist/utils/calendarDateParser.d.ts +110 -0
  351. package/dist/utils/calendarDateParser.d.ts.map +1 -0
  352. package/dist/utils/calendarDateParser.js +1225 -0
  353. package/dist/utils/calendarSystem.d.ts +176 -0
  354. package/dist/utils/calendarSystem.d.ts.map +1 -0
  355. package/dist/utils/calendarSystem.js +569 -0
  356. package/dist/utils/coarsePointer.d.ts +5 -0
  357. package/dist/utils/coarsePointer.d.ts.map +1 -1
  358. package/dist/utils/coarsePointer.js +22 -13
  359. package/dist/utils/flatTree.d.ts +6 -3
  360. package/dist/utils/flatTree.d.ts.map +1 -1
  361. package/dist/utils/flatTree.js +13 -3
  362. package/dist/utils/focusReturn.d.ts +34 -13
  363. package/dist/utils/focusReturn.d.ts.map +1 -1
  364. package/dist/utils/focusReturn.js +64 -17
  365. package/dist/utils/hitArea.d.ts +8 -1
  366. package/dist/utils/hitArea.d.ts.map +1 -1
  367. package/dist/utils/hitArea.js +99 -9
  368. package/dist/utils/inputPresentation.d.ts +9 -1
  369. package/dist/utils/inputPresentation.d.ts.map +1 -1
  370. package/dist/utils/inputPresentation.js +15 -1
  371. package/dist/utils/inputStream.d.ts +14 -1
  372. package/dist/utils/inputStream.d.ts.map +1 -1
  373. package/dist/utils/inputStream.js +40 -9
  374. package/dist/utils/interactionOverlay.stylex.d.ts +5 -9
  375. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  376. package/dist/utils/interactionOverlay.stylex.js +29 -31
  377. package/dist/utils/plainDate.d.ts +38 -7
  378. package/dist/utils/plainDate.d.ts.map +1 -1
  379. package/dist/utils/plainDate.js +92 -18
  380. package/dist/utils/pressFeedback.d.ts +10 -2
  381. package/dist/utils/pressFeedback.d.ts.map +1 -1
  382. package/dist/utils/pressFeedback.js +40 -15
  383. package/dist/utils/pressGesture.d.ts +12 -6
  384. package/dist/utils/pressGesture.d.ts.map +1 -1
  385. package/dist/utils/pressGesture.js +26 -8
  386. package/dist/utils/scrollView.d.ts +25 -0
  387. package/dist/utils/scrollView.d.ts.map +1 -0
  388. package/dist/utils/scrollView.js +108 -0
  389. package/dist/utils/selectionLock.d.ts.map +1 -1
  390. package/dist/utils/selectionLock.js +1 -10
  391. package/dist/utils/touchHitArea.d.ts +30 -0
  392. package/dist/utils/touchHitArea.d.ts.map +1 -0
  393. package/dist/utils/touchHitArea.js +167 -0
  394. package/dist/utils/touchHitArea.stylex.d.ts +38 -0
  395. package/dist/utils/touchHitArea.stylex.d.ts.map +1 -0
  396. package/dist/utils/touchHitArea.stylex.js +48 -0
  397. package/dist/utils/triggerFocus.d.ts +5 -0
  398. package/dist/utils/triggerFocus.d.ts.map +1 -1
  399. package/dist/utils/triggerFocus.js +9 -2
  400. package/locales/en.json +21 -1
  401. package/locales/pseudo.json +15 -0
  402. package/package.json +15 -4
  403. package/src/AppShell/observeMainOverflow.ts +9 -6
  404. package/src/BottomSheet/BottomSheet.tsx +45 -3
  405. package/src/BottomSheet/BottomSheetPanel.tsx +64 -7
  406. package/src/BottomSheet/bottomSheetStack.ts +4 -3
  407. package/src/BottomSheet/useSheetGestures.ts +83 -20
  408. package/src/Calendar/Calendar.doc.mjs +76 -6
  409. package/src/Calendar/Calendar.tsx +123 -104
  410. package/src/Calendar/getInitialFocusDate.ts +22 -8
  411. package/src/Calendar/hooks/useCalendarDays.ts +89 -63
  412. package/src/Calendar/hooks/useCalendarNavigation.ts +68 -26
  413. package/src/CheckboxInput/CheckboxInput.doc.mjs +5 -4
  414. package/src/CheckboxInput/CheckboxInput.tsx +105 -20
  415. package/src/CheckboxInput/CheckboxRowPressContext.ts +22 -0
  416. package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
  417. package/src/CheckboxList/CheckboxListItem.doc.mjs +3 -3
  418. package/src/CheckboxList/CheckboxListItem.tsx +35 -14
  419. package/src/ClickableCard/ClickableCard.tsx +8 -1
  420. package/src/ContextMenu/ContextMenu.tsx +2 -0
  421. package/src/DateInput/DateInput.doc.mjs +45 -12
  422. package/src/DateInput/DateInput.tsx +165 -179
  423. package/src/DateInput/MonthScroller.tsx +39 -37
  424. package/src/DateInput/MonthYearWheels.tsx +68 -47
  425. package/src/DateInput/PickerWheel.tsx +7 -2
  426. package/src/DateInput/TouchDateField.tsx +45 -17
  427. package/src/DateInput/monthGeometry.ts +110 -8
  428. package/src/DateInput/useCalendarPresentation.ts +64 -0
  429. package/src/DateInput/useTypedDate.ts +469 -0
  430. package/src/DateInput/wheelStrip.ts +2 -2
  431. package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -0
  432. package/src/DateRangeInput/DateRangeInput.tsx +43 -9
  433. package/src/DateTimeInput/DateTimeInput.doc.mjs +42 -9
  434. package/src/DateTimeInput/DateTimeInput.tsx +138 -148
  435. package/src/DateTimeInput/TouchDateTimeField.tsx +31 -16
  436. package/src/Dialog/Dialog.doc.mjs +1 -1
  437. package/src/Dialog/Dialog.tsx +14 -2
  438. package/src/Drawer/Drawer.doc.mjs +1 -1
  439. package/src/Drawer/useDrawerDialogPresence.ts +9 -2
  440. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -2
  441. package/src/DropdownMenu/DropdownMenu.tsx +31 -7
  442. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +5 -1
  443. package/src/DropdownMenu/DropdownMenuItem.tsx +8 -4
  444. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +5 -1
  445. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +5 -1
  446. package/src/FileInput/FileInput.tsx +16 -2
  447. package/src/HoverCard/useHoverCard.tsx +3 -1
  448. package/src/Icon/useIcon.doc.mjs +94 -0
  449. package/src/InfoTip/InfoTip.doc.mjs +26 -2
  450. package/src/InfoTip/InfoTip.tsx +6 -27
  451. package/src/InputGroup/InputGroup.doc.mjs +4 -3
  452. package/src/InputGroup/InputGroup.tsx +4 -3
  453. package/src/InputGroup/InputGroupText.doc.mjs +45 -3
  454. package/src/InputGroup/InputGroupText.tsx +2 -1
  455. package/src/InputGroup/groupStyles.ts +3 -1
  456. package/src/Item/Item.tsx +139 -35
  457. package/src/Item/ItemListRowContext.tsx +18 -0
  458. package/src/Layer/holdEntranceInput.ts +84 -0
  459. package/src/Layer/inputHold.ts +734 -0
  460. package/src/Layer/outsidePress.ts +18 -1
  461. package/src/Layer/preserveAnimations.ts +12 -275
  462. package/src/Layer/useBackdropPress.ts +41 -1
  463. package/src/Layer/useLayer.tsx +77 -4
  464. package/src/Layer/useTouchTrigger.ts +4 -0
  465. package/src/Layout/LayoutContent.doc.mjs +6 -3
  466. package/src/Layout/LayoutContent.tsx +10 -4
  467. package/src/Layout/LayoutPanel.doc.mjs +14 -11
  468. package/src/Layout/LayoutPanel.tsx +113 -16
  469. package/src/Lightbox/Lightbox.tsx +4 -0
  470. package/src/List/List.doc.mjs +10 -1
  471. package/src/List/List.tsx +5 -0
  472. package/src/List/ListItem.tsx +63 -8
  473. package/src/Markdown/parser.ts +65 -42
  474. package/src/MetadataList/MetadataList.tsx +1 -1
  475. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  476. package/src/MobileNav/MobileNav.tsx +39 -1
  477. package/src/MoreMenu/MoreMenu.doc.mjs +2 -4
  478. package/src/MoreMenu/MoreMenu.tsx +5 -3
  479. package/src/MultiSelector/MultiSelector.tsx +7 -17
  480. package/src/NumberInput/NumberInput.doc.mjs +1 -1
  481. package/src/NumberInput/NumberInput.tsx +259 -11
  482. package/src/OverflowList/OverflowList.tsx +15 -9
  483. package/src/Popover/usePopover.tsx +1 -0
  484. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  485. package/src/PowerSearch/PowerSearch.tsx +20 -3
  486. package/src/PowerSearch/PowerSearchBottomSheet.tsx +4 -1
  487. package/src/PowerSearch/PowerSearchToken.tsx +3 -0
  488. package/src/PowerSearch/formatFilterValue.ts +21 -11
  489. package/src/PowerSearch/formatTokenValue.ts +7 -1
  490. package/src/RadioList/RadioListItem.doc.mjs +3 -2
  491. package/src/RadioList/RadioListItem.tsx +16 -6
  492. package/src/Resizable/Resizable.doc.mjs +40 -12
  493. package/src/Resizable/ResizeHandle.tsx +68 -6
  494. package/src/Resizable/resizablePane.ts +179 -0
  495. package/src/Resizable/useResizable.ts +15 -0
  496. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +3 -3
  497. package/src/SelectableCard/SelectableCard.tsx +8 -1
  498. package/src/Selector/Selector.tsx +83 -8
  499. package/src/SideNav/SideNav.doc.mjs +2 -2
  500. package/src/SideNav/SideNav.tsx +87 -12
  501. package/src/Slider/sliderTouchController.ts +2 -2
  502. package/src/Spinner/Spinner.tsx +7 -89
  503. package/src/Spinner/index.ts +1 -5
  504. package/src/Spinner/spinnerRotor.ts +113 -0
  505. package/src/Stack/Stack.doc.mjs +1 -1
  506. package/src/Stack/StackItem.tsx +27 -13
  507. package/src/Switch/Switch.tsx +7 -6
  508. package/src/Switch/useSwitchTouch.ts +4 -4
  509. package/src/TabList/Tab.tsx +5 -1
  510. package/src/Table/plugins/sortable/useTableSortable.tsx +1 -1
  511. package/src/Timestamp/Timestamp.doc.mjs +3 -3
  512. package/src/Timestamp/Timestamp.tsx +13 -8
  513. package/src/Timestamp/formatInstant.ts +49 -28
  514. package/src/Timestamp/tooltipEntries.ts +7 -3
  515. package/src/Token/Token.tsx +18 -1
  516. package/src/Token/TokenLink.tsx +7 -1
  517. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  518. package/src/Tokenizer/Tokenizer.tsx +252 -115
  519. package/src/Tooltip/useTooltip.tsx +180 -80
  520. package/src/TreeList/TreeListItem.tsx +36 -2
  521. package/src/Typeahead/BaseTypeahead.tsx +2 -0
  522. package/src/animator/createAnimator.ts +3 -3
  523. package/src/gestures/GestureHost.ts +21 -5
  524. package/src/gestures/PanGestureRecognizer.ts +19 -2
  525. package/src/gestures/README.md +14 -5
  526. package/src/gestures/ScreenEdgePanGestureRecognizer.ts +6 -1
  527. package/src/gestures/nativeScroll.ts +12 -68
  528. package/src/gestures/wheelSegmenter.ts +243 -10
  529. package/src/hooks/StackItemScrollRegion.tsx +57 -0
  530. package/src/hooks/computeOverflow.ts +1 -1
  531. package/src/hooks/menuPressGesture.ts +244 -38
  532. package/src/hooks/menuPressValues.ts +18 -0
  533. package/src/hooks/useClickableContainer.doc.mjs +8 -2
  534. package/src/hooks/useClickableContainer.ts +93 -15
  535. package/src/hooks/useFocusTrap.ts +268 -151
  536. package/src/hooks/useKeyboardHighlight.ts +71 -0
  537. package/src/hooks/useMediaQuery.ts +41 -12
  538. package/src/hooks/useMenuPress.ts +118 -11
  539. package/src/hooks/useOverflow.ts +321 -75
  540. package/src/hooks/usePressFeedback.doc.mjs +3 -3
  541. package/src/hooks/usePressFeedback.ts +6 -6
  542. package/src/hooks/useScrollRegionProps.ts +76 -0
  543. package/src/i18n/InternationalizationContext.ts +6 -0
  544. package/src/i18n/InternationalizationProvider.doc.mjs +29 -1
  545. package/src/i18n/InternationalizationProvider.tsx +35 -3
  546. package/src/i18n/generated-english/DateInput/DateInput.generated.ts +0 -1
  547. package/src/i18n/generated-english/DateInput/useTypedDate.generated.ts +17 -0
  548. package/src/i18n/generated-english/DateTimeInput/DateTimeInput.generated.ts +0 -1
  549. package/src/i18n/generated-english/hooks/useScrollRegionProps.generated.ts +13 -0
  550. package/src/i18n/generated-locales/en.generated.ts +7 -0
  551. package/src/i18n/generated-locales/pseudo.generated.ts +7 -0
  552. package/src/i18n/index.ts +2 -0
  553. package/src/i18n/useCalendarSystem.ts +95 -0
  554. package/src/internal/calendar-system.ts +26 -0
  555. package/src/internal/spinner-rotor.ts +20 -0
  556. package/src/internal/touch.ts +43 -2
  557. package/src/motion/MEASUREMENTS.md +11 -0
  558. package/src/motion/README.md +3 -3
  559. package/src/motion/animator.ts +7 -7
  560. package/src/motion/carryAnimations.ts +389 -0
  561. package/src/motion/transientCopy.ts +45 -5
  562. package/src/motion/uikit/gestures.ts +22 -0
  563. package/src/motion/uikit/index.ts +1 -0
  564. package/src/motion/uikit/timing.ts +7 -5
  565. package/src/privateAttributes/menuPressLit.stylex.ts +104 -0
  566. package/src/privateAttributes/press.stylex.ts +261 -0
  567. package/src/theme/themeMotion.ts +3 -2
  568. package/src/theme/tokens.stylex.ts +1 -1
  569. package/src/utils/calendarDateParser.ts +1385 -0
  570. package/src/utils/calendarSystem.ts +832 -0
  571. package/src/utils/coarsePointer.ts +27 -14
  572. package/src/utils/flatTree.ts +15 -3
  573. package/src/utils/focusReturn.ts +78 -18
  574. package/src/utils/hitArea.ts +138 -9
  575. package/src/utils/inputPresentation.ts +21 -1
  576. package/src/utils/inputStream.ts +47 -10
  577. package/src/utils/interactionOverlay.stylex.ts +19 -22
  578. package/src/utils/plainDate.ts +130 -19
  579. package/src/utils/pressFeedback.ts +46 -14
  580. package/src/utils/pressGesture.ts +35 -9
  581. package/src/utils/scrollView.ts +135 -0
  582. package/src/utils/selectionLock.ts +5 -10
  583. package/src/utils/touchHitArea.stylex.ts +56 -0
  584. package/src/utils/touchHitArea.ts +177 -0
  585. package/src/utils/triggerFocus.ts +17 -4
@@ -0,0 +1,569 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file calendarSystem.ts
5
+ * @input A calendar identifier and Gregorian PlainDates
6
+ * @output Calendar months located by their Gregorian days, their year and
7
+ * month numbers, month and year steps, dates from calendar fields,
8
+ * availability of each calendar, and calendar labels and digits
9
+ * @position Shared date utility; read by the i18n calendar resolution, by
10
+ * the date components, and by Calendar's public hooks. Values stay Gregorian PlainDates. Temporal owns the arithmetic of
11
+ * every calendar whose months are not Gregorian.
12
+ */
13
+
14
+ import { DATE_FORMAT_MONTH_ONLY, dateTimeFormatAtCall, dateTimeFormatFor, plainDateAddDays, plainDateAddMonths, plainDateFormatDayNumber, plainDateFormatStandaloneMonthYear, plainDateFormatToParts, plainDateFromDate, plainDateFromInstant, plainDateIsInRange, getDaysInMonth } from "./plainDate.js";
15
+
16
+ /**
17
+ * A calendar system that date components can show: the calendars that
18
+ * ECMA-402 and Temporal require. Values stay Gregorian ISO dates in every
19
+ * calendar.
20
+ */
21
+
22
+ // A record, so the compiler checks that it lists every calendar exactly once.
23
+ const KNOWN_CALENDARS = {
24
+ gregory: true,
25
+ iso8601: true,
26
+ buddhist: true,
27
+ roc: true,
28
+ japanese: true,
29
+ persian: true,
30
+ indian: true,
31
+ hebrew: true,
32
+ chinese: true,
33
+ dangi: true,
34
+ coptic: true,
35
+ ethiopic: true,
36
+ ethioaa: true,
37
+ 'islamic-civil': true,
38
+ 'islamic-tbla': true,
39
+ 'islamic-umalqura': true
40
+ };
41
+ export const CALENDAR_SYSTEMS = Object.keys(KNOWN_CALENDARS);
42
+ const GREGORIAN_ALIGNED = new Set(['gregory', 'iso8601', 'buddhist', 'roc', 'japanese']);
43
+
44
+ /**
45
+ * Whether `<input type="date">` can show the calendar. The native control is
46
+ * Gregorian by specification, so only `gregory` and `iso8601` qualify.
47
+ */
48
+ export function isGregorianCalendar(calendar) {
49
+ return calendar === 'gregory' || calendar === 'iso8601';
50
+ }
51
+
52
+ /** Whether the calendar's months and days are the Gregorian ones. */
53
+ export function isGregorianAligned(calendar) {
54
+ return GREGORIAN_ALIGNED.has(calendar);
55
+ }
56
+ export function isCalendarSystem(value) {
57
+ return Object.hasOwn(KNOWN_CALENDARS, value);
58
+ }
59
+
60
+ // The published types must not need the `esnext.temporal` library.
61
+ // This module declares only the Temporal members it reads.
62
+
63
+ function getTemporal() {
64
+ const temporal = globalThis.Temporal;
65
+ return typeof temporal?.PlainDate === 'function' ? temporal : undefined;
66
+ }
67
+
68
+ // The key is the Temporal object, so a polyfill that loads later gets its
69
+ // own probe.
70
+ const supportedCalendars = new WeakMap();
71
+
72
+ /**
73
+ * Whether this runtime can show the calendar. Gregorian-aligned calendars
74
+ * always can. The others need a `Temporal` that knows the calendar: a
75
+ * polyfill build without non-ISO calendars throws for them.
76
+ */
77
+ export function isCalendarSystemAvailable(calendar) {
78
+ if (isGregorianAligned(calendar)) {
79
+ return true;
80
+ }
81
+ const temporal = getTemporal();
82
+ if (temporal == null) {
83
+ return false;
84
+ }
85
+ let known = supportedCalendars.get(temporal);
86
+ if (known == null) {
87
+ known = new Map();
88
+ supportedCalendars.set(temporal, known);
89
+ }
90
+ let isSupported = known.get(calendar);
91
+ if (isSupported == null) {
92
+ try {
93
+ new temporal.PlainDate(2000, 1, 1, calendar);
94
+ isSupported = true;
95
+ } catch {
96
+ isSupported = false;
97
+ }
98
+ known.set(calendar, isSupported);
99
+ }
100
+ return isSupported;
101
+ }
102
+ function inCalendar(calendar, pd) {
103
+ const temporal = getTemporal();
104
+ if (temporal == null) {
105
+ throw new Error(`The "${calendar}" calendar needs Temporal.`);
106
+ }
107
+ return new temporal.PlainDate(pd.year, pd.month, pd.day, calendar);
108
+ }
109
+ function toGregorian(date) {
110
+ const iso = date.withCalendar('iso8601');
111
+ return {
112
+ year: iso.year,
113
+ month: iso.month,
114
+ day: iso.day
115
+ };
116
+ }
117
+
118
+ /** A month of a calendar, located by its first and last Gregorian days. */
119
+
120
+ function makeMonth(start, length) {
121
+ return {
122
+ start,
123
+ end: plainDateAddDays(start, length - 1),
124
+ length
125
+ };
126
+ }
127
+ function gregorianMonth(year, month) {
128
+ return makeMonth({
129
+ year,
130
+ month,
131
+ day: 1
132
+ }, getDaysInMonth(year, month));
133
+ }
134
+ function temporalMonth(firstDay) {
135
+ return makeMonth(toGregorian(firstDay), firstDay.daysInMonth);
136
+ }
137
+
138
+ /** The day of the calendar month that a Gregorian date falls on. */
139
+ export function calendarDayOfMonth(calendar, pd) {
140
+ return isGregorianAligned(calendar) ? pd.day : inCalendar(calendar, pd).day;
141
+ }
142
+
143
+ /** The calendar month that contains a Gregorian date. */
144
+ export function calendarMonthOf(calendar, pd) {
145
+ if (isGregorianAligned(calendar)) {
146
+ return gregorianMonth(pd.year, pd.month);
147
+ }
148
+ return temporalMonth(inCalendar(calendar, pd).with({
149
+ day: 1
150
+ }));
151
+ }
152
+
153
+ /**
154
+ * A calendar month by its year and its position in that year, as
155
+ * `Temporal.PlainDate` numbers them: month 13 exists in a Hebrew leap year.
156
+ */
157
+
158
+ // Temporal counts the years of these Gregorian-aligned calendars from another
159
+ // epoch: 2026 is 2569 in `buddhist` and 115 in `roc`.
160
+ const GREGORIAN_YEAR_OFFSETS = {
161
+ buddhist: 543,
162
+ roc: -1911
163
+ };
164
+
165
+ /** The year and month numbers of a calendar month. */
166
+ export function calendarYearMonthOf(calendar, month) {
167
+ if (isGregorianAligned(calendar)) {
168
+ return {
169
+ year: month.start.year + (GREGORIAN_YEAR_OFFSETS[calendar] ?? 0),
170
+ month: month.start.month
171
+ };
172
+ }
173
+ const {
174
+ year,
175
+ month: monthOfYear
176
+ } = inCalendar(calendar, month.start);
177
+ return {
178
+ year,
179
+ month: monthOfYear
180
+ };
181
+ }
182
+
183
+ /**
184
+ * The calendar month with these year and month numbers. A month past the end
185
+ * of its year becomes the last month of that year, as Temporal constrains it.
186
+ */
187
+ export function calendarMonthFromYearMonth(calendar, {
188
+ year,
189
+ month
190
+ }) {
191
+ if (isGregorianAligned(calendar)) {
192
+ return gregorianMonth(year - (GREGORIAN_YEAR_OFFSETS[calendar] ?? 0), month);
193
+ }
194
+ // `with` replaces the year and month of any date in the calendar.
195
+ return temporalMonth(inCalendar(calendar, {
196
+ year: 2000,
197
+ month: 1,
198
+ day: 1
199
+ }).with({
200
+ year,
201
+ month,
202
+ day: 1
203
+ }));
204
+ }
205
+
206
+ /** The calendar month `n` months after `month`, or before it when negative. */
207
+ export function calendarAddMonths(calendar, month, n) {
208
+ if (n === 0) {
209
+ return month;
210
+ }
211
+ if (isGregorianAligned(calendar)) {
212
+ const {
213
+ year,
214
+ month: monthOfYear
215
+ } = plainDateAddMonths(month.start, n);
216
+ return gregorianMonth(year, monthOfYear);
217
+ }
218
+ return temporalMonth(inCalendar(calendar, month.start).add({
219
+ months: n
220
+ }));
221
+ }
222
+
223
+ /**
224
+ * Moves a date by `n` calendar months. It keeps the day of the month and
225
+ * clamps it to the length of the target month.
226
+ */
227
+ export function calendarShiftMonths(calendar, pd, n) {
228
+ if (isGregorianAligned(calendar)) {
229
+ return plainDateAddMonths(pd, n);
230
+ }
231
+ return toGregorian(inCalendar(calendar, pd).add({
232
+ months: n
233
+ }));
234
+ }
235
+
236
+ /**
237
+ * Moves a date by `n` calendar years, to the same month of the target year.
238
+ * It clamps the day of the month. A leap month that the target year does not
239
+ * have becomes its common counterpart, because Temporal keeps the month code
240
+ * and constrains it.
241
+ */
242
+ export function calendarShiftYears(calendar, pd, n) {
243
+ if (isGregorianAligned(calendar)) {
244
+ return plainDateAddMonths(pd, n * 12);
245
+ }
246
+ return toGregorian(inCalendar(calendar, pd).add({
247
+ years: n
248
+ }));
249
+ }
250
+
251
+ /** Whether a Gregorian date falls inside a calendar month. */
252
+ export function isInCalendarMonth(pd, month) {
253
+ return plainDateIsInRange(pd, [month.start, month.end]);
254
+ }
255
+
256
+ /**
257
+ * The day that names a calendar month: its middle day. In the Japanese
258
+ * calendar an era can start inside a month, and most days of that month then
259
+ * belong to the era of its middle day.
260
+ */
261
+ export function calendarMonthLabelDay(month) {
262
+ return plainDateAddDays(month.start, Math.floor(month.length / 2));
263
+ }
264
+
265
+ /**
266
+ * The stand-alone month and year label of a calendar month, such as
267
+ * "Aban 1405 AP", named by `calendarMonthLabelDay`. When `day` is given and the
268
+ * month spans an era change, it formats that day instead, clamped to the
269
+ * month, so January 1989 reads 昭和64年1月 on the 3rd and 平成元年1月 on the
270
+ * 22nd.
271
+ */
272
+ export function formatCalendarMonthLabel(calendar, month, locale, day) {
273
+ const labelDay = day != null && calendarMonthSpansEras(calendar, month, locale) ? plainDateAddDays(month.start, Math.min(Math.max(day, 1), month.length) - 1) : calendarMonthLabelDay(month);
274
+ return plainDateFormatStandaloneMonthYear(labelDay, locale, labelCalendar(calendar));
275
+ }
276
+
277
+ /** Whether the first and last days of a calendar month fall in different eras. */
278
+ function calendarMonthSpansEras(calendar, month, locale) {
279
+ return !isGregorianCalendar(calendar) && eraYearAt(calendar, month.start, locale).era !== eraYearAt(calendar, month.end, locale).era;
280
+ }
281
+
282
+ // Intl has no month names for `iso8601`. Labels use `gregory`, which has the
283
+ // same months and days.
284
+ function labelCalendar(calendar) {
285
+ return calendar === 'iso8601' ? 'gregory' : calendar;
286
+ }
287
+ function formatToParts(calendar, pd, options, locale) {
288
+ return plainDateFormatToParts(pd, {
289
+ ...options,
290
+ calendar
291
+ }, locale);
292
+ }
293
+ const MONTH_PART_TYPES = new Set(['era', 'year', 'relatedYear', 'yearName', 'month']);
294
+ function monthPartsKey(parts) {
295
+ return parts.filter(part => MONTH_PART_TYPES.has(part.type)).map(part => part.value).join('|');
296
+ }
297
+
298
+ /**
299
+ * Formats a Gregorian date in the calendar, such as "Friday, Aban 8, 1405 AP".
300
+ * The label always names the month and day that the grid shows. Intl and the
301
+ * runtime's Temporal can disagree on where a month of the Chinese or Dangi
302
+ * calendar starts; the label then takes its month and year from the middle of
303
+ * the Temporal month, and its day from Temporal. With `relatedYear`, a
304
+ * Chinese or Dangi year that the locale names only by its place in the 60-year
305
+ * cycle becomes the related Gregorian year.
306
+ */
307
+ export function formatCalendarDate(calendar, pd, options, locale, labelOptions) {
308
+ return joinParts(formatCalendarDateToParts(calendar, pd, options, locale, labelOptions));
309
+ }
310
+
311
+ /** The parts of `formatCalendarDate`'s label. */
312
+ export function formatCalendarDateToParts(calendar, pd, options, locale, {
313
+ relatedYear = false
314
+ } = {}) {
315
+ const parts = formatToParts(labelCalendar(calendar), pd, options, locale);
316
+ const fixed = withTemporalDay(calendar, pd, parts, options, locale);
317
+ return relatedYear ? withRelatedYear(calendar, pd, fixed, options, locale) : fixed;
318
+ }
319
+ function withRelatedYear(calendar, pd, parts, options, locale) {
320
+ if (calendar !== 'chinese' && calendar !== 'dangi' || !isCalendarSystemAvailable(calendar) || parts.some(part => part.type === 'relatedYear')) {
321
+ return parts;
322
+ }
323
+ const {
324
+ numberingSystem
325
+ } = dateTimeFormatFor(locale, {
326
+ ...options,
327
+ calendar,
328
+ timeZone: 'UTC'
329
+ }).resolvedOptions();
330
+ const {
331
+ year
332
+ } = inCalendar(calendar, pd);
333
+ const value = plainDateFormatDayNumber(year, locale, numberingSystem);
334
+ return parts.map(part => /^year(Name)?$/.test(part.type) ? {
335
+ ...part,
336
+ value
337
+ } : part);
338
+ }
339
+
340
+ // Returns `parts` itself where Intl already names Temporal's month and day.
341
+ function withTemporalDay(calendar, pd, parts, options, locale) {
342
+ if (isGregorianAligned(calendar) || !isCalendarSystemAvailable(calendar)) {
343
+ return parts;
344
+ }
345
+ const date = inCalendar(calendar, pd);
346
+ const middle = plainDateAddDays(pd, Math.floor(date.daysInMonth / 2) - (date.day - 1));
347
+ const middleParts = formatToParts(calendar, middle, options, locale);
348
+ const intlDay = formatToParts(calendar, pd, {
349
+ day: 'numeric'
350
+ }, 'en-u-nu-latn').find(part => part.type === 'day')?.value;
351
+ if (Number(intlDay) === date.day && monthPartsKey(parts) === monthPartsKey(middleParts)) {
352
+ return parts;
353
+ }
354
+ const {
355
+ numberingSystem
356
+ } = dateTimeFormatFor(locale, {
357
+ ...options,
358
+ calendar,
359
+ timeZone: 'UTC'
360
+ }).resolvedOptions();
361
+ const middleValues = new Map(middleParts.map(part => [part.type, part.value]));
362
+ return parts.map(part => part.type === 'day' ? {
363
+ ...part,
364
+ value: plainDateFormatDayNumber(date.day, locale, numberingSystem)
365
+ } : MONTH_PART_TYPES.has(part.type) ? {
366
+ ...part,
367
+ value: middleValues.get(part.type) ?? part.value
368
+ } : part);
369
+ }
370
+
371
+ /**
372
+ * Formats an instant as `formatCalendarDate` formats the day it falls on in
373
+ * `timeZone`, the host's zone when omitted. Intl writes any time of day that
374
+ * `options` asks for.
375
+ */
376
+ export function formatCalendarInstant(calendar, instant, options, locale, timeZone) {
377
+ return instantLabel(calendar, instant, options, locale, timeZone).text;
378
+ }
379
+
380
+ /**
381
+ * Formats the range between two instants. Intl writes the fields that both
382
+ * ends share once. Where Intl names another month or day than Temporal at
383
+ * either end, the range writes each end in full.
384
+ */
385
+ export function formatCalendarInstantRange(calendar, start, end, options, locale, timeZone) {
386
+ const ends = [start, end].map(instant => instantLabel(calendar, instant, options, locale, timeZone));
387
+ const {
388
+ format
389
+ } = ends[0];
390
+ if (ends.every(({
391
+ isIntl
392
+ }) => isIntl)) {
393
+ return format.formatRange(start, end);
394
+ }
395
+ // Intl writes a range of different years as two full dates around its
396
+ // separator, which gives the separator to put between the two full ends.
397
+ const far = new Date(start.getTime() + 400 * 86_400_000);
398
+ const both = format.formatRange(start, far);
399
+ const [from, to] = [format.format(start), format.format(far)];
400
+ const separator = both.startsWith(from) && both.endsWith(to) ? both.slice(from.length, both.length - to.length) : ' – ';
401
+ const [first, last] = ends.map(({
402
+ text
403
+ }) => text);
404
+ return first === last ? first : `${first}${separator}${last}`;
405
+ }
406
+ function instantLabel(calendar, instant, options, locale, timeZone) {
407
+ const format = dateTimeFormatAtCall(locale, {
408
+ ...options,
409
+ ...(timeZone === undefined ? {} : {
410
+ timeZone
411
+ }),
412
+ calendar: labelCalendar(calendar)
413
+ });
414
+ const parts = format.formatToParts(instant);
415
+ const day = timeZone === undefined ? plainDateFromDate(instant) : plainDateFromInstant(instant.getTime(), timeZone);
416
+ const fixed = withTemporalDay(calendar, day, parts, options, locale);
417
+ const isIntl = fixed === parts;
418
+ return {
419
+ format,
420
+ isIntl,
421
+ text: isIntl ? format.format(instant) : joinParts(fixed)
422
+ };
423
+ }
424
+ function joinParts(parts) {
425
+ return parts.map(part => part.value).join('');
426
+ }
427
+
428
+ /**
429
+ * The fields of a date written in a calendar. A field gives either `year` or
430
+ * `era` with `eraYear`, and either `monthCode` (such as `M05L` for a leap
431
+ * month) or `month`, the month's position in its year.
432
+ */
433
+
434
+ /**
435
+ * The Gregorian date for fields written in a calendar that needs Temporal,
436
+ * or null when the calendar does not have that date. Temporal validates the
437
+ * fields and never adjusts them: 30 Esfand in a common Persian year is null.
438
+ */
439
+ export function calendarDateFromFields(calendar, fields) {
440
+ const temporal = getTemporal();
441
+ if (temporal == null) {
442
+ throw new Error(`The "${calendar}" calendar needs Temporal.`);
443
+ }
444
+ try {
445
+ return toGregorian(temporal.PlainDate.from({
446
+ ...fields,
447
+ calendar
448
+ }, {
449
+ overflow: 'reject'
450
+ }));
451
+ } catch (error) {
452
+ if (error instanceof RangeError || error instanceof TypeError) {
453
+ return null;
454
+ }
455
+ throw error;
456
+ }
457
+ }
458
+
459
+ /** The number of months in the calendar year that contains a date. */
460
+ export function calendarMonthsInYear(calendar, pd) {
461
+ return isGregorianAligned(calendar) ? 12 : inCalendar(calendar, pd).monthsInYear;
462
+ }
463
+
464
+ /**
465
+ * The number of calendar months from the month `from` to the month `to`:
466
+ * positive when `to` is later.
467
+ */
468
+ export function calendarMonthsBetween(calendar, from, to) {
469
+ if (isGregorianAligned(calendar)) {
470
+ return (to.start.year - from.start.year) * 12 + (to.start.month - from.start.month);
471
+ }
472
+ return inCalendar(calendar, from.start).until(inCalendar(calendar, to.start), {
473
+ largestUnit: 'months'
474
+ }).months;
475
+ }
476
+
477
+ /**
478
+ * The calendar month at a position in a year of the calendar. A
479
+ * Gregorian-aligned calendar counts Gregorian years here; the others count
480
+ * years as {@link calendarYearMonthOf} does.
481
+ */
482
+ export function calendarMonthOfYear(calendar, year, month) {
483
+ return isGregorianAligned(calendar) ? gregorianMonth(year, month) : calendarMonthFromYearMonth(calendar, {
484
+ year,
485
+ month
486
+ });
487
+ }
488
+
489
+ /** The number of months in a year of the calendar. */
490
+ export function calendarMonthsInCalendarYear(calendar, year) {
491
+ return isGregorianAligned(calendar) ? 12 : calendarMonthsInYear(calendar, calendarMonthOfYear(calendar, year, 1).start);
492
+ }
493
+
494
+ /**
495
+ * The name of a calendar month, such as "Adar I". It formats the middle day of
496
+ * the month, for the reason {@link formatCalendarMonthLabel} gives.
497
+ */
498
+ export function formatCalendarMonthName(calendar, month, locale) {
499
+ return formatCalendarDate(calendar, plainDateAddDays(month.start, Math.floor(month.length / 2)), DATE_FORMAT_MONTH_ONLY, locale);
500
+ }
501
+ const YEAR_PART_TYPES = new Set(['era', 'year', 'relatedYear']);
502
+
503
+ /** The era and year parts of a date, as the locale writes them in a long date. */
504
+ function eraYearAt(calendar, pd, locale) {
505
+ const parts = formatToParts(calendar, pd, {
506
+ era: 'short',
507
+ year: 'numeric',
508
+ month: 'long',
509
+ day: 'numeric'
510
+ }, locale);
511
+ const era = parts.find(part => part.type === 'era')?.value;
512
+ const first = parts.findIndex(part => YEAR_PART_TYPES.has(part.type));
513
+ if (first === -1) {
514
+ return {
515
+ era,
516
+ label: null
517
+ };
518
+ }
519
+ let last = first;
520
+ parts.forEach((part, index) => {
521
+ if (YEAR_PART_TYPES.has(part.type)) {
522
+ last = index;
523
+ }
524
+ });
525
+ const label = parts.slice(first, last + 1).filter(part => YEAR_PART_TYPES.has(part.type) || part.type === 'literal').map(part => part.value).join('').replace(/\s+/g, ' ').trim();
526
+ return {
527
+ era,
528
+ label
529
+ };
530
+ }
531
+
532
+ /**
533
+ * Whether the first and last days of a year of the calendar fall in different
534
+ * eras, as the Japanese year 2019 does (Heisei, then Reiwa). Only an era change
535
+ * counts: other parts, such as a Chinese related year, can disagree at the
536
+ * edges of a year when Intl and Temporal place a month start one day apart.
537
+ */
538
+ export function calendarYearSpansEras(calendar, year, locale) {
539
+ if (isGregorianCalendar(calendar)) {
540
+ return false;
541
+ }
542
+ const months = calendarMonthsInCalendarYear(calendar, year);
543
+ const start = eraYearAt(calendar, calendarMonthOfYear(calendar, year, 1).start, locale);
544
+ const end = eraYearAt(calendar, calendarMonthOfYear(calendar, year, months).end, locale);
545
+ return start.era !== end.era && start.label != null && end.label != null;
546
+ }
547
+
548
+ /**
549
+ * The label of a year of the calendar, with its era where the locale writes
550
+ * one in a date, such as "令和8" in `ja-JP` or "1405 AP" in English. It uses the
551
+ * era and year parts of a long date, in the locale's order and digits, with the
552
+ * text between them. A year that spans an era change takes its era from `at`,
553
+ * a month position and a day clamped to that month, so 2019 reads "平成31" in
554
+ * January and "令和元" in May. Without `at`, and for every other year, the label
555
+ * comes from the middle of the year. Gregorian years are plain numbers.
556
+ */
557
+ export function formatCalendarYearLabel(calendar, year, locale, at) {
558
+ if (isGregorianCalendar(calendar)) {
559
+ return String(year);
560
+ }
561
+ const months = calendarMonthsInCalendarYear(calendar, year);
562
+ if (at != null && calendarYearSpansEras(calendar, year, locale)) {
563
+ const month = calendarMonthOfYear(calendar, year, Math.min(Math.max(at.month, 1), months));
564
+ const day = Math.min(Math.max(at.day, 1), month.length);
565
+ return eraYearAt(calendar, plainDateAddDays(month.start, day - 1), locale).label ?? String(year);
566
+ }
567
+ const middle = eraYearAt(calendar, calendarMonthOfYear(calendar, year, Math.floor(months / 2) + 1).start, locale);
568
+ return middle.label ?? String(year);
569
+ }
@@ -1,5 +1,10 @@
1
1
  /** Whether the primary pointer of `view` is coarse now. */
2
2
  export declare function isCoarsePointer(view: Window | null | undefined): boolean;
3
+ /**
4
+ * Call `listener` with the new answer each time `query` starts or stops
5
+ * matching in `view`, until the returned function is called.
6
+ */
7
+ export declare function watchMediaQuery(view: Window | null | undefined, query: string, listener: (matches: boolean) => void): () => void;
3
8
  /**
4
9
  * Call `listener` with the new answer each time the primary pointer of
5
10
  * `view` turns coarse or fine, until the returned function is called.
@@ -1 +1 @@
1
- {"version":3,"file":"coarsePointer.d.ts","sourceRoot":"","sources":["../../src/utils/coarsePointer.ts"],"names":[],"mappings":"AAsBA,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAKxE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GACpC,MAAM,IAAI,CAaZ"}
1
+ {"version":3,"file":"coarsePointer.d.ts","sourceRoot":"","sources":["../../src/utils/coarsePointer.ts"],"names":[],"mappings":"AAuBA,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAKxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC,MAAM,IAAI,CAaZ;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GACpC,MAAM,IAAI,CAEZ"}
@@ -3,11 +3,12 @@
3
3
  /**
4
4
  * @file coarsePointer.ts
5
5
  * @input A window
6
- * @output Exports isCoarsePointer and watchCoarsePointer: whether the
7
- * primary pointer is coarse (TOUCH_QUERY), and when it changes
6
+ * @output Exports isCoarsePointer, watchCoarsePointer and watchMediaQuery:
7
+ * whether the primary pointer is coarse (TOUCH_QUERY), and when it or any
8
+ * media query changes
8
9
  * @position The coarse-pointer gate of packages/core/src/gestures and of
9
10
  * the press controller (pressFeedback.ts): touch-only work registers only
10
- * while it holds
11
+ * while it holds. useMediaQuery watches through watchMediaQuery
11
12
  *
12
13
  * Under a coarse primary pointer, a phone's touch work stays registered: the
13
14
  * gesture host's page listeners, the page hold and the finger scroll. Under a
@@ -26,20 +27,28 @@ export function isCoarsePointer(view) {
26
27
  }
27
28
 
28
29
  /**
29
- * Call `listener` with the new answer each time the primary pointer of
30
- * `view` turns coarse or fine, until the returned function is called.
30
+ * Call `listener` with the new answer each time `query` starts or stops
31
+ * matching in `view`, until the returned function is called.
31
32
  */
32
- export function watchCoarsePointer(view, listener) {
33
+ export function watchMediaQuery(view, query, listener) {
33
34
  if (typeof view?.matchMedia !== 'function') {
34
35
  return () => {};
35
36
  }
36
- const query = view.matchMedia(TOUCH_QUERY);
37
- const onChange = () => listener(query.matches);
38
- if (typeof query.addEventListener === 'function') {
39
- query.addEventListener('change', onChange);
40
- return () => query.removeEventListener('change', onChange);
37
+ const list = view.matchMedia(query);
38
+ const onChange = () => listener(list.matches);
39
+ if (typeof list.addEventListener === 'function') {
40
+ list.addEventListener('change', onChange);
41
+ return () => list.removeEventListener('change', onChange);
41
42
  }
42
43
  // Safari before 14 only has the older pair.
43
- query.addListener(onChange);
44
- return () => query.removeListener(onChange);
44
+ list.addListener(onChange);
45
+ return () => list.removeListener(onChange);
46
+ }
47
+
48
+ /**
49
+ * Call `listener` with the new answer each time the primary pointer of
50
+ * `view` turns coarse or fine, until the returned function is called.
51
+ */
52
+ export function watchCoarsePointer(view, listener) {
53
+ return watchMediaQuery(view, TOUCH_QUERY, listener);
45
54
  }
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * @file flatTree.ts
3
3
  * @input A DOM node
4
- * @output Exports parentAcrossShadow, and containsAlongFlatTree, which walks it
4
+ * @output Exports parentAcrossShadow, containsAlongFlatTree, which walks it,
5
+ * and deepActiveElement
5
6
  * @position The flat-tree parent the browser scrolls and dispatches
6
- * through, shared by the gesture host's native-scroll probe and the
7
+ * through, shared by the gesture host's native-scroll probe, the
7
8
  * selection lock (which the press feedback controller uses without the
8
- * gesture system)
9
+ * gesture system) and the Layer module's input hold
9
10
  */
10
11
  /** The node's parent, crossing out of shadow roots. */
11
12
  export declare function parentAcrossShadow(node: Node): Node | null;
@@ -14,4 +15,6 @@ export declare function parentAcrossShadow(node: Node): Node | null;
14
15
  * shadow root to its host, which `Node.contains` does not follow.
15
16
  */
16
17
  export declare function containsAlongFlatTree(ancestor: Node, node: Node): boolean;
18
+ /** The focused element of `doc`, inside open shadow roots too. */
19
+ export declare function deepActiveElement(doc: Document | null | undefined): Element | null;
17
20
  //# sourceMappingURL=flatTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flatTree.d.ts","sourceRoot":"","sources":["../../src/utils/flatTree.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAa1D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAOzE"}
1
+ {"version":3,"file":"flatTree.d.ts","sourceRoot":"","sources":["../../src/utils/flatTree.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAa1D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAOzE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAC/B,OAAO,GAAG,IAAI,CAMhB"}