@lumx/react 2.2.3-alpha-export-hook1 → 2.2.5

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 (208) hide show
  1. package/esm/_internal/AlertDialog.js +2 -3
  2. package/esm/_internal/AlertDialog.js.map +1 -1
  3. package/esm/_internal/AutocompleteMultiple.js +1 -2
  4. package/esm/_internal/AutocompleteMultiple.js.map +1 -1
  5. package/esm/_internal/Button2.js +1 -1
  6. package/esm/_internal/ButtonGroup.js +4 -0
  7. package/esm/_internal/ButtonGroup.js.map +1 -1
  8. package/esm/_internal/Checkbox2.js +2 -3
  9. package/esm/_internal/Checkbox2.js.map +1 -1
  10. package/esm/_internal/Chip2.js +1 -2
  11. package/esm/_internal/Chip2.js.map +1 -1
  12. package/esm/_internal/ChipGroup.js.map +1 -1
  13. package/esm/_internal/ClickAwayProvider.js +1 -1
  14. package/esm/_internal/ClickAwayProvider.js.map +1 -1
  15. package/esm/_internal/DatePickerField.js +5 -1
  16. package/esm/_internal/DatePickerField.js.map +1 -1
  17. package/esm/_internal/Dialog2.js.map +1 -1
  18. package/esm/_internal/DragHandle.js +1 -2
  19. package/esm/_internal/DragHandle.js.map +1 -1
  20. package/esm/_internal/Dropdown2.js +1 -1
  21. package/esm/_internal/Dropdown2.js.map +1 -1
  22. package/esm/_internal/ExpansionPanel.js +1 -1
  23. package/esm/_internal/Icon2.js +23 -3
  24. package/esm/_internal/Icon2.js.map +1 -1
  25. package/esm/_internal/IconButton.js +5 -1
  26. package/esm/_internal/IconButton.js.map +1 -1
  27. package/esm/_internal/Lightbox2.js +1 -1
  28. package/esm/_internal/Lightbox2.js.map +1 -1
  29. package/esm/_internal/Link2.js +1 -1
  30. package/esm/_internal/LinkPreview.js +1 -1
  31. package/esm/_internal/LinkPreview.js.map +1 -1
  32. package/esm/_internal/List2.js +4 -20
  33. package/esm/_internal/List2.js.map +1 -1
  34. package/esm/_internal/Message2.js +3 -3
  35. package/esm/_internal/Message2.js.map +1 -1
  36. package/esm/_internal/Notification2.js +1 -2
  37. package/esm/_internal/Notification2.js.map +1 -1
  38. package/esm/_internal/Popover2.js.map +1 -1
  39. package/esm/_internal/ProgressTrackerStepPanel.js +1 -2
  40. package/esm/_internal/ProgressTrackerStepPanel.js.map +1 -1
  41. package/esm/_internal/RadioGroup.js +1 -1
  42. package/esm/_internal/SelectMultiple.js +2 -3
  43. package/esm/_internal/SelectMultiple.js.map +1 -1
  44. package/esm/_internal/SideNavigationItem.js +2 -4
  45. package/esm/_internal/SideNavigationItem.js.map +1 -1
  46. package/esm/_internal/Slider2.js +1 -1
  47. package/esm/_internal/Slider2.js.map +1 -1
  48. package/esm/_internal/SlideshowControls.js +3 -101
  49. package/esm/_internal/SlideshowControls.js.map +1 -1
  50. package/esm/_internal/Switch2.js +1 -1
  51. package/esm/_internal/TabPanel.js +1 -1
  52. package/esm/_internal/TabPanel.js.map +1 -1
  53. package/esm/_internal/TableRow.js +2 -4
  54. package/esm/_internal/TableRow.js.map +1 -1
  55. package/esm/_internal/TextField.js +2 -3
  56. package/esm/_internal/TextField.js.map +1 -1
  57. package/esm/_internal/Thumbnail2.js +6 -3
  58. package/esm/_internal/Thumbnail2.js.map +1 -1
  59. package/esm/_internal/Tooltip2.js +145 -12
  60. package/esm/_internal/Tooltip2.js.map +1 -1
  61. package/esm/_internal/alert-dialog.js +4 -5
  62. package/esm/_internal/alert-dialog.js.map +1 -1
  63. package/esm/_internal/autocomplete.js +6 -8
  64. package/esm/_internal/autocomplete.js.map +1 -1
  65. package/esm/_internal/avatar.js +3 -3
  66. package/esm/_internal/badge.js +2 -1
  67. package/esm/_internal/badge.js.map +1 -1
  68. package/esm/_internal/button.js +5 -5
  69. package/esm/_internal/checkbox.js +4 -4
  70. package/esm/_internal/chip.js +2 -2
  71. package/esm/_internal/comment-block.js +3 -3
  72. package/esm/_internal/constants.js.map +1 -1
  73. package/esm/_internal/date-picker.js +5 -6
  74. package/esm/_internal/date-picker.js.map +1 -1
  75. package/esm/_internal/dialog.js +2 -2
  76. package/esm/_internal/divider.js +2 -1
  77. package/esm/_internal/divider.js.map +1 -1
  78. package/esm/_internal/drag-handle.js +3 -3
  79. package/esm/_internal/dropdown.js +3 -4
  80. package/esm/_internal/dropdown.js.map +1 -1
  81. package/esm/_internal/expansion-panel.js +5 -6
  82. package/esm/_internal/expansion-panel.js.map +1 -1
  83. package/esm/_internal/flag.js +3 -2
  84. package/esm/_internal/flag.js.map +1 -1
  85. package/esm/_internal/flex-box.js +2 -1
  86. package/esm/_internal/flex-box.js.map +1 -1
  87. package/esm/_internal/getRootClassName.js +166 -40
  88. package/esm/_internal/getRootClassName.js.map +1 -1
  89. package/esm/_internal/grid.js +2 -1
  90. package/esm/_internal/grid.js.map +1 -1
  91. package/esm/_internal/icon.js +3 -2
  92. package/esm/_internal/icon.js.map +1 -1
  93. package/esm/_internal/image-block.js +3 -3
  94. package/esm/_internal/input-helper.js +2 -1
  95. package/esm/_internal/input-helper.js.map +1 -1
  96. package/esm/_internal/input-label.js +2 -1
  97. package/esm/_internal/input-label.js.map +1 -1
  98. package/esm/_internal/lightbox.js +5 -6
  99. package/esm/_internal/lightbox.js.map +1 -1
  100. package/esm/_internal/link-preview.js +3 -3
  101. package/esm/_internal/link.js +3 -2
  102. package/esm/_internal/link.js.map +1 -1
  103. package/esm/_internal/list.js +3 -3
  104. package/esm/_internal/message.js +3 -3
  105. package/esm/_internal/mosaic.js +3 -3
  106. package/esm/_internal/notification.js +3 -3
  107. package/esm/_internal/popover.js +2 -2
  108. package/esm/_internal/post-block.js +3 -3
  109. package/esm/_internal/progress-tracker.js +4 -4
  110. package/esm/_internal/progress.js +2 -1
  111. package/esm/_internal/progress.js.map +1 -1
  112. package/esm/_internal/radio-button.js +3 -2
  113. package/esm/_internal/radio-button.js.map +1 -1
  114. package/esm/_internal/select.js +6 -8
  115. package/esm/_internal/select.js.map +1 -1
  116. package/esm/_internal/side-navigation.js +5 -7
  117. package/esm/_internal/side-navigation.js.map +1 -1
  118. package/esm/_internal/skeleton.js +2 -1
  119. package/esm/_internal/skeleton.js.map +1 -1
  120. package/esm/_internal/slider.js +3 -2
  121. package/esm/_internal/slider.js.map +1 -1
  122. package/esm/_internal/slideshow.js +6 -8
  123. package/esm/_internal/slideshow.js.map +1 -1
  124. package/esm/_internal/switch.js +3 -2
  125. package/esm/_internal/switch.js.map +1 -1
  126. package/esm/_internal/table.js +3 -4
  127. package/esm/_internal/table.js.map +1 -1
  128. package/esm/_internal/tabs.js +4 -3
  129. package/esm/_internal/tabs.js.map +1 -1
  130. package/esm/_internal/text-field.js +5 -6
  131. package/esm/_internal/text-field.js.map +1 -1
  132. package/esm/_internal/thumbnail.js +3 -3
  133. package/esm/_internal/toolbar.js +2 -1
  134. package/esm/_internal/toolbar.js.map +1 -1
  135. package/esm/_internal/tooltip.js +4 -4
  136. package/esm/_internal/uploader.js +3 -2
  137. package/esm/_internal/uploader.js.map +1 -1
  138. package/esm/_internal/useDelayedVisibility.js.map +1 -1
  139. package/esm/_internal/useDisableBodyScroll.js.map +1 -1
  140. package/esm/_internal/useFocusTrap.js.map +1 -1
  141. package/esm/_internal/useRovingTabIndex.js +1 -1
  142. package/esm/_internal/useRovingTabIndex.js.map +1 -1
  143. package/esm/_internal/user-block.js +3 -3
  144. package/esm/index.js +7 -10
  145. package/esm/index.js.map +1 -1
  146. package/esm/{_internal/index.js → index2.js} +1 -1
  147. package/esm/index2.js.map +1 -0
  148. package/package.json +4 -4
  149. package/src/components/autocomplete/Autocomplete.tsx +1 -1
  150. package/src/components/button/__snapshots__/IconButton.test.tsx.snap +5 -0
  151. package/src/components/chip/Chip.tsx +1 -1
  152. package/src/components/chip/ChipGroup.tsx +1 -1
  153. package/src/components/date-picker/DatePickerField.tsx +2 -2
  154. package/src/components/dialog/Dialog.test.tsx +1 -1
  155. package/src/components/dialog/Dialog.tsx +5 -5
  156. package/src/components/dropdown/Dropdown.tsx +1 -1
  157. package/src/components/icon/Icon.tsx +5 -0
  158. package/src/components/lightbox/Lightbox.tsx +4 -4
  159. package/src/components/link-preview/LinkPreview.tsx +1 -1
  160. package/src/components/link-preview/__snapshots__/LinkPreview.test.tsx.snap +2 -2
  161. package/src/components/list/List.tsx +1 -1
  162. package/src/components/message/Message.tsx +3 -1
  163. package/src/components/mosaic/Mosaic.test.tsx +1 -1
  164. package/src/components/notification/Notification.tsx +1 -1
  165. package/src/components/popover/Popover.tsx +2 -2
  166. package/src/components/progress-tracker/ProgressTracker.tsx +1 -1
  167. package/src/components/select/Select.stories.tsx +1 -1
  168. package/src/components/select/SelectMultiple.stories.tsx +1 -1
  169. package/src/components/select/WithSelectContext.tsx +1 -1
  170. package/src/components/slider/Slider.tsx +1 -1
  171. package/src/components/slideshow/Slideshow.tsx +1 -1
  172. package/src/components/slideshow/useSwipeNavigate.ts +1 -1
  173. package/src/components/tabs/TabList.tsx +4 -4
  174. package/src/components/thumbnail/Thumbnail.tsx +7 -1
  175. package/src/components/tooltip/Tooltip.tsx +4 -7
  176. package/src/components/tooltip/useTooltipOpen.tsx +112 -0
  177. package/src/constants.ts +1 -7
  178. package/src/{_internal/hooks → hooks}/useBooleanState.tsx +0 -0
  179. package/src/{_internal/hooks → hooks}/useCallbackOnEscape.ts +0 -0
  180. package/src/{_internal/hooks → hooks}/useChipGroupNavigation.tsx +0 -0
  181. package/src/{_internal/hooks → hooks}/useClickAway.tsx +0 -0
  182. package/src/{_internal/hooks → hooks}/useDelayedVisibility.tsx +0 -0
  183. package/src/{_internal/hooks → hooks}/useDisableBodyScroll.ts +0 -0
  184. package/src/{_internal/hooks → hooks}/useEventCallback.tsx +0 -0
  185. package/src/{_internal/hooks → hooks}/useFocus.tsx +0 -0
  186. package/src/{_internal/hooks → hooks}/useFocusTrap.ts +0 -0
  187. package/src/{_internal/hooks → hooks}/useInfiniteScroll.tsx +0 -0
  188. package/src/{_internal/hooks → hooks}/useIntersectionObserver.tsx +0 -0
  189. package/src/{_internal/hooks → hooks}/useInterval.tsx +1 -1
  190. package/src/{_internal/hooks → hooks}/useKeyboardListNavigation.tsx +0 -0
  191. package/src/{_internal/hooks → hooks}/useListenFocus.tsx +0 -0
  192. package/src/{_internal/hooks → hooks}/useOnResize.ts +0 -0
  193. package/src/{_internal/hooks → hooks}/useRovingTabIndex.tsx +0 -0
  194. package/src/{_internal/hooks → hooks}/useStopPropagation.ts +0 -0
  195. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +1 -1
  196. package/types.d.ts +2 -2
  197. package/esm/_internal/index.js.map +0 -1
  198. package/esm/_internal/mdi.js +0 -22
  199. package/esm/_internal/mdi.js.map +0 -1
  200. package/esm/_internal/onEnterPressed.js +0 -20
  201. package/esm/_internal/onEnterPressed.js.map +0 -1
  202. package/esm/_internal/onEscapePressed.js +0 -20
  203. package/esm/_internal/onEscapePressed.js.map +0 -1
  204. package/esm/hooks/useOpenHoverOrLongPress.js +0 -172
  205. package/esm/hooks/useOpenHoverOrLongPress.js.map +0 -1
  206. package/src/hooks/useOpenHoverOrLongPress.ts +0 -140
  207. package/src/utils/browserDoesNotSupportHover.test.js +0 -24
  208. package/src/utils/browserDoesNotSupportHover.ts +0 -2
@@ -1,112 +1,14 @@
1
- import { d as _slicedToArray, b as _objectWithoutProperties, c as _extends, a as _defineProperty } from './_rollupPluginBabelHelpers.js';
1
+ import { b as _objectWithoutProperties, d as _slicedToArray, c as _extends, a as _defineProperty } from './_rollupPluginBabelHelpers.js';
2
2
  import { Theme, Emphasis } from './components.js';
3
3
  import React, { useRef, useEffect, forwardRef, useState, useCallback, useMemo } from 'react';
4
- import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './getRootClassName.js';
5
- import { g as mdiChevronLeft, f as mdiChevronRight } from './mdi.js';
6
- import noop from 'lodash/noop';
4
+ import { g as getRootClassName, c as classnames, h as handleBasicClasses, e as detectHorizontalSwipe } from './getRootClassName.js';
5
+ import { g as mdiChevronLeft, f as mdiChevronRight } from './Icon2.js';
7
6
  import { W as WINDOW } from './constants.js';
8
7
  import { m as mergeRefs } from './mergeRefs.js';
9
8
  import { I as IconButton } from './IconButton.js';
10
9
  import isFunction from 'lodash/isFunction';
11
10
  import range from 'lodash/range';
12
11
 
13
- /**
14
- * Checks whether or not the browser support passive events.
15
- * @see https://github.com/Modernizr/Modernizr/blob/6d56d814b9682843313b16060adb25a58d83a317/feature-detects/dom/passiveeventlisteners.js
16
- */
17
-
18
- function isPassiveEventAvailable() {
19
- var supportsPassiveOption = false;
20
-
21
- try {
22
- var opts = Object.defineProperty({}, 'passive', {
23
- get: function get() {
24
- supportsPassiveOption = true;
25
- }
26
- });
27
- window.addEventListener('testPassiveEventSupport', noop, opts);
28
- window.removeEventListener('testPassiveEventSupport', noop, opts);
29
- } catch (e) {// ignored
30
- }
31
-
32
- return supportsPassiveOption;
33
- }
34
-
35
- /**
36
- * Detects horizontal swipe direction without blocking the browser scroll using passive event.
37
- * @see http://javascriptkit.com/javatutors/touchevents2.shtml
38
- * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
39
- */
40
-
41
- function detectHorizontalSwipe(touchSurface, handleSwipe) {
42
- var startX;
43
- var startY; // Required min distance traveled to be considered swipe.
44
-
45
- var threshold = 150; // Maximum distance allowed at the same time in perpendicular direction.
46
-
47
- var restraint = 150; // Maximum time allowed to travel that distance.
48
-
49
- var allowedTime = 300;
50
- var elapsedTime;
51
- var startTime;
52
- var finished;
53
-
54
- var onTouchStart = function onTouchStart(evt) {
55
- var _Array$from = Array.from(evt.changedTouches),
56
- _Array$from2 = _slicedToArray(_Array$from, 1),
57
- touch = _Array$from2[0];
58
-
59
- startX = touch.pageX;
60
- startY = touch.pageY; // Record time when finger first makes contact with surface.
61
-
62
- startTime = new Date().getTime();
63
- finished = false;
64
- };
65
-
66
- var onTouchMove = function onTouchMove(evt) {
67
- if (finished) {
68
- return;
69
- }
70
-
71
- elapsedTime = new Date().getTime() - startTime;
72
-
73
- if (elapsedTime > allowedTime) {
74
- // Touch swipe too long to be considered.
75
- return;
76
- }
77
-
78
- var _Array$from3 = Array.from(evt.changedTouches),
79
- _Array$from4 = _slicedToArray(_Array$from3, 1),
80
- touch = _Array$from4[0]; // Get horizontal dist traveled by finger while in contact with surface.
81
-
82
-
83
- var distX = touch.pageX - startX; // Get vertical dist traveled by finger while in contact with surface.
84
-
85
- var distY = touch.pageY - startY;
86
-
87
- if (!(Math.abs(distX) >= threshold && Math.abs(distY) <= restraint)) {
88
- // Swipe is not horizontal.
89
- return;
90
- } // Swipe direction.
91
-
92
-
93
- var direction = distX < 0 ? 'left' : 'right';
94
- handleSwipe(direction);
95
- finished = true;
96
- }; // Activate passive event if possible for better scrolling performance.
97
-
98
-
99
- var eventOptions = isPassiveEventAvailable() ? {
100
- passive: true
101
- } : false;
102
- touchSurface.addEventListener('touchstart', onTouchStart, eventOptions);
103
- touchSurface.addEventListener('touchmove', onTouchMove, eventOptions);
104
- return function () {
105
- touchSurface.removeEventListener('touchstart', onTouchStart, eventOptions);
106
- touchSurface.removeEventListener('touchmove', onTouchMove, eventOptions);
107
- };
108
- }
109
-
110
12
  /**
111
13
  * Autoplay default interval in ms.
112
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SlideshowControls.js","sources":["../../../../lumx-core/src/js/utils/isPassiveEventAvailable.ts","../../../../lumx-core/src/js/utils/detectHorizontalSwipe.ts","../../../src/components/slideshow/constants.ts","../../../src/_internal/hooks/useInterval.tsx","../../../src/components/slideshow/Slideshow.tsx","../../../src/components/slideshow/SlideshowItem.tsx","../../../src/components/slideshow/useSwipeNavigate.ts","../../../src/components/slideshow/useKeyNavigate.ts","../../../src/components/slideshow/usePaginationVisibleRange.ts","../../../src/components/slideshow/SlideshowControls.tsx"],"sourcesContent":["import noop from 'lodash/noop';\n\n/**\n * Checks whether or not the browser support passive events.\n * @see https://github.com/Modernizr/Modernizr/blob/6d56d814b9682843313b16060adb25a58d83a317/feature-detects/dom/passiveeventlisteners.js\n */\nexport function isPassiveEventAvailable() {\n let supportsPassiveOption = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get() {\n supportsPassiveOption = true;\n },\n });\n window.addEventListener('testPassiveEventSupport', noop, opts);\n window.removeEventListener('testPassiveEventSupport', noop, opts);\n } catch (e) {\n // ignored\n }\n return supportsPassiveOption;\n}\n","import { isPassiveEventAvailable } from './isPassiveEventAvailable';\n\n/**\n * Detects horizontal swipe direction without blocking the browser scroll using passive event.\n * @see http://javascriptkit.com/javatutors/touchevents2.shtml\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function detectHorizontalSwipe(touchSurface: Element, handleSwipe: (direction: 'right' | 'left') => void) {\n let startX: number;\n let startY: number;\n // Required min distance traveled to be considered swipe.\n const threshold = 150;\n // Maximum distance allowed at the same time in perpendicular direction.\n const restraint = 150;\n // Maximum time allowed to travel that distance.\n const allowedTime = 300;\n let elapsedTime: number;\n let startTime: number;\n let finished: boolean;\n\n const onTouchStart = (evt: Event) => {\n const [touch] = Array.from((evt as TouchEvent).changedTouches);\n startX = touch.pageX;\n startY = touch.pageY;\n // Record time when finger first makes contact with surface.\n startTime = new Date().getTime();\n finished = false;\n };\n\n const onTouchMove = (evt: Event) => {\n if (finished) {\n return;\n }\n\n elapsedTime = new Date().getTime() - startTime;\n if (elapsedTime > allowedTime) {\n // Touch swipe too long to be considered.\n return;\n }\n\n const [touch] = Array.from((evt as TouchEvent).changedTouches);\n // Get horizontal dist traveled by finger while in contact with surface.\n const distX = touch.pageX - startX;\n // Get vertical dist traveled by finger while in contact with surface.\n const distY = touch.pageY - startY;\n\n if (!(Math.abs(distX) >= threshold && Math.abs(distY) <= restraint)) {\n // Swipe is not horizontal.\n return;\n }\n // Swipe direction.\n const direction = distX < 0 ? 'left' : 'right';\n\n handleSwipe(direction);\n finished = true;\n };\n\n // Activate passive event if possible for better scrolling performance.\n const eventOptions: any = isPassiveEventAvailable() ? { passive: true } : false;\n touchSurface.addEventListener('touchstart', onTouchStart, eventOptions);\n touchSurface.addEventListener('touchmove', onTouchMove, eventOptions);\n\n return () => {\n touchSurface.removeEventListener('touchstart', onTouchStart, eventOptions);\n touchSurface.removeEventListener('touchmove', onTouchMove, eventOptions);\n };\n}\n","/**\n * Autoplay default interval in ms.\n */\nexport const AUTOPLAY_DEFAULT_INTERVAL = 5000;\n\n/**\n * Full width size in percent.\n */\nexport const FULL_WIDTH_PERCENT = 100;\n\n/**\n * Edge from the active index.\n */\nexport const EDGE_FROM_ACTIVE_INDEX = 2;\n\n/**\n * Max number of pagination items.\n */\nexport const PAGINATION_ITEMS_MAX = 5;\n\n/**\n * Size of a pagination item. Used to translate wrapper.\n */\nexport const PAGINATION_ITEM_SIZE = 12;\n","import { useEffect, useRef } from 'react';\n\nimport isFunction from 'lodash/isFunction';\nimport { Callback } from '../../utils';\n\n/**\n * Making setInterval Declarative with React Hooks.\n * Credits: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n *\n * @param callback Function called by setInterval.\n * @param delay Delay for setInterval.\n */\nexport function useInterval(callback: Callback, delay: number | null): void {\n const savedCallback = useRef<Callback>();\n\n useEffect(() => {\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n if (delay === null) return undefined;\n\n function tick() {\n if (isFunction(savedCallback.current)) {\n savedCallback.current();\n }\n }\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n","import React, { CSSProperties, forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SlideshowControls, SlideshowControlsProps, Theme } from '@lumx/react';\n\nimport { AUTOPLAY_DEFAULT_INTERVAL, FULL_WIDTH_PERCENT } from '@lumx/react/components/slideshow/constants';\nimport { useInterval } from '@lumx/react/_internal/hooks/useInterval';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowProps extends GenericProps {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */\n slideshowControlsProps?: Pick<SlideshowControlsProps, 'nextButtonProps' | 'previousButtonProps'> &\n Omit<\n SlideshowControlsProps,\n | 'activeIndex'\n | 'onPaginationClick'\n | 'onNextClick'\n | 'onPreviousClick'\n | 'slidesCount'\n | 'parentRef'\n | 'theme'\n >;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Callback when slide changes */\n onChange?(index: number): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Slideshow';\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<SlideshowProps> = {\n activeIndex: 0,\n groupBy: 1,\n interval: AUTOPLAY_DEFAULT_INTERVAL,\n theme: Theme.light,\n};\n\n/**\n * Slideshow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slideshow: Comp<SlideshowProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n activeIndex,\n autoPlay,\n children,\n className,\n fillHeight,\n groupBy,\n interval,\n onChange,\n slideshowControlsProps,\n theme,\n ...forwardedProps\n } = props;\n const [currentIndex, setCurrentIndex] = useState(activeIndex as number);\n // Use state instead of a ref to make the slideshow controls update directly when the element is set.\n const [element, setElement] = useState<HTMLDivElement>();\n\n // Number of slideshow items.\n const itemsCount = React.Children.count(children);\n // Number of slides when using groupBy prop.\n const slidesCount = Math.ceil(itemsCount / Math.min(groupBy as number, itemsCount));\n // Inline style of wrapper element.\n const wrapperStyle: CSSProperties = { transform: `translateX(-${FULL_WIDTH_PERCENT * currentIndex}%)` };\n\n // Change current index to display next slide.\n const goToNextSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === slidesCount - 1) {\n // Loopback to the start.\n return 0;\n }\n if (index < slidesCount - 1) {\n // Next slide.\n return index + 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Change current index to display previous slide.\n const goToPreviousSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === 0) {\n // Loopback to the end.\n return slidesCount - 1;\n }\n if (index > 0) {\n // Previous slide.\n return index - 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Auto play\n const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));\n // Start\n useInterval(goToNextSlide, isAutoPlaying && slidesCount > 1 ? (interval as number) : null);\n\n // Reset current index if it become invalid.\n useEffect(() => {\n if (currentIndex > slidesCount - 1) {\n setCurrentIndex(DEFAULT_PROPS.activeIndex as number);\n }\n }, [currentIndex, slidesCount]);\n\n // Handle click on a bullet to go to a specific slide.\n const handleControlGotToSlide = useCallback(\n (index: number) => {\n setIsAutoPlaying(false);\n\n if (index >= 0 && index < slidesCount) {\n setCurrentIndex(index);\n }\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Handle click or keyboard event to go to next slide.\n const handleControlNextSlide = useCallback(\n (loopback = true) => {\n setIsAutoPlaying(false);\n goToNextSlide(loopback);\n },\n [goToNextSlide],\n );\n\n // Handle click or keyboard event to go to previous slide.\n const handleControlPreviousSlide = useCallback(\n (loopback = true) => {\n setIsAutoPlaying(false);\n goToPreviousSlide(loopback);\n },\n [goToPreviousSlide],\n );\n\n // If the activeIndex props changes, update the current slide\n useEffect(() => {\n setCurrentIndex(activeIndex as number);\n }, [activeIndex]);\n\n // If the slide changes, with autoplay for example, trigger \"onChange\"\n useEffect(() => {\n if (!onChange) return;\n onChange(currentIndex);\n }, [currentIndex, onChange]);\n\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <div\n ref={mergeRefs(ref, setElement)}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--fill-height`]: fillHeight,\n [`${CLASSNAME}--group-by-${groupBy}`]: Boolean(groupBy),\n })}\n tabIndex={0}\n >\n <div className={`${CLASSNAME}__slides`}>\n <div className={`${CLASSNAME}__wrapper`} style={wrapperStyle}>\n {children}\n </div>\n </div>\n\n {slideshowControlsProps && slidesCount > 1 && (\n <div className={`${CLASSNAME}__controls`}>\n <SlideshowControls\n {...slideshowControlsProps}\n activeIndex={currentIndex}\n onPaginationClick={handleControlGotToSlide}\n onNextClick={handleControlNextSlide}\n onPreviousClick={handleControlPreviousSlide}\n slidesCount={slidesCount}\n parentRef={element}\n theme={theme}\n />\n </div>\n )}\n </div>\n );\n});\nSlideshow.displayName = COMPONENT_NAME;\nSlideshow.className = CLASSNAME;\nSlideshow.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport type SlideshowItemProps = GenericProps;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowItem';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SlideshowItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowItem: Comp<SlideshowItemProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { className, children, ...forwardedProps } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n }),\n )}\n >\n {children}\n </div>\n );\n});\nSlideshowItem.displayName = COMPONENT_NAME;\nSlideshowItem.className = CLASSNAME;\n","import { useEffect } from 'react';\nimport { detectHorizontalSwipe } from '@lumx/core/js/utils/detectHorizontalSwipe';\n\nconst isTouchDevice = () => 'ontouchstart' in window;\n\n/**\n * Listen swipe to navigate left and right.\n */\nexport function useSwipeNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {\n useEffect(() => {\n if (!element || !isTouchDevice()) return undefined;\n\n return detectHorizontalSwipe(element, (swipe) => {\n const callback = swipe === 'right' ? onPrevious : onNext;\n callback?.();\n });\n }, [onPrevious, onNext, element]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Listen keyboard to navigate left and right.\n */\nexport function useKeyNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {\n useEffect(() => {\n if (!element) return undefined;\n const onKeyNavigate = (evt: KeyboardEvent) => {\n let callback;\n if (evt?.key === 'ArrowRight') {\n callback = onNext;\n } else if (evt?.key === 'ArrowLeft') {\n callback = onPrevious;\n }\n if (!callback) return;\n\n callback();\n evt.preventDefault();\n evt.stopPropagation();\n };\n\n element.addEventListener('keydown', onKeyNavigate);\n return () => {\n element.removeEventListener('keydown', onKeyNavigate);\n };\n }, [onPrevious, onNext, element]);\n}\n","import { useMemo, useRef } from 'react';\nimport { EDGE_FROM_ACTIVE_INDEX, PAGINATION_ITEMS_MAX } from '@lumx/react/components/slideshow/constants';\n\ntype Range = { min: number; max: number };\n\n/**\n * Calculate the currently visible pagination \"bullet\" range.\n */\nexport function usePaginationVisibleRange(activeIndex: number, slideCount: number): Range {\n const previousVisibleRangeRef = useRef<Range>();\n return useMemo(() => {\n const lastSlide = slideCount - 1;\n const { current: previousVisibleRange } = previousVisibleRangeRef;\n let newVisibleRange: Range;\n if (activeIndex === previousVisibleRange?.max && activeIndex < lastSlide) {\n newVisibleRange = { min: previousVisibleRange.min + 1, max: previousVisibleRange.max + 1 };\n } else if (activeIndex === previousVisibleRange?.min && activeIndex > 0) {\n newVisibleRange = { min: previousVisibleRange.min - 1, max: previousVisibleRange.max - 1 };\n } else {\n const deltaItems = PAGINATION_ITEMS_MAX - 1;\n let min = activeIndex - EDGE_FROM_ACTIVE_INDEX;\n let max = activeIndex + EDGE_FROM_ACTIVE_INDEX;\n\n if (activeIndex > lastSlide - EDGE_FROM_ACTIVE_INDEX) {\n min = lastSlide - deltaItems;\n max = lastSlide;\n } else if (activeIndex < deltaItems) {\n min = 0;\n max = deltaItems;\n }\n\n newVisibleRange = { min, max };\n }\n previousVisibleRangeRef.current = newVisibleRange;\n return newVisibleRange;\n }, [activeIndex, slideCount]);\n}\n","import React, { forwardRef, RefObject, useCallback, useMemo } from 'react';\n\nimport classNames from 'classnames';\nimport range from 'lodash/range';\n\nimport { mdiChevronLeft, mdiChevronRight } from '@lumx/icons';\nimport { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\nimport { WINDOW } from '@lumx/react/constants';\n\nimport { useSwipeNavigate } from './useSwipeNavigate';\nimport { useKeyNavigate } from './useKeyNavigate';\nimport { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';\nimport { usePaginationVisibleRange } from './usePaginationVisibleRange';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowControlsProps extends GenericProps {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Props to pass to the next button (minus those already set by the SlideshowControls props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Reference to the parent element on which we want to listen touch swipe. */\n parentRef?: RefObject<HTMLDivElement> | HTMLDivElement;\n /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Number of slides. */\n slidesCount: number;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** On next button click callback. */\n onNextClick?(loopback?: boolean): void;\n /** On pagination change callback. */\n onPaginationClick?(index: number): void;\n /** On previous button click callback. */\n onPreviousClick?(loopback?: boolean): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowControls';\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<SlideshowControlsProps> = {\n activeIndex: 0,\n theme: Theme.light,\n};\n\n/**\n * SlideshowControls component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n activeIndex,\n className,\n nextButtonProps,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n parentRef,\n previousButtonProps,\n slidesCount,\n theme,\n ...forwardedProps\n } = props;\n\n let parent;\n if (WINDOW) {\n // Checking window object to avoid errors in SSR.\n parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;\n }\n // Listen to keyboard navigate left & right.\n useKeyNavigate(parent, onNextClick, onPreviousClick);\n // Listen to touch swipe navigate left & right.\n useSwipeNavigate(\n parent,\n // Go next without loopback.\n useCallback(() => onNextClick?.(false), [onNextClick]),\n // Go previous without loopback.\n useCallback(() => onPreviousClick?.(false), [onPreviousClick]),\n );\n\n // Pagination \"bullet\" range.\n const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);\n\n // Inline style of wrapper element.\n const wrapperStyle = { transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)` };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX,\n })}\n >\n <IconButton\n {...previousButtonProps}\n icon={mdiChevronLeft}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onPreviousClick}\n tabIndex={-1}\n />\n <div className={`${CLASSNAME}__pagination`}>\n <div className={`${CLASSNAME}__pagination-items`} style={wrapperStyle}>\n {useMemo(\n () =>\n range(slidesCount).map((index) => {\n const isOnEdge =\n index !== 0 &&\n index !== slidesCount - 1 &&\n (index === visibleRange.min || index === visibleRange.max);\n const isActive = activeIndex === index;\n const isOutRange = index < visibleRange.min || index > visibleRange.max;\n return (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <button\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__pagination-item`,\n isActive,\n isOnEdge,\n isOutRange,\n }),\n )}\n key={index}\n type=\"button\"\n onClick={() => onPaginationClick?.(index)}\n tabIndex={-1}\n />\n );\n }),\n [slidesCount, visibleRange.min, visibleRange.max, activeIndex, onPaginationClick],\n )}\n </div>\n </div>\n <IconButton\n {...nextButtonProps}\n icon={mdiChevronRight}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onNextClick}\n tabIndex={-1}\n />\n </div>\n );\n});\nSlideshowControls.displayName = COMPONENT_NAME;\nSlideshowControls.className = CLASSNAME;\nSlideshowControls.defaultProps = DEFAULT_PROPS;\n"],"names":["isPassiveEventAvailable","supportsPassiveOption","opts","Object","defineProperty","get","window","addEventListener","noop","removeEventListener","e","detectHorizontalSwipe","touchSurface","handleSwipe","startX","startY","threshold","restraint","allowedTime","elapsedTime","startTime","finished","onTouchStart","evt","Array","from","changedTouches","touch","pageX","pageY","Date","getTime","onTouchMove","distX","distY","Math","abs","direction","eventOptions","passive","AUTOPLAY_DEFAULT_INTERVAL","FULL_WIDTH_PERCENT","EDGE_FROM_ACTIVE_INDEX","PAGINATION_ITEMS_MAX","PAGINATION_ITEM_SIZE","useInterval","callback","delay","savedCallback","useRef","useEffect","current","undefined","tick","isFunction","id","setInterval","clearInterval","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","activeIndex","groupBy","interval","theme","Theme","light","Slideshow","forwardRef","props","ref","autoPlay","children","className","fillHeight","onChange","slideshowControlsProps","forwardedProps","useState","currentIndex","setCurrentIndex","element","setElement","itemsCount","React","Children","count","slidesCount","ceil","min","wrapperStyle","transform","goToNextSlide","useCallback","loopback","index","goToPreviousSlide","Boolean","isAutoPlaying","setIsAutoPlaying","handleControlGotToSlide","handleControlNextSlide","handleControlPreviousSlide","mergeRefs","classNames","handleBasicClasses","prefix","displayName","defaultProps","SlideshowItem","isTouchDevice","useSwipeNavigate","onNext","onPrevious","swipe","useKeyNavigate","onKeyNavigate","key","preventDefault","stopPropagation","usePaginationVisibleRange","slideCount","previousVisibleRangeRef","useMemo","lastSlide","previousVisibleRange","newVisibleRange","max","deltaItems","SlideshowControls","nextButtonProps","onNextClick","onPaginationClick","onPreviousClick","parentRef","previousButtonProps","parent","WINDOW","HTMLElement","visibleRange","mdiChevronLeft","dark","Emphasis","low","range","map","isOnEdge","isActive","isOutRange","mdiChevronRight"],"mappings":"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"}
1
+ {"version":3,"file":"SlideshowControls.js","sources":["../../../src/components/slideshow/constants.ts","../../../src/hooks/useInterval.tsx","../../../src/components/slideshow/Slideshow.tsx","../../../src/components/slideshow/SlideshowItem.tsx","../../../src/components/slideshow/useSwipeNavigate.ts","../../../src/components/slideshow/useKeyNavigate.ts","../../../src/components/slideshow/usePaginationVisibleRange.ts","../../../src/components/slideshow/SlideshowControls.tsx"],"sourcesContent":["/**\n * Autoplay default interval in ms.\n */\nexport const AUTOPLAY_DEFAULT_INTERVAL = 5000;\n\n/**\n * Full width size in percent.\n */\nexport const FULL_WIDTH_PERCENT = 100;\n\n/**\n * Edge from the active index.\n */\nexport const EDGE_FROM_ACTIVE_INDEX = 2;\n\n/**\n * Max number of pagination items.\n */\nexport const PAGINATION_ITEMS_MAX = 5;\n\n/**\n * Size of a pagination item. Used to translate wrapper.\n */\nexport const PAGINATION_ITEM_SIZE = 12;\n","import { useEffect, useRef } from 'react';\n\nimport isFunction from 'lodash/isFunction';\nimport { Callback } from '../utils';\n\n/**\n * Making setInterval Declarative with React Hooks.\n * Credits: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n *\n * @param callback Function called by setInterval.\n * @param delay Delay for setInterval.\n */\nexport function useInterval(callback: Callback, delay: number | null): void {\n const savedCallback = useRef<Callback>();\n\n useEffect(() => {\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n if (delay === null) return undefined;\n\n function tick() {\n if (isFunction(savedCallback.current)) {\n savedCallback.current();\n }\n }\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n","import React, { CSSProperties, forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SlideshowControls, SlideshowControlsProps, Theme } from '@lumx/react';\n\nimport { AUTOPLAY_DEFAULT_INTERVAL, FULL_WIDTH_PERCENT } from '@lumx/react/components/slideshow/constants';\nimport { useInterval } from '@lumx/react/hooks/useInterval';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowProps extends GenericProps {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */\n slideshowControlsProps?: Pick<SlideshowControlsProps, 'nextButtonProps' | 'previousButtonProps'> &\n Omit<\n SlideshowControlsProps,\n | 'activeIndex'\n | 'onPaginationClick'\n | 'onNextClick'\n | 'onPreviousClick'\n | 'slidesCount'\n | 'parentRef'\n | 'theme'\n >;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Callback when slide changes */\n onChange?(index: number): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Slideshow';\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<SlideshowProps> = {\n activeIndex: 0,\n groupBy: 1,\n interval: AUTOPLAY_DEFAULT_INTERVAL,\n theme: Theme.light,\n};\n\n/**\n * Slideshow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slideshow: Comp<SlideshowProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n activeIndex,\n autoPlay,\n children,\n className,\n fillHeight,\n groupBy,\n interval,\n onChange,\n slideshowControlsProps,\n theme,\n ...forwardedProps\n } = props;\n const [currentIndex, setCurrentIndex] = useState(activeIndex as number);\n // Use state instead of a ref to make the slideshow controls update directly when the element is set.\n const [element, setElement] = useState<HTMLDivElement>();\n\n // Number of slideshow items.\n const itemsCount = React.Children.count(children);\n // Number of slides when using groupBy prop.\n const slidesCount = Math.ceil(itemsCount / Math.min(groupBy as number, itemsCount));\n // Inline style of wrapper element.\n const wrapperStyle: CSSProperties = { transform: `translateX(-${FULL_WIDTH_PERCENT * currentIndex}%)` };\n\n // Change current index to display next slide.\n const goToNextSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === slidesCount - 1) {\n // Loopback to the start.\n return 0;\n }\n if (index < slidesCount - 1) {\n // Next slide.\n return index + 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Change current index to display previous slide.\n const goToPreviousSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === 0) {\n // Loopback to the end.\n return slidesCount - 1;\n }\n if (index > 0) {\n // Previous slide.\n return index - 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Auto play\n const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));\n // Start\n useInterval(goToNextSlide, isAutoPlaying && slidesCount > 1 ? (interval as number) : null);\n\n // Reset current index if it become invalid.\n useEffect(() => {\n if (currentIndex > slidesCount - 1) {\n setCurrentIndex(DEFAULT_PROPS.activeIndex as number);\n }\n }, [currentIndex, slidesCount]);\n\n // Handle click on a bullet to go to a specific slide.\n const handleControlGotToSlide = useCallback(\n (index: number) => {\n setIsAutoPlaying(false);\n\n if (index >= 0 && index < slidesCount) {\n setCurrentIndex(index);\n }\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Handle click or keyboard event to go to next slide.\n const handleControlNextSlide = useCallback(\n (loopback = true) => {\n setIsAutoPlaying(false);\n goToNextSlide(loopback);\n },\n [goToNextSlide],\n );\n\n // Handle click or keyboard event to go to previous slide.\n const handleControlPreviousSlide = useCallback(\n (loopback = true) => {\n setIsAutoPlaying(false);\n goToPreviousSlide(loopback);\n },\n [goToPreviousSlide],\n );\n\n // If the activeIndex props changes, update the current slide\n useEffect(() => {\n setCurrentIndex(activeIndex as number);\n }, [activeIndex]);\n\n // If the slide changes, with autoplay for example, trigger \"onChange\"\n useEffect(() => {\n if (!onChange) return;\n onChange(currentIndex);\n }, [currentIndex, onChange]);\n\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <div\n ref={mergeRefs(ref, setElement)}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--fill-height`]: fillHeight,\n [`${CLASSNAME}--group-by-${groupBy}`]: Boolean(groupBy),\n })}\n tabIndex={0}\n >\n <div className={`${CLASSNAME}__slides`}>\n <div className={`${CLASSNAME}__wrapper`} style={wrapperStyle}>\n {children}\n </div>\n </div>\n\n {slideshowControlsProps && slidesCount > 1 && (\n <div className={`${CLASSNAME}__controls`}>\n <SlideshowControls\n {...slideshowControlsProps}\n activeIndex={currentIndex}\n onPaginationClick={handleControlGotToSlide}\n onNextClick={handleControlNextSlide}\n onPreviousClick={handleControlPreviousSlide}\n slidesCount={slidesCount}\n parentRef={element}\n theme={theme}\n />\n </div>\n )}\n </div>\n );\n});\nSlideshow.displayName = COMPONENT_NAME;\nSlideshow.className = CLASSNAME;\nSlideshow.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport type SlideshowItemProps = GenericProps;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowItem';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SlideshowItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowItem: Comp<SlideshowItemProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { className, children, ...forwardedProps } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n }),\n )}\n >\n {children}\n </div>\n );\n});\nSlideshowItem.displayName = COMPONENT_NAME;\nSlideshowItem.className = CLASSNAME;\n","import { useEffect } from 'react';\nimport { detectHorizontalSwipe } from '@lumx/core/js/utils';\n\nconst isTouchDevice = () => 'ontouchstart' in window;\n\n/**\n * Listen swipe to navigate left and right.\n */\nexport function useSwipeNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {\n useEffect(() => {\n if (!element || !isTouchDevice()) return undefined;\n\n return detectHorizontalSwipe(element, (swipe) => {\n const callback = swipe === 'right' ? onPrevious : onNext;\n callback?.();\n });\n }, [onPrevious, onNext, element]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Listen keyboard to navigate left and right.\n */\nexport function useKeyNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {\n useEffect(() => {\n if (!element) return undefined;\n const onKeyNavigate = (evt: KeyboardEvent) => {\n let callback;\n if (evt?.key === 'ArrowRight') {\n callback = onNext;\n } else if (evt?.key === 'ArrowLeft') {\n callback = onPrevious;\n }\n if (!callback) return;\n\n callback();\n evt.preventDefault();\n evt.stopPropagation();\n };\n\n element.addEventListener('keydown', onKeyNavigate);\n return () => {\n element.removeEventListener('keydown', onKeyNavigate);\n };\n }, [onPrevious, onNext, element]);\n}\n","import { useMemo, useRef } from 'react';\nimport { EDGE_FROM_ACTIVE_INDEX, PAGINATION_ITEMS_MAX } from '@lumx/react/components/slideshow/constants';\n\ntype Range = { min: number; max: number };\n\n/**\n * Calculate the currently visible pagination \"bullet\" range.\n */\nexport function usePaginationVisibleRange(activeIndex: number, slideCount: number): Range {\n const previousVisibleRangeRef = useRef<Range>();\n return useMemo(() => {\n const lastSlide = slideCount - 1;\n const { current: previousVisibleRange } = previousVisibleRangeRef;\n let newVisibleRange: Range;\n if (activeIndex === previousVisibleRange?.max && activeIndex < lastSlide) {\n newVisibleRange = { min: previousVisibleRange.min + 1, max: previousVisibleRange.max + 1 };\n } else if (activeIndex === previousVisibleRange?.min && activeIndex > 0) {\n newVisibleRange = { min: previousVisibleRange.min - 1, max: previousVisibleRange.max - 1 };\n } else {\n const deltaItems = PAGINATION_ITEMS_MAX - 1;\n let min = activeIndex - EDGE_FROM_ACTIVE_INDEX;\n let max = activeIndex + EDGE_FROM_ACTIVE_INDEX;\n\n if (activeIndex > lastSlide - EDGE_FROM_ACTIVE_INDEX) {\n min = lastSlide - deltaItems;\n max = lastSlide;\n } else if (activeIndex < deltaItems) {\n min = 0;\n max = deltaItems;\n }\n\n newVisibleRange = { min, max };\n }\n previousVisibleRangeRef.current = newVisibleRange;\n return newVisibleRange;\n }, [activeIndex, slideCount]);\n}\n","import React, { forwardRef, RefObject, useCallback, useMemo } from 'react';\n\nimport classNames from 'classnames';\nimport range from 'lodash/range';\n\nimport { mdiChevronLeft, mdiChevronRight } from '@lumx/icons';\nimport { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\nimport { WINDOW } from '@lumx/react/constants';\n\nimport { useSwipeNavigate } from './useSwipeNavigate';\nimport { useKeyNavigate } from './useKeyNavigate';\nimport { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';\nimport { usePaginationVisibleRange } from './usePaginationVisibleRange';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowControlsProps extends GenericProps {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Props to pass to the next button (minus those already set by the SlideshowControls props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Reference to the parent element on which we want to listen touch swipe. */\n parentRef?: RefObject<HTMLDivElement> | HTMLDivElement;\n /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Number of slides. */\n slidesCount: number;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** On next button click callback. */\n onNextClick?(loopback?: boolean): void;\n /** On pagination change callback. */\n onPaginationClick?(index: number): void;\n /** On previous button click callback. */\n onPreviousClick?(loopback?: boolean): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowControls';\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<SlideshowControlsProps> = {\n activeIndex: 0,\n theme: Theme.light,\n};\n\n/**\n * SlideshowControls component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n activeIndex,\n className,\n nextButtonProps,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n parentRef,\n previousButtonProps,\n slidesCount,\n theme,\n ...forwardedProps\n } = props;\n\n let parent;\n if (WINDOW) {\n // Checking window object to avoid errors in SSR.\n parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;\n }\n // Listen to keyboard navigate left & right.\n useKeyNavigate(parent, onNextClick, onPreviousClick);\n // Listen to touch swipe navigate left & right.\n useSwipeNavigate(\n parent,\n // Go next without loopback.\n useCallback(() => onNextClick?.(false), [onNextClick]),\n // Go previous without loopback.\n useCallback(() => onPreviousClick?.(false), [onPreviousClick]),\n );\n\n // Pagination \"bullet\" range.\n const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);\n\n // Inline style of wrapper element.\n const wrapperStyle = { transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)` };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX,\n })}\n >\n <IconButton\n {...previousButtonProps}\n icon={mdiChevronLeft}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onPreviousClick}\n tabIndex={-1}\n />\n <div className={`${CLASSNAME}__pagination`}>\n <div className={`${CLASSNAME}__pagination-items`} style={wrapperStyle}>\n {useMemo(\n () =>\n range(slidesCount).map((index) => {\n const isOnEdge =\n index !== 0 &&\n index !== slidesCount - 1 &&\n (index === visibleRange.min || index === visibleRange.max);\n const isActive = activeIndex === index;\n const isOutRange = index < visibleRange.min || index > visibleRange.max;\n return (\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n <button\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__pagination-item`,\n isActive,\n isOnEdge,\n isOutRange,\n }),\n )}\n key={index}\n type=\"button\"\n onClick={() => onPaginationClick?.(index)}\n tabIndex={-1}\n />\n );\n }),\n [slidesCount, visibleRange.min, visibleRange.max, activeIndex, onPaginationClick],\n )}\n </div>\n </div>\n <IconButton\n {...nextButtonProps}\n icon={mdiChevronRight}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onNextClick}\n tabIndex={-1}\n />\n </div>\n );\n});\nSlideshowControls.displayName = COMPONENT_NAME;\nSlideshowControls.className = CLASSNAME;\nSlideshowControls.defaultProps = DEFAULT_PROPS;\n"],"names":["AUTOPLAY_DEFAULT_INTERVAL","FULL_WIDTH_PERCENT","EDGE_FROM_ACTIVE_INDEX","PAGINATION_ITEMS_MAX","PAGINATION_ITEM_SIZE","useInterval","callback","delay","savedCallback","useRef","useEffect","current","undefined","tick","isFunction","id","setInterval","clearInterval","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","activeIndex","groupBy","interval","theme","Theme","light","Slideshow","forwardRef","props","ref","autoPlay","children","className","fillHeight","onChange","slideshowControlsProps","forwardedProps","useState","currentIndex","setCurrentIndex","element","setElement","itemsCount","React","Children","count","slidesCount","Math","ceil","min","wrapperStyle","transform","goToNextSlide","useCallback","loopback","index","goToPreviousSlide","Boolean","isAutoPlaying","setIsAutoPlaying","handleControlGotToSlide","handleControlNextSlide","handleControlPreviousSlide","mergeRefs","classNames","handleBasicClasses","prefix","displayName","defaultProps","SlideshowItem","isTouchDevice","window","useSwipeNavigate","onNext","onPrevious","detectHorizontalSwipe","swipe","useKeyNavigate","onKeyNavigate","evt","key","preventDefault","stopPropagation","addEventListener","removeEventListener","usePaginationVisibleRange","slideCount","previousVisibleRangeRef","useMemo","lastSlide","previousVisibleRange","newVisibleRange","max","deltaItems","SlideshowControls","nextButtonProps","onNextClick","onPaginationClick","onPreviousClick","parentRef","previousButtonProps","parent","WINDOW","HTMLElement","visibleRange","mdiChevronLeft","dark","Emphasis","low","range","map","isOnEdge","isActive","isOutRange","mdiChevronRight"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { b as _objectWithoutProperties, c as _extends } from './_rollupPluginBab
2
2
  import { Alignment, Theme } from './components.js';
3
3
  import React, { forwardRef, useMemo, Children } from 'react';
4
4
  import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './getRootClassName.js';
5
- import { u as uid } from './index.js';
5
+ import { u as uid } from '../index2.js';
6
6
  import isEmpty from 'lodash/isEmpty';
7
7
  import { I as InputHelper } from './InputHelper.js';
8
8
  import { I as InputLabel } from './InputLabel.js';
@@ -2,8 +2,8 @@ import { b as _objectWithoutProperties, d as _slicedToArray, e as _toConsumableA
2
2
  import { Alignment, Theme, Size } from './components.js';
3
3
  import React, { useReducer, useEffect, forwardRef, useCallback } from 'react';
4
4
  import { c as classnames, h as handleBasicClasses, C as CSS_PREFIX } from './getRootClassName.js';
5
- import { m as mergeRefs } from './mergeRefs.js';
6
5
  import { I as Icon } from './Icon2.js';
6
+ import { m as mergeRefs } from './mergeRefs.js';
7
7
  import { r as reducer, I as INIT_STATE, T as TabProviderContext, u as useRovingTabIndex, b as useTabProviderContext } from './useRovingTabIndex.js';
8
8
 
9
9
  var DEFAULT_PROPS = {
@@ -1 +1 @@
1
- {"version":3,"file":"TabPanel.js","sources":["../../../src/components/tabs/TabProvider.tsx","../../../src/components/tabs/TabList.tsx","../../../src/components/tabs/Tab.tsx","../../../src/components/tabs/TabPanel.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useReducer } from 'react';\nimport { INIT_STATE, TabProviderContext, reducer } from './state';\n\nexport interface TabProviderProps {\n /** Active tab index. */\n activeTabIndex?: number;\n /** Tab provider children. */\n children: ReactNode;\n /** Tab panel children should not render if the tab panel is hidden. */\n isLazy?: boolean;\n /** Activate tabs on focus. */\n shouldActivateOnFocus?: boolean;\n\n /** Tab change callback. */\n onChange?(index: number): void;\n}\n\nconst DEFAULT_PROPS: Partial<TabProviderProps> = {\n isLazy: INIT_STATE.isLazy,\n shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus,\n};\n\n/**\n * This component provides a context in which tabs can be defined and linked to their tab panel.\n *\n * It does not produce any markup so you can wrap it around any React elements and then split the TabList and TabPanel\n * components in the react tree.\n *\n * @param props React component props.\n * @return React element.\n */\nexport const TabProvider: React.FC<TabProviderProps> = (props) => {\n const { children, onChange, ...propState } = props;\n const [state, dispatch] = useReducer(reducer, INIT_STATE);\n\n // On prop state change => dispatch update.\n useEffect(\n () => {\n dispatch({ type: 'update', payload: propState });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, ...Object.values(propState)],\n );\n\n // On active tab index state change => send update to the onChange.\n useEffect(\n () => {\n if (state === INIT_STATE || !onChange || propState.activeTabIndex === state.activeTabIndex) {\n return;\n }\n onChange(state.activeTabIndex);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, state.activeTabIndex],\n );\n\n return <TabProviderContext.Provider value={[state, dispatch]}>{children}</TabProviderContext.Provider>;\n};\nTabProvider.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\nimport React, { forwardRef, ReactNode } from 'react';\n\nimport { Alignment, Theme } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { useRovingTabIndex } from '@lumx/react/_internal/hooks/useRovingTabIndex';\n\nexport enum TabListLayout {\n clustered = 'clustered',\n fixed = 'fixed',\n}\n\n/**\n * Defines the props of the component.\n */\nexport interface TabListProps extends GenericProps {\n /** ARIA label (purpose of the set of tabs). */\n ['aria-label']: string;\n /** Tab list. */\n children: ReactNode;\n /** Layout of the tabs in the list. */\n layout?: TabListLayout;\n /** Position of the tabs in the list (requires 'clustered' layout). */\n position?: Alignment;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabList';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabListProps> = {\n layout: TabListLayout.fixed,\n position: Alignment.left,\n theme: Theme.light,\n};\n\n/**\n * TabList component.\n *\n * Implements WAI-ARIA `tablist` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabList: Comp<TabListProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { 'aria-label': ariaLabel, children, className, layout, position, theme, ...forwardedProps } = props;\n const tabListRef = React.useRef(null);\n useRovingTabIndex({\n parentRef: tabListRef,\n elementSelector: '[role=\"tab\"]',\n keepTabIndex: false,\n extraDependencies: [children],\n });\n\n return (\n <div\n ref={mergeRefs(ref, tabListRef)}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, layout, position, theme }))}\n >\n <div className={`${CLASSNAME}__links`} role=\"tablist\" aria-label={ariaLabel}>\n {children}\n </div>\n </div>\n );\n});\nTabList.displayName = COMPONENT_NAME;\nTabList.className = CLASSNAME;\nTabList.defaultProps = DEFAULT_PROPS;\n","import { Icon, IconProps, Size } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';\n\nimport classNames from 'classnames';\nimport React, { FocusEventHandler, forwardRef, KeyboardEventHandler, ReactNode, useCallback } from 'react';\nimport { useTabProviderContext } from './state';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabProps extends GenericProps {\n /** Children are not supported. */\n children?: never;\n /** Icon (SVG path). */\n icon?: IconProps['icon'];\n /** Native id property. */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label content. */\n label: string | ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Tab';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs__link`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabProps> = {};\n\n/**\n * Tab component.\n *\n * Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Tab: Comp<TabProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const {\n className,\n disabled,\n icon,\n id,\n isActive: propIsActive,\n isDisabled = disabled,\n label,\n onFocus,\n onKeyPress,\n tabIndex = -1,\n ...forwardedProps\n } = props;\n const state = useTabProviderContext('tab', id);\n const isActive = propIsActive || state?.isActive;\n\n const changeToCurrentTab = useCallback(() => {\n if (isDisabled) {\n return;\n }\n state?.changeToTab();\n }, [isDisabled, state]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n onFocus?.(event);\n if (state?.shouldActivateOnFocus) {\n changeToCurrentTab();\n }\n },\n [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus],\n );\n\n const handleKeyPress: KeyboardEventHandler = useCallback(\n (event) => {\n onKeyPress?.(event);\n if (event.key !== 'Enter') {\n return;\n }\n changeToCurrentTab();\n },\n [changeToCurrentTab, onKeyPress],\n );\n\n return (\n <button\n ref={ref}\n {...forwardedProps}\n type=\"button\"\n id={state?.tabId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive, isDisabled }))}\n onClick={changeToCurrentTab}\n onKeyPress={handleKeyPress}\n onFocus={handleFocus}\n role=\"tab\"\n tabIndex={isActive ? 0 : tabIndex}\n aria-disabled={isDisabled}\n aria-selected={isActive}\n aria-controls={state?.tabPanelId}\n >\n {icon && <Icon icon={icon} size={Size.xs} />}\n {label && <span>{label}</span>}\n </button>\n );\n});\nTab.displayName = COMPONENT_NAME;\nTab.className = CLASSNAME;\nTab.defaultProps = DEFAULT_PROPS;\n","import { useTabProviderContext } from '@lumx/react/components/tabs/state';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';\n\nimport classNames from 'classnames';\nimport React, { forwardRef } from 'react';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabPanelProps extends GenericProps {\n /** Native id property */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tab-panel`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabPanelProps> = {};\n\n/**\n * TabPanel component.\n *\n * Implements WAI-ARIA `tabpanel` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabPanel: Comp<TabPanelProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, id, className, isActive: propIsActive, ...forwardedProps } = props;\n\n const state = useTabProviderContext('tabPanel', id);\n const isActive = propIsActive || state?.isActive;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n id={state?.tabPanelId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive }))}\n role=\"tabpanel\"\n tabIndex={0}\n aria-labelledby={state?.tabId}\n >\n {(!state?.isLazy || isActive) && children}\n </div>\n );\n});\nTabPanel.displayName = COMPONENT_NAME;\nTabPanel.className = CLASSNAME;\nTabPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["DEFAULT_PROPS","isLazy","INIT_STATE","shouldActivateOnFocus","TabProvider","props","children","onChange","propState","useReducer","reducer","state","dispatch","useEffect","type","payload","Object","values","activeTabIndex","defaultProps","TabListLayout","COMPONENT_NAME","CLASSNAME","CSS_PREFIX","layout","fixed","position","Alignment","left","theme","Theme","light","TabList","forwardRef","ref","ariaLabel","className","forwardedProps","tabListRef","React","useRef","useRovingTabIndex","parentRef","elementSelector","keepTabIndex","extraDependencies","mergeRefs","classNames","handleBasicClasses","prefix","displayName","Tab","disabled","icon","id","propIsActive","isActive","isDisabled","label","onFocus","onKeyPress","tabIndex","useTabProviderContext","changeToCurrentTab","useCallback","changeToTab","handleFocus","event","handleKeyPress","key","tabId","tabPanelId","Size","xs","TabPanel"],"mappings":"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"}
1
+ {"version":3,"file":"TabPanel.js","sources":["../../../src/components/tabs/TabProvider.tsx","../../../src/components/tabs/TabList.tsx","../../../src/components/tabs/Tab.tsx","../../../src/components/tabs/TabPanel.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useReducer } from 'react';\nimport { INIT_STATE, TabProviderContext, reducer } from './state';\n\nexport interface TabProviderProps {\n /** Active tab index. */\n activeTabIndex?: number;\n /** Tab provider children. */\n children: ReactNode;\n /** Tab panel children should not render if the tab panel is hidden. */\n isLazy?: boolean;\n /** Activate tabs on focus. */\n shouldActivateOnFocus?: boolean;\n\n /** Tab change callback. */\n onChange?(index: number): void;\n}\n\nconst DEFAULT_PROPS: Partial<TabProviderProps> = {\n isLazy: INIT_STATE.isLazy,\n shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus,\n};\n\n/**\n * This component provides a context in which tabs can be defined and linked to their tab panel.\n *\n * It does not produce any markup so you can wrap it around any React elements and then split the TabList and TabPanel\n * components in the react tree.\n *\n * @param props React component props.\n * @return React element.\n */\nexport const TabProvider: React.FC<TabProviderProps> = (props) => {\n const { children, onChange, ...propState } = props;\n const [state, dispatch] = useReducer(reducer, INIT_STATE);\n\n // On prop state change => dispatch update.\n useEffect(\n () => {\n dispatch({ type: 'update', payload: propState });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, ...Object.values(propState)],\n );\n\n // On active tab index state change => send update to the onChange.\n useEffect(\n () => {\n if (state === INIT_STATE || !onChange || propState.activeTabIndex === state.activeTabIndex) {\n return;\n }\n onChange(state.activeTabIndex);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, state.activeTabIndex],\n );\n\n return <TabProviderContext.Provider value={[state, dispatch]}>{children}</TabProviderContext.Provider>;\n};\nTabProvider.defaultProps = DEFAULT_PROPS;\n","import { Alignment, Theme } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\n\nimport classNames from 'classnames';\nimport React, { forwardRef, ReactNode } from 'react';\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndex';\n\nexport enum TabListLayout {\n clustered = 'clustered',\n fixed = 'fixed',\n}\n\n/**\n * Defines the props of the component.\n */\nexport interface TabListProps extends GenericProps {\n /** ARIA label (purpose of the set of tabs). */\n ['aria-label']: string;\n /** Tab list. */\n children: ReactNode;\n /** Layout of the tabs in the list. */\n layout?: TabListLayout;\n /** Position of the tabs in the list (requires 'clustered' layout). */\n position?: Alignment;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabList';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabListProps> = {\n layout: TabListLayout.fixed,\n position: Alignment.left,\n theme: Theme.light,\n};\n\n/**\n * TabList component.\n *\n * Implements WAI-ARIA `tablist` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabList: Comp<TabListProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { 'aria-label': ariaLabel, children, className, layout, position, theme, ...forwardedProps } = props;\n const tabListRef = React.useRef(null);\n useRovingTabIndex({\n parentRef: tabListRef,\n elementSelector: '[role=\"tab\"]',\n keepTabIndex: false,\n extraDependencies: [children],\n });\n\n return (\n <div\n ref={mergeRefs(ref, tabListRef)}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, layout, position, theme }))}\n >\n <div className={`${CLASSNAME}__links`} role=\"tablist\" aria-label={ariaLabel}>\n {children}\n </div>\n </div>\n );\n});\nTabList.displayName = COMPONENT_NAME;\nTabList.className = CLASSNAME;\nTabList.defaultProps = DEFAULT_PROPS;\n","import { Icon, IconProps, Size } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';\n\nimport classNames from 'classnames';\nimport React, { FocusEventHandler, forwardRef, KeyboardEventHandler, ReactNode, useCallback } from 'react';\nimport { useTabProviderContext } from './state';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabProps extends GenericProps {\n /** Children are not supported. */\n children?: never;\n /** Icon (SVG path). */\n icon?: IconProps['icon'];\n /** Native id property. */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label content. */\n label: string | ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Tab';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs__link`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabProps> = {};\n\n/**\n * Tab component.\n *\n * Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Tab: Comp<TabProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const {\n className,\n disabled,\n icon,\n id,\n isActive: propIsActive,\n isDisabled = disabled,\n label,\n onFocus,\n onKeyPress,\n tabIndex = -1,\n ...forwardedProps\n } = props;\n const state = useTabProviderContext('tab', id);\n const isActive = propIsActive || state?.isActive;\n\n const changeToCurrentTab = useCallback(() => {\n if (isDisabled) {\n return;\n }\n state?.changeToTab();\n }, [isDisabled, state]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n onFocus?.(event);\n if (state?.shouldActivateOnFocus) {\n changeToCurrentTab();\n }\n },\n [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus],\n );\n\n const handleKeyPress: KeyboardEventHandler = useCallback(\n (event) => {\n onKeyPress?.(event);\n if (event.key !== 'Enter') {\n return;\n }\n changeToCurrentTab();\n },\n [changeToCurrentTab, onKeyPress],\n );\n\n return (\n <button\n ref={ref}\n {...forwardedProps}\n type=\"button\"\n id={state?.tabId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive, isDisabled }))}\n onClick={changeToCurrentTab}\n onKeyPress={handleKeyPress}\n onFocus={handleFocus}\n role=\"tab\"\n tabIndex={isActive ? 0 : tabIndex}\n aria-disabled={isDisabled}\n aria-selected={isActive}\n aria-controls={state?.tabPanelId}\n >\n {icon && <Icon icon={icon} size={Size.xs} />}\n {label && <span>{label}</span>}\n </button>\n );\n});\nTab.displayName = COMPONENT_NAME;\nTab.className = CLASSNAME;\nTab.defaultProps = DEFAULT_PROPS;\n","import { useTabProviderContext } from '@lumx/react/components/tabs/state';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { Comp, GenericProps, handleBasicClasses } from '@lumx/react/utils';\n\nimport classNames from 'classnames';\nimport React, { forwardRef } from 'react';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabPanelProps extends GenericProps {\n /** Native id property */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tab-panel`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabPanelProps> = {};\n\n/**\n * TabPanel component.\n *\n * Implements WAI-ARIA `tabpanel` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabPanel: Comp<TabPanelProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, id, className, isActive: propIsActive, ...forwardedProps } = props;\n\n const state = useTabProviderContext('tabPanel', id);\n const isActive = propIsActive || state?.isActive;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n id={state?.tabPanelId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive }))}\n role=\"tabpanel\"\n tabIndex={0}\n aria-labelledby={state?.tabId}\n >\n {(!state?.isLazy || isActive) && children}\n </div>\n );\n});\nTabPanel.displayName = COMPONENT_NAME;\nTabPanel.className = CLASSNAME;\nTabPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["DEFAULT_PROPS","isLazy","INIT_STATE","shouldActivateOnFocus","TabProvider","props","children","onChange","propState","useReducer","reducer","state","dispatch","useEffect","type","payload","Object","values","activeTabIndex","defaultProps","TabListLayout","COMPONENT_NAME","CLASSNAME","CSS_PREFIX","layout","fixed","position","Alignment","left","theme","Theme","light","TabList","forwardRef","ref","ariaLabel","className","forwardedProps","tabListRef","React","useRef","useRovingTabIndex","parentRef","elementSelector","keepTabIndex","extraDependencies","mergeRefs","classNames","handleBasicClasses","prefix","displayName","Tab","disabled","icon","id","propIsActive","isActive","isDisabled","label","onFocus","onKeyPress","tabIndex","useTabProviderContext","changeToCurrentTab","useCallback","changeToTab","handleFocus","event","handleKeyPress","key","tabId","tabPanelId","Size","xs","TabPanel"],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  import { b as _objectWithoutProperties, c as _extends, a as _defineProperty } from './_rollupPluginBabelHelpers.js';
2
2
  import { Theme, Size } from './components.js';
3
3
  import React, { forwardRef, useCallback } from 'react';
4
- import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './getRootClassName.js';
5
- import { p as mdiArrowUp, q as mdiArrowDown } from './mdi.js';
6
- import { o as onEnterPressed } from './onEnterPressed.js';
4
+ import { g as getRootClassName, c as classnames, h as handleBasicClasses, o as onEnterPressed } from './getRootClassName.js';
5
+ import { I as Icon, p as mdiArrowUp, q as mdiArrowDown } from './Icon2.js';
7
6
  import isFunction from 'lodash/isFunction';
8
- import { I as Icon } from './Icon2.js';
9
7
 
10
8
  /**
11
9
  * Defines the props of the component.
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sources":["../../../src/components/table/Table.tsx","../../../src/components/table/TableBody.tsx","../../../src/components/table/TableCell.tsx","../../../src/components/table/TableHeader.tsx","../../../src/components/table/TableRow.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableProps extends GenericProps {\n /** Whether the table has checkbox or thumbnail on first cell or not. */\n hasBefore?: boolean;\n /** Whether the table has dividers or not. */\n hasDividers?: boolean;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Table';\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<TableProps> = {\n theme: Theme.light,\n};\n\n/**\n * Table component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Table: Comp<TableProps, HTMLTableElement> = forwardRef((props, ref) => {\n const { children, className, hasBefore, hasDividers, theme, ...forwardedProps } = props;\n\n return (\n <table\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, hasBefore, hasDividers, theme }))}\n >\n {children}\n </table>\n );\n});\nTable.displayName = COMPONENT_NAME;\nTable.className = CLASSNAME;\nTable.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport type TableBodyProps = GenericProps;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableBody';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * TableBody component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableBody: Comp<TableBodyProps, HTMLTableSectionElement> = forwardRef((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <tbody\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }))}\n >\n {children}\n </tbody>\n );\n});\nTableBody.displayName = COMPONENT_NAME;\nTableBody.className = CLASSNAME;\n","import React, { forwardRef, useCallback } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, Size } from '@lumx/react';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses, onEnterPressed, ValueOf } from '@lumx/react/utils';\n\nimport { mdiArrowDown, mdiArrowUp } from '@lumx/icons';\n\nimport isFunction from 'lodash/isFunction';\n\n/**\n * Table head cell sort order.\n */\nexport const ThOrder = { asc: 'asc', desc: 'desc' } as const;\nexport type ThOrder = ValueOf<typeof ThOrder>;\n\n/**\n * Table cell variants.\n */\nexport const TableCellVariant = { body: 'body', head: 'head' } as const;\nexport type TableCellVariant = ValueOf<typeof TableCellVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface TableCellProps extends GenericProps {\n /** Icon (SVG path).(thead only). */\n icon?: string;\n /** Whether the column is sortable or not (thead only). */\n isSortable?: boolean;\n /** Sort order displayed as icon (sortable thead only). */\n sortOrder?: ThOrder;\n /** Variant. */\n variant?: TableCellVariant;\n /** On header cell click callback. */\n onHeaderClick?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableCell';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableCellProps> = {\n variant: TableCellVariant.body,\n};\n\n/**\n * TableCell component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableCell: Comp<TableCellProps, HTMLTableCellElement> = forwardRef((props, ref) => {\n const { children, className, icon, isSortable, onHeaderClick, sortOrder, variant, ...forwardedProps } = props;\n\n /**\n * Handle click on the ordered thead.\n */\n const handleOnHeaderClick = useCallback(() => {\n if (isFunction(onHeaderClick)) {\n onHeaderClick();\n }\n }, [onHeaderClick]);\n\n return (\n <>\n {variant === TableCellVariant.head && (\n <th\n ref={ref}\n {...forwardedProps}\n className={classNames(\n handleBasicClasses({ prefix: CLASSNAME, isSortable }),\n className,\n `${CLASSNAME}--head`,\n {\n [`${CLASSNAME}--is-sorted`]: isSortable && sortOrder,\n },\n )}\n tabIndex={isSortable && isFunction(onHeaderClick) ? 0 : -1}\n onClick={handleOnHeaderClick}\n onKeyDown={onEnterPressed(handleOnHeaderClick)}\n >\n <div className={`${CLASSNAME}-wrapper`}>\n {icon && !isSortable && <Icon className={`${CLASSNAME}-icon`} icon={icon} size={Size.xxs} />}\n\n {isSortable && sortOrder === ThOrder.asc && (\n <Icon className={`${CLASSNAME}-icon`} icon={mdiArrowUp} size={Size.xxs} />\n )}\n\n {isSortable && sortOrder === ThOrder.desc && (\n <Icon className={`${CLASSNAME}-icon`} icon={mdiArrowDown} size={Size.xxs} />\n )}\n\n <div className={`${CLASSNAME}-content`}>{children}</div>\n </div>\n </th>\n )}\n\n {variant === TableCellVariant.body && (\n <td\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }), `${CLASSNAME}--body`)}\n >\n <div className={`${CLASSNAME}-content`}>{children}</div>\n </td>\n )}\n </>\n );\n});\nTableCell.displayName = COMPONENT_NAME;\nTableCell.className = CLASSNAME;\nTableCell.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport type TableHeaderProps = GenericProps;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableHeader';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableHeaderProps> = {};\n\n/**\n * TableHeader component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableHeader: Comp<TableHeaderProps, HTMLTableSectionElement> = forwardRef((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <thead\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }))}\n >\n {children}\n </thead>\n );\n});\nTableHeader.displayName = COMPONENT_NAME;\nTableHeader.className = CLASSNAME;\nTableHeader.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableRowProps extends GenericProps {\n /** Whether the component is clickable or not. */\n isClickable?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableRow';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableRowProps> = {};\n\n/**\n * TableRow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableRow: Comp<TableRowProps, HTMLTableRowElement> = forwardRef((props, ref) => {\n const { children, className, disabled, isClickable, isDisabled = disabled, isSelected, ...forwardedProps } = props;\n\n return (\n <tr\n ref={ref}\n tabIndex={isClickable && !isDisabled ? 0 : -1}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n isClickable: isClickable && !isDisabled,\n isDisabled,\n isSelected: isSelected && !isDisabled,\n prefix: CLASSNAME,\n }),\n )}\n aria-disabled={isDisabled}\n >\n {children}\n </tr>\n );\n});\n\nTableRow.displayName = COMPONENT_NAME;\nTableRow.className = CLASSNAME;\nTableRow.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","theme","Theme","light","Table","forwardRef","props","ref","children","className","hasBefore","hasDividers","forwardedProps","classNames","handleBasicClasses","prefix","displayName","defaultProps","TableBody","ThOrder","asc","desc","TableCellVariant","body","head","variant","TableCell","icon","isSortable","onHeaderClick","sortOrder","handleOnHeaderClick","useCallback","isFunction","onEnterPressed","Size","xxs","mdiArrowUp","mdiArrowDown","TableHeader","TableRow","disabled","isClickable","isDisabled","isSelected"],"mappings":"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"}
1
+ {"version":3,"file":"TableRow.js","sources":["../../../src/components/table/Table.tsx","../../../src/components/table/TableBody.tsx","../../../src/components/table/TableCell.tsx","../../../src/components/table/TableHeader.tsx","../../../src/components/table/TableRow.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableProps extends GenericProps {\n /** Whether the table has checkbox or thumbnail on first cell or not. */\n hasBefore?: boolean;\n /** Whether the table has dividers or not. */\n hasDividers?: boolean;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Table';\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<TableProps> = {\n theme: Theme.light,\n};\n\n/**\n * Table component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Table: Comp<TableProps, HTMLTableElement> = forwardRef((props, ref) => {\n const { children, className, hasBefore, hasDividers, theme, ...forwardedProps } = props;\n\n return (\n <table\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, hasBefore, hasDividers, theme }))}\n >\n {children}\n </table>\n );\n});\nTable.displayName = COMPONENT_NAME;\nTable.className = CLASSNAME;\nTable.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport type TableBodyProps = GenericProps;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableBody';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * TableBody component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableBody: Comp<TableBodyProps, HTMLTableSectionElement> = forwardRef((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <tbody\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }))}\n >\n {children}\n </tbody>\n );\n});\nTableBody.displayName = COMPONENT_NAME;\nTableBody.className = CLASSNAME;\n","import React, { forwardRef, useCallback } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, Size } from '@lumx/react';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses, onEnterPressed, ValueOf } from '@lumx/react/utils';\n\nimport { mdiArrowDown, mdiArrowUp } from '@lumx/icons';\n\nimport isFunction from 'lodash/isFunction';\n\n/**\n * Table head cell sort order.\n */\nexport const ThOrder = { asc: 'asc', desc: 'desc' } as const;\nexport type ThOrder = ValueOf<typeof ThOrder>;\n\n/**\n * Table cell variants.\n */\nexport const TableCellVariant = { body: 'body', head: 'head' } as const;\nexport type TableCellVariant = ValueOf<typeof TableCellVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface TableCellProps extends GenericProps {\n /** Icon (SVG path).(thead only). */\n icon?: string;\n /** Whether the column is sortable or not (thead only). */\n isSortable?: boolean;\n /** Sort order displayed as icon (sortable thead only). */\n sortOrder?: ThOrder;\n /** Variant. */\n variant?: TableCellVariant;\n /** On header cell click callback. */\n onHeaderClick?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableCell';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableCellProps> = {\n variant: TableCellVariant.body,\n};\n\n/**\n * TableCell component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableCell: Comp<TableCellProps, HTMLTableCellElement> = forwardRef((props, ref) => {\n const { children, className, icon, isSortable, onHeaderClick, sortOrder, variant, ...forwardedProps } = props;\n\n /**\n * Handle click on the ordered thead.\n */\n const handleOnHeaderClick = useCallback(() => {\n if (isFunction(onHeaderClick)) {\n onHeaderClick();\n }\n }, [onHeaderClick]);\n\n return (\n <>\n {variant === TableCellVariant.head && (\n <th\n ref={ref}\n {...forwardedProps}\n className={classNames(\n handleBasicClasses({ prefix: CLASSNAME, isSortable }),\n className,\n `${CLASSNAME}--head`,\n {\n [`${CLASSNAME}--is-sorted`]: isSortable && sortOrder,\n },\n )}\n tabIndex={isSortable && isFunction(onHeaderClick) ? 0 : -1}\n onClick={handleOnHeaderClick}\n onKeyDown={onEnterPressed(handleOnHeaderClick)}\n >\n <div className={`${CLASSNAME}-wrapper`}>\n {icon && !isSortable && <Icon className={`${CLASSNAME}-icon`} icon={icon} size={Size.xxs} />}\n\n {isSortable && sortOrder === ThOrder.asc && (\n <Icon className={`${CLASSNAME}-icon`} icon={mdiArrowUp} size={Size.xxs} />\n )}\n\n {isSortable && sortOrder === ThOrder.desc && (\n <Icon className={`${CLASSNAME}-icon`} icon={mdiArrowDown} size={Size.xxs} />\n )}\n\n <div className={`${CLASSNAME}-content`}>{children}</div>\n </div>\n </th>\n )}\n\n {variant === TableCellVariant.body && (\n <td\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }), `${CLASSNAME}--body`)}\n >\n <div className={`${CLASSNAME}-content`}>{children}</div>\n </td>\n )}\n </>\n );\n});\nTableCell.displayName = COMPONENT_NAME;\nTableCell.className = CLASSNAME;\nTableCell.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport type TableHeaderProps = GenericProps;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableHeader';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableHeaderProps> = {};\n\n/**\n * TableHeader component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableHeader: Comp<TableHeaderProps, HTMLTableSectionElement> = forwardRef((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <thead\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME }))}\n >\n {children}\n </thead>\n );\n});\nTableHeader.displayName = COMPONENT_NAME;\nTableHeader.className = CLASSNAME;\nTableHeader.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableRowProps extends GenericProps {\n /** Whether the component is clickable or not. */\n isClickable?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableRow';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableRowProps> = {};\n\n/**\n * TableRow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableRow: Comp<TableRowProps, HTMLTableRowElement> = forwardRef((props, ref) => {\n const { children, className, disabled, isClickable, isDisabled = disabled, isSelected, ...forwardedProps } = props;\n\n return (\n <tr\n ref={ref}\n tabIndex={isClickable && !isDisabled ? 0 : -1}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n isClickable: isClickable && !isDisabled,\n isDisabled,\n isSelected: isSelected && !isDisabled,\n prefix: CLASSNAME,\n }),\n )}\n aria-disabled={isDisabled}\n >\n {children}\n </tr>\n );\n});\n\nTableRow.displayName = COMPONENT_NAME;\nTableRow.className = CLASSNAME;\nTableRow.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","theme","Theme","light","Table","forwardRef","props","ref","children","className","hasBefore","hasDividers","forwardedProps","classNames","handleBasicClasses","prefix","displayName","defaultProps","TableBody","ThOrder","asc","desc","TableCellVariant","body","head","variant","TableCell","icon","isSortable","onHeaderClick","sortOrder","handleOnHeaderClick","useCallback","isFunction","onEnterPressed","Size","xxs","mdiArrowUp","mdiArrowDown","TableHeader","TableRow","disabled","isClickable","isDisabled","isSelected"],"mappings":";;;;;;;AAQA;;;;AAYA;;;AAGA,IAAMA,cAAc,GAAG,OAAvB;AAEA;;;;AAGA,IAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAD,CAAlC;AAEA;;;;AAGA,IAAMG,aAAkC,GAAG;AACvCC,EAAAA,KAAK,EAAEC,KAAK,CAACC;AAD0B,CAA3C;AAIA;;;;;;;;IAOaC,KAAyC,GAAGC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MACxEC,QADwE,GACEF,KADF,CACxEE,QADwE;AAAA,MAC9DC,SAD8D,GACEH,KADF,CAC9DG,SAD8D;AAAA,MACnDC,SADmD,GACEJ,KADF,CACnDI,SADmD;AAAA,MACxCC,WADwC,GACEL,KADF,CACxCK,WADwC;AAAA,MAC3BV,KAD2B,GACEK,KADF,CAC3BL,KAD2B;AAAA,MACjBW,cADiB,4BACEN,KADF;;AAGhF,SACI;AACI,IAAA,GAAG,EAAEC;AADT,KAEQK,cAFR;AAGI,IAAA,SAAS,EAAEC,UAAU,CAACJ,SAAD,EAAYK,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAEjB,SAAV;AAAqBY,MAAAA,SAAS,EAATA,SAArB;AAAgCC,MAAAA,WAAW,EAAXA,WAAhC;AAA6CV,MAAAA,KAAK,EAALA;AAA7C,KAAD,CAA9B;AAHzB,MAKKO,QALL,CADJ;AASH,CAZkE;AAanEJ,KAAK,CAACY,WAAN,GAAoBnB,cAApB;AACAO,KAAK,CAACK,SAAN,GAAkBX,SAAlB;AACAM,KAAK,CAACa,YAAN,GAAqBjB,aAArB;;ACrDA;;;;AAKA;;;AAGA,IAAMH,gBAAc,GAAG,WAAvB;AAEA;;;;AAGA,IAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAD,EAAiB,IAAjB,CAAlC;AAEA;;;;;;;;IAOaqB,SAAwD,GAAGb,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MACvFC,QADuF,GAC5CF,KAD4C,CACvFE,QADuF;AAAA,MAC7EC,SAD6E,GAC5CH,KAD4C,CAC7EG,SAD6E;AAAA,MAC/DG,cAD+D,4BAC5CN,KAD4C;;AAG/F,SACI;AACI,IAAA,GAAG,EAAEC;AADT,KAEQK,cAFR;AAGI,IAAA,SAAS,EAAEC,UAAU,CAACJ,SAAD,EAAYK,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAEjB;AAAV,KAAD,CAA9B;AAHzB,MAKKU,QALL,CADJ;AASH,CAZiF;AAalFU,SAAS,CAACF,WAAV,GAAwBnB,gBAAxB;AACAqB,SAAS,CAACT,SAAV,GAAsBX,WAAtB;;AC/BA;;;;IAGaqB,OAAO,GAAG;AAAEC,EAAAA,GAAG,EAAE,KAAP;AAAcC,EAAAA,IAAI,EAAE;AAApB;;AAGvB;;;IAGaC,gBAAgB,GAAG;AAAEC,EAAAA,IAAI,EAAE,MAAR;AAAgBC,EAAAA,IAAI,EAAE;AAAtB;;AAmBhC;;;AAGA,IAAM3B,gBAAc,GAAG,WAAvB;AAEA;;;;AAGA,IAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAD,EAAiB,IAAjB,CAAlC;AAEA;;;;AAGA,IAAMG,eAAsC,GAAG;AAC3CyB,EAAAA,OAAO,EAAEH,gBAAgB,CAACC;AADiB,CAA/C;AAIA;;;;;;;;IAOaG,SAAqD,GAAGrB,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MACpFC,QADoF,GACYF,KADZ,CACpFE,QADoF;AAAA,MAC1EC,SAD0E,GACYH,KADZ,CAC1EG,SAD0E;AAAA,MAC/DkB,IAD+D,GACYrB,KADZ,CAC/DqB,IAD+D;AAAA,MACzDC,UADyD,GACYtB,KADZ,CACzDsB,UADyD;AAAA,MAC7CC,aAD6C,GACYvB,KADZ,CAC7CuB,aAD6C;AAAA,MAC9BC,SAD8B,GACYxB,KADZ,CAC9BwB,SAD8B;AAAA,MACnBL,OADmB,GACYnB,KADZ,CACnBmB,OADmB;AAAA,MACPb,cADO,4BACYN,KADZ;AAG5F;;;;;AAGA,MAAMyB,mBAAmB,GAAGC,WAAW,CAAC,YAAM;AAC1C,QAAIC,UAAU,CAACJ,aAAD,CAAd,EAA+B;AAC3BA,MAAAA,aAAa;AAChB;AACJ,GAJsC,EAIpC,CAACA,aAAD,CAJoC,CAAvC;AAMA,SACI,0CACKJ,OAAO,KAAKH,gBAAgB,CAACE,IAA7B,IACG;AACI,IAAA,GAAG,EAAEjB;AADT,KAEQK,cAFR;AAGI,IAAA,SAAS,EAAEC,UAAU,CACjBC,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAEjB,WAAV;AAAqB8B,MAAAA,UAAU,EAAVA;AAArB,KAAD,CADD,EAEjBnB,SAFiB,YAGdX,WAHc,2CAKTA,WALS,kBAKgB8B,UAAU,IAAIE,SAL9B,EAHzB;AAWI,IAAA,QAAQ,EAAEF,UAAU,IAAIK,UAAU,CAACJ,aAAD,CAAxB,GAA0C,CAA1C,GAA8C,CAAC,CAX7D;AAYI,IAAA,OAAO,EAAEE,mBAZb;AAaI,IAAA,SAAS,EAAEG,cAAc,CAACH,mBAAD;AAb7B,MAeI;AAAK,IAAA,SAAS,YAAKjC,WAAL;AAAd,KACK6B,IAAI,IAAI,CAACC,UAAT,IAAuB,oBAAC,IAAD;AAAM,IAAA,SAAS,YAAK9B,WAAL,UAAf;AAAsC,IAAA,IAAI,EAAE6B,IAA5C;AAAkD,IAAA,IAAI,EAAEQ,IAAI,CAACC;AAA7D,IAD5B,EAGKR,UAAU,IAAIE,SAAS,KAAKX,OAAO,CAACC,GAApC,IACG,oBAAC,IAAD;AAAM,IAAA,SAAS,YAAKtB,WAAL,UAAf;AAAsC,IAAA,IAAI,EAAEuC,UAA5C;AAAwD,IAAA,IAAI,EAAEF,IAAI,CAACC;AAAnE,IAJR,EAOKR,UAAU,IAAIE,SAAS,KAAKX,OAAO,CAACE,IAApC,IACG,oBAAC,IAAD;AAAM,IAAA,SAAS,YAAKvB,WAAL,UAAf;AAAsC,IAAA,IAAI,EAAEwC,YAA5C;AAA0D,IAAA,IAAI,EAAEH,IAAI,CAACC;AAArE,IARR,EAWI;AAAK,IAAA,SAAS,YAAKtC,WAAL;AAAd,KAAyCU,QAAzC,CAXJ,CAfJ,CAFR,EAiCKiB,OAAO,KAAKH,gBAAgB,CAACC,IAA7B,IACG,uCACQX,cADR;AAEI,IAAA,SAAS,EAAEC,UAAU,CAACJ,SAAD,EAAYK,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAEjB;AAAV,KAAD,CAA9B,YAA0DA,WAA1D;AAFzB,MAII;AAAK,IAAA,SAAS,YAAKA,WAAL;AAAd,KAAyCU,QAAzC,CAJJ,CAlCR,CADJ;AA4CH,CAxD8E;AAyD/EkB,SAAS,CAACV,WAAV,GAAwBnB,gBAAxB;AACA6B,SAAS,CAACjB,SAAV,GAAsBX,WAAtB;AACA4B,SAAS,CAACT,YAAV,GAAyBjB,eAAzB;;ACpHA;;;;AAKA;;;AAGA,IAAMH,gBAAc,GAAG,aAAvB;AAEA;;;;AAGA,IAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAD,EAAiB,IAAjB,CAAlC;AAEA;;;;AAGA,IAAMG,eAAwC,GAAG,EAAjD;AAEA;;;;;;;;IAOauC,WAA4D,GAAGlC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAC3FC,QAD2F,GAChDF,KADgD,CAC3FE,QAD2F;AAAA,MACjFC,SADiF,GAChDH,KADgD,CACjFG,SADiF;AAAA,MACnEG,cADmE,4BAChDN,KADgD;;AAGnG,SACI;AACI,IAAA,GAAG,EAAEC;AADT,KAEQK,cAFR;AAGI,IAAA,SAAS,EAAEC,UAAU,CAACJ,SAAD,EAAYK,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAEjB;AAAV,KAAD,CAA9B;AAHzB,MAKKU,QALL,CADJ;AASH,CAZqF;AAatF+B,WAAW,CAACvB,WAAZ,GAA0BnB,gBAA1B;AACA0C,WAAW,CAAC9B,SAAZ,GAAwBX,WAAxB;AACAyC,WAAW,CAACtB,YAAZ,GAA2BjB,eAA3B;;AC1CA;;;;AAYA;;;AAGA,IAAMH,gBAAc,GAAG,UAAvB;AAEA;;;;AAGA,IAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAD,EAAiB,IAAjB,CAAlC;AAEA;;;;AAGA,IAAMG,eAAqC,GAAG,EAA9C;AAEA;;;;;;;;IAOawC,QAAkD,GAAGnC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MACjFC,QADiF,GACoBF,KADpB,CACjFE,QADiF;AAAA,MACvEC,SADuE,GACoBH,KADpB,CACvEG,SADuE;AAAA,MAC5DgC,QAD4D,GACoBnC,KADpB,CAC5DmC,QAD4D;AAAA,MAClDC,WADkD,GACoBpC,KADpB,CAClDoC,WADkD;AAAA,0BACoBpC,KADpB,CACrCqC,UADqC;AAAA,MACrCA,UADqC,kCACxBF,QADwB;AAAA,MACdG,UADc,GACoBtC,KADpB,CACdsC,UADc;AAAA,MACChC,cADD,4BACoBN,KADpB;;AAGzF,SACI;AACI,IAAA,GAAG,EAAEC,GADT;AAEI,IAAA,QAAQ,EAAEmC,WAAW,IAAI,CAACC,UAAhB,GAA6B,CAA7B,GAAiC,CAAC;AAFhD,KAGQ/B,cAHR;AAII,IAAA,SAAS,EAAEC,UAAU,CACjBJ,SADiB,EAEjBK,kBAAkB,CAAC;AACf4B,MAAAA,WAAW,EAAEA,WAAW,IAAI,CAACC,UADd;AAEfA,MAAAA,UAAU,EAAVA,UAFe;AAGfC,MAAAA,UAAU,EAAEA,UAAU,IAAI,CAACD,UAHZ;AAIf5B,MAAAA,MAAM,EAAEjB;AAJO,KAAD,CAFD,CAJzB;AAaI,qBAAe6C;AAbnB,MAeKnC,QAfL,CADJ;AAmBH,CAtB2E;AAwB5EgC,QAAQ,CAACxB,WAAT,GAAuBnB,gBAAvB;AACA2C,QAAQ,CAAC/B,SAAT,GAAqBX,WAArB;AACA0C,QAAQ,CAACvB,YAAT,GAAwBjB,eAAxB;;;;"}
@@ -2,12 +2,11 @@ import { b as _objectWithoutProperties, d as _slicedToArray, _ as _objectSpread2
2
2
  import { Size, Theme, Emphasis, Kind } from './components.js';
3
3
  import React, { forwardRef, useMemo, useState, useRef, useEffect } from 'react';
4
4
  import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './getRootClassName.js';
5
- import { c as mdiAlertCircle, b as mdiCheckCircle, n as mdiCloseCircle } from './mdi.js';
6
- import { u as uid } from './index.js';
5
+ import { I as Icon, c as mdiAlertCircle, b as mdiCheckCircle, n as mdiCloseCircle } from './Icon2.js';
6
+ import { u as uid } from '../index2.js';
7
7
  import get from 'lodash/get';
8
8
  import { m as mergeRefs } from './mergeRefs.js';
9
9
  import { I as IconButton } from './IconButton.js';
10
- import { I as Icon } from './Icon2.js';
11
10
  import { I as InputHelper } from './InputHelper.js';
12
11
  import { I as InputLabel } from './InputLabel.js';
13
12