@lumx/react 3.20.1-alpha.13 → 3.20.1-alpha.14

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 (697) hide show
  1. package/_internal/Falsy.d.ts +7 -0
  2. package/_internal/index.js +236 -0
  3. package/_internal/index.js.map +1 -0
  4. package/index.d.ts +352 -7
  5. package/index.js +14486 -65
  6. package/index.js.map +1 -1
  7. package/package.json +11 -3
  8. package/src/components/alert-dialog/AlertDialog.stories.tsx +127 -0
  9. package/src/components/alert-dialog/AlertDialog.test.tsx +34 -0
  10. package/src/components/alert-dialog/AlertDialog.tsx +189 -0
  11. package/src/components/alert-dialog/index.ts +1 -0
  12. package/src/components/autocomplete/Autocomplete.stories.tsx +75 -0
  13. package/src/components/autocomplete/Autocomplete.test.tsx +99 -0
  14. package/src/components/autocomplete/Autocomplete.tsx +294 -0
  15. package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +167 -0
  16. package/src/components/autocomplete/AutocompleteMultiple.test.tsx +61 -0
  17. package/src/components/autocomplete/AutocompleteMultiple.tsx +156 -0
  18. package/src/components/autocomplete/__mockData__/index.ts +39 -0
  19. package/src/components/autocomplete/index.ts +2 -0
  20. package/src/components/avatar/Avatar.stories.tsx +119 -0
  21. package/src/components/avatar/Avatar.test.tsx +32 -0
  22. package/src/components/avatar/Avatar.tsx +114 -0
  23. package/src/components/avatar/index.ts +1 -0
  24. package/src/components/badge/Badge.stories.tsx +69 -0
  25. package/src/components/badge/Badge.test.tsx +45 -0
  26. package/src/components/badge/Badge.tsx +58 -0
  27. package/src/components/badge/BadgeWrapper.stories.tsx +75 -0
  28. package/src/components/badge/BadgeWrapper.test.tsx +47 -0
  29. package/src/components/badge/BadgeWrapper.tsx +37 -0
  30. package/src/components/badge/index.ts +2 -0
  31. package/src/components/button/Button.stories.tsx +355 -0
  32. package/src/components/button/Button.test.tsx +125 -0
  33. package/src/components/button/Button.tsx +101 -0
  34. package/src/components/button/ButtonGroup.stories.tsx +52 -0
  35. package/src/components/button/ButtonGroup.test.tsx +41 -0
  36. package/src/components/button/ButtonGroup.tsx +50 -0
  37. package/src/components/button/ButtonRoot.tsx +163 -0
  38. package/src/components/button/IconButton.stories.tsx +52 -0
  39. package/src/components/button/IconButton.test.tsx +66 -0
  40. package/src/components/button/IconButton.tsx +91 -0
  41. package/src/components/button/index.ts +4 -0
  42. package/src/components/checkbox/Checkbox.stories.tsx +64 -0
  43. package/src/components/checkbox/Checkbox.test.tsx +154 -0
  44. package/src/components/checkbox/Checkbox.tsx +164 -0
  45. package/src/components/checkbox/index.ts +1 -0
  46. package/src/components/chip/Chip.stories.tsx +164 -0
  47. package/src/components/chip/Chip.test.tsx +243 -0
  48. package/src/components/chip/Chip.tsx +168 -0
  49. package/src/components/chip/ChipGroup.stories.tsx +47 -0
  50. package/src/components/chip/ChipGroup.test.tsx +37 -0
  51. package/src/components/chip/ChipGroup.tsx +60 -0
  52. package/src/components/chip/index.ts +2 -0
  53. package/src/components/comment-block/CommentBlock.stories.tsx +91 -0
  54. package/src/components/comment-block/CommentBlock.test.tsx +28 -0
  55. package/src/components/comment-block/CommentBlock.tsx +172 -0
  56. package/src/components/comment-block/index.ts +1 -0
  57. package/src/components/date-picker/DatePicker.stories.tsx +118 -0
  58. package/src/components/date-picker/DatePicker.test.tsx +34 -0
  59. package/src/components/date-picker/DatePicker.tsx +52 -0
  60. package/src/components/date-picker/DatePickerControlled.test.tsx +91 -0
  61. package/src/components/date-picker/DatePickerControlled.tsx +259 -0
  62. package/src/components/date-picker/DatePickerField.stories.tsx +100 -0
  63. package/src/components/date-picker/DatePickerField.test.tsx +70 -0
  64. package/src/components/date-picker/DatePickerField.tsx +135 -0
  65. package/src/components/date-picker/constants.ts +11 -0
  66. package/src/components/date-picker/index.ts +4 -0
  67. package/src/components/date-picker/types.ts +28 -0
  68. package/src/components/dialog/Dialog.stories.tsx +318 -0
  69. package/src/components/dialog/Dialog.test.tsx +97 -0
  70. package/src/components/dialog/Dialog.tsx +288 -0
  71. package/src/components/dialog/index.ts +1 -0
  72. package/src/components/divider/Divider.test.tsx +51 -0
  73. package/src/components/divider/Divider.tsx +50 -0
  74. package/src/components/divider/index.ts +1 -0
  75. package/src/components/drag-handle/DragHandle.test.tsx +36 -0
  76. package/src/components/drag-handle/DragHandle.tsx +51 -0
  77. package/src/components/drag-handle/index.ts +1 -0
  78. package/src/components/dropdown/Dropdown.stories.tsx +31 -0
  79. package/src/components/dropdown/Dropdown.test.tsx +66 -0
  80. package/src/components/dropdown/Dropdown.tsx +186 -0
  81. package/src/components/dropdown/index.ts +1 -0
  82. package/src/components/expansion-panel/ExpansionPanel.stories.tsx +91 -0
  83. package/src/components/expansion-panel/ExpansionPanel.test.tsx +185 -0
  84. package/src/components/expansion-panel/ExpansionPanel.tsx +195 -0
  85. package/src/components/expansion-panel/index.ts +1 -0
  86. package/src/components/flag/Flag.stories.tsx +48 -0
  87. package/src/components/flag/Flag.test.tsx +62 -0
  88. package/src/components/flag/Flag.tsx +52 -0
  89. package/src/components/flag/index.ts +1 -0
  90. package/src/components/flex-box/FlexBox.stories.tsx +156 -0
  91. package/src/components/flex-box/FlexBox.test.tsx +24 -0
  92. package/src/components/flex-box/FlexBox.tsx +100 -0
  93. package/src/components/flex-box/index.ts +1 -0
  94. package/src/components/generic-block/GenericBlock.stories.jsx +128 -0
  95. package/src/components/generic-block/GenericBlock.test.tsx +156 -0
  96. package/src/components/generic-block/GenericBlock.tsx +225 -0
  97. package/src/components/generic-block/constants.ts +9 -0
  98. package/src/components/generic-block/index.ts +2 -0
  99. package/src/components/grid/Grid.tsx +83 -0
  100. package/src/components/grid/GridItem.tsx +55 -0
  101. package/src/components/grid/index.ts +2 -0
  102. package/src/components/grid-column/GridColumn.stories.tsx +45 -0
  103. package/src/components/grid-column/GridColumn.test.jsx +56 -0
  104. package/src/components/grid-column/GridColumn.tsx +83 -0
  105. package/src/components/grid-column/index.ts +1 -0
  106. package/src/components/heading/Heading.stories.tsx +69 -0
  107. package/src/components/heading/Heading.test.tsx +82 -0
  108. package/src/components/heading/Heading.tsx +65 -0
  109. package/src/components/heading/HeadingLevelProvider.tsx +30 -0
  110. package/src/components/heading/constants.ts +16 -0
  111. package/src/components/heading/context.tsx +13 -0
  112. package/src/components/heading/index.ts +3 -0
  113. package/src/components/heading/useHeadingLevel.tsx +8 -0
  114. package/src/components/icon/Icon.stories.tsx +73 -0
  115. package/src/components/icon/Icon.test.tsx +125 -0
  116. package/src/components/icon/Icon.tsx +133 -0
  117. package/src/components/icon/index.ts +1 -0
  118. package/src/components/image-block/ImageBlock.stories.tsx +117 -0
  119. package/src/components/image-block/ImageBlock.test.tsx +58 -0
  120. package/src/components/image-block/ImageBlock.tsx +142 -0
  121. package/src/components/image-block/ImageCaption.tsx +115 -0
  122. package/src/components/image-block/index.ts +1 -0
  123. package/src/components/image-lightbox/ImageLightbox.stories.tsx +160 -0
  124. package/src/components/image-lightbox/ImageLightbox.test.tsx +254 -0
  125. package/src/components/image-lightbox/ImageLightbox.tsx +90 -0
  126. package/src/components/image-lightbox/constants.ts +11 -0
  127. package/src/components/image-lightbox/index.ts +2 -0
  128. package/src/components/image-lightbox/internal/ImageSlide.tsx +107 -0
  129. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +164 -0
  130. package/src/components/image-lightbox/internal/useAnimateScroll.ts +55 -0
  131. package/src/components/image-lightbox/internal/usePointerZoom.ts +148 -0
  132. package/src/components/image-lightbox/types.ts +48 -0
  133. package/src/components/image-lightbox/useImageLightbox.tsx +141 -0
  134. package/src/components/inline-list/InlineList.stories.tsx +77 -0
  135. package/src/components/inline-list/InlineList.test.tsx +52 -0
  136. package/src/components/inline-list/InlineList.tsx +96 -0
  137. package/src/components/inline-list/index.ts +1 -0
  138. package/src/components/input-helper/InputHelper.stories.tsx +35 -0
  139. package/src/components/input-helper/InputHelper.test.tsx +55 -0
  140. package/src/components/input-helper/InputHelper.tsx +65 -0
  141. package/src/components/input-helper/constants.ts +11 -0
  142. package/src/components/input-helper/index.ts +1 -0
  143. package/src/components/input-label/InputLabel.stories.tsx +45 -0
  144. package/src/components/input-label/InputLabel.test.tsx +59 -0
  145. package/src/components/input-label/InputLabel.tsx +69 -0
  146. package/src/components/input-label/index.ts +1 -0
  147. package/src/components/lightbox/Lightbox.stories.tsx +101 -0
  148. package/src/components/lightbox/Lightbox.test.tsx +53 -0
  149. package/src/components/lightbox/Lightbox.tsx +180 -0
  150. package/src/components/lightbox/index.ts +1 -0
  151. package/src/components/link/Link.stories.tsx +195 -0
  152. package/src/components/link/Link.test.tsx +127 -0
  153. package/src/components/link/Link.tsx +106 -0
  154. package/src/components/link/index.ts +1 -0
  155. package/src/components/link-preview/LinkPreview.stories.tsx +61 -0
  156. package/src/components/link-preview/LinkPreview.test.tsx +105 -0
  157. package/src/components/link-preview/LinkPreview.tsx +158 -0
  158. package/src/components/link-preview/index.ts +1 -0
  159. package/src/components/list/List.stories.tsx +116 -0
  160. package/src/components/list/List.test.tsx +18 -0
  161. package/src/components/list/List.tsx +104 -0
  162. package/src/components/list/ListDivider.stories.tsx +12 -0
  163. package/src/components/list/ListDivider.test.tsx +22 -0
  164. package/src/components/list/ListDivider.tsx +35 -0
  165. package/src/components/list/ListItem.stories.tsx +66 -0
  166. package/src/components/list/ListItem.test.tsx +93 -0
  167. package/src/components/list/ListItem.tsx +157 -0
  168. package/src/components/list/ListSubheader.stories.tsx +11 -0
  169. package/src/components/list/ListSubheader.test.tsx +21 -0
  170. package/src/components/list/ListSubheader.tsx +44 -0
  171. package/src/components/list/index.ts +4 -0
  172. package/src/components/list/useInteractiveList.tsx +202 -0
  173. package/src/components/message/Message.stories.tsx +72 -0
  174. package/src/components/message/Message.test.tsx +76 -0
  175. package/src/components/message/Message.tsx +100 -0
  176. package/src/components/message/index.ts +1 -0
  177. package/src/components/mosaic/Mosaic.stories.tsx +89 -0
  178. package/src/components/mosaic/Mosaic.test.tsx +77 -0
  179. package/src/components/mosaic/Mosaic.tsx +98 -0
  180. package/src/components/mosaic/index.ts +1 -0
  181. package/src/components/navigation/Navigation.stories.tsx +234 -0
  182. package/src/components/navigation/Navigation.test.tsx +65 -0
  183. package/src/components/navigation/Navigation.tsx +79 -0
  184. package/src/components/navigation/NavigationItem.test.tsx +35 -0
  185. package/src/components/navigation/NavigationItem.tsx +82 -0
  186. package/src/components/navigation/NavigationSection.test.tsx +137 -0
  187. package/src/components/navigation/NavigationSection.tsx +108 -0
  188. package/src/components/navigation/context.tsx +7 -0
  189. package/src/components/navigation/index.ts +1 -0
  190. package/src/components/notification/Notification.test.tsx +94 -0
  191. package/src/components/notification/Notification.tsx +138 -0
  192. package/src/components/notification/Notifications.stories.tsx +92 -0
  193. package/src/components/notification/constants.ts +28 -0
  194. package/src/components/notification/index.ts +1 -0
  195. package/src/components/popover/Popover.stories.tsx +264 -0
  196. package/src/components/popover/Popover.test.tsx +62 -0
  197. package/src/components/popover/Popover.tsx +201 -0
  198. package/src/components/popover/constants.ts +62 -0
  199. package/src/components/popover/index.ts +3 -0
  200. package/src/components/popover/usePopoverStyle.tsx +184 -0
  201. package/src/components/popover/useRestoreFocusOnClose.tsx +47 -0
  202. package/src/components/popover-dialog/PopoverDialog.stories.tsx +64 -0
  203. package/src/components/popover-dialog/PopoverDialog.test.tsx +139 -0
  204. package/src/components/popover-dialog/PopoverDialog.tsx +74 -0
  205. package/src/components/popover-dialog/index.tsx +1 -0
  206. package/src/components/post-block/PostBlock.test.tsx +27 -0
  207. package/src/components/post-block/PostBlock.tsx +122 -0
  208. package/src/components/post-block/index.ts +1 -0
  209. package/src/components/progress/Progress.tsx +68 -0
  210. package/src/components/progress/ProgressCircular.stories.tsx +43 -0
  211. package/src/components/progress/ProgressCircular.test.tsx +46 -0
  212. package/src/components/progress/ProgressCircular.tsx +82 -0
  213. package/src/components/progress/ProgressLinear.stories.tsx +12 -0
  214. package/src/components/progress/ProgressLinear.test.tsx +30 -0
  215. package/src/components/progress/ProgressLinear.tsx +50 -0
  216. package/src/components/progress/index.ts +3 -0
  217. package/src/components/progress-tracker/ProgressTracker.stories.tsx +145 -0
  218. package/src/components/progress-tracker/ProgressTracker.test.tsx +42 -0
  219. package/src/components/progress-tracker/ProgressTracker.tsx +87 -0
  220. package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +65 -0
  221. package/src/components/progress-tracker/ProgressTrackerProvider.tsx +67 -0
  222. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +36 -0
  223. package/src/components/progress-tracker/ProgressTrackerStep.tsx +159 -0
  224. package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +34 -0
  225. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +67 -0
  226. package/src/components/progress-tracker/index.ts +4 -0
  227. package/src/components/radio-button/RadioButton.stories.tsx +71 -0
  228. package/src/components/radio-button/RadioButton.test.tsx +143 -0
  229. package/src/components/radio-button/RadioButton.tsx +143 -0
  230. package/src/components/radio-button/RadioGroup.stories.tsx +39 -0
  231. package/src/components/radio-button/RadioGroup.test.tsx +29 -0
  232. package/src/components/radio-button/RadioGroup.tsx +44 -0
  233. package/src/components/radio-button/index.ts +2 -0
  234. package/src/components/select/Select.stories.tsx +385 -0
  235. package/src/components/select/Select.test.tsx +199 -0
  236. package/src/components/select/Select.tsx +199 -0
  237. package/src/components/select/SelectMultiple.stories.tsx +315 -0
  238. package/src/components/select/SelectMultiple.test.tsx +213 -0
  239. package/src/components/select/SelectMultiple.tsx +206 -0
  240. package/src/components/select/WithSelectContext.tsx +147 -0
  241. package/src/components/select/constants.ts +55 -0
  242. package/src/components/select/index.ts +2 -0
  243. package/src/components/side-navigation/SideNavigation.stories.tsx +191 -0
  244. package/src/components/side-navigation/SideNavigation.test.tsx +37 -0
  245. package/src/components/side-navigation/SideNavigation.tsx +52 -0
  246. package/src/components/side-navigation/SideNavigationItem.stories.tsx +133 -0
  247. package/src/components/side-navigation/SideNavigationItem.test.tsx +136 -0
  248. package/src/components/side-navigation/SideNavigationItem.tsx +165 -0
  249. package/src/components/side-navigation/index.ts +2 -0
  250. package/src/components/skeleton/SkeletonCircle.stories.tsx +41 -0
  251. package/src/components/skeleton/SkeletonCircle.test.tsx +27 -0
  252. package/src/components/skeleton/SkeletonCircle.tsx +52 -0
  253. package/src/components/skeleton/SkeletonRectangle.stories.tsx +82 -0
  254. package/src/components/skeleton/SkeletonRectangle.test.tsx +27 -0
  255. package/src/components/skeleton/SkeletonRectangle.tsx +88 -0
  256. package/src/components/skeleton/SkeletonTypography.stories.tsx +19 -0
  257. package/src/components/skeleton/SkeletonTypography.test.tsx +27 -0
  258. package/src/components/skeleton/SkeletonTypography.tsx +59 -0
  259. package/src/components/skeleton/index.ts +3 -0
  260. package/src/components/slider/Slider.stories.tsx +45 -0
  261. package/src/components/slider/Slider.test.tsx +29 -0
  262. package/src/components/slider/Slider.tsx +299 -0
  263. package/src/components/slider/index.ts +2 -0
  264. package/src/components/slideshow/Slides.tsx +130 -0
  265. package/src/components/slideshow/Slideshow.stories.tsx +179 -0
  266. package/src/components/slideshow/Slideshow.test.tsx +35 -0
  267. package/src/components/slideshow/Slideshow.tsx +173 -0
  268. package/src/components/slideshow/SlideshowControls.stories.tsx +100 -0
  269. package/src/components/slideshow/SlideshowControls.tsx +243 -0
  270. package/src/components/slideshow/SlideshowItem.tsx +44 -0
  271. package/src/components/slideshow/SlideshowItemGroup.tsx +60 -0
  272. package/src/components/slideshow/constants.ts +24 -0
  273. package/src/components/slideshow/index.ts +4 -0
  274. package/src/components/slideshow/useKeyNavigate.ts +28 -0
  275. package/src/components/slideshow/usePaginationVisibleRange.ts +37 -0
  276. package/src/components/slideshow/useSlideFocusManagement.tsx +92 -0
  277. package/src/components/slideshow/useSwipeNavigate.ts +18 -0
  278. package/src/components/switch/Switch.stories.tsx +49 -0
  279. package/src/components/switch/Switch.test.tsx +144 -0
  280. package/src/components/switch/Switch.tsx +145 -0
  281. package/src/components/switch/index.ts +1 -0
  282. package/src/components/table/Table.test.tsx +29 -0
  283. package/src/components/table/Table.tsx +59 -0
  284. package/src/components/table/TableBody.test.tsx +30 -0
  285. package/src/components/table/TableBody.tsx +42 -0
  286. package/src/components/table/TableCell.test.tsx +72 -0
  287. package/src/components/table/TableCell.tsx +130 -0
  288. package/src/components/table/TableHeader.test.tsx +30 -0
  289. package/src/components/table/TableHeader.tsx +48 -0
  290. package/src/components/table/TableRow.test.tsx +40 -0
  291. package/src/components/table/TableRow.tsx +71 -0
  292. package/src/components/table/index.ts +5 -0
  293. package/src/components/tabs/Tab.test.tsx +50 -0
  294. package/src/components/tabs/Tab.tsx +133 -0
  295. package/src/components/tabs/TabList.test.tsx +49 -0
  296. package/src/components/tabs/TabList.tsx +94 -0
  297. package/src/components/tabs/TabPanel.test.tsx +37 -0
  298. package/src/components/tabs/TabPanel.tsx +67 -0
  299. package/src/components/tabs/TabProvider.test.tsx +161 -0
  300. package/src/components/tabs/TabProvider.tsx +67 -0
  301. package/src/components/tabs/Tabs.stories.tsx +170 -0
  302. package/src/components/tabs/index.ts +4 -0
  303. package/src/components/tabs/state.ts +114 -0
  304. package/src/components/tabs/test-utils.ts +39 -0
  305. package/src/components/text/Text.stories.tsx +177 -0
  306. package/src/components/text/Text.test.tsx +92 -0
  307. package/src/components/text/Text.tsx +139 -0
  308. package/src/components/text/index.ts +1 -0
  309. package/src/components/text-field/TextField.stories.tsx +180 -0
  310. package/src/components/text-field/TextField.test.tsx +298 -0
  311. package/src/components/text-field/TextField.tsx +493 -0
  312. package/src/components/text-field/index.ts +1 -0
  313. package/src/components/thumbnail/Thumbnail.stories.tsx +448 -0
  314. package/src/components/thumbnail/Thumbnail.test.tsx +88 -0
  315. package/src/components/thumbnail/Thumbnail.tsx +248 -0
  316. package/src/components/thumbnail/index.ts +3 -0
  317. package/src/components/thumbnail/types.ts +48 -0
  318. package/src/components/thumbnail/useFocusPointStyle.test.ts +92 -0
  319. package/src/components/thumbnail/useFocusPointStyle.tsx +107 -0
  320. package/src/components/thumbnail/useImageLoad.ts +40 -0
  321. package/src/components/toolbar/Toolbar.tsx +68 -0
  322. package/src/components/toolbar/index.ts +1 -0
  323. package/src/components/tooltip/Tooltip.stories.tsx +118 -0
  324. package/src/components/tooltip/Tooltip.test.tsx +417 -0
  325. package/src/components/tooltip/Tooltip.tsx +165 -0
  326. package/src/components/tooltip/constants.ts +8 -0
  327. package/src/components/tooltip/context.tsx +17 -0
  328. package/src/components/tooltip/index.ts +1 -0
  329. package/src/components/tooltip/useInjectTooltipRef.tsx +55 -0
  330. package/src/components/tooltip/useTooltipOpen.tsx +143 -0
  331. package/src/components/uploader/Uploader.stories.tsx +109 -0
  332. package/src/components/uploader/Uploader.test.tsx +146 -0
  333. package/src/components/uploader/Uploader.tsx +177 -0
  334. package/src/components/uploader/index.ts +1 -0
  335. package/src/components/user-block/UserBlock.stories.tsx +133 -0
  336. package/src/components/user-block/UserBlock.test.tsx +106 -0
  337. package/src/components/user-block/UserBlock.tsx +193 -0
  338. package/src/components/user-block/index.ts +1 -0
  339. package/src/constants.ts +27 -0
  340. package/src/hooks/useBooleanState.tsx +13 -0
  341. package/src/hooks/useCallbackOnEscape.ts +34 -0
  342. package/src/hooks/useChipGroupNavigation.tsx +75 -0
  343. package/src/hooks/useClickAway.tsx +48 -0
  344. package/src/hooks/useDisableBodyScroll.ts +28 -0
  345. package/src/hooks/useEventCallback.tsx +17 -0
  346. package/src/hooks/useFocus.tsx +21 -0
  347. package/src/hooks/useFocusTrap.ts +93 -0
  348. package/src/hooks/useFocusWithin.ts +33 -0
  349. package/src/hooks/useId.test.tsx +22 -0
  350. package/src/hooks/useId.ts +15 -0
  351. package/src/hooks/useImageSize.ts +17 -0
  352. package/src/hooks/useInfiniteScroll.tsx +60 -0
  353. package/src/hooks/useIntersectionObserver.tsx +43 -0
  354. package/src/hooks/useInterval.tsx +31 -0
  355. package/src/hooks/useKeyboardListNavigation.tsx +204 -0
  356. package/src/hooks/useListenFocus.tsx +26 -0
  357. package/src/hooks/useOverflowTooltipLabel.tsx +32 -0
  358. package/src/hooks/usePopper.ts +12 -0
  359. package/src/hooks/usePreviousValue.ts +12 -0
  360. package/src/hooks/useRovingTabIndex.tsx +90 -0
  361. package/src/hooks/useSizeOnWindowResize.ts +30 -0
  362. package/src/hooks/useSlideshowControls.ts +246 -0
  363. package/src/hooks/useStopPropagation.ts +21 -0
  364. package/src/hooks/useTransitionVisibility.ts +48 -0
  365. package/src/index.ts +63 -0
  366. package/src/stories/controls/color.ts +7 -0
  367. package/src/stories/controls/element.ts +6 -0
  368. package/src/stories/controls/focusPoint.ts +1 -0
  369. package/src/stories/controls/icons.ts +126 -0
  370. package/src/stories/controls/image.ts +84 -0
  371. package/src/stories/controls/selectArgType.ts +8 -0
  372. package/src/stories/controls/theme.ts +3 -0
  373. package/src/stories/controls/typography.ts +5 -0
  374. package/src/stories/controls/withUndefined.ts +1 -0
  375. package/src/stories/decorators/withChromaticForceScreenSize.tsx +7 -0
  376. package/src/stories/decorators/withCombinations.tsx +132 -0
  377. package/src/stories/decorators/withNestedProps.tsx +22 -0
  378. package/src/stories/decorators/withResizableBox.tsx +21 -0
  379. package/src/stories/decorators/withThemedBackground.tsx +16 -0
  380. package/src/stories/decorators/withValueOnChange.tsx +18 -0
  381. package/src/stories/decorators/withWrapper.tsx +19 -0
  382. package/src/stories/generated/Autocomplete/Demos.stories.tsx +7 -0
  383. package/src/stories/generated/Avatar/Demos.stories.tsx +7 -0
  384. package/src/stories/generated/Badge/Demos.stories.tsx +9 -0
  385. package/src/stories/generated/Button/Demos.stories.tsx +11 -0
  386. package/src/stories/generated/Checkbox/Demos.stories.tsx +6 -0
  387. package/src/stories/generated/Chip/Demos.stories.tsx +11 -0
  388. package/src/stories/generated/CommentBlock/Demos.stories.tsx +8 -0
  389. package/src/stories/generated/DatePicker/Demos.stories.tsx +8 -0
  390. package/src/stories/generated/Dialog/Demos.stories.tsx +10 -0
  391. package/src/stories/generated/Divider/Demos.stories.tsx +6 -0
  392. package/src/stories/generated/Dropdown/Demos.stories.tsx +8 -0
  393. package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +9 -0
  394. package/src/stories/generated/Flag/Demos.stories.tsx +6 -0
  395. package/src/stories/generated/GenericBlock/Demos.stories.tsx +8 -0
  396. package/src/stories/generated/Heading/Demos.stories.tsx +6 -0
  397. package/src/stories/generated/Icon/Demos.stories.tsx +8 -0
  398. package/src/stories/generated/ImageBlock/Demos.stories.tsx +9 -0
  399. package/src/stories/generated/ImageLightbox/Demos.stories.tsx +6 -0
  400. package/src/stories/generated/Lightbox/Demos.stories.tsx +6 -0
  401. package/src/stories/generated/LinkPreview/Demos.stories.tsx +7 -0
  402. package/src/stories/generated/List/Demos.stories.tsx +11 -0
  403. package/src/stories/generated/Message/Demos.stories.tsx +11 -0
  404. package/src/stories/generated/Mosaic/Demos.stories.tsx +10 -0
  405. package/src/stories/generated/Notification/Demos.stories.tsx +6 -0
  406. package/src/stories/generated/Popover/Demos.stories.tsx +11 -0
  407. package/src/stories/generated/PopoverDialog/Demos.stories.tsx +6 -0
  408. package/src/stories/generated/PostBlock/Demos.stories.tsx +6 -0
  409. package/src/stories/generated/Progress/Demos.stories.tsx +7 -0
  410. package/src/stories/generated/ProgressTracker/Demos.stories.tsx +9 -0
  411. package/src/stories/generated/RadioButton/Demos.stories.tsx +6 -0
  412. package/src/stories/generated/Select/Demos.stories.tsx +14 -0
  413. package/src/stories/generated/SideNavigation/Demos.stories.tsx +10 -0
  414. package/src/stories/generated/Skeleton/Demos.stories.tsx +9 -0
  415. package/src/stories/generated/Slider/Demos.stories.tsx +9 -0
  416. package/src/stories/generated/Slideshow/Demos.stories.tsx +8 -0
  417. package/src/stories/generated/Switch/Demos.stories.tsx +6 -0
  418. package/src/stories/generated/Table/Demos.stories.tsx +7 -0
  419. package/src/stories/generated/Tabs/Demos.stories.tsx +8 -0
  420. package/src/stories/generated/TextField/Demos.stories.tsx +20 -0
  421. package/src/stories/generated/Thumbnail/Demos.stories.tsx +12 -0
  422. package/src/stories/generated/Toolbar/Demos.stories.tsx +10 -0
  423. package/src/stories/generated/Tooltip/Demos.stories.tsx +8 -0
  424. package/src/stories/generated/Uploader/Demos.stories.tsx +8 -0
  425. package/src/stories/generated/UserBlock/Demos.stories.tsx +11 -0
  426. package/src/stories/utils/CustomLink.tsx +12 -0
  427. package/src/stories/utils/concatPath.tsx +17 -0
  428. package/src/stories/utils/disableArgTypes.ts +3 -0
  429. package/src/stories/utils/initDemoShadowDOMPortal.ts +10 -0
  430. package/src/stories/utils/lorem.ts +59 -0
  431. package/src/stories/utils/theming.tsx +166 -0
  432. package/src/stories/utils/toFlattenProps.ts +28 -0
  433. package/src/stories/utils/withCategory.ts +12 -0
  434. package/src/testing/utils/ThemeSentinel.tsx +10 -0
  435. package/src/testing/utils/commonTestsSuiteRTL.tsx +193 -0
  436. package/src/testing/utils/index.ts +1 -0
  437. package/src/testing/utils/queries.ts +19 -0
  438. package/src/untypped-modules.d.ts +9 -0
  439. package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +70 -0
  440. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +69 -0
  441. package/src/utils/ClickAwayProvider/index.ts +1 -0
  442. package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +54 -0
  443. package/src/utils/MaterialThemeSwitcher/index.ts +1 -0
  444. package/src/utils/Portal/Portal.test.tsx +31 -0
  445. package/src/utils/Portal/Portal.tsx +33 -0
  446. package/src/utils/Portal/PortalProvider.stories.jsx +22 -0
  447. package/src/utils/Portal/PortalProvider.test.tsx +72 -0
  448. package/src/utils/Portal/PortalProvider.tsx +24 -0
  449. package/src/utils/Portal/index.tsx +2 -0
  450. package/src/utils/browser/DOM/findImage.tsx +3 -0
  451. package/src/utils/browser/DOM/startViewTransition.ts +68 -0
  452. package/src/utils/browser/focus/constants.ts +7 -0
  453. package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +134 -0
  454. package/src/utils/browser/focus/getFirstAndLastFocusable.ts +21 -0
  455. package/src/utils/browser/focus/getFocusableElements.test.ts +151 -0
  456. package/src/utils/browser/focus/getFocusableElements.ts +7 -0
  457. package/src/utils/browser/isFocusVisible.ts +9 -0
  458. package/src/utils/browser/isHoverNotSupported.test.js +24 -0
  459. package/src/utils/browser/isHoverNotSupported.ts +2 -0
  460. package/src/utils/browser/isReducedMotion.ts +6 -0
  461. package/src/utils/date/addMonthResetDay.test.ts +13 -0
  462. package/src/utils/date/addMonthResetDay.ts +9 -0
  463. package/src/utils/date/formatDayNumber.test.ts +12 -0
  464. package/src/utils/date/formatDayNumber.ts +5 -0
  465. package/src/utils/date/getFirstDayOfWeek.test.ts +20 -0
  466. package/src/utils/date/getFirstDayOfWeek.ts +59 -0
  467. package/src/utils/date/getMonthCalendar.test.ts +127 -0
  468. package/src/utils/date/getMonthCalendar.ts +69 -0
  469. package/src/utils/date/getWeekDays.test.ts +48 -0
  470. package/src/utils/date/getWeekDays.ts +34 -0
  471. package/src/utils/date/getYearDisplayName.test.ts +20 -0
  472. package/src/utils/date/getYearDisplayName.ts +12 -0
  473. package/src/utils/date/isDateValid.test.ts +15 -0
  474. package/src/utils/date/isDateValid.ts +4 -0
  475. package/src/utils/date/isSameDay.test.ts +37 -0
  476. package/src/utils/date/isSameDay.ts +11 -0
  477. package/src/utils/disabled/DisabledStateContext.tsx +29 -0
  478. package/src/utils/disabled/DisabledStateProvider.stories.tsx +92 -0
  479. package/src/utils/disabled/index.ts +2 -0
  480. package/src/utils/disabled/useDisableStateProps.test.tsx +74 -0
  481. package/src/utils/disabled/useDisableStateProps.tsx +37 -0
  482. package/src/utils/function/makeListenerTowerContext.ts +32 -0
  483. package/src/utils/index.ts +7 -0
  484. package/src/utils/locale/getCurrentLocale.ts +4 -0
  485. package/src/utils/locale/parseLocale.test.ts +17 -0
  486. package/src/utils/locale/parseLocale.ts +23 -0
  487. package/src/utils/locale/types.ts +8 -0
  488. package/src/utils/number/clamp.ts +17 -0
  489. package/src/utils/object/isEqual.test.ts +25 -0
  490. package/src/utils/object/isEqual.ts +11 -0
  491. package/src/utils/partitionMulti.test.ts +27 -0
  492. package/{_internal/partitionMulti-4daccdd5.js → src/utils/partitionMulti.ts} +9 -5
  493. package/src/utils/react/OnBeforeUnmount.tsx +20 -0
  494. package/src/utils/react/RawClickable.test.tsx +153 -0
  495. package/src/utils/react/RawClickable.tsx +65 -0
  496. package/src/utils/react/flattenChildren.ts +32 -0
  497. package/src/utils/react/forwardRef.ts +11 -0
  498. package/src/utils/react/forwardRefPolymorphic.ts +9 -0
  499. package/src/utils/react/mergeRefs.ts +33 -0
  500. package/src/utils/react/renderLink.tsx +17 -0
  501. package/src/utils/react/skipRender.tsx +18 -0
  502. package/src/utils/react/unref.ts +7 -0
  503. package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +37 -0
  504. package/src/utils/react/wrapChildrenIconWithSpaces.tsx +22 -0
  505. package/src/utils/theme/ThemeContext.ts +16 -0
  506. package/src/utils/theme/invertTheme.ts +4 -0
  507. package/src/utils/type/Comp.ts +14 -0
  508. package/src/utils/type/ComponentRef.ts +16 -0
  509. package/src/utils/type/HasAriaDisabled.ts +6 -0
  510. package/src/utils/type/HasPolymorphicAs.ts +6 -0
  511. package/src/utils/type/HasRequiredLinkHref.ts +1 -0
  512. package/src/utils/type/MaybeElementOrRef.ts +6 -0
  513. package/src/utils/type/index.ts +9 -0
  514. package/src/utils/type/isComponent.ts +33 -0
  515. package/src/utils/type/isComponentType.ts +9 -0
  516. package/utils/index.d.ts +1 -1
  517. package/utils/index.js +1 -3
  518. package/utils/index.js.map +1 -1
  519. package/_internal/Button-f19e18df.js +0 -96
  520. package/_internal/Button-f19e18df.js.map +0 -1
  521. package/_internal/ButtonRoot-ab633b1d.js +0 -115
  522. package/_internal/ButtonRoot-ab633b1d.js.map +0 -1
  523. package/_internal/Chip-4c572eec.js +0 -149
  524. package/_internal/Chip-4c572eec.js.map +0 -1
  525. package/_internal/ClickAwayProvider-bcce6ceb.js +0 -93
  526. package/_internal/ClickAwayProvider-bcce6ceb.js.map +0 -1
  527. package/_internal/DisabledStateContext-077b7bef.js +0 -29
  528. package/_internal/DisabledStateContext-077b7bef.js.map +0 -1
  529. package/_internal/HeadingLevelProvider-e4817816.js +0 -59
  530. package/_internal/HeadingLevelProvider-e4817816.js.map +0 -1
  531. package/_internal/IconButton-10585058.js +0 -72
  532. package/_internal/IconButton-10585058.js.map +0 -1
  533. package/_internal/ImageCaption-4279b2b6.js +0 -65
  534. package/_internal/ImageCaption-4279b2b6.js.map +0 -1
  535. package/_internal/List-d5f5d465.js +0 -791
  536. package/_internal/List-d5f5d465.js.map +0 -1
  537. package/_internal/PopoverDialog-21e5c9dd.js +0 -647
  538. package/_internal/PopoverDialog-21e5c9dd.js.map +0 -1
  539. package/_internal/Portal-c43d098b.js +0 -42
  540. package/_internal/Portal-c43d098b.js.map +0 -1
  541. package/_internal/RawClickable-c76bbc4c.js +0 -50
  542. package/_internal/RawClickable-c76bbc4c.js.map +0 -1
  543. package/_internal/Slides-01f513ce.js +0 -675
  544. package/_internal/Slides-01f513ce.js.map +0 -1
  545. package/_internal/ThemeContext-3181f000.js +0 -14
  546. package/_internal/ThemeContext-3181f000.js.map +0 -1
  547. package/_internal/Thumbnail-30d2a781.js +0 -312
  548. package/_internal/Thumbnail-30d2a781.js.map +0 -1
  549. package/_internal/components/alert-dialog-8f1c163c.js +0 -147
  550. package/_internal/components/alert-dialog-8f1c163c.js.map +0 -1
  551. package/_internal/components/autocomplete-bfbdeb3c.js +0 -264
  552. package/_internal/components/autocomplete-bfbdeb3c.js.map +0 -1
  553. package/_internal/components/avatar-6990e3e9.js +0 -87
  554. package/_internal/components/avatar-6990e3e9.js.map +0 -1
  555. package/_internal/components/badge-81543bc7.js +0 -81
  556. package/_internal/components/badge-81543bc7.js.map +0 -1
  557. package/_internal/components/button-927abe71.js +0 -49
  558. package/_internal/components/button-927abe71.js.map +0 -1
  559. package/_internal/components/checkbox-dc4caec8.js +0 -131
  560. package/_internal/components/checkbox-dc4caec8.js.map +0 -1
  561. package/_internal/components/chip-fb3d0c76.js +0 -104
  562. package/_internal/components/chip-fb3d0c76.js.map +0 -1
  563. package/_internal/components/comment-block-b84c4694.js +0 -121
  564. package/_internal/components/comment-block-b84c4694.js.map +0 -1
  565. package/_internal/components/date-picker-a425534c.js +0 -2
  566. package/_internal/components/date-picker-a425534c.js.map +0 -1
  567. package/_internal/components/dialog-7dbcb485.js +0 -226
  568. package/_internal/components/dialog-7dbcb485.js.map +0 -1
  569. package/_internal/components/divider-12e9b6a0.js +0 -53
  570. package/_internal/components/divider-12e9b6a0.js.map +0 -1
  571. package/_internal/components/drag-handle-a38ff757.js +0 -53
  572. package/_internal/components/drag-handle-a38ff757.js.map +0 -1
  573. package/_internal/components/dropdown-38b0b6a0.js +0 -148
  574. package/_internal/components/dropdown-38b0b6a0.js.map +0 -1
  575. package/_internal/components/expansion-panel-c4b93653.js +0 -158
  576. package/_internal/components/expansion-panel-c4b93653.js.map +0 -1
  577. package/_internal/components/flag-c5e2f5f0.js +0 -55
  578. package/_internal/components/flag-c5e2f5f0.js.map +0 -1
  579. package/_internal/components/flex-box-c8701a85.js +0 -58
  580. package/_internal/components/flex-box-c8701a85.js.map +0 -1
  581. package/_internal/components/generic-block-0d6ad5a6.js +0 -115
  582. package/_internal/components/generic-block-0d6ad5a6.js.map +0 -1
  583. package/_internal/components/grid-3b194fe8.js +0 -109
  584. package/_internal/components/grid-3b194fe8.js.map +0 -1
  585. package/_internal/components/grid-column-985b9327.js +0 -60
  586. package/_internal/components/grid-column-985b9327.js.map +0 -1
  587. package/_internal/components/heading-5e954dfc.js +0 -54
  588. package/_internal/components/heading-5e954dfc.js.map +0 -1
  589. package/_internal/components/icon-2e7345ad.js +0 -103
  590. package/_internal/components/icon-2e7345ad.js.map +0 -1
  591. package/_internal/components/image-block-8d21dd7e.js +0 -109
  592. package/_internal/components/image-block-8d21dd7e.js.map +0 -1
  593. package/_internal/components/image-lightbox-4a5ab962.js +0 -743
  594. package/_internal/components/image-lightbox-4a5ab962.js.map +0 -1
  595. package/_internal/components/inline-list-4884f004.js +0 -74
  596. package/_internal/components/inline-list-4884f004.js.map +0 -1
  597. package/_internal/components/input-helper-e644e05e.js +0 -73
  598. package/_internal/components/input-helper-e644e05e.js.map +0 -1
  599. package/_internal/components/input-label-5e509a1b.js +0 -61
  600. package/_internal/components/input-label-5e509a1b.js.map +0 -1
  601. package/_internal/components/lightbox-bec1b95f.js +0 -149
  602. package/_internal/components/lightbox-bec1b95f.js.map +0 -1
  603. package/_internal/components/link-9637b9e4.js +0 -70
  604. package/_internal/components/link-9637b9e4.js.map +0 -1
  605. package/_internal/components/link-preview-7a4a6e4b.js +0 -108
  606. package/_internal/components/link-preview-7a4a6e4b.js.map +0 -1
  607. package/_internal/components/list-5c8f7122.js +0 -77
  608. package/_internal/components/list-5c8f7122.js.map +0 -1
  609. package/_internal/components/message-a67067d9.js +0 -96
  610. package/_internal/components/message-a67067d9.js.map +0 -1
  611. package/_internal/components/mosaic-92b66c80.js +0 -92
  612. package/_internal/components/mosaic-92b66c80.js.map +0 -1
  613. package/_internal/components/navigation-4fd3917d.js +0 -210
  614. package/_internal/components/navigation-4fd3917d.js.map +0 -1
  615. package/_internal/components/notification-9063c963.js +0 -140
  616. package/_internal/components/notification-9063c963.js.map +0 -1
  617. package/_internal/components/popover-3c4c54bd.js +0 -3
  618. package/_internal/components/popover-3c4c54bd.js.map +0 -1
  619. package/_internal/components/post-block-0cfc2206.js +0 -99
  620. package/_internal/components/post-block-0cfc2206.js.map +0 -1
  621. package/_internal/components/progress-eaf5b33d.js +0 -188
  622. package/_internal/components/progress-eaf5b33d.js.map +0 -1
  623. package/_internal/components/progress-tracker-4a65718d.js +0 -309
  624. package/_internal/components/progress-tracker-4a65718d.js.map +0 -1
  625. package/_internal/components/radio-button-3ef8a325.js +0 -148
  626. package/_internal/components/radio-button-3ef8a325.js.map +0 -1
  627. package/_internal/components/select-d46cfe35.js +0 -404
  628. package/_internal/components/select-d46cfe35.js.map +0 -1
  629. package/_internal/components/side-navigation-75b22f19.js +0 -159
  630. package/_internal/components/side-navigation-75b22f19.js.map +0 -1
  631. package/_internal/components/skeleton-361ce335.js +0 -174
  632. package/_internal/components/skeleton-361ce335.js.map +0 -1
  633. package/_internal/components/slider-8094cb5c.js +0 -305
  634. package/_internal/components/slider-8094cb5c.js.map +0 -1
  635. package/_internal/components/slideshow-2e8cd372.js +0 -150
  636. package/_internal/components/slideshow-2e8cd372.js.map +0 -1
  637. package/_internal/components/switch-5516949b.js +0 -118
  638. package/_internal/components/switch-5516949b.js.map +0 -1
  639. package/_internal/components/table-fa198ee6.js +0 -299
  640. package/_internal/components/table-fa198ee6.js.map +0 -1
  641. package/_internal/components/tabs-bb9bc2a5.js +0 -298
  642. package/_internal/components/tabs-bb9bc2a5.js.map +0 -1
  643. package/_internal/components/text-289c0526.js +0 -2
  644. package/_internal/components/text-289c0526.js.map +0 -1
  645. package/_internal/components/text-field-82733568.js +0 -346
  646. package/_internal/components/text-field-82733568.js.map +0 -1
  647. package/_internal/components/thumbnail-e3acff82.js +0 -42
  648. package/_internal/components/thumbnail-e3acff82.js.map +0 -1
  649. package/_internal/components/toolbar-155562be.js +0 -60
  650. package/_internal/components/toolbar-155562be.js.map +0 -1
  651. package/_internal/components/tooltip-84ffb4f9.js +0 -318
  652. package/_internal/components/tooltip-84ffb4f9.js.map +0 -1
  653. package/_internal/components/uploader-896a1d89.js +0 -150
  654. package/_internal/components/uploader-896a1d89.js.map +0 -1
  655. package/_internal/components/user-block-8fd15895.js +0 -143
  656. package/_internal/components/user-block-8fd15895.js.map +0 -1
  657. package/_internal/constants-b9e57936.js +0 -2155
  658. package/_internal/constants-b9e57936.js.map +0 -1
  659. package/_internal/constants-d0e3f49e.js +0 -24
  660. package/_internal/constants-d0e3f49e.js.map +0 -1
  661. package/_internal/context-21aeb1c7.js +0 -19
  662. package/_internal/context-21aeb1c7.js.map +0 -1
  663. package/_internal/forwardRef-49d2bb84.js +0 -80
  664. package/_internal/forwardRef-49d2bb84.js.map +0 -1
  665. package/_internal/getFocusableElements-230173a8.js +0 -13
  666. package/_internal/getFocusableElements-230173a8.js.map +0 -1
  667. package/_internal/index-b4d256e7.js +0 -118
  668. package/_internal/index-b4d256e7.js.map +0 -1
  669. package/_internal/index-f415b08e.js +0 -430
  670. package/_internal/index-f415b08e.js.map +0 -1
  671. package/_internal/isComponent-78df9309.js +0 -20
  672. package/_internal/isComponent-78df9309.js.map +0 -1
  673. package/_internal/isComponentType-e806b848.js +0 -9
  674. package/_internal/isComponentType-e806b848.js.map +0 -1
  675. package/_internal/mergeRefs-f0d7d6ea.js +0 -30
  676. package/_internal/mergeRefs-f0d7d6ea.js.map +0 -1
  677. package/_internal/partitionMulti-4daccdd5.js.map +0 -1
  678. package/_internal/state-db358714.js +0 -130
  679. package/_internal/state-db358714.js.map +0 -1
  680. package/_internal/useBooleanState-2a3d237c.js +0 -12
  681. package/_internal/useBooleanState-2a3d237c.js.map +0 -1
  682. package/_internal/useCallbackOnEscape-ea4d9eb4.js +0 -62
  683. package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +0 -1
  684. package/_internal/useDisableBodyScroll-36bd7352.js +0 -219
  685. package/_internal/useDisableBodyScroll-36bd7352.js.map +0 -1
  686. package/_internal/useDisableStateProps-fffc365f.js +0 -36
  687. package/_internal/useDisableStateProps-fffc365f.js.map +0 -1
  688. package/_internal/useFocusTrap-c3c6378b.js +0 -112
  689. package/_internal/useFocusTrap-c3c6378b.js.map +0 -1
  690. package/_internal/useId-3a1facc0.js +0 -18
  691. package/_internal/useId-3a1facc0.js.map +0 -1
  692. package/_internal/useRovingTabIndex-7daf0f24.js +0 -77
  693. package/_internal/useRovingTabIndex-7daf0f24.js.map +0 -1
  694. package/_internal/useTransitionVisibility-321fdbfa.js +0 -50
  695. package/_internal/useTransitionVisibility-321fdbfa.js.map +0 -1
  696. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js +0 -20
  697. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js.map +0 -1
@@ -1,118 +0,0 @@
1
- import { f as forwardRef, _ as _extends, c as classNames } from './forwardRef-49d2bb84.js';
2
- import { getRootClassName, getTypographyClassName, handleBasicClasses, fontColorClass } from '@lumx/core/js/utils/className';
3
- import React__default from 'react';
4
- import { u as useTooltipContext } from './context-21aeb1c7.js';
5
- import { V as VISUALLY_HIDDEN } from './constants-d0e3f49e.js';
6
- import { u as useMergeRefs } from './mergeRefs-f0d7d6ea.js';
7
- import { w as wrapChildrenIconWithSpaces } from './wrapChildrenIconWithSpaces-f86106ce.js';
8
-
9
- /**
10
- * Compute a tooltip label based on a label element `innerText` if the text overflows.
11
- * Updates dynamically on content changes (but not on resize!)
12
- */
13
- const useOverflowTooltipLabel = content => {
14
- const parentTooltip = useTooltipContext();
15
- const [tooltipLabel, setTooltipLabel] = React__default.useState(undefined);
16
- const [labelElement, setLabelElement] = React__default.useState(null);
17
- React__default.useLayoutEffect(() => {
18
- if (
19
- // Not inside a tooltip
20
- !parentTooltip && labelElement &&
21
- // Not inside a visually hidden
22
- !labelElement?.closest(`.${VISUALLY_HIDDEN}`) &&
23
- // Text overflows
24
- labelElement.offsetWidth < labelElement.scrollWidth) {
25
- // Set tooltip label
26
- setTooltipLabel(labelElement.innerText);
27
- } else {
28
- setTooltipLabel(undefined);
29
- }
30
- }, [labelElement, parentTooltip, content]);
31
- return {
32
- labelRef: setLabelElement,
33
- tooltipLabel
34
- };
35
- };
36
-
37
- /**
38
- * Defines the props of the component.
39
- */
40
-
41
- /**
42
- * Component display name.
43
- */
44
- const COMPONENT_NAME = 'Text';
45
-
46
- /**
47
- * Component default class name and class prefix.
48
- */
49
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
50
-
51
- /**
52
- * Component default props.
53
- */
54
- const DEFAULT_PROPS = {};
55
-
56
- /**
57
- * Text component.
58
- *
59
- * @param props Component props.
60
- * @param ref Component ref.
61
- * @return React element.
62
- */
63
- const Text = forwardRef((props, ref) => {
64
- const {
65
- as: Component,
66
- children,
67
- className,
68
- color,
69
- colorVariant,
70
- noWrap,
71
- typography,
72
- truncate,
73
- whiteSpace,
74
- style,
75
- ...forwardedProps
76
- } = props;
77
- const typographyClass = typography && getTypographyClassName(typography);
78
-
79
- // Truncate mode
80
- const truncateLinesStyle = typeof truncate === 'object' && truncate.lines > 1 && {
81
- '--lumx-text-truncate-lines': truncate.lines
82
- };
83
- const isTruncatedMultiline = !!truncateLinesStyle;
84
- const isTruncated = !!truncate;
85
-
86
- /**
87
- * Add custom white-space style if specified
88
- * Disabled if noWrap is specified
89
- * Disabled if truncated on one-line
90
- * */
91
- const whiteSpaceStyle = !noWrap && !(isTruncated && !isTruncatedMultiline) && whiteSpace && {
92
- '--lumx-text-white-space': whiteSpace
93
- };
94
- const {
95
- tooltipLabel,
96
- labelRef
97
- } = useOverflowTooltipLabel(children);
98
- return /*#__PURE__*/React.createElement(Component, _extends({
99
- ref: useMergeRefs(ref, labelRef),
100
- className: classNames(className, handleBasicClasses({
101
- prefix: CLASSNAME,
102
- isTruncated: isTruncated && !isTruncatedMultiline,
103
- isTruncatedMultiline
104
- }), typographyClass, fontColorClass(color, colorVariant), noWrap && `${CLASSNAME}--no-wrap`),
105
- title: tooltipLabel,
106
- style: {
107
- ...truncateLinesStyle,
108
- ...whiteSpaceStyle,
109
- ...style
110
- }
111
- }, forwardedProps), wrapChildrenIconWithSpaces(children));
112
- });
113
- Text.displayName = COMPONENT_NAME;
114
- Text.className = CLASSNAME;
115
- Text.defaultProps = DEFAULT_PROPS;
116
-
117
- export { Text as T, useOverflowTooltipLabel as u };
118
- //# sourceMappingURL=index-b4d256e7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-b4d256e7.js","sources":["../../src/hooks/useOverflowTooltipLabel.tsx","../../src/components/text/Text.tsx"],"sourcesContent":["import React from 'react';\nimport { useTooltipContext } from '@lumx/react/components/tooltip/context';\nimport { VISUALLY_HIDDEN } from '@lumx/react/constants';\n\n/**\n * Compute a tooltip label based on a label element `innerText` if the text overflows.\n * Updates dynamically on content changes (but not on resize!)\n */\nexport const useOverflowTooltipLabel = (content: React.ReactNode) => {\n const parentTooltip = useTooltipContext();\n const [tooltipLabel, setTooltipLabel] = React.useState<string | undefined>(undefined);\n const [labelElement, setLabelElement] = React.useState<HTMLElement | null>(null);\n\n React.useLayoutEffect(() => {\n if (\n // Not inside a tooltip\n !parentTooltip &&\n labelElement &&\n // Not inside a visually hidden\n !labelElement?.closest(`.${VISUALLY_HIDDEN}`) &&\n // Text overflows\n labelElement.offsetWidth < labelElement.scrollWidth\n ) {\n // Set tooltip label\n setTooltipLabel(labelElement.innerText);\n } else {\n setTooltipLabel(undefined);\n }\n }, [labelElement, parentTooltip, content]);\n\n return { labelRef: setLabelElement, tooltipLabel };\n};\n","import classNames from 'classnames';\n\nimport { ColorWithVariants, ColorVariant, Typography, WhiteSpace } from '@lumx/react';\nimport { GenericProps, TextElement } from '@lumx/react/utils/type';\nimport {\n fontColorClass,\n getRootClassName,\n handleBasicClasses,\n getTypographyClassName,\n} from '@lumx/core/js/utils/className';\nimport { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { wrapChildrenIconWithSpaces } from '@lumx/react/utils/react/wrapChildrenIconWithSpaces';\n\n/**\n * Defines the props of the component.\n */\nexport interface TextProps extends GenericProps {\n /**\n * Color variant.\n */\n color?: ColorWithVariants;\n /**\n * Lightened or darkened variant of the selected color.\n */\n colorVariant?: ColorVariant;\n /**\n * Typography variant.\n */\n typography?: Typography;\n /**\n * Custom component to render the text.\n */\n as: TextElement;\n /**\n * Control whether the text should truncate or not.\n * Setting as `true` will make the text truncate on a single line.\n * Setting as `{ lines: number }` will make the text truncate on a multiple lines.\n */\n truncate?: boolean | { lines: number };\n /**\n * Prevents text to wrap on multiple lines\n * (automatically activated when single line text truncate is activated).\n */\n noWrap?: boolean;\n /**\n * WhiteSpace variant\n * Ignored when `noWrap` is set to true\n * Ignored when `truncate` is set to true or lines: 1\n * */\n whiteSpace?: WhiteSpace;\n /**\n * Children\n */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Text';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS = {} as const;\n\n/**\n * Text component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Text = forwardRef<TextProps>((props, ref) => {\n const {\n as: Component,\n children,\n className,\n color,\n colorVariant,\n noWrap,\n typography,\n truncate,\n whiteSpace,\n style,\n ...forwardedProps\n } = props;\n\n const typographyClass = typography && getTypographyClassName(typography);\n\n // Truncate mode\n const truncateLinesStyle = typeof truncate === 'object' &&\n truncate.lines > 1 && { '--lumx-text-truncate-lines': truncate.lines };\n const isTruncatedMultiline = !!truncateLinesStyle;\n const isTruncated = !!truncate;\n\n /**\n * Add custom white-space style if specified\n * Disabled if noWrap is specified\n * Disabled if truncated on one-line\n * */\n const whiteSpaceStyle = !noWrap &&\n !(isTruncated && !isTruncatedMultiline) &&\n whiteSpace && { '--lumx-text-white-space': whiteSpace };\n\n const { tooltipLabel, labelRef } = useOverflowTooltipLabel(children);\n\n return (\n <Component\n ref={useMergeRefs(ref as React.Ref<any>, labelRef)}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n isTruncated: isTruncated && !isTruncatedMultiline,\n isTruncatedMultiline,\n }),\n typographyClass,\n fontColorClass(color, colorVariant),\n noWrap && `${CLASSNAME}--no-wrap`,\n )}\n title={tooltipLabel}\n style={{ ...truncateLinesStyle, ...whiteSpaceStyle, ...style }}\n {...forwardedProps}\n >\n {wrapChildrenIconWithSpaces(children)}\n </Component>\n );\n});\nText.displayName = COMPONENT_NAME;\nText.className = CLASSNAME;\nText.defaultProps = DEFAULT_PROPS;\n"],"names":["useOverflowTooltipLabel","content","parentTooltip","useTooltipContext","tooltipLabel","setTooltipLabel","React","useState","undefined","labelElement","setLabelElement","useLayoutEffect","closest","VISUALLY_HIDDEN","offsetWidth","scrollWidth","innerText","labelRef","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Text","forwardRef","props","ref","as","Component","children","className","color","colorVariant","noWrap","typography","truncate","whiteSpace","style","forwardedProps","typographyClass","getTypographyClassName","truncateLinesStyle","lines","isTruncatedMultiline","isTruncated","whiteSpaceStyle","createElement","_extends","useMergeRefs","classNames","handleBasicClasses","prefix","fontColorClass","title","wrapChildrenIconWithSpaces","displayName","defaultProps"],"mappings":";;;;;;;;AAIA;AACA;AACA;AACA;AACaA,MAAAA,uBAAuB,GAAIC,OAAwB,IAAK;AACjE,EAAA,MAAMC,aAAa,GAAGC,iBAAiB,EAAE,CAAA;EACzC,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAqBC,SAAS,CAAC,CAAA;EACrF,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGJ,cAAK,CAACC,QAAQ,CAAqB,IAAI,CAAC,CAAA;EAEhFD,cAAK,CAACK,eAAe,CAAC,MAAM;AACxB,IAAA;AACI;IACA,CAACT,aAAa,IACdO,YAAY;AACZ;AACA,IAAA,CAACA,YAAY,EAAEG,OAAO,CAAC,CAAIC,CAAAA,EAAAA,eAAe,EAAE,CAAC;AAC7C;AACAJ,IAAAA,YAAY,CAACK,WAAW,GAAGL,YAAY,CAACM,WAAW,EACrD;AACE;AACAV,MAAAA,eAAe,CAACI,YAAY,CAACO,SAAS,CAAC,CAAA;AAC3C,KAAC,MAAM;MACHX,eAAe,CAACG,SAAS,CAAC,CAAA;AAC9B,KAAA;GACH,EAAE,CAACC,YAAY,EAAEP,aAAa,EAAED,OAAO,CAAC,CAAC,CAAA;EAE1C,OAAO;AAAEgB,IAAAA,QAAQ,EAAEP,eAAe;AAAEN,IAAAA,YAAAA;GAAc,CAAA;AACtD;;AChBA;AACA;AACA;;AAyCA;AACA;AACA;AACA,MAAMc,cAAc,GAAG,MAAM,CAAA;;AAE7B;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAa,GAAG,EAAW,CAAA;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,IAAI,GAAGC,UAAU,CAAY,CAACC,KAAK,EAAEC,GAAG,KAAK;EACtD,MAAM;AACFC,IAAAA,EAAE,EAAEC,SAAS;IACbC,QAAQ;IACRC,SAAS;IACTC,KAAK;IACLC,YAAY;IACZC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC,UAAU;IACVC,KAAK;IACL,GAAGC,cAAAA;AACP,GAAC,GAAGb,KAAK,CAAA;AAET,EAAA,MAAMc,eAAe,GAAGL,UAAU,IAAIM,sBAAsB,CAACN,UAAU,CAAC,CAAA;;AAExE;AACA,EAAA,MAAMO,kBAAkB,GAAG,OAAON,QAAQ,KAAK,QAAQ,IACnDA,QAAQ,CAACO,KAAK,GAAG,CAAC,IAAI;IAAE,4BAA4B,EAAEP,QAAQ,CAACO,KAAAA;GAAO,CAAA;AAC1E,EAAA,MAAMC,oBAAoB,GAAG,CAAC,CAACF,kBAAkB,CAAA;AACjD,EAAA,MAAMG,WAAW,GAAG,CAAC,CAACT,QAAQ,CAAA;;AAE9B;AACJ;AACA;AACA;AACA;AACI,EAAA,MAAMU,eAAe,GAAG,CAACZ,MAAM,IAC3B,EAAEW,WAAW,IAAI,CAACD,oBAAoB,CAAC,IACvCP,UAAU,IAAI;AAAE,IAAA,yBAAyB,EAAEA,UAAAA;GAAY,CAAA;EAE3D,MAAM;IAAE/B,YAAY;AAAEa,IAAAA,QAAAA;AAAS,GAAC,GAAGjB,uBAAuB,CAAC4B,QAAQ,CAAC,CAAA;AAEpE,EAAA,oBACItB,KAAA,CAAAuC,aAAA,CAAClB,SAAS,EAAAmB,QAAA,CAAA;AACNrB,IAAAA,GAAG,EAAEsB,YAAY,CAACtB,GAAG,EAAoBR,QAAQ,CAAE;AACnDY,IAAAA,SAAS,EAAEmB,UAAU,CACjBnB,SAAS,EACToB,kBAAkB,CAAC;AACfC,MAAAA,MAAM,EAAE/B,SAAS;AACjBwB,MAAAA,WAAW,EAAEA,WAAW,IAAI,CAACD,oBAAoB;AACjDA,MAAAA,oBAAAA;AACJ,KAAC,CAAC,EACFJ,eAAe,EACfa,cAAc,CAACrB,KAAK,EAAEC,YAAY,CAAC,EACnCC,MAAM,IAAI,CAAGb,EAAAA,SAAS,WAC1B,CAAE;AACFiC,IAAAA,KAAK,EAAEhD,YAAa;AACpBgC,IAAAA,KAAK,EAAE;AAAE,MAAA,GAAGI,kBAAkB;AAAE,MAAA,GAAGI,eAAe;MAAE,GAAGR,KAAAA;AAAM,KAAA;AAAE,GAAA,EAC3DC,cAAc,CAEjBgB,EAAAA,0BAA0B,CAACzB,QAAQ,CAC7B,CAAC,CAAA;AAEpB,CAAC,EAAC;AACFN,IAAI,CAACgC,WAAW,GAAGpC,cAAc,CAAA;AACjCI,IAAI,CAACO,SAAS,GAAGV,SAAS,CAAA;AAC1BG,IAAI,CAACiC,YAAY,GAAGlC,aAAa;;;;"}
@@ -1,430 +0,0 @@
1
- import { _ as _extends, f as forwardRef, c as classNames } from './forwardRef-49d2bb84.js';
2
- import React__default, { useState, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
3
- import { u as useCallbackOnEscape } from './useCallbackOnEscape-ea4d9eb4.js';
4
- import { D as DOCUMENT, W as WINDOW } from './constants-d0e3f49e.js';
5
- import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
6
- import { u as useMergeRefs } from './mergeRefs-f0d7d6ea.js';
7
- import { g as getFirstAndLastFocusable, u as useFocusTrap } from './useFocusTrap-c3c6378b.js';
8
- import { T as ThemeProvider } from './ThemeContext-3181f000.js';
9
- import memoize from 'lodash/memoize';
10
- import { A as ARROW_SIZE, u as usePopper, d as detectOverflow, F as FitAnchorWidth, P as Placement, a as POPOVER_ZINDEX } from './constants-b9e57936.js';
11
- import { P as Portal } from './Portal-c43d098b.js';
12
- import { C as ClickAwayProvider } from './ClickAwayProvider-bcce6ceb.js';
13
-
14
- /**
15
- * Hook focusing an element when defined and `focus` boolean `true`.
16
- *
17
- * @param element Element to focus.
18
- * @param shouldFocus Boolean flag to trigger the focus
19
- */
20
- function useFocus(element, shouldFocus = true) {
21
- const [wasFocus, setWasFocus] = useState(false);
22
- useEffect(() => {
23
- if (shouldFocus && wasFocus !== shouldFocus && element) {
24
- element.focus();
25
- setWasFocus(shouldFocus);
26
- }
27
- },
28
- // eslint-disable-next-line react-hooks/exhaustive-deps
29
- [element, shouldFocus]);
30
- }
31
-
32
- /**
33
- * HOC component wrapping a component to skip render if predicate return falsy
34
- */
35
- const skipRender = (predicate, Component) => {
36
- const Wrapper = /*#__PURE__*/React__default.forwardRef((props, ref) => {
37
- if (!DOCUMENT) {
38
- // Can't render in SSR.
39
- return null;
40
- }
41
- return /*#__PURE__*/React__default.createElement(Component, _extends({
42
- ref: ref
43
- }, props));
44
- });
45
- Wrapper.displayName = Component.displayName;
46
- return Wrapper;
47
- };
48
-
49
- /**
50
- * Helper component using useLayoutEffect to trigger a callback on before unmount.
51
- *
52
- * The callback must be wrapped in a React ref to avoid updating the `useLayoutEffect` before the un-mount
53
- */
54
- const OnBeforeUnmount = ({
55
- callbackRef
56
- }) => {
57
- useLayoutEffect(() => {
58
- return () => {
59
- // On unmount
60
- // eslint-disable-next-line react-hooks/exhaustive-deps
61
- callbackRef.current?.();
62
- };
63
- },
64
- // eslint-disable-next-line react-hooks/exhaustive-deps
65
- []);
66
- return null;
67
- };
68
-
69
- /**
70
- * Provides an unmount sentinel to inject in the popover to detect when it closes and restore the focus to the
71
- * anchor if needed.
72
- */
73
- function useRestoreFocusOnClose({
74
- focusAnchorOnClose,
75
- anchorRef,
76
- parentElement
77
- }, popoverElement) {
78
- const onBeforeUnmountRef = React__default.useRef();
79
- React__default.useEffect(() => {
80
- if (!popoverElement || !focusAnchorOnClose) {
81
- onBeforeUnmountRef.current = undefined;
82
- return;
83
- }
84
- onBeforeUnmountRef.current = () => {
85
- const isFocusWithin = popoverElement?.contains(document.activeElement);
86
- if (!isFocusWithin) return;
87
-
88
- // On next render
89
- setTimeout(() => {
90
- const anchor = anchorRef.current;
91
- const elementToFocus =
92
- // Provided parent element
93
- parentElement?.current || (
94
- // Or first focusable element in anchor
95
- anchor ? getFirstAndLastFocusable(anchor).first : undefined) ||
96
- // Fallback to anchor
97
- anchor;
98
- elementToFocus?.focus({
99
- preventScroll: true
100
- });
101
- }, 0);
102
- };
103
- }, [anchorRef, focusAnchorOnClose, parentElement, popoverElement]);
104
- return /*#__PURE__*/React__default.createElement(OnBeforeUnmount, {
105
- callbackRef: onBeforeUnmountRef
106
- });
107
- }
108
-
109
- /**
110
- * Popper js modifier to fit popover min width to the anchor width.
111
- */
112
- const sameWidth = memoize(anchorWidthOption => ({
113
- name: 'sameWidth',
114
- enabled: true,
115
- phase: 'beforeWrite',
116
- requires: ['computeStyles'],
117
- fn({
118
- state
119
- }) {
120
- // eslint-disable-next-line no-param-reassign
121
- state.styles.popper[anchorWidthOption] = `${state.rects.reference.width}px`;
122
- },
123
- effect({
124
- state
125
- }) {
126
- // eslint-disable-next-line no-param-reassign
127
- state.elements.popper.style[anchorWidthOption] = `${state.elements.reference.offsetWidth}px`;
128
- }
129
- }));
130
-
131
- /**
132
- * Popper js modifier to compute max size of the popover.
133
- */
134
- const maxSize = {
135
- name: 'maxSize',
136
- enabled: true,
137
- phase: 'main',
138
- requiresIfExists: ['offset', 'preventOverflow', 'flip'],
139
- fn({
140
- state,
141
- name,
142
- options
143
- }) {
144
- const overflow = detectOverflow(state, options);
145
- const {
146
- y = 0,
147
- x = 0
148
- } = state.modifiersData.preventOverflow;
149
- const {
150
- width,
151
- height
152
- } = state.rects.popper;
153
- const [basePlacement] = state.placement.split('-');
154
- const widthProp = basePlacement === 'left' ? 'left' : 'right';
155
- const heightProp = basePlacement === 'top' ? 'top' : 'bottom';
156
- // eslint-disable-next-line no-param-reassign
157
- state.modifiersData[name] = {
158
- width: width - overflow[widthProp] - x,
159
- height: height - overflow[heightProp] - y
160
- };
161
- }
162
- };
163
-
164
- /**
165
- * Popper js modifier to apply the max height.
166
- */
167
- const applyMaxHeight = {
168
- name: 'applyMaxHeight',
169
- enabled: true,
170
- phase: 'beforeWrite',
171
- requires: ['maxSize'],
172
- fn({
173
- state
174
- }) {
175
- const {
176
- height
177
- } = state.modifiersData.maxSize;
178
- // eslint-disable-next-line no-param-reassign
179
- state.elements.popper.style.maxHeight = `${height - ARROW_SIZE}px`;
180
- }
181
- };
182
- function usePopoverStyle({
183
- offset,
184
- hasArrow,
185
- fitToAnchorWidth,
186
- fitWithinViewportHeight,
187
- boundaryRef,
188
- anchorRef,
189
- placement,
190
- style,
191
- zIndex
192
- }) {
193
- const [popperElement, setPopperElement] = useState(null);
194
- const [arrowElement, setArrowElement] = useState(null);
195
- const actualOffset = [offset?.along ?? 0, (offset?.away ?? 0) + (hasArrow ? ARROW_SIZE : 0)];
196
- const modifiers = [{
197
- name: 'offset',
198
- options: {
199
- offset: actualOffset
200
- }
201
- }];
202
- if (hasArrow && arrowElement) {
203
- modifiers.push({
204
- name: 'arrow',
205
- options: {
206
- element: arrowElement,
207
- padding: ARROW_SIZE / 2
208
- }
209
- });
210
- }
211
- if (fitToAnchorWidth) {
212
- const fitWidth = typeof fitToAnchorWidth === 'string' ? fitToAnchorWidth : FitAnchorWidth.MIN_WIDTH;
213
- modifiers.push(sameWidth(fitWidth));
214
- }
215
- if (fitWithinViewportHeight) {
216
- modifiers.push({
217
- ...maxSize,
218
- options: {
219
- boundary: boundaryRef?.current
220
- }
221
- }, applyMaxHeight);
222
- }
223
- if (boundaryRef) {
224
- modifiers.push({
225
- name: 'flip',
226
- options: {
227
- boundary: boundaryRef.current
228
- }
229
- }, {
230
- name: 'preventOverflow',
231
- options: {
232
- boundary: boundaryRef.current
233
- }
234
- });
235
- }
236
- const {
237
- styles,
238
- attributes,
239
- state,
240
- update
241
- } = usePopper(anchorRef.current, popperElement, {
242
- placement,
243
- modifiers
244
- });
245
-
246
- // Auto update popover
247
- useEffect(() => {
248
- const {
249
- current: anchorElement
250
- } = anchorRef;
251
- if (!update || !popperElement || !anchorElement || !WINDOW?.ResizeObserver) {
252
- return undefined;
253
- }
254
- let running;
255
- function updateRateLimited() {
256
- if (running) return;
257
- update?.();
258
- running = setTimeout(() => {
259
- running = undefined;
260
- }, 100);
261
- }
262
- updateRateLimited();
263
-
264
- // On anchor or popover resize
265
- const resizeObserver = new ResizeObserver(updateRateLimited);
266
- resizeObserver.observe(anchorElement);
267
- resizeObserver.observe(popperElement);
268
- return () => {
269
- resizeObserver.disconnect();
270
- };
271
- }, [anchorRef, popperElement, update]);
272
- const position = state?.placement ?? placement;
273
- const popoverStyle = useMemo(() => {
274
- const newStyles = {
275
- ...style,
276
- ...styles.popper,
277
- zIndex
278
- };
279
- if (fitWithinViewportHeight && !newStyles.maxHeight) {
280
- newStyles.maxHeight = WINDOW?.innerHeight || DOCUMENT?.documentElement.clientHeight;
281
- }
282
- return newStyles;
283
- }, [style, styles.popper, zIndex, fitWithinViewportHeight]);
284
- return {
285
- styles: {
286
- arrow: styles.arrow,
287
- popover: popoverStyle
288
- },
289
- attributes,
290
- isPositioned: (state?.rects?.popper?.y ?? -1) >= 0,
291
- position,
292
- setArrowElement,
293
- setPopperElement,
294
- popperElement
295
- };
296
- }
297
-
298
- /**
299
- * Defines the props of the component.
300
- */
301
-
302
- /**
303
- * Component display name.
304
- */
305
- const COMPONENT_NAME = 'Popover';
306
-
307
- /**
308
- * Component default class name and class prefix.
309
- */
310
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
311
-
312
- /**
313
- * Component default props.
314
- */
315
- const DEFAULT_PROPS = {
316
- elevation: 3,
317
- placement: Placement.AUTO,
318
- focusAnchorOnClose: true,
319
- usePortal: true,
320
- zIndex: POPOVER_ZINDEX
321
- };
322
-
323
- // Inner component (must be wrapped before export)
324
- const _InnerPopover = forwardRef((props, ref) => {
325
- const {
326
- anchorRef,
327
- as: Component = 'div',
328
- children,
329
- className,
330
- closeOnClickAway,
331
- closeOnEscape,
332
- elevation = DEFAULT_PROPS.elevation,
333
- focusElement,
334
- hasArrow,
335
- isOpen,
336
- onClose,
337
- parentElement,
338
- usePortal = DEFAULT_PROPS.usePortal,
339
- focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,
340
- withFocusTrap,
341
- boundaryRef,
342
- fitToAnchorWidth,
343
- fitWithinViewportHeight,
344
- focusTrapZoneElement,
345
- offset,
346
- placement = DEFAULT_PROPS.placement,
347
- style,
348
- theme,
349
- zIndex = DEFAULT_PROPS.zIndex,
350
- ...forwardedProps
351
- } = props;
352
- const popoverRef = useRef(null);
353
- const {
354
- styles,
355
- attributes,
356
- isPositioned,
357
- position,
358
- setArrowElement,
359
- setPopperElement,
360
- popperElement
361
- } = usePopoverStyle({
362
- offset,
363
- hasArrow,
364
- fitToAnchorWidth,
365
- fitWithinViewportHeight,
366
- boundaryRef,
367
- anchorRef,
368
- placement,
369
- style,
370
- zIndex
371
- });
372
- const unmountSentinel = useRestoreFocusOnClose({
373
- focusAnchorOnClose,
374
- anchorRef,
375
- parentElement
376
- }, popperElement);
377
- const focusZoneElement = focusTrapZoneElement?.current || popoverRef?.current;
378
- useCallbackOnEscape(onClose, isOpen && closeOnEscape);
379
-
380
- /** Only set focus within if the focus trap is disabled as they interfere with one another. */
381
- useFocus(focusElement?.current, !withFocusTrap && isOpen && isPositioned);
382
- useFocusTrap(withFocusTrap && isOpen && focusZoneElement, focusElement?.current);
383
- const clickAwayRefs = useRef([popoverRef, anchorRef]);
384
- const mergedRefs = useMergeRefs(setPopperElement, ref, popoverRef);
385
- return isOpen ? /*#__PURE__*/React.createElement(Portal, {
386
- enabled: usePortal
387
- }, /*#__PURE__*/React.createElement(Component, _extends({}, forwardedProps, {
388
- ref: mergedRefs,
389
- className: classNames(className, handleBasicClasses({
390
- prefix: CLASSNAME,
391
- theme,
392
- elevation: Math.min(elevation || 0, 5),
393
- position,
394
- isInitializing: !styles.popover?.transform
395
- })),
396
- style: styles.popover
397
- }, attributes.popper), unmountSentinel, /*#__PURE__*/React.createElement(ClickAwayProvider, {
398
- callback: closeOnClickAway && onClose,
399
- childrenRefs: clickAwayRefs
400
- }, hasArrow && /*#__PURE__*/React.createElement("div", {
401
- ref: setArrowElement,
402
- className: `${CLASSNAME}__arrow`,
403
- style: styles.arrow
404
- }, /*#__PURE__*/React.createElement("svg", {
405
- viewBox: "0 0 14 14",
406
- "aria-hidden": true
407
- }, /*#__PURE__*/React.createElement("path", {
408
- d: "M8 3.49C7.62 2.82 6.66 2.82 6.27 3.48L.04 14 14.04 14 8 3.49Z"
409
- }))), /*#__PURE__*/React.createElement(ThemeProvider, {
410
- value: theme
411
- }, children)))) : null;
412
- });
413
- _InnerPopover.displayName = COMPONENT_NAME;
414
-
415
- /**
416
- * Popover component.
417
- *
418
- * @param props Component props.
419
- * @param ref Component ref.
420
- * @return React element.
421
- */
422
- const Popover = skipRender(
423
- // Skip render in SSR
424
- () => Boolean(DOCUMENT), _InnerPopover);
425
- Popover.displayName = COMPONENT_NAME;
426
- Popover.className = CLASSNAME;
427
- Popover.defaultProps = DEFAULT_PROPS;
428
-
429
- export { Popover as P, useFocus as u };
430
- //# sourceMappingURL=index-f415b08e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-f415b08e.js","sources":["../../src/hooks/useFocus.tsx","../../src/utils/react/skipRender.tsx","../../src/utils/react/OnBeforeUnmount.tsx","../../src/components/popover/useRestoreFocusOnClose.tsx","../../src/components/popover/usePopoverStyle.tsx","../../src/components/popover/Popover.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * Hook focusing an element when defined and `focus` boolean `true`.\n *\n * @param element Element to focus.\n * @param shouldFocus Boolean flag to trigger the focus\n */\nexport function useFocus(element: HTMLElement | null | undefined, shouldFocus = true): void {\n const [wasFocus, setWasFocus] = useState(false);\n useEffect(\n () => {\n if (shouldFocus && wasFocus !== shouldFocus && element) {\n element.focus();\n setWasFocus(shouldFocus);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [element, shouldFocus],\n );\n}\n","import React from 'react';\n\nimport { DOCUMENT } from '@lumx/react/constants';\nimport type { Comp } from '@lumx/react/utils/type';\n/**\n * HOC component wrapping a component to skip render if predicate return falsy\n */\nexport const skipRender = <P, T>(predicate: (props: P) => any, Component: Comp<P, T>) => {\n const Wrapper = React.forwardRef<T, P>((props, ref) => {\n if (!DOCUMENT) {\n // Can't render in SSR.\n return null;\n }\n return <Component ref={ref} {...props} />;\n });\n Wrapper.displayName = Component.displayName;\n return Wrapper;\n};\n","import { useLayoutEffect } from 'react';\n\n/**\n * Helper component using useLayoutEffect to trigger a callback on before unmount.\n *\n * The callback must be wrapped in a React ref to avoid updating the `useLayoutEffect` before the un-mount\n */\nexport const OnBeforeUnmount = ({ callbackRef }: { callbackRef: React.RefObject<(() => void) | undefined> }) => {\n useLayoutEffect(\n () => {\n return () => {\n // On unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n callbackRef.current?.();\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n return null;\n};\n","import React from 'react';\nimport { getFirstAndLastFocusable } from '@lumx/react/utils/browser/focus/getFirstAndLastFocusable';\nimport { OnBeforeUnmount } from '@lumx/react/utils/react/OnBeforeUnmount';\nimport type { PopoverProps } from './Popover';\n\n/**\n * Provides an unmount sentinel to inject in the popover to detect when it closes and restore the focus to the\n * anchor if needed.\n */\nexport function useRestoreFocusOnClose(\n {\n focusAnchorOnClose,\n anchorRef,\n parentElement,\n }: Pick<PopoverProps, 'focusAnchorOnClose' | 'anchorRef' | 'parentElement'>,\n popoverElement?: HTMLElement | null,\n) {\n const onBeforeUnmountRef = React.useRef<(() => void) | undefined>();\n\n React.useEffect(() => {\n if (!popoverElement || !focusAnchorOnClose) {\n onBeforeUnmountRef.current = undefined;\n return;\n }\n\n onBeforeUnmountRef.current = () => {\n const isFocusWithin = popoverElement?.contains(document.activeElement);\n if (!isFocusWithin) return;\n\n // On next render\n setTimeout(() => {\n const anchor = anchorRef.current;\n const elementToFocus =\n // Provided parent element\n parentElement?.current ||\n // Or first focusable element in anchor\n (anchor ? getFirstAndLastFocusable(anchor).first : undefined) ||\n // Fallback to anchor\n anchor;\n\n elementToFocus?.focus({ preventScroll: true });\n }, 0);\n };\n }, [anchorRef, focusAnchorOnClose, parentElement, popoverElement]);\n\n return <OnBeforeUnmount callbackRef={onBeforeUnmountRef} />;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport memoize from 'lodash/memoize';\nimport { detectOverflow } from '@popperjs/core';\n\nimport { DOCUMENT, WINDOW } from '@lumx/react/constants';\nimport { PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { usePopper } from '@lumx/react/hooks/usePopper';\nimport { ARROW_SIZE, FitAnchorWidth, Placement } from './constants';\n\n/**\n * Popper js modifier to fit popover min width to the anchor width.\n */\nconst sameWidth = memoize((anchorWidthOption: FitAnchorWidth) => ({\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({ state }: any) {\n // eslint-disable-next-line no-param-reassign\n state.styles.popper[anchorWidthOption] = `${state.rects.reference.width}px`;\n },\n effect({ state }: any) {\n // eslint-disable-next-line no-param-reassign\n state.elements.popper.style[anchorWidthOption] = `${state.elements.reference.offsetWidth}px`;\n },\n}));\n\n/**\n * Popper js modifier to compute max size of the popover.\n */\nconst maxSize = {\n name: 'maxSize',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['offset', 'preventOverflow', 'flip'],\n fn({ state, name, options }: any) {\n const overflow = detectOverflow(state, options);\n\n const { y = 0, x = 0 } = state.modifiersData.preventOverflow;\n const { width, height } = state.rects.popper;\n\n const [basePlacement] = state.placement.split('-');\n\n const widthProp = basePlacement === 'left' ? 'left' : 'right';\n const heightProp = basePlacement === 'top' ? 'top' : 'bottom';\n // eslint-disable-next-line no-param-reassign\n state.modifiersData[name] = {\n width: width - overflow[widthProp] - x,\n height: height - overflow[heightProp] - y,\n };\n },\n};\n\n/**\n * Popper js modifier to apply the max height.\n */\nconst applyMaxHeight = {\n name: 'applyMaxHeight',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['maxSize'],\n fn({ state }: any) {\n const { height } = state.modifiersData.maxSize;\n // eslint-disable-next-line no-param-reassign\n state.elements.popper.style.maxHeight = `${height - ARROW_SIZE}px`;\n },\n};\n\ntype Options = Pick<\n PopoverProps,\n | 'offset'\n | 'hasArrow'\n | 'fitToAnchorWidth'\n | 'fitWithinViewportHeight'\n | 'boundaryRef'\n | 'anchorRef'\n | 'placement'\n | 'style'\n | 'zIndex'\n>;\n\ninterface Output {\n styles: { arrow?: React.CSSProperties; popover?: React.CSSProperties };\n attributes: any;\n isPositioned: boolean;\n position?: Placement;\n setArrowElement?: React.Ref<HTMLDivElement>;\n setPopperElement?: React.Ref<HTMLDivElement>;\n popperElement: HTMLElement | null;\n}\n\nexport function usePopoverStyle({\n offset,\n hasArrow,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n boundaryRef,\n anchorRef,\n placement,\n style,\n zIndex,\n}: Options): Output {\n const [popperElement, setPopperElement] = useState<null | HTMLElement>(null);\n const [arrowElement, setArrowElement] = useState<null | HTMLElement>(null);\n\n const actualOffset: [number, number] = [offset?.along ?? 0, (offset?.away ?? 0) + (hasArrow ? ARROW_SIZE : 0)];\n const modifiers: any = [\n {\n name: 'offset',\n options: { offset: actualOffset },\n },\n ];\n if (hasArrow && arrowElement) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: ARROW_SIZE / 2,\n },\n });\n }\n if (fitToAnchorWidth) {\n const fitWidth = typeof fitToAnchorWidth === 'string' ? fitToAnchorWidth : FitAnchorWidth.MIN_WIDTH;\n modifiers.push(sameWidth(fitWidth));\n }\n if (fitWithinViewportHeight) {\n modifiers.push({ ...maxSize, options: { boundary: boundaryRef?.current } }, applyMaxHeight);\n }\n if (boundaryRef) {\n modifiers.push(\n { name: 'flip', options: { boundary: boundaryRef.current } },\n { name: 'preventOverflow', options: { boundary: boundaryRef.current } },\n );\n }\n\n const { styles, attributes, state, update } = usePopper(anchorRef.current, popperElement, { placement, modifiers });\n\n // Auto update popover\n useEffect(() => {\n const { current: anchorElement } = anchorRef;\n if (!update || !popperElement || !anchorElement || !WINDOW?.ResizeObserver) {\n return undefined;\n }\n let running: ReturnType<typeof setTimeout> | undefined;\n function updateRateLimited() {\n if (running) return;\n update?.();\n running = setTimeout(() => {\n running = undefined;\n }, 100);\n }\n updateRateLimited();\n\n // On anchor or popover resize\n const resizeObserver = new ResizeObserver(updateRateLimited);\n resizeObserver.observe(anchorElement);\n resizeObserver.observe(popperElement);\n return () => {\n resizeObserver.disconnect();\n };\n }, [anchorRef, popperElement, update]);\n\n const position = state?.placement ?? placement;\n\n const popoverStyle = useMemo(() => {\n const newStyles = { ...style, ...styles.popper, zIndex };\n\n if (fitWithinViewportHeight && !newStyles.maxHeight) {\n newStyles.maxHeight = WINDOW?.innerHeight || DOCUMENT?.documentElement.clientHeight;\n }\n\n return newStyles;\n }, [style, styles.popper, zIndex, fitWithinViewportHeight]);\n\n return {\n styles: { arrow: styles.arrow, popover: popoverStyle },\n attributes,\n isPositioned: (state?.rects?.popper?.y ?? -1) >= 0,\n position,\n setArrowElement,\n setPopperElement,\n popperElement,\n };\n}\n","import { ReactNode, RefObject, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { useCallbackOnEscape } from '@lumx/react/hooks/useCallbackOnEscape';\nimport { useFocus } from '@lumx/react/hooks/useFocus';\nimport { ClickAwayProvider } from '@lumx/react/utils/ClickAwayProvider';\nimport { DOCUMENT } from '@lumx/react/constants';\nimport { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\nimport { skipRender } from '@lumx/react/utils/react/skipRender';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { ThemeProvider } from '@lumx/react/utils/theme/ThemeContext';\nimport { Portal } from '@lumx/react/utils';\nimport { useRestoreFocusOnClose } from './useRestoreFocusOnClose';\nimport { usePopoverStyle } from './usePopoverStyle';\nimport { Elevation, FitAnchorWidth, Offset, Placement, POPOVER_ZINDEX } from './constants';\n\n/**\n * Defines the props of the component.\n */\nexport interface PopoverProps extends GenericProps, HasTheme {\n /** Reference to the DOM element used to set the position of the popover. */\n anchorRef: React.RefObject<HTMLElement>;\n /** Customize the root element. (Must accept ref forwarding and props forwarding!). */\n as?: React.ElementType;\n /** Element which will act as boundary when opening the popover. */\n boundaryRef?: RefObject<HTMLElement>;\n /** Content. */\n children: ReactNode;\n /** Whether a click anywhere out of the popover would close it. */\n closeOnClickAway?: boolean;\n /** Whether an escape key press would close the popover. */\n closeOnEscape?: boolean;\n /** Shadow elevation. */\n elevation?: Elevation;\n /**\n * Manage popover width:\n * - `maxWidth`: popover not bigger than anchor\n * - `minWidth` or `true`: popover not smaller than anchor\n * - `width`: popover equal to the anchor.\n */\n fitToAnchorWidth?: FitAnchorWidth | boolean;\n /** Shrink popover if even after flipping there is not enough space. */\n fitWithinViewportHeight?: boolean;\n /** Element to focus when opening the popover. */\n focusElement?: RefObject<HTMLElement>;\n /** Whether the focus should go back on the anchor when popover closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /** Whether we put an arrow or not. */\n hasArrow?: boolean;\n /** Whether the popover is open or not. */\n isOpen: boolean;\n /** Offset placement relative to anchor. */\n offset?: Offset;\n /** Reference to the parent element that triggered the popover (will get back focus on close or else fallback on the anchor element). */\n parentElement?: RefObject<HTMLElement>;\n /** Placement relative to anchor. */\n placement?: Placement;\n /** Whether the popover should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** The element in which the focus trap should be set. Default to popover. */\n focusTrapZoneElement?: RefObject<HTMLElement>;\n /** Z-axis position. */\n zIndex?: number;\n /** On close callback (on click away or Escape pressed). */\n onClose?(): void;\n /** Whether the popover should trap the focus within itself. Default to false. */\n withFocusTrap?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Popover';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<PopoverProps> = {\n elevation: 3,\n placement: Placement.AUTO,\n focusAnchorOnClose: true,\n usePortal: true,\n zIndex: POPOVER_ZINDEX,\n};\n\n// Inner component (must be wrapped before export)\nconst _InnerPopover = forwardRef<PopoverProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n as: Component = 'div',\n children,\n className,\n closeOnClickAway,\n closeOnEscape,\n elevation = DEFAULT_PROPS.elevation,\n focusElement,\n hasArrow,\n isOpen,\n onClose,\n parentElement,\n usePortal = DEFAULT_PROPS.usePortal,\n focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,\n withFocusTrap,\n boundaryRef,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n focusTrapZoneElement,\n offset,\n placement = DEFAULT_PROPS.placement,\n style,\n theme,\n zIndex = DEFAULT_PROPS.zIndex,\n ...forwardedProps\n } = props;\n const popoverRef = useRef<HTMLDivElement>(null);\n\n const { styles, attributes, isPositioned, position, setArrowElement, setPopperElement, popperElement } =\n usePopoverStyle({\n offset,\n hasArrow,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n boundaryRef,\n anchorRef,\n placement,\n style,\n zIndex,\n });\n\n const unmountSentinel = useRestoreFocusOnClose({ focusAnchorOnClose, anchorRef, parentElement }, popperElement);\n const focusZoneElement = focusTrapZoneElement?.current || popoverRef?.current;\n\n useCallbackOnEscape(onClose, isOpen && closeOnEscape);\n\n /** Only set focus within if the focus trap is disabled as they interfere with one another. */\n useFocus(focusElement?.current, !withFocusTrap && isOpen && isPositioned);\n useFocusTrap(withFocusTrap && isOpen && focusZoneElement, focusElement?.current);\n\n const clickAwayRefs = useRef([popoverRef, anchorRef]);\n const mergedRefs = useMergeRefs<HTMLDivElement>(setPopperElement, ref, popoverRef);\n\n return isOpen ? (\n <Portal enabled={usePortal}>\n <Component\n {...forwardedProps}\n ref={mergedRefs}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n elevation: Math.min(elevation || 0, 5),\n position,\n isInitializing: !styles.popover?.transform,\n }),\n )}\n style={styles.popover}\n {...attributes.popper}\n >\n {unmountSentinel}\n <ClickAwayProvider callback={closeOnClickAway && onClose} childrenRefs={clickAwayRefs}>\n {hasArrow && (\n <div ref={setArrowElement} className={`${CLASSNAME}__arrow`} style={styles.arrow}>\n <svg viewBox=\"0 0 14 14\" aria-hidden>\n <path d=\"M8 3.49C7.62 2.82 6.66 2.82 6.27 3.48L.04 14 14.04 14 8 3.49Z\" />\n </svg>\n </div>\n )}\n <ThemeProvider value={theme}>{children}</ThemeProvider>\n </ClickAwayProvider>\n </Component>\n </Portal>\n ) : null;\n});\n_InnerPopover.displayName = COMPONENT_NAME;\n\n/**\n * Popover component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Popover: Comp<PopoverProps, HTMLDivElement> = skipRender(\n // Skip render in SSR\n () => Boolean(DOCUMENT),\n _InnerPopover,\n);\nPopover.displayName = COMPONENT_NAME;\nPopover.className = CLASSNAME;\nPopover.defaultProps = DEFAULT_PROPS;\n"],"names":["useFocus","element","shouldFocus","wasFocus","setWasFocus","useState","useEffect","focus","skipRender","predicate","Component","Wrapper","React","forwardRef","props","ref","DOCUMENT","createElement","_extends","displayName","OnBeforeUnmount","callbackRef","useLayoutEffect","current","useRestoreFocusOnClose","focusAnchorOnClose","anchorRef","parentElement","popoverElement","onBeforeUnmountRef","useRef","undefined","isFocusWithin","contains","document","activeElement","setTimeout","anchor","elementToFocus","getFirstAndLastFocusable","first","preventScroll","sameWidth","memoize","anchorWidthOption","name","enabled","phase","requires","fn","state","styles","popper","rects","reference","width","effect","elements","style","offsetWidth","maxSize","requiresIfExists","options","overflow","detectOverflow","y","x","modifiersData","preventOverflow","height","basePlacement","placement","split","widthProp","heightProp","applyMaxHeight","maxHeight","ARROW_SIZE","usePopoverStyle","offset","hasArrow","fitToAnchorWidth","fitWithinViewportHeight","boundaryRef","zIndex","popperElement","setPopperElement","arrowElement","setArrowElement","actualOffset","along","away","modifiers","push","padding","fitWidth","FitAnchorWidth","MIN_WIDTH","boundary","attributes","update","usePopper","anchorElement","WINDOW","ResizeObserver","running","updateRateLimited","resizeObserver","observe","disconnect","position","popoverStyle","useMemo","newStyles","innerHeight","documentElement","clientHeight","arrow","popover","isPositioned","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","elevation","Placement","AUTO","usePortal","POPOVER_ZINDEX","_InnerPopover","as","children","className","closeOnClickAway","closeOnEscape","focusElement","isOpen","onClose","withFocusTrap","focusTrapZoneElement","theme","forwardedProps","popoverRef","unmountSentinel","focusZoneElement","useCallbackOnEscape","useFocusTrap","clickAwayRefs","mergedRefs","useMergeRefs","Portal","classNames","handleBasicClasses","prefix","Math","min","isInitializing","transform","ClickAwayProvider","callback","childrenRefs","viewBox","d","ThemeProvider","value","Popover","Boolean","defaultProps"],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import get from 'lodash/get';
2
-
3
- /**
4
- * Properties of a component to use to determine it's name.
5
- * In the order of preference.
6
- */
7
- const NAME_PROPERTIES = ['type', 'type.displayName', 'displayName', 'name', 'type.name', 'props.mdxType', '_reactInternalFiber.elementType.name'];
8
- /**
9
- * Create a predicate function that checks if a ReactNode is a react element from the given component.
10
- *
11
- * @param component React function component or the component name
12
- * @return predicate returning true if value is instance of the component
13
- */
14
- const isComponent = component => instance => {
15
- const componentName = typeof component === 'string' ? component : component.displayName;
16
- return !!get(instance, '$$typeof') && NAME_PROPERTIES.some(nameProperty => get(instance, nameProperty) === componentName);
17
- };
18
-
19
- export { isComponent as i };
20
- //# sourceMappingURL=isComponent-78df9309.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isComponent-78df9309.js","sources":["../../src/utils/type/isComponent.ts"],"sourcesContent":["import type { ReactElement, ReactNode } from 'react';\nimport get from 'lodash/get';\nimport type { Comp } from './Comp';\n\n/**\n * Properties of a component to use to determine it's name.\n * In the order of preference.\n */\nconst NAME_PROPERTIES: string[] = [\n 'type',\n 'type.displayName',\n 'displayName',\n 'name',\n 'type.name',\n 'props.mdxType',\n '_reactInternalFiber.elementType.name',\n];\n/**\n * Create a predicate function that checks if a ReactNode is a react element from the given component.\n *\n * @param component React function component or the component name\n * @return predicate returning true if value is instance of the component\n */\nexport const isComponent =\n <C>(component: Comp<C, any> | string) =>\n (instance: ReactNode): instance is ReactElement => {\n const componentName = typeof component === 'string' ? component : component.displayName;\n\n return (\n !!get(instance, '$$typeof') &&\n NAME_PROPERTIES.some((nameProperty: string): boolean => get(instance, nameProperty) === componentName)\n );\n };\n"],"names":["NAME_PROPERTIES","isComponent","component","instance","componentName","displayName","get","some","nameProperty"],"mappings":";;AAIA;AACA;AACA;AACA;AACA,MAAMA,eAAyB,GAAG,CAC9B,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,sCAAsC,CACzC,CAAA;AACD;AACA;AACA;AACA;AACA;AACA;MACaC,WAAW,GAChBC,SAAgC,IACnCC,QAAmB,IAA+B;EAC/C,MAAMC,aAAa,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACG,WAAW,CAAA;EAEvF,OACI,CAAC,CAACC,GAAG,CAACH,QAAQ,EAAE,UAAU,CAAC,IAC3BH,eAAe,CAACO,IAAI,CAAEC,YAAoB,IAAcF,GAAG,CAACH,QAAQ,EAAEK,YAAY,CAAC,KAAKJ,aAAa,CAAC,CAAA;AAE9G;;;;"}