@openedx/paragon 22.13.0 → 22.15.0

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 (258) hide show
  1. package/dist/Alert/_variables.scss +2 -1
  2. package/dist/Annotation/index.js.map +1 -1
  3. package/dist/Annotation/index.scss +6 -5
  4. package/dist/Avatar/index.js.map +1 -1
  5. package/dist/AvatarButton/index.js.map +1 -1
  6. package/dist/Breadcrumb/index.js.map +1 -1
  7. package/dist/Bubble/index.js +1 -0
  8. package/dist/Bubble/index.js.map +1 -1
  9. package/dist/Bubble/index.scss +3 -2
  10. package/dist/Button/deprecated/index.js.map +1 -1
  11. package/dist/Button/index.scss +19 -18
  12. package/dist/Card/CardCarousel/CardCarouselHeader.js +2 -2
  13. package/dist/Card/CardCarousel/CardCarouselHeader.js.map +1 -1
  14. package/dist/Card/CardFooter.js.map +1 -1
  15. package/dist/Card/CardHeader.js +1 -1
  16. package/dist/Card/CardHeader.js.map +1 -1
  17. package/dist/Card/CardImageCap.js.map +1 -1
  18. package/dist/Card/CardStatus.js.map +1 -1
  19. package/dist/Card/_variables.scss +3 -2
  20. package/dist/Card/index.js.map +1 -1
  21. package/dist/Card/index.scss +10 -9
  22. package/dist/Chip/ChipIcon.d.ts +1 -1
  23. package/dist/Chip/index.js +1 -0
  24. package/dist/Chip/index.js.map +1 -1
  25. package/dist/ChipCarousel/index.js.map +1 -1
  26. package/dist/Collapsible/index.js.map +1 -1
  27. package/dist/ColorPicker/index.js +1 -1
  28. package/dist/ColorPicker/index.js.map +1 -1
  29. package/dist/ColorPicker/index.scss +2 -1
  30. package/dist/DataTable/CollapsibleButtonGroup.js +2 -2
  31. package/dist/DataTable/CollapsibleButtonGroup.js.map +1 -1
  32. package/dist/DataTable/DropdownFilters.js +1 -1
  33. package/dist/DataTable/DropdownFilters.js.map +1 -1
  34. package/dist/DataTable/TableRow.js.map +1 -1
  35. package/dist/DataTable/filters/CheckboxFilter.js.map +1 -1
  36. package/dist/DataTable/filters/DropdownFilter.js.map +1 -1
  37. package/dist/DataTable/filters/MultiSelectDropdownFilter.js.map +1 -1
  38. package/dist/DataTable/filters/TextFilter.js.map +1 -1
  39. package/dist/DataTable/index.scss +14 -13
  40. package/dist/DataTable/utils/getVisibleColumns.js +1 -1
  41. package/dist/DataTable/utils/getVisibleColumns.js.map +1 -1
  42. package/dist/Dropdown/_variables.scss +2 -1
  43. package/dist/Dropdown/deprecated/DropdownMenu.js +15 -19
  44. package/dist/Dropdown/deprecated/DropdownMenu.js.map +1 -1
  45. package/dist/Dropdown/deprecated/index.js +1 -1
  46. package/dist/Dropdown/deprecated/index.js.map +1 -1
  47. package/dist/Dropdown/index.js.map +1 -1
  48. package/dist/Dropzone/DefaultContent.js.map +1 -1
  49. package/dist/Dropzone/UploadProgress.js.map +1 -1
  50. package/dist/Dropzone/index.scss +3 -2
  51. package/dist/Fieldset/index.js.map +1 -1
  52. package/dist/Form/FormAutosuggest.js +1 -1
  53. package/dist/Form/FormAutosuggest.js.map +1 -1
  54. package/dist/Form/FormControl.js.map +1 -1
  55. package/dist/Form/FormControlDecorator.js.map +1 -1
  56. package/dist/Form/FormGroupContext.d.ts +1 -1
  57. package/dist/Form/FormGroupContext.js.map +1 -1
  58. package/dist/Form/FormText.js.map +1 -1
  59. package/dist/Form/_index.scss +9 -7
  60. package/dist/Form/_variables.scss +4 -2
  61. package/dist/Form/fieldUtils.js.map +1 -1
  62. package/dist/Hyperlink/index.d.ts +10 -5
  63. package/dist/Hyperlink/index.js +57 -25
  64. package/dist/Hyperlink/index.js.map +1 -1
  65. package/dist/Hyperlink/index.scss +3 -1
  66. package/dist/Icon/index.js.map +1 -1
  67. package/dist/IconButton/index.d.ts +13 -8
  68. package/dist/IconButton/index.js.map +1 -1
  69. package/dist/IconButtonToggle/index.js.map +1 -1
  70. package/dist/IconButtonToggle/index.scss +3 -1
  71. package/dist/Input/index.js.map +1 -1
  72. package/dist/InputSelect/index.js.map +1 -1
  73. package/dist/Layout/index.js.map +1 -1
  74. package/dist/ListBox/index.js.map +1 -1
  75. package/dist/ListBoxOption/index.js.map +1 -1
  76. package/dist/Menu/SelectMenu.js +1 -1
  77. package/dist/Menu/SelectMenu.js.map +1 -1
  78. package/dist/Menu/index.js +1 -1
  79. package/dist/Menu/index.js.map +1 -1
  80. package/dist/Modal/ModalContext.d.ts +1 -1
  81. package/dist/Modal/ModalDialog.d.ts +1 -1
  82. package/dist/Modal/ModalDialog.js.map +1 -1
  83. package/dist/Modal/ModalDialogBody.js +1 -1
  84. package/dist/Modal/ModalDialogBody.js.map +1 -1
  85. package/dist/Modal/ModalDialogHeroBackground.js.map +1 -1
  86. package/dist/Modal/ModalLayer.d.ts +3 -3
  87. package/dist/Modal/ModalLayer.js.map +1 -1
  88. package/dist/Modal/ModalPopup.js.map +1 -1
  89. package/dist/Modal/_ModalDialog.scss +3 -1
  90. package/dist/Modal/index.js +3 -1
  91. package/dist/Modal/index.js.map +1 -1
  92. package/dist/Modal/index.scss +3 -5
  93. package/dist/Nav/_mixins.scss +3 -1
  94. package/dist/Overlay/index.d.ts +2 -2
  95. package/dist/PageBanner/index.js.map +1 -1
  96. package/dist/PageBanner/index.scss +2 -1
  97. package/dist/Pagination/PaginationContext.js.map +1 -1
  98. package/dist/Pagination/index.js.map +1 -1
  99. package/dist/Popover/_variables.scss +2 -1
  100. package/dist/Popover/index.js.map +1 -1
  101. package/dist/ProductTour/Checkpoint.scss +9 -8
  102. package/dist/ProductTour/index.js +1 -1
  103. package/dist/ProductTour/index.js.map +1 -1
  104. package/dist/ProgressBar/index.js.map +1 -1
  105. package/dist/Scrollable/index.js +1 -1
  106. package/dist/Scrollable/index.js.map +1 -1
  107. package/dist/SearchField/SearchFieldAdvanced.js.map +1 -1
  108. package/dist/SearchField/index.scss +2 -1
  109. package/dist/SelectableBox/SelectableBoxSet.js.map +1 -1
  110. package/dist/Sheet/index.js.map +1 -1
  111. package/dist/Stack/index.js.map +1 -1
  112. package/dist/StatefulButton/index.js.map +1 -1
  113. package/dist/StatusAlert/index.js.map +1 -1
  114. package/dist/Stepper/StepperHeader.js +1 -1
  115. package/dist/Stepper/StepperHeader.js.map +1 -1
  116. package/dist/Stepper/StepperHeaderStep.js.map +1 -1
  117. package/dist/Sticky/index.js.map +1 -1
  118. package/dist/Table/_variables.scss +2 -1
  119. package/dist/Tabs/deprecated/index.js.map +1 -1
  120. package/dist/Tabs/index.js +1 -1
  121. package/dist/Tabs/index.js.map +1 -1
  122. package/dist/Toast/ToastContainer.scss +1 -1
  123. package/dist/Toast/index.scss +2 -2
  124. package/dist/Truncate/index.js +1 -1
  125. package/dist/Truncate/index.js.map +1 -1
  126. package/dist/ValidationFormGroup/index.js.map +1 -1
  127. package/dist/asInput/index.js.map +1 -1
  128. package/dist/hooks/{useArrowKeyNavigation.js → useArrowKeyNavigationHook.js} +5 -1
  129. package/dist/hooks/useArrowKeyNavigationHook.js.map +1 -0
  130. package/dist/hooks/{useIndexOfLastVisibleChild.js → useIndexOfLastVisibleChildHook.js} +5 -1
  131. package/dist/hooks/useIndexOfLastVisibleChildHook.js.map +1 -0
  132. package/dist/hooks/{useIsVisible.js → useIsVisibleHook.js} +1 -1
  133. package/dist/hooks/useIsVisibleHook.js.map +1 -0
  134. package/dist/hooks/{useToggle.js → useToggleHook.js} +5 -1
  135. package/dist/hooks/useToggleHook.js.map +1 -0
  136. package/dist/hooks/{useWindowSize.js → useWindowSizeHook.js} +1 -1
  137. package/dist/hooks/useWindowSizeHook.js.map +1 -0
  138. package/dist/index.d.ts +6 -6
  139. package/dist/index.js +6 -6
  140. package/dist/paragon.css +1 -45
  141. package/dist/utils/newId.js.map +1 -1
  142. package/dist/withDeprecatedProps.js.map +1 -1
  143. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/CHANGELOG.md +50 -0
  144. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/LICENSE +7 -0
  145. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/README.md +37 -0
  146. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.d.ts +20 -0
  147. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.js +79 -0
  148. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.js.map +1 -0
  149. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/package.json +40 -0
  150. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/tsconfig.json +4 -0
  151. package/icons/package.json +1 -1
  152. package/package.json +12 -19
  153. package/scss/core/_exports.module.scss +7 -6
  154. package/scss/core/_functions.scss +9 -7
  155. package/scss/core/_typography.scss +2 -1
  156. package/scss/core/_utilities.scss +2 -1
  157. package/scss/core/_variables.scss +98 -95
  158. package/src/Alert/_variables.scss +2 -1
  159. package/src/Annotation/index.scss +6 -5
  160. package/src/Breadcrumb/Breadcrumb.test.jsx +3 -2
  161. package/src/Bubble/index.scss +3 -2
  162. package/src/Bubble/index.tsx +1 -0
  163. package/src/Button/Button.test.tsx +6 -1
  164. package/src/Button/deprecated/Button.test.jsx +6 -4
  165. package/src/Button/index.scss +19 -18
  166. package/src/Card/CardCarousel/tests/CardCarouselControls.test.jsx +6 -4
  167. package/src/Card/_variables.scss +3 -2
  168. package/src/Card/index.scss +10 -9
  169. package/src/Chip/index.tsx +1 -0
  170. package/src/Collapsible/Collapsible.test.jsx +15 -7
  171. package/src/ColorPicker/ColorPicker.test.jsx +9 -16
  172. package/src/ColorPicker/index.jsx +1 -1
  173. package/src/ColorPicker/index.scss +2 -1
  174. package/src/DataTable/CollapsibleButtonGroup.jsx +2 -2
  175. package/src/DataTable/DropdownFilters.jsx +1 -1
  176. package/src/DataTable/dataviews.mdx +1 -8
  177. package/src/DataTable/index.scss +14 -13
  178. package/src/DataTable/selection/tests/ControlledSelectHeader.test.jsx +6 -4
  179. package/src/DataTable/tests/BulkActions.test.jsx +2 -4
  180. package/src/DataTable/tests/DataViewToggle.test.jsx +3 -7
  181. package/src/DataTable/tests/DropdownFilters.test.jsx +1 -1
  182. package/src/DataTable/tests/TableActions.test.jsx +1 -1
  183. package/src/Dropdown/_variables.scss +2 -1
  184. package/src/Dropdown/deprecated/Dropdown.test.jsx +43 -27
  185. package/src/Dropzone/README.md +3 -3
  186. package/src/Dropzone/index.scss +3 -2
  187. package/src/Dropzone/tests/__snapshots__/Dropzone.test.jsx.snap +10 -1
  188. package/src/Form/FormAutosuggest.jsx +1 -1
  189. package/src/Form/FormGroupContext.tsx +1 -1
  190. package/src/Form/_index.scss +9 -7
  191. package/src/Form/_variables.scss +4 -2
  192. package/src/Form/tests/FormAutosuggest.test.jsx +76 -57
  193. package/src/Form/tests/FormCheckboxSet.test.jsx +3 -2
  194. package/src/Form/tests/FormControl.test.jsx +9 -6
  195. package/src/Form/tests/FormRadioSet.test.jsx +3 -2
  196. package/src/Hyperlink/Hyperlink.test.tsx +50 -20
  197. package/src/Hyperlink/README.md +14 -1
  198. package/src/Hyperlink/index.scss +3 -1
  199. package/src/Hyperlink/index.tsx +71 -30
  200. package/src/IconButtonToggle/IconButtonToggle.test.jsx +3 -2
  201. package/src/IconButtonToggle/index.scss +3 -1
  202. package/src/ListBox/ListBox.test.jsx +8 -4
  203. package/src/MailtoLink/MailtoLink.test.jsx +12 -3
  204. package/src/Menu/Menu.test.jsx +27 -19
  205. package/src/Menu/SelectMenu.jsx +1 -1
  206. package/src/Menu/SelectMenu.test.jsx +35 -16
  207. package/src/Menu/__snapshots__/Menu.test.jsx.snap +0 -1
  208. package/src/Menu/index.jsx +1 -1
  209. package/src/Modal/ModalDialogBody.jsx +1 -1
  210. package/src/Modal/_ModalDialog.scss +3 -1
  211. package/src/Modal/index.jsx +2 -0
  212. package/src/Modal/index.scss +3 -5
  213. package/src/Modal/tests/ModalLayer.test.tsx +3 -2
  214. package/src/Nav/_mixins.scss +3 -1
  215. package/src/OverflowScroll/data/tests/useOverflowScroll.test.jsx +1 -2
  216. package/src/OverflowScroll/data/tests/useOverflowScrollActions.test.jsx +1 -1
  217. package/src/OverflowScroll/data/tests/useOverflowScrollElementAttributes.test.jsx +1 -1
  218. package/src/OverflowScroll/data/tests/useOverflowScrollEventListeners.test.jsx +1 -2
  219. package/src/PageBanner/index.scss +2 -1
  220. package/src/Pagination/Pagination.test.jsx +36 -28
  221. package/src/Popover/_variables.scss +2 -1
  222. package/src/ProductTour/Checkpoint.scss +9 -8
  223. package/src/ProductTour/Checkpoint.test.jsx +3 -2
  224. package/src/ProductTour/ProductTour.test.jsx +11 -24
  225. package/src/ProductTour/index.jsx +1 -1
  226. package/src/Scrollable/Scrollable.test.jsx +2 -2
  227. package/src/Scrollable/index.jsx +1 -1
  228. package/src/SearchField/index.scss +2 -1
  229. package/src/SelectableBox/tests/SelectableBox.test.jsx +3 -2
  230. package/src/StatusAlert/StatusAlert.test.jsx +6 -2
  231. package/src/Stepper/StepperHeader.jsx +1 -1
  232. package/src/Stepper/tests/Stepper.test.jsx +1 -1
  233. package/src/Table/_variables.scss +2 -1
  234. package/src/Tabs/Tabs.test.jsx +1 -1
  235. package/src/Tabs/deprecated/Tabs.test.jsx +6 -4
  236. package/src/Tabs/index.jsx +1 -1
  237. package/src/Toast/ToastContainer.scss +1 -1
  238. package/src/Toast/index.scss +2 -2
  239. package/src/Truncate/index.jsx +1 -1
  240. package/src/hooks/tests/useToggle.test.tsx +1 -1
  241. package/src/hooks/{useArrowKeyNavigation.tsx → useArrowKeyNavigationHook.tsx} +4 -0
  242. package/src/hooks/{useIndexOfLastVisibleChild.tsx → useIndexOfLastVisibleChildHook.tsx} +4 -0
  243. package/src/hooks/{useToggle.tsx → useToggleHook.tsx} +4 -0
  244. package/src/index.d.ts +6 -6
  245. package/src/index.js +6 -6
  246. package/dist/hooks/useArrowKeyNavigation.js.map +0 -1
  247. package/dist/hooks/useIndexOfLastVisibleChild.js.map +0 -1
  248. package/dist/hooks/useIsVisible.js.map +0 -1
  249. package/dist/hooks/useToggle.js.map +0 -1
  250. package/dist/hooks/useWindowSize.js.map +0 -1
  251. package/src/DataTable/tests/utils.js +0 -9
  252. /package/dist/hooks/{useArrowKeyNavigation.d.ts → useArrowKeyNavigationHook.d.ts} +0 -0
  253. /package/dist/hooks/{useIndexOfLastVisibleChild.d.ts → useIndexOfLastVisibleChildHook.d.ts} +0 -0
  254. /package/dist/hooks/{useIsVisible.d.ts → useIsVisibleHook.d.ts} +0 -0
  255. /package/dist/hooks/{useToggle.d.ts → useToggleHook.d.ts} +0 -0
  256. /package/dist/hooks/{useWindowSize.d.ts → useWindowSizeHook.d.ts} +0 -0
  257. /package/src/hooks/{useIsVisible.tsx → useIsVisibleHook.tsx} +0 -0
  258. /package/src/hooks/{useWindowSize.tsx → useWindowSizeHook.tsx} +0 -0
package/src/index.js CHANGED
@@ -31,7 +31,7 @@ export {
31
31
  FormAutosuggestOption,
32
32
  InputGroup,
33
33
  } from './Form';
34
- export { default as Hyperlink, HYPER_LINK_EXTERNAL_LINK_ALT_TEXT, HYPER_LINK_EXTERNAL_LINK_TITLE } from './Hyperlink';
34
+ export { default as Hyperlink } from './Hyperlink';
35
35
  export { default as Icon } from './Icon';
36
36
  export { default as IconButton, IconButtonWithTooltip } from './IconButton';
37
37
  export { default as ModalContext } from './Modal/ModalContext';
@@ -40,11 +40,11 @@ export { default as ModalLayer } from './Modal/ModalLayer';
40
40
  export { default as Overlay, OverlayTrigger } from './Overlay';
41
41
  export { default as Portal } from './Modal/Portal';
42
42
  export { default as Tooltip } from './Tooltip';
43
- export { default as useWindowSize } from './hooks/useWindowSize';
44
- export { default as useToggle } from './hooks/useToggle';
45
- export { default as useArrowKeyNavigation } from './hooks/useArrowKeyNavigation';
46
- export { default as useIndexOfLastVisibleChild } from './hooks/useIndexOfLastVisibleChild';
47
- export { default as useIsVisible } from './hooks/useIsVisible';
43
+ export { default as useWindowSize } from './hooks/useWindowSizeHook';
44
+ export { default as useToggle } from './hooks/useToggleHook';
45
+ export { default as useArrowKeyNavigation } from './hooks/useArrowKeyNavigationHook';
46
+ export { default as useIndexOfLastVisibleChild } from './hooks/useIndexOfLastVisibleChildHook';
47
+ export { default as useIsVisible } from './hooks/useIsVisibleHook';
48
48
 
49
49
  // // // // // // // // // // // // // // // // // // // // // // // // // // //
50
50
  // Things that don't have types
@@ -1 +0,0 @@
1
- {"version":3,"file":"useArrowKeyNavigation.js","names":["useRef","useEffect","handleEnter","_ref","event","currentIndex","activeElement","click","preventDefault","handleArrowKey","_ref2","availableElements","focus","nextElement","key","length","handleEvents","_ref3","ignoredKeys","parentNode","selectors","includes","document","contains","querySelectorAll","Array","from","findIndex","availableElement","useArrowKeyNavigation","props","arguments","undefined","eventHandler","current","addEventListener","removeEventListener"],"sources":["../../src/hooks/useArrowKeyNavigation.tsx"],"sourcesContent":["import { useRef, useEffect } from 'react';\n\ninterface HandleEnterArgs {\n event: KeyboardEvent;\n currentIndex: number;\n activeElement: HTMLElement;\n}\n\nfunction handleEnter({ event, currentIndex, activeElement }: HandleEnterArgs) {\n if (currentIndex === -1) { return; }\n activeElement.click();\n event.preventDefault();\n}\n\ninterface HandleArrowKeyArgs {\n event: KeyboardEvent;\n currentIndex: number;\n availableElements: NodeListOf<HTMLElement>;\n}\n\nfunction handleArrowKey({ event, currentIndex, availableElements }: HandleArrowKeyArgs) {\n // If the focus isn't in the container, focus on the first thing\n if (currentIndex === -1) { availableElements[0].focus(); }\n\n // Move the focus up or down. Wrap around ends of list.\n let nextElement;\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n nextElement = availableElements[(currentIndex + 1) % availableElements.length];\n }\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n nextElement = currentIndex - 1 < 0\n ? availableElements[currentIndex - 1 + availableElements.length]\n : availableElements[currentIndex - 1];\n }\n if (event.key === 'End') {\n nextElement = availableElements[availableElements.length - 1];\n }\n if (event.key === 'Home') {\n [nextElement] = availableElements;\n }\n\n nextElement?.focus();\n event.preventDefault();\n}\n\ninterface HandleEventsArgs {\n event: KeyboardEvent;\n ignoredKeys?: string[];\n parentNode: HTMLElement | undefined;\n selectors?: string;\n}\n\n/**\n * Implement arrow key navigation for the given parentNode\n */\nfunction handleEvents({\n event,\n ignoredKeys = [],\n parentNode,\n selectors = 'a,button,input',\n}: HandleEventsArgs) {\n if (!parentNode) { return; }\n\n const { key } = event;\n\n if (!['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Enter', 'Home', 'End'].includes(key)\n || ignoredKeys.includes(key)) {\n return;\n }\n\n const { activeElement } = document;\n\n // If we're not inside the container, don't do anything\n if (!parentNode.contains(activeElement)) { return; }\n\n // Get the list of elements we're allowed to scroll through\n const availableElements = parentNode.querySelectorAll<HTMLElement>(selectors);\n\n // No elements are available to loop through.\n if (!availableElements.length) { return; }\n\n // Which index is currently selected\n const currentIndex = Array.from(availableElements).findIndex(\n (availableElement) => availableElement === activeElement,\n );\n\n if (key === 'Enter' && activeElement) {\n handleEnter({ event, currentIndex, activeElement: activeElement as HTMLElement });\n }\n handleArrowKey({ event, currentIndex, availableElements });\n}\n\nexport interface ArrowKeyNavProps {\n /** e.g. 'a,button,input' */\n selectors?: string;\n ignoredKeys?: string[];\n}\n\n/**\n * A React hook to enable arrow key navigation on a component.\n */\nexport default function useArrowKeyNavigation(props: ArrowKeyNavProps = {}) {\n const { selectors, ignoredKeys } = props;\n const parentNode = useRef<HTMLElement>();\n\n useEffect(() => {\n const eventHandler = (event: KeyboardEvent) => {\n handleEvents({\n event, ignoredKeys, parentNode: parentNode.current, selectors,\n });\n };\n\n document.addEventListener('keydown', eventHandler);\n\n return () => document.removeEventListener('keydown', eventHandler);\n }, [ignoredKeys, selectors]);\n\n return parentNode;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIndexOfLastVisibleChild.js","names":["useLayoutEffect","useState","useIndexOfLastVisibleChild","containerElementRef","overflowElementRef","indexOfLastVisibleChild","setIndexOfLastVisibleChild","undefined","updateLastVisibleChildIndex","childNodesArr","Array","prototype","slice","call","children","nextIndexOfLastVisibleChild","filter","childNode","reduce","acc","index","sumWidth","getBoundingClientRect","width","resizeObserver","ResizeObserver","observe","disconnect"],"sources":["../../src/hooks/useIndexOfLastVisibleChild.tsx"],"sourcesContent":["import { useLayoutEffect, useState } from 'react';\n\n/**\n * This hook will find the index of the last child of a containing element\n * that fits within its bounding rectangle. This is done by summing the widths\n * of the children until they exceed the width of the container.\n *\n * The hook returns the index of the last visible child.\n *\n * @param containerElementRef - container element\n * @param overflowElementRef - overflow element\n */\nconst useIndexOfLastVisibleChild = (\n containerElementRef: HTMLElement | null,\n overflowElementRef: HTMLElement | null,\n): number => {\n const [indexOfLastVisibleChild, setIndexOfLastVisibleChild] = useState(-1);\n\n useLayoutEffect(() => {\n if (!containerElementRef) {\n return undefined;\n }\n\n function updateLastVisibleChildIndex() {\n // Get array of child nodes from NodeList form\n const childNodesArr = Array.prototype.slice.call(containerElementRef!.children);\n const { nextIndexOfLastVisibleChild } = childNodesArr\n // filter out the overflow element\n .filter(childNode => childNode !== overflowElementRef)\n // sum the widths to find the last visible element's index\n .reduce((acc, childNode, index) => {\n acc.sumWidth += childNode.getBoundingClientRect().width;\n if (acc.sumWidth <= containerElementRef!.getBoundingClientRect().width) {\n acc.nextIndexOfLastVisibleChild = index;\n }\n return acc;\n }, {\n // Include the overflow element's width to begin with. Doing this means\n // sometimes we'll show a dropdown with one item in it when it would fit,\n // but allowing this case dramatically simplifies the calculations we need\n // to do above.\n sumWidth: overflowElementRef?.getBoundingClientRect().width ?? 0,\n nextIndexOfLastVisibleChild: -1,\n });\n\n setIndexOfLastVisibleChild(nextIndexOfLastVisibleChild);\n }\n\n updateLastVisibleChildIndex();\n\n const resizeObserver = new ResizeObserver(() => updateLastVisibleChildIndex());\n resizeObserver.observe(containerElementRef);\n return () => resizeObserver.disconnect();\n }, [containerElementRef, overflowElementRef]);\n\n return indexOfLastVisibleChild;\n};\n\nexport default useIndexOfLastVisibleChild;\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,QAAQ,QAAQ,OAAO;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAAGA,CACjCC,mBAAuC,EACvCC,kBAAsC,KAC3B;EACX,MAAM,CAACC,uBAAuB,EAAEC,0BAA0B,CAAC,GAAGL,QAAQ,CAAC,CAAC,CAAC,CAAC;EAE1ED,eAAe,CAAC,MAAM;IACpB,IAAI,CAACG,mBAAmB,EAAE;MACxB,OAAOI,SAAS;IAClB;IAEA,SAASC,2BAA2BA,CAAA,EAAG;MACrC;MACA,MAAMC,aAAa,GAAGC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACV,mBAAmB,CAAEW,QAAQ,CAAC;MAC/E,MAAM;QAAEC;MAA4B,CAAC,GAAGN;MACtC;MAAA,CACCO,MAAM,CAACC,SAAS,IAAIA,SAAS,KAAKb,kBAAkB;MACrD;MAAA,CACCc,MAAM,CAAC,CAACC,GAAG,EAAEF,SAAS,EAAEG,KAAK,KAAK;QACjCD,GAAG,CAACE,QAAQ,IAAIJ,SAAS,CAACK,qBAAqB,CAAC,CAAC,CAACC,KAAK;QACvD,IAAIJ,GAAG,CAACE,QAAQ,IAAIlB,mBAAmB,CAAEmB,qBAAqB,CAAC,CAAC,CAACC,KAAK,EAAE;UACtEJ,GAAG,CAACJ,2BAA2B,GAAGK,KAAK;QACzC;QACA,OAAOD,GAAG;MACZ,CAAC,EAAE;QACD;QACA;QACA;QACA;QACAE,QAAQ,EAAEjB,kBAAkB,EAAEkB,qBAAqB,CAAC,CAAC,CAACC,KAAK,IAAI,CAAC;QAChER,2BAA2B,EAAE,CAAC;MAChC,CAAC,CAAC;MAEJT,0BAA0B,CAACS,2BAA2B,CAAC;IACzD;IAEAP,2BAA2B,CAAC,CAAC;IAE7B,MAAMgB,cAAc,GAAG,IAAIC,cAAc,CAAC,MAAMjB,2BAA2B,CAAC,CAAC,CAAC;IAC9EgB,cAAc,CAACE,OAAO,CAACvB,mBAAmB,CAAC;IAC3C,OAAO,MAAMqB,cAAc,CAACG,UAAU,CAAC,CAAC;EAC1C,CAAC,EAAE,CAACxB,mBAAmB,EAAEC,kBAAkB,CAAC,CAAC;EAE7C,OAAOC,uBAAuB;AAChC,CAAC;AAED,eAAeH,0BAA0B","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsVisible.js","names":["useRef","useState","useEffect","useIsVisible","defaultIsVisible","arguments","length","undefined","sentinelRef","isVisible","setIsVisible","current","observer","IntersectionObserver","entries","forEach","_ref","isIntersecting","observe","disconnect","e","isReferenceError","ReferenceError"],"sources":["../../src/hooks/useIsVisible.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\n\nconst useIsVisible = (defaultIsVisible = true): [\n isVisible: boolean,\n sentinelRef: React.MutableRefObject<HTMLElement | null>,\n] => {\n const sentinelRef = useRef<HTMLElement | null>(null);\n const [isVisible, setIsVisible] = useState(defaultIsVisible);\n\n useEffect(() => {\n try {\n if (sentinelRef.current) {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(({ isIntersecting }) => {\n setIsVisible(isIntersecting);\n });\n }, {});\n observer.observe(sentinelRef.current);\n return () => {\n observer.disconnect();\n };\n }\n } catch (e) {\n const isReferenceError = e instanceof ReferenceError;\n if (!isReferenceError) {\n throw e;\n }\n // Do nothing if an intersection observer can't be created.\n }\n return () => {};\n }, []);\n\n return [isVisible, sentinelRef];\n};\n\nexport default useIsVisible;\n"],"mappings":"AAAA,SAAgBA,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAE1D,MAAMC,YAAY,GAAG,SAAAA,CAAA,EAGhB;EAAA,IAHiBC,gBAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAI3C,MAAMG,WAAW,GAAGR,MAAM,CAAqB,IAAI,CAAC;EACpD,MAAM,CAACS,SAAS,EAAEC,YAAY,CAAC,GAAGT,QAAQ,CAACG,gBAAgB,CAAC;EAE5DF,SAAS,CAAC,MAAM;IACd,IAAI;MACF,IAAIM,WAAW,CAACG,OAAO,EAAE;QACvB,MAAMC,QAAQ,GAAG,IAAIC,oBAAoB,CAAEC,OAAO,IAAK;UACrDA,OAAO,CAACC,OAAO,CAACC,IAAA,IAAwB;YAAA,IAAvB;cAAEC;YAAe,CAAC,GAAAD,IAAA;YACjCN,YAAY,CAACO,cAAc,CAAC;UAC9B,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC,CAAC;QACNL,QAAQ,CAACM,OAAO,CAACV,WAAW,CAACG,OAAO,CAAC;QACrC,OAAO,MAAM;UACXC,QAAQ,CAACO,UAAU,CAAC,CAAC;QACvB,CAAC;MACH;IACF,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV,MAAMC,gBAAgB,GAAGD,CAAC,YAAYE,cAAc;MACpD,IAAI,CAACD,gBAAgB,EAAE;QACrB,MAAMD,CAAC;MACT;MACA;IACF;IACA,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,CAACX,SAAS,EAAED,WAAW,CAAC;AACjC,CAAC;AAED,eAAeL,YAAY","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToggle.js","names":["useState","useCallback","useToggle","defaultIsOn","arguments","length","undefined","handlers","handleToggleOn","handleToggleOff","handleToggle","isOn","setIsOn","setOn","setOff","toggle","doToggle"],"sources":["../../src/hooks/useToggle.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nexport type Toggler = [\n isOn: boolean,\n setOn: () => void,\n setOff: () => void,\n toggle: () => void,\n];\n\nexport interface ToggleHandlers {\n handleToggleOn?: () => void;\n handleToggleOff?: () => void;\n handleToggle?: (newStatus: boolean) => void;\n}\n\nexport default function useToggle(defaultIsOn = false, handlers: ToggleHandlers = {}): Toggler {\n const { handleToggleOn, handleToggleOff, handleToggle } = handlers;\n const [isOn, setIsOn] = useState(defaultIsOn);\n\n const setOn = useCallback(() => {\n setIsOn(true);\n handleToggleOn?.();\n handleToggle?.(true);\n }, [handleToggleOn, handleToggle]);\n\n const setOff = useCallback(() => {\n setIsOn(false);\n handleToggleOff?.();\n handleToggle?.(false);\n }, [handleToggleOff, handleToggle]);\n\n const toggle = useCallback(() => {\n const doToggle = isOn ? setOff : setOn;\n doToggle();\n }, [isOn, setOn, setOff]);\n\n return [isOn, setOn, setOff, toggle];\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AAe7C,eAAe,SAASC,SAASA,CAAA,EAA8D;EAAA,IAA7DC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IAAEG,QAAwB,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAClF,MAAM;IAAEI,cAAc;IAAEC,eAAe;IAAEC;EAAa,CAAC,GAAGH,QAAQ;EAClE,MAAM,CAACI,IAAI,EAAEC,OAAO,CAAC,GAAGZ,QAAQ,CAACG,WAAW,CAAC;EAE7C,MAAMU,KAAK,GAAGZ,WAAW,CAAC,MAAM;IAC9BW,OAAO,CAAC,IAAI,CAAC;IACbJ,cAAc,GAAG,CAAC;IAClBE,YAAY,GAAG,IAAI,CAAC;EACtB,CAAC,EAAE,CAACF,cAAc,EAAEE,YAAY,CAAC,CAAC;EAElC,MAAMI,MAAM,GAAGb,WAAW,CAAC,MAAM;IAC/BW,OAAO,CAAC,KAAK,CAAC;IACdH,eAAe,GAAG,CAAC;IACnBC,YAAY,GAAG,KAAK,CAAC;EACvB,CAAC,EAAE,CAACD,eAAe,EAAEC,YAAY,CAAC,CAAC;EAEnC,MAAMK,MAAM,GAAGd,WAAW,CAAC,MAAM;IAC/B,MAAMe,QAAQ,GAAGL,IAAI,GAAGG,MAAM,GAAGD,KAAK;IACtCG,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACL,IAAI,EAAEE,KAAK,EAAEC,MAAM,CAAC,CAAC;EAEzB,OAAO,CAACH,IAAI,EAAEE,KAAK,EAAEC,MAAM,EAAEC,MAAM,CAAC;AACtC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useWindowSize.js","names":["useState","useLayoutEffect","useWindowSize","windowSize","setWindowSize","width","undefined","height","handleResize","global","innerWidth","innerHeight","addEventListener","removeEventListener"],"sources":["../../src/hooks/useWindowSize.tsx"],"sourcesContent":["import { useState, useLayoutEffect } from 'react';\n\nexport interface WindowSizeData {\n width: number | undefined;\n height: number | undefined;\n}\n\nfunction useWindowSize(): WindowSizeData {\n // Initialize state with undefined width/height so server and client renders match\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\n const [windowSize, setWindowSize] = useState<WindowSizeData>({\n width: undefined,\n height: undefined,\n });\n\n useLayoutEffect(() => {\n // Handler to call on window resize\n function handleResize() {\n // Set window width/height to state\n setWindowSize({\n width: global.innerWidth,\n height: global.innerHeight,\n });\n }\n\n // Add event listener\n global.addEventListener('resize', handleResize);\n\n // Call handler right away so state gets updated with initial window size\n handleResize();\n\n // Remove event listener on cleanup\n return () => global.removeEventListener('resize', handleResize);\n }, []); // Empty array ensures that effect is only run on mount\n\n return windowSize;\n}\n\nexport default useWindowSize;\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,eAAe,QAAQ,OAAO;AAOjD,SAASC,aAAaA,CAAA,EAAmB;EACvC;EACA;EACA,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGJ,QAAQ,CAAiB;IAC3DK,KAAK,EAAEC,SAAS;IAChBC,MAAM,EAAED;EACV,CAAC,CAAC;EAEFL,eAAe,CAAC,MAAM;IACpB;IACA,SAASO,YAAYA,CAAA,EAAG;MACtB;MACAJ,aAAa,CAAC;QACZC,KAAK,EAAEI,MAAM,CAACC,UAAU;QACxBH,MAAM,EAAEE,MAAM,CAACE;MACjB,CAAC,CAAC;IACJ;;IAEA;IACAF,MAAM,CAACG,gBAAgB,CAAC,QAAQ,EAAEJ,YAAY,CAAC;;IAE/C;IACAA,YAAY,CAAC,CAAC;;IAEd;IACA,OAAO,MAAMC,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEL,YAAY,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER,OAAOL,UAAU;AACnB;AAEA,eAAeD,aAAa","ignoreList":[]}
@@ -1,9 +0,0 @@
1
- import { act } from 'react-dom/test-utils';
2
-
3
- // eslint-disable-next-line import/prefer-default-export
4
- export const waitForComponentToPaint = async (wrapper) => {
5
- await act(async () => {
6
- await new Promise(resolve => { setTimeout(resolve); });
7
- wrapper.update();
8
- });
9
- };