@lumx/react 2.1.9-alpha-thumbnail3 → 2.1.9-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/esm/_internal/AlertDialog.js +1 -2
  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/Checkbox2.js +1 -2
  7. package/esm/_internal/Checkbox2.js.map +1 -1
  8. package/esm/_internal/DatePickerField.js +1 -1
  9. package/esm/_internal/DragHandle.js +2 -3
  10. package/esm/_internal/DragHandle.js.map +1 -1
  11. package/esm/_internal/ExpansionPanel.js +1 -1
  12. package/esm/_internal/Flag2.js +1 -3
  13. package/esm/_internal/Flag2.js.map +1 -1
  14. package/esm/_internal/Icon2.js +32 -4
  15. package/esm/_internal/Icon2.js.map +1 -1
  16. package/esm/_internal/IconButton.js +1 -1
  17. package/esm/_internal/ImageBlock.js +1 -0
  18. package/esm/_internal/ImageBlock.js.map +1 -1
  19. package/esm/_internal/Lightbox2.js +1 -1
  20. package/esm/_internal/Link2.js +1 -1
  21. package/esm/_internal/LinkPreview.js +1 -1
  22. package/esm/_internal/LinkPreview.js.map +1 -1
  23. package/esm/_internal/Message2.js +5 -5
  24. package/esm/_internal/Message2.js.map +1 -1
  25. package/esm/_internal/Notification2.js +1 -2
  26. package/esm/_internal/Notification2.js.map +1 -1
  27. package/esm/_internal/ProgressTrackerStepPanel.js +1 -2
  28. package/esm/_internal/ProgressTrackerStepPanel.js.map +1 -1
  29. package/esm/_internal/SelectMultiple.js +1 -2
  30. package/esm/_internal/SelectMultiple.js.map +1 -1
  31. package/esm/_internal/SideNavigationItem.js +1 -2
  32. package/esm/_internal/SideNavigationItem.js.map +1 -1
  33. package/esm/_internal/Slider2.js +2 -21
  34. package/esm/_internal/Slider2.js.map +1 -1
  35. package/esm/_internal/SlideshowControls.js +1 -1
  36. package/esm/_internal/TabPanel.js +1 -1
  37. package/esm/_internal/TableRow.js +1 -2
  38. package/esm/_internal/TableRow.js.map +1 -1
  39. package/esm/_internal/TextField.js +1 -2
  40. package/esm/_internal/TextField.js.map +1 -1
  41. package/esm/_internal/Thumbnail2.js +764 -62
  42. package/esm/_internal/Thumbnail2.js.map +1 -1
  43. package/esm/_internal/alert-dialog.js +1 -2
  44. package/esm/_internal/alert-dialog.js.map +1 -1
  45. package/esm/_internal/autocomplete.js +1 -2
  46. package/esm/_internal/autocomplete.js.map +1 -1
  47. package/esm/_internal/avatar.js +4 -2
  48. package/esm/_internal/avatar.js.map +1 -1
  49. package/esm/_internal/button.js +1 -1
  50. package/esm/_internal/checkbox.js +1 -2
  51. package/esm/_internal/checkbox.js.map +1 -1
  52. package/esm/_internal/clamp.js +22 -0
  53. package/esm/_internal/clamp.js.map +1 -0
  54. package/esm/_internal/comment-block.js +4 -2
  55. package/esm/_internal/comment-block.js.map +1 -1
  56. package/esm/_internal/date-picker.js +1 -2
  57. package/esm/_internal/date-picker.js.map +1 -1
  58. package/esm/_internal/drag-handle.js +1 -2
  59. package/esm/_internal/drag-handle.js.map +1 -1
  60. package/esm/_internal/expansion-panel.js +1 -2
  61. package/esm/_internal/expansion-panel.js.map +1 -1
  62. package/esm/_internal/flag.js +1 -1
  63. package/esm/_internal/icon.js +1 -1
  64. package/esm/_internal/image-block.js +4 -2
  65. package/esm/_internal/image-block.js.map +1 -1
  66. package/esm/_internal/lightbox.js +1 -2
  67. package/esm/_internal/lightbox.js.map +1 -1
  68. package/esm/_internal/link-preview.js +4 -2
  69. package/esm/_internal/link-preview.js.map +1 -1
  70. package/esm/_internal/link.js +1 -1
  71. package/esm/_internal/message.js +1 -2
  72. package/esm/_internal/message.js.map +1 -1
  73. package/esm/_internal/mosaic.js +4 -2
  74. package/esm/_internal/mosaic.js.map +1 -1
  75. package/esm/_internal/notification.js +1 -2
  76. package/esm/_internal/notification.js.map +1 -1
  77. package/esm/_internal/post-block.js +4 -2
  78. package/esm/_internal/post-block.js.map +1 -1
  79. package/esm/_internal/progress-tracker.js +1 -2
  80. package/esm/_internal/progress-tracker.js.map +1 -1
  81. package/esm/_internal/select.js +1 -2
  82. package/esm/_internal/select.js.map +1 -1
  83. package/esm/_internal/side-navigation.js +1 -2
  84. package/esm/_internal/side-navigation.js.map +1 -1
  85. package/esm/_internal/slider.js +2 -1
  86. package/esm/_internal/slider.js.map +1 -1
  87. package/esm/_internal/slideshow.js +1 -2
  88. package/esm/_internal/slideshow.js.map +1 -1
  89. package/esm/_internal/table.js +1 -2
  90. package/esm/_internal/table.js.map +1 -1
  91. package/esm/_internal/tabs.js +1 -1
  92. package/esm/_internal/text-field.js +1 -2
  93. package/esm/_internal/text-field.js.map +1 -1
  94. package/esm/_internal/thumbnail.js +4 -2
  95. package/esm/_internal/thumbnail.js.map +1 -1
  96. package/esm/_internal/uploader.js +1 -1
  97. package/esm/_internal/user-block.js +3 -2
  98. package/esm/_internal/user-block.js.map +1 -1
  99. package/esm/index.js +4 -4
  100. package/package.json +4 -4
  101. package/src/components/drag-handle/DragHandle.tsx +5 -1
  102. package/src/components/flag/Flag.test.tsx +1 -2
  103. package/src/components/flag/Flag.tsx +2 -10
  104. package/src/components/flag/__snapshots__/Flag.test.tsx.snap +0 -15
  105. package/src/components/icon/Icon.tsx +15 -1
  106. package/src/components/image-block/ImageBlock.tsx +1 -0
  107. package/src/components/link-preview/LinkPreview.tsx +1 -1
  108. package/src/components/link-preview/__snapshots__/LinkPreview.test.tsx.snap +2 -2
  109. package/src/components/message/Message.tsx +4 -2
  110. package/src/components/thumbnail/Thumbnail.stories.tsx +59 -399
  111. package/src/components/thumbnail/Thumbnail.test.tsx +6 -6
  112. package/src/components/thumbnail/Thumbnail.tsx +34 -35
  113. package/src/components/thumbnail/useFocusPoint.ts +10 -18
  114. package/src/components/thumbnail/useImageLoad.ts +22 -23
  115. package/src/hooks/useOnResize.ts +0 -6
  116. package/src/stories/knobs/image.ts +3 -35
  117. package/types.d.ts +0 -2
  118. package/esm/_internal/mdi.js +0 -22
  119. package/esm/_internal/mdi.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SideNavigationItem.js","sources":["../../../src/components/side-navigation/SideNavigation.tsx","../../../src/components/side-navigation/SideNavigationItem.tsx"],"sourcesContent":["import React, { Children, forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SideNavigationItem, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses, isComponent } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface SideNavigationProps extends GenericProps {\n /** SideNavigationItem elements. */\n children: ReactNode;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SideNavigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SideNavigation component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SideNavigation: Comp<SideNavigationProps, HTMLUListElement> = forwardRef((props, ref) => {\n const { children, className, theme, ...forwardedProps } = props;\n const content = Children.toArray(children).filter(isComponent(SideNavigationItem));\n\n return (\n <ul\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n theme === Theme.dark && 'lumx-color-font-light-N',\n handleBasicClasses({ prefix: CLASSNAME }),\n )}\n >\n {content}\n </ul>\n );\n});\nSideNavigation.displayName = COMPONENT_NAME;\nSideNavigation.className = CLASSNAME;\n","import React, { Children, forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\n\nimport { Emphasis, Icon, Size, IconButton, IconButtonProps } from '@lumx/react';\n\nimport {\n Callback,\n Comp,\n GenericProps,\n getRootClassName,\n handleBasicClasses,\n isComponent,\n onEnterPressed,\n} from '@lumx/react/utils';\nimport { renderLink } from '@lumx/react/utils/renderLink';\n\n/**\n * Defines the props of the component.\n */\nexport interface SideNavigationItemProps extends GenericProps {\n /** SideNavigationItem elements. */\n children?: ReactNode;\n /** Emphasis variant. */\n emphasis?: Emphasis;\n /** Label content. */\n label: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Props to pass to the link (minus those already set by the SideNavigationItem props). */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Props to pass to the toggle button (minus those already set by the SideNavigationItem props). */\n toggleButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color' | 'size'>;\n /** On action button click callback. */\n onActionClick?(evt: React.MouseEvent): void;\n /** On click callback. */\n onClick?(evt: React.MouseEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SideNavigationItem';\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<SideNavigationItemProps> = {\n emphasis: Emphasis.high,\n};\n\n/**\n * SideNavigationItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SideNavigationItem: Comp<SideNavigationItemProps, HTMLLIElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n emphasis,\n icon,\n isOpen,\n isSelected,\n label,\n linkAs,\n linkProps,\n onActionClick,\n onClick,\n toggleButtonProps,\n ...forwardedProps\n } = props;\n\n const content = children && Children.toArray(children).filter(isComponent(SideNavigationItem));\n const hasContent = !isEmpty(content);\n const shouldSplitActions = Boolean(onActionClick);\n\n return (\n <li\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n emphasis,\n isOpen,\n isSelected,\n prefix: CLASSNAME,\n }),\n )}\n >\n {shouldSplitActions ? (\n <div className={`${CLASSNAME}__wrapper`}>\n {renderLink(\n {\n linkAs,\n ...linkProps,\n className: `${CLASSNAME}__link`,\n onClick,\n tabIndex: 0,\n },\n icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} />,\n <span>{label}</span>,\n )}\n\n <IconButton\n {...toggleButtonProps}\n className={`${CLASSNAME}__toggle`}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n size={Size.m}\n emphasis={Emphasis.low}\n onClick={onActionClick}\n />\n </div>\n ) : (\n renderLink(\n {\n linkAs,\n ...linkProps,\n className: `${CLASSNAME}__link`,\n tabIndex: 0,\n onClick,\n onKeyDown: onClick ? onEnterPressed(onClick as Callback) : undefined,\n },\n icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} />,\n <span>{label}</span>,\n hasContent && (\n <Icon\n className={`${CLASSNAME}__chevron`}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n size={Size.xs}\n />\n ),\n )\n )}\n\n {hasContent && isOpen && <ul className={`${CLASSNAME}__children`}>{content}</ul>}\n </li>\n );\n});\nSideNavigationItem.displayName = COMPONENT_NAME;\nSideNavigationItem.className = CLASSNAME;\nSideNavigationItem.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","SideNavigation","forwardRef","props","ref","children","className","theme","forwardedProps","content","Children","toArray","filter","isComponent","SideNavigationItem","classNames","Theme","dark","handleBasicClasses","prefix","displayName","DEFAULT_PROPS","emphasis","Emphasis","high","icon","isOpen","isSelected","label","linkAs","linkProps","onActionClick","onClick","toggleButtonProps","hasContent","isEmpty","shouldSplitActions","Boolean","renderLink","tabIndex","Size","xs","mdiChevronUp","mdiChevronDown","m","low","onKeyDown","onEnterPressed","undefined","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"SideNavigationItem.js","sources":["../../../src/components/side-navigation/SideNavigation.tsx","../../../src/components/side-navigation/SideNavigationItem.tsx"],"sourcesContent":["import React, { Children, forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SideNavigationItem, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses, isComponent } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface SideNavigationProps extends GenericProps {\n /** SideNavigationItem elements. */\n children: ReactNode;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SideNavigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SideNavigation component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SideNavigation: Comp<SideNavigationProps, HTMLUListElement> = forwardRef((props, ref) => {\n const { children, className, theme, ...forwardedProps } = props;\n const content = Children.toArray(children).filter(isComponent(SideNavigationItem));\n\n return (\n <ul\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n theme === Theme.dark && 'lumx-color-font-light-N',\n handleBasicClasses({ prefix: CLASSNAME }),\n )}\n >\n {content}\n </ul>\n );\n});\nSideNavigation.displayName = COMPONENT_NAME;\nSideNavigation.className = CLASSNAME;\n","import React, { Children, forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\n\nimport { Emphasis, Icon, Size, IconButton, IconButtonProps } from '@lumx/react';\n\nimport {\n Callback,\n Comp,\n GenericProps,\n getRootClassName,\n handleBasicClasses,\n isComponent,\n onEnterPressed,\n} from '@lumx/react/utils';\nimport { renderLink } from '@lumx/react/utils/renderLink';\n\n/**\n * Defines the props of the component.\n */\nexport interface SideNavigationItemProps extends GenericProps {\n /** SideNavigationItem elements. */\n children?: ReactNode;\n /** Emphasis variant. */\n emphasis?: Emphasis;\n /** Label content. */\n label: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Props to pass to the link (minus those already set by the SideNavigationItem props). */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Props to pass to the toggle button (minus those already set by the SideNavigationItem props). */\n toggleButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color' | 'size'>;\n /** On action button click callback. */\n onActionClick?(evt: React.MouseEvent): void;\n /** On click callback. */\n onClick?(evt: React.MouseEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SideNavigationItem';\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<SideNavigationItemProps> = {\n emphasis: Emphasis.high,\n};\n\n/**\n * SideNavigationItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SideNavigationItem: Comp<SideNavigationItemProps, HTMLLIElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n emphasis,\n icon,\n isOpen,\n isSelected,\n label,\n linkAs,\n linkProps,\n onActionClick,\n onClick,\n toggleButtonProps,\n ...forwardedProps\n } = props;\n\n const content = children && Children.toArray(children).filter(isComponent(SideNavigationItem));\n const hasContent = !isEmpty(content);\n const shouldSplitActions = Boolean(onActionClick);\n\n return (\n <li\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n emphasis,\n isOpen,\n isSelected,\n prefix: CLASSNAME,\n }),\n )}\n >\n {shouldSplitActions ? (\n <div className={`${CLASSNAME}__wrapper`}>\n {renderLink(\n {\n linkAs,\n ...linkProps,\n className: `${CLASSNAME}__link`,\n onClick,\n tabIndex: 0,\n },\n icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} />,\n <span>{label}</span>,\n )}\n\n <IconButton\n {...toggleButtonProps}\n className={`${CLASSNAME}__toggle`}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n size={Size.m}\n emphasis={Emphasis.low}\n onClick={onActionClick}\n />\n </div>\n ) : (\n renderLink(\n {\n linkAs,\n ...linkProps,\n className: `${CLASSNAME}__link`,\n tabIndex: 0,\n onClick,\n onKeyDown: onClick ? onEnterPressed(onClick as Callback) : undefined,\n },\n icon && <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} />,\n <span>{label}</span>,\n hasContent && (\n <Icon\n className={`${CLASSNAME}__chevron`}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n size={Size.xs}\n />\n ),\n )\n )}\n\n {hasContent && isOpen && <ul className={`${CLASSNAME}__children`}>{content}</ul>}\n </li>\n );\n});\nSideNavigationItem.displayName = COMPONENT_NAME;\nSideNavigationItem.className = CLASSNAME;\nSideNavigationItem.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","SideNavigation","forwardRef","props","ref","children","className","theme","forwardedProps","content","Children","toArray","filter","isComponent","SideNavigationItem","classNames","Theme","dark","handleBasicClasses","prefix","displayName","DEFAULT_PROPS","emphasis","Emphasis","high","icon","isOpen","isSelected","label","linkAs","linkProps","onActionClick","onClick","toggleButtonProps","hasContent","isEmpty","shouldSplitActions","Boolean","renderLink","tabIndex","Size","xs","mdiChevronUp","mdiChevronDown","m","low","onKeyDown","onEnterPressed","undefined","defaultProps"],"mappings":"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"}
@@ -5,6 +5,7 @@ import { g as getRootClassName, c as classnames, h as handleBasicClasses } from
5
5
  import { u as uid } from '../index2.js';
6
6
  import { I as InputHelper } from './InputHelper.js';
7
7
  import { I as InputLabel } from './InputLabel.js';
8
+ import { c as clamp } from './clamp.js';
8
9
 
9
10
  var useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
10
11
  /**
@@ -24,26 +25,6 @@ function useEventCallback(fn) {
24
25
  }, []);
25
26
  }
26
27
 
27
- /**
28
- * Clamp value in range.
29
- *
30
- * @param value Value to clamp.
31
- * @param min Minimum value.
32
- * @param max Maximum value.
33
- * @return Clamped value.
34
- */
35
- var clamp = function clamp(value, min, max) {
36
- if (value < min) {
37
- return min;
38
- }
39
-
40
- if (value > max) {
41
- return max;
42
- }
43
-
44
- return value;
45
- };
46
-
47
28
  /**
48
29
  * Defines the props of the component.
49
30
  */
@@ -323,5 +304,5 @@ Slider.displayName = COMPONENT_NAME;
323
304
  Slider.className = CLASSNAME;
324
305
  Slider.defaultProps = DEFAULT_PROPS;
325
306
 
326
- export { Slider as S, clamp as c };
307
+ export { Slider as S };
327
308
  //# sourceMappingURL=Slider2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider2.js","sources":["../../../src/hooks/useEventCallback.tsx","../../../src/utils/clamp.ts","../../../src/components/slider/Slider.tsx"],"sourcesContent":["import React from 'react';\n\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param fn A function to run\n * @return A React callback\n */\nexport default function useEventCallback(fn: (...args: any[]) => any): (event: any) => any {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((event: any) => ref.current(event), []);\n}\n","/**\n * Clamp value in range.\n *\n * @param value Value to clamp.\n * @param min Minimum value.\n * @param max Maximum value.\n * @return Clamped value.\n */\nexport const clamp = (value: number, min: number, max: number): number => {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n};\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { forwardRef, SyntheticEvent, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { InputHelper, InputLabel, Theme } from '@lumx/react';\n\nimport useEventCallback from '@lumx/react/hooks/useEventCallback';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\nimport { uid } from 'uid';\nimport { clamp } from '@lumx/react/utils/clamp';\n\n/**\n * Defines the props of the component.\n */\nexport interface SliderProps extends GenericProps {\n /** Helper text. */\n helper?: string;\n /** Whether the min and max labels should be hidden or not. */\n hideMinMaxLabel?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label text. */\n label?: string;\n /** Maximum value on the range. */\n max: number;\n /** Minimum value of the range. */\n min: number;\n /** Native input name property. */\n name?: string;\n /** Number of digits in the fractional part of the selected value. */\n precision?: number;\n /** Range step value. */\n steps?: number;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Selected ranged value. */\n value: number;\n /** On change callback. */\n onChange(value: number, name?: string, event?: SyntheticEvent): void;\n /** On click callback. */\n onMouseDown?(event: React.SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Slider';\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<SliderProps> = {\n precision: 0,\n steps: 0,\n theme: Theme.light,\n};\n\n/**\n * Convert a percent value to a value in range min - max.\n *\n * @param percent Value to convert.\n * @param min Minimum value.\n * @param max Maximum value.\n * @param precision Precision.\n * @return Value in range min - max\n */\nconst computeValueFromPercent = (percent: number, min: number, max: number, precision = 0): number =>\n Number((min + percent * (max - min)).toFixed(precision));\n\n/**\n * Convert a value in range min - max to a percent value.\n *\n * @param value Value to convert.\n * @param min Minimum value.\n * @param max Maximum value.\n * @return Value in percent\n */\nconst computePercentFromValue = (value: number, min: number, max: number): number =>\n Number((value - min) / (max - min));\n\n/**\n * Slider component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slider: Comp<SliderProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n className,\n disabled,\n helper,\n hideMinMaxLabel,\n id,\n isDisabled = disabled,\n label,\n max,\n min,\n name,\n onChange,\n onMouseDown,\n precision,\n steps,\n theme,\n value,\n ...forwardedProps\n } = props;\n const sliderId = useMemo(() => id || `slider-${uid()}`, [id]);\n const sliderLabelId = useMemo(() => `label-${sliderId}`, [sliderId]);\n const sliderRef = useRef<HTMLDivElement>(null);\n\n // build a lookup array for the steps.\n const availableSteps = useMemo((): number[] => {\n if (!steps) return [];\n\n const available = [0];\n const percentStep = 1 / ((max - min) / steps);\n let ptr = 0;\n while (ptr + percentStep < 1) {\n ptr += percentStep;\n available.push(ptr);\n }\n return available;\n }, [steps, min, max]);\n\n /**\n * Try to find the closest step to the current slider position.\n *\n * @param percentValue Reference value\n * @return The closest step value\n */\n const findClosestStep = (percentValue: number): number => {\n const closest = availableSteps.reduce(\n (acc, step) => {\n const aDst = Math.abs(percentValue - step);\n if (aDst < acc.dst) {\n return { dst: aDst, val: step };\n }\n return acc;\n },\n { dst: Infinity, val: -1 },\n );\n return closest.val;\n };\n\n /**\n * Convert slider's handle position to percent.\n *\n * @param event The interaction event\n * @param slider the slider element\n * @return The computed percent value\n */\n const getPercentValue = (event: React.MouseEvent, slider: HTMLDivElement): number => {\n const { width, left } = slider.getBoundingClientRect();\n let percent = (event.pageX - left - window.pageXOffset) / width;\n percent = clamp(percent, 0, 1);\n if (steps) {\n percent = findClosestStep(percent);\n }\n return percent;\n };\n\n /**\n * Register a handler for the mouse move event.\n */\n const handleMove = useEventCallback((event: React.MouseEvent) => {\n const { current: slider } = sliderRef;\n if (!slider || !onChange) return;\n const newValue = getPercentValue(event, slider);\n onChange(computeValueFromPercent(newValue, min, max, precision), name, event);\n });\n\n /**\n * Register a handler for the mouse up event.\n * Clean a all listeners.\n */\n const handleEnd = useEventCallback(() => {\n document.body.removeEventListener('mousemove', handleMove);\n document.body.removeEventListener('mouseup', handleEnd);\n document.body.removeEventListener('touchmove', handleMove);\n document.body.removeEventListener('touchend', handleEnd);\n });\n\n /**\n * Move to the next or previous value (i.e. + or - 10%) or next step\n * @param previous Should seek the previous value.\n */\n const hopToValue = (previous = false) => {\n const oldPercent = computePercentFromValue(value, min, max);\n let percent = clamp(oldPercent + (previous ? -0.1 : 0.1), 0, 1);\n if (steps) {\n percent = oldPercent + availableSteps[1] * (previous ? -1 : 1);\n percent = findClosestStep(percent);\n }\n if (onChange) {\n onChange(computeValueFromPercent(percent, min, max, precision), name);\n }\n };\n\n /**\n * Register a handler for keyboard interactions\n */\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent) => {\n if (event.key === 'ArrowRight') {\n hopToValue();\n } else if (event.key === 'ArrowLeft') {\n hopToValue(true);\n }\n });\n\n /**\n * Register a handler for the mouseDown event.\n */\n const handleMouseDown = useEventCallback((event: React.MouseEvent) => {\n onMouseDown?.(event);\n\n const { current: slider } = sliderRef;\n if (isDisabled || !slider) return;\n const newValue = getPercentValue(event, slider);\n if (onChange) {\n onChange(computeValueFromPercent(newValue, min, max, precision), name, event);\n }\n\n document.body.addEventListener('mousemove', handleMove);\n document.body.addEventListener('mouseup', handleEnd);\n });\n\n const percentString = `${computePercentFromValue(value, min, max) * 100}%`;\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, theme, hasLabel: Boolean(label) }),\n )}\n onMouseDown={handleMouseDown}\n aria-disabled={isDisabled}\n >\n {label && (\n <InputLabel id={sliderLabelId} htmlFor={sliderId} className={`${CLASSNAME}__label`} theme={theme}>\n {label}\n </InputLabel>\n )}\n\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n\n <div className={`${CLASSNAME}__ui-wrapper`}>\n {!hideMinMaxLabel && (\n <span className={`${CLASSNAME}__value-label ${CLASSNAME}__value-label--min`}>{min}</span>\n )}\n <div className={`${CLASSNAME}__wrapper`} ref={sliderRef}>\n <div className={`${CLASSNAME}__track ${CLASSNAME}__track--background`} />\n <div\n className={`${CLASSNAME}__track ${CLASSNAME}__track--active`}\n style={{ width: percentString }}\n />\n {steps ? (\n <div className={`${CLASSNAME}__ticks`}>\n {availableSteps.map((step, idx) => (\n <div\n key={`tick_${idx}`}\n className={`${CLASSNAME}__tick`}\n style={{ left: `${step * 100}%` }}\n />\n ))}\n </div>\n ) : null}\n <button\n type=\"button\"\n aria-labelledby={sliderLabelId}\n name={name}\n id={sliderId}\n className={`${CLASSNAME}__handle`}\n style={{ left: percentString }}\n onKeyDown={handleKeyDown}\n disabled={isDisabled}\n />\n </div>\n {!hideMinMaxLabel && (\n <span className={`${CLASSNAME}__value-label ${CLASSNAME}__value-label--max`}>{max}</span>\n )}\n </div>\n </div>\n );\n});\nSlider.displayName = COMPONENT_NAME;\nSlider.className = CLASSNAME;\nSlider.defaultProps = DEFAULT_PROPS;\n"],"names":["useEnhancedEffect","window","React","useLayoutEffect","useEffect","useEventCallback","fn","ref","useRef","current","useCallback","event","clamp","value","min","max","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","precision","steps","theme","Theme","light","computeValueFromPercent","percent","Number","toFixed","computePercentFromValue","Slider","forwardRef","props","className","disabled","helper","hideMinMaxLabel","id","isDisabled","label","name","onChange","onMouseDown","forwardedProps","sliderId","useMemo","uid","sliderLabelId","sliderRef","availableSteps","available","percentStep","ptr","push","findClosestStep","percentValue","closest","reduce","acc","step","aDst","Math","abs","dst","val","Infinity","getPercentValue","slider","getBoundingClientRect","width","left","pageX","pageXOffset","handleMove","newValue","handleEnd","document","body","removeEventListener","hopToValue","previous","oldPercent","handleKeyDown","key","handleMouseDown","addEventListener","percentString","classNames","handleBasicClasses","prefix","hasLabel","Boolean","map","idx","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"Slider2.js","sources":["../../../src/hooks/useEventCallback.tsx","../../../src/components/slider/Slider.tsx"],"sourcesContent":["import React from 'react';\n\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param fn A function to run\n * @return A React callback\n */\nexport default function useEventCallback(fn: (...args: any[]) => any): (event: any) => any {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((event: any) => ref.current(event), []);\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { forwardRef, SyntheticEvent, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { InputHelper, InputLabel, Theme } from '@lumx/react';\n\nimport useEventCallback from '@lumx/react/hooks/useEventCallback';\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\nimport { uid } from 'uid';\nimport { clamp } from '@lumx/react/utils/clamp';\n\n/**\n * Defines the props of the component.\n */\nexport interface SliderProps extends GenericProps {\n /** Helper text. */\n helper?: string;\n /** Whether the min and max labels should be hidden or not. */\n hideMinMaxLabel?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label text. */\n label?: string;\n /** Maximum value on the range. */\n max: number;\n /** Minimum value of the range. */\n min: number;\n /** Native input name property. */\n name?: string;\n /** Number of digits in the fractional part of the selected value. */\n precision?: number;\n /** Range step value. */\n steps?: number;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Selected ranged value. */\n value: number;\n /** On change callback. */\n onChange(value: number, name?: string, event?: SyntheticEvent): void;\n /** On click callback. */\n onMouseDown?(event: React.SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Slider';\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<SliderProps> = {\n precision: 0,\n steps: 0,\n theme: Theme.light,\n};\n\n/**\n * Convert a percent value to a value in range min - max.\n *\n * @param percent Value to convert.\n * @param min Minimum value.\n * @param max Maximum value.\n * @param precision Precision.\n * @return Value in range min - max\n */\nconst computeValueFromPercent = (percent: number, min: number, max: number, precision = 0): number =>\n Number((min + percent * (max - min)).toFixed(precision));\n\n/**\n * Convert a value in range min - max to a percent value.\n *\n * @param value Value to convert.\n * @param min Minimum value.\n * @param max Maximum value.\n * @return Value in percent\n */\nconst computePercentFromValue = (value: number, min: number, max: number): number =>\n Number((value - min) / (max - min));\n\n/**\n * Slider component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slider: Comp<SliderProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n className,\n disabled,\n helper,\n hideMinMaxLabel,\n id,\n isDisabled = disabled,\n label,\n max,\n min,\n name,\n onChange,\n onMouseDown,\n precision,\n steps,\n theme,\n value,\n ...forwardedProps\n } = props;\n const sliderId = useMemo(() => id || `slider-${uid()}`, [id]);\n const sliderLabelId = useMemo(() => `label-${sliderId}`, [sliderId]);\n const sliderRef = useRef<HTMLDivElement>(null);\n\n // build a lookup array for the steps.\n const availableSteps = useMemo((): number[] => {\n if (!steps) return [];\n\n const available = [0];\n const percentStep = 1 / ((max - min) / steps);\n let ptr = 0;\n while (ptr + percentStep < 1) {\n ptr += percentStep;\n available.push(ptr);\n }\n return available;\n }, [steps, min, max]);\n\n /**\n * Try to find the closest step to the current slider position.\n *\n * @param percentValue Reference value\n * @return The closest step value\n */\n const findClosestStep = (percentValue: number): number => {\n const closest = availableSteps.reduce(\n (acc, step) => {\n const aDst = Math.abs(percentValue - step);\n if (aDst < acc.dst) {\n return { dst: aDst, val: step };\n }\n return acc;\n },\n { dst: Infinity, val: -1 },\n );\n return closest.val;\n };\n\n /**\n * Convert slider's handle position to percent.\n *\n * @param event The interaction event\n * @param slider the slider element\n * @return The computed percent value\n */\n const getPercentValue = (event: React.MouseEvent, slider: HTMLDivElement): number => {\n const { width, left } = slider.getBoundingClientRect();\n let percent = (event.pageX - left - window.pageXOffset) / width;\n percent = clamp(percent, 0, 1);\n if (steps) {\n percent = findClosestStep(percent);\n }\n return percent;\n };\n\n /**\n * Register a handler for the mouse move event.\n */\n const handleMove = useEventCallback((event: React.MouseEvent) => {\n const { current: slider } = sliderRef;\n if (!slider || !onChange) return;\n const newValue = getPercentValue(event, slider);\n onChange(computeValueFromPercent(newValue, min, max, precision), name, event);\n });\n\n /**\n * Register a handler for the mouse up event.\n * Clean a all listeners.\n */\n const handleEnd = useEventCallback(() => {\n document.body.removeEventListener('mousemove', handleMove);\n document.body.removeEventListener('mouseup', handleEnd);\n document.body.removeEventListener('touchmove', handleMove);\n document.body.removeEventListener('touchend', handleEnd);\n });\n\n /**\n * Move to the next or previous value (i.e. + or - 10%) or next step\n * @param previous Should seek the previous value.\n */\n const hopToValue = (previous = false) => {\n const oldPercent = computePercentFromValue(value, min, max);\n let percent = clamp(oldPercent + (previous ? -0.1 : 0.1), 0, 1);\n if (steps) {\n percent = oldPercent + availableSteps[1] * (previous ? -1 : 1);\n percent = findClosestStep(percent);\n }\n if (onChange) {\n onChange(computeValueFromPercent(percent, min, max, precision), name);\n }\n };\n\n /**\n * Register a handler for keyboard interactions\n */\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent) => {\n if (event.key === 'ArrowRight') {\n hopToValue();\n } else if (event.key === 'ArrowLeft') {\n hopToValue(true);\n }\n });\n\n /**\n * Register a handler for the mouseDown event.\n */\n const handleMouseDown = useEventCallback((event: React.MouseEvent) => {\n onMouseDown?.(event);\n\n const { current: slider } = sliderRef;\n if (isDisabled || !slider) return;\n const newValue = getPercentValue(event, slider);\n if (onChange) {\n onChange(computeValueFromPercent(newValue, min, max, precision), name, event);\n }\n\n document.body.addEventListener('mousemove', handleMove);\n document.body.addEventListener('mouseup', handleEnd);\n });\n\n const percentString = `${computePercentFromValue(value, min, max) * 100}%`;\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, theme, hasLabel: Boolean(label) }),\n )}\n onMouseDown={handleMouseDown}\n aria-disabled={isDisabled}\n >\n {label && (\n <InputLabel id={sliderLabelId} htmlFor={sliderId} className={`${CLASSNAME}__label`} theme={theme}>\n {label}\n </InputLabel>\n )}\n\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n\n <div className={`${CLASSNAME}__ui-wrapper`}>\n {!hideMinMaxLabel && (\n <span className={`${CLASSNAME}__value-label ${CLASSNAME}__value-label--min`}>{min}</span>\n )}\n <div className={`${CLASSNAME}__wrapper`} ref={sliderRef}>\n <div className={`${CLASSNAME}__track ${CLASSNAME}__track--background`} />\n <div\n className={`${CLASSNAME}__track ${CLASSNAME}__track--active`}\n style={{ width: percentString }}\n />\n {steps ? (\n <div className={`${CLASSNAME}__ticks`}>\n {availableSteps.map((step, idx) => (\n <div\n key={`tick_${idx}`}\n className={`${CLASSNAME}__tick`}\n style={{ left: `${step * 100}%` }}\n />\n ))}\n </div>\n ) : null}\n <button\n type=\"button\"\n aria-labelledby={sliderLabelId}\n name={name}\n id={sliderId}\n className={`${CLASSNAME}__handle`}\n style={{ left: percentString }}\n onKeyDown={handleKeyDown}\n disabled={isDisabled}\n />\n </div>\n {!hideMinMaxLabel && (\n <span className={`${CLASSNAME}__value-label ${CLASSNAME}__value-label--max`}>{max}</span>\n )}\n </div>\n </div>\n );\n});\nSlider.displayName = COMPONENT_NAME;\nSlider.className = CLASSNAME;\nSlider.defaultProps = DEFAULT_PROPS;\n"],"names":["useEnhancedEffect","window","React","useLayoutEffect","useEffect","useEventCallback","fn","ref","useRef","current","useCallback","event","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","precision","steps","theme","Theme","light","computeValueFromPercent","percent","min","max","Number","toFixed","computePercentFromValue","value","Slider","forwardRef","props","className","disabled","helper","hideMinMaxLabel","id","isDisabled","label","name","onChange","onMouseDown","forwardedProps","sliderId","useMemo","uid","sliderLabelId","sliderRef","availableSteps","available","percentStep","ptr","push","findClosestStep","percentValue","closest","reduce","acc","step","aDst","Math","abs","dst","val","Infinity","getPercentValue","slider","getBoundingClientRect","width","left","pageX","pageXOffset","clamp","handleMove","newValue","handleEnd","document","body","removeEventListener","hopToValue","previous","oldPercent","handleKeyDown","key","handleMouseDown","addEventListener","percentString","classNames","handleBasicClasses","prefix","hasLabel","Boolean","map","idx","displayName","defaultProps"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { b as _objectWithoutProperties, d as _slicedToArray, c as _extends, a as
2
2
  import { Theme, Emphasis } from './components.js';
3
3
  import React, { useRef, useEffect, forwardRef, useState, useCallback, useMemo } from 'react';
4
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 './mdi.js';
5
+ import { g as mdiChevronLeft, f as mdiChevronRight } from './Icon2.js';
6
6
  import { W as WINDOW } from './constants.js';
7
7
  import { m as mergeRefs } from './mergeRefs.js';
8
8
  import { I as IconButton } from './IconButton.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 = {
@@ -2,9 +2,8 @@ import { b as _objectWithoutProperties, c as _extends, a as _defineProperty } fr
2
2
  import { Theme, Size } from './components.js';
3
3
  import React, { forwardRef, useCallback } from 'react';
4
4
  import { g as getRootClassName, c as classnames, h as handleBasicClasses, o as onEnterPressed } from './getRootClassName.js';
5
- import { p as mdiArrowUp, q as mdiArrowDown } from './mdi.js';
5
+ import { I as Icon, p as mdiArrowUp, q as mdiArrowDown } from './Icon2.js';
6
6
  import isFunction from 'lodash/isFunction';
7
- import { I as Icon } from './Icon2.js';
8
7
 
9
8
  /**
10
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":"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"}
@@ -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';
5
+ import { I as Icon, c as mdiAlertCircle, b as mdiCheckCircle, n as mdiCloseCircle } from './Icon2.js';
6
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
 
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, RefObject, SyntheticEvent, useEffect, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport { uid } from 'uid';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle } from '@lumx/icons';\nimport { Emphasis, Icon, IconButton, IconButtonProps, InputHelper, InputLabel, Kind, Size, Theme } from '@lumx/react';\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 TextFieldProps extends GenericProps {\n /** Chip Group to be rendered before the main text input. */\n chips?: HTMLElement | ReactNode;\n /** Props to pass to the clear button (minus those already set by the TextField props). If not specified, the button won't be displayed. */\n clearButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Error message. */\n error?: string | ReactNode;\n /** Whether we force the focus style or not. */\n forceFocusStyle?: boolean;\n /** Whether the text field is displayed with error style or not. */\n hasError?: boolean;\n /** Additional element to put at the end of the text field. */\n afterElement?: ReactNode;\n /** Helper text. */\n helper?: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Native input id property (generated if not provided to link the label element). */\n id?: string;\n /** Reference to the <input> or <textarea> element. */\n inputRef?: RefObject<HTMLInputElement> | RefObject<HTMLTextAreaElement>;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is required or not. */\n isRequired?: boolean;\n /** Whether the text field is displayed with valid style or not. */\n isValid?: boolean;\n /** Label text. */\n label?: string;\n /** Max string length the input accepts (constrains the input and displays a character counter). */\n maxLength?: number;\n /** Minimum number of rows displayed in multiline mode (requires `multiline` to be enabled). */\n minimumRows?: number;\n /** Whether the text field is a textarea or an input. */\n multiline?: boolean;\n /** Native input name property. */\n name?: string;\n /** Placeholder text. */\n placeholder?: string;\n /** Reference to the wrapper. */\n textFieldRef?: RefObject<HTMLDivElement>;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Value. */\n value?: string;\n /** On blur callback. */\n onBlur?(event: React.FocusEvent): void;\n /** On change callback. */\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n /** On focus callback. */\n onFocus?(event: React.FocusEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TextField';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Default minimum number of rows in the multiline mode.\n */\nconst DEFAULT_MIN_ROWS = 2;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TextFieldProps> = {\n theme: Theme.light,\n type: 'text',\n};\n\n/**\n * Hook that allows to calculate the number of rows needed for a text area.\n * @param minimumRows Minimum number of rows that we want to display.\n * @return rows to be used and a callback to recalculate\n */\nconst useComputeNumberOfRows = (\n minimumRows: number,\n): {\n /** number of rows to be used on the text area */\n rows: number;\n /**\n * Callback in order to recalculate the number of rows due to a change on the text area\n */\n recomputeNumberOfRows(target: Element): void;\n} => {\n const [rows, setRows] = useState(minimumRows);\n\n const recompute = (target: Element) => {\n /**\n * HEAD's UP! This part is a little bit tricky. The idea here is to only\n * display the necessary rows on the textarea. In order to dynamically adjust\n * the height on that field, we need to:\n * 1. Set the current amount of rows to the minimum. That will make the scroll appear.\n * 2. With that, we will have the `scrollHeight`, meaning the height of the container adjusted to the current content\n * 3. With the scroll height, we can figure out how many rows we need to use by dividing the scroll height\n * by the line height.\n * 4. With that number, we can readjust the number of rows on the text area. We need to do that here, if we leave that to\n * the state change through React, there are some scenarios (resize, hitting ENTER or BACKSPACE which add or remove lines)\n * when we will not see the update and the rows will be resized to the minimum.\n * 5. In case there is any other update on the component that changes the UI, we need to keep the number of rows\n * on the state in order to allow React to re-render. Therefore, we save them using `useState`\n */\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = minimumRows;\n let currentRows = target.scrollHeight / (target.clientHeight / minimumRows);\n currentRows = currentRows >= minimumRows ? currentRows : minimumRows;\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = currentRows;\n\n setRows(currentRows);\n };\n\n return {\n recomputeNumberOfRows: recompute,\n rows,\n };\n};\n\ninterface InputNativeProps {\n id?: string;\n inputRef?: RefObject<HTMLInputElement> | RefObject<HTMLTextAreaElement>;\n isDisabled?: boolean;\n isRequired?: boolean;\n multiline?: boolean;\n maxLength?: number;\n placeholder?: string;\n rows: number;\n type: string;\n name?: string;\n value?: string;\n setFocus(focus: boolean): void;\n recomputeNumberOfRows(target: Element): void;\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n onFocus?(value: React.FocusEvent): void;\n onBlur?(value: React.FocusEvent): void;\n}\n\nconst renderInputNative: React.FC<InputNativeProps> = (props) => {\n const {\n id,\n isDisabled,\n isRequired,\n placeholder,\n multiline,\n value,\n setFocus,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n rows,\n recomputeNumberOfRows,\n type,\n name,\n ...forwardedProps\n } = props;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const ref = useRef<HTMLElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n // Recompute the number of rows for the first rendering\n if (multiline && ref && ref.current) {\n recomputeNumberOfRows(ref.current);\n }\n }, [ref, multiline, recomputeNumberOfRows, value]);\n\n const onTextFieldFocus = (event: React.FocusEvent) => {\n onFocus?.(event);\n setFocus(true);\n };\n\n const onTextFieldBlur = (event: React.FocusEvent) => {\n onBlur?.(event);\n setFocus(false);\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n onChange(get(event, 'target.value'), name, event);\n };\n\n const Component = multiline ? 'textarea' : 'input';\n const inputProps: any = {\n ...forwardedProps,\n id,\n className: multiline\n ? `${CLASSNAME}__input-native ${CLASSNAME}__input-native--textarea`\n : `${CLASSNAME}__input-native ${CLASSNAME}__input-native--text`,\n placeholder,\n value,\n name,\n disabled: isDisabled,\n required: isRequired,\n onFocus: onTextFieldFocus,\n onBlur: onTextFieldBlur,\n onChange: handleChange,\n ref: mergeRefs(inputRef as any, ref) as any,\n };\n if (multiline) {\n inputProps.rows = rows;\n } else {\n inputProps.type = type;\n }\n return <Component {...inputProps} />;\n};\n\n/**\n * TextField component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TextField: Comp<TextFieldProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n chips,\n className,\n clearButtonProps,\n disabled,\n error,\n forceFocusStyle,\n hasError,\n helper,\n icon,\n id,\n inputRef,\n isDisabled = disabled,\n isRequired,\n isValid,\n label,\n maxLength,\n minimumRows,\n multiline,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n textFieldRef,\n theme,\n type,\n value,\n afterElement,\n ...forwardedProps\n } = props;\n const textFieldId = useMemo(() => id || `text-field-${uid()}`, [id]);\n const [isFocus, setFocus] = useState(false);\n const { rows, recomputeNumberOfRows } = useComputeNumberOfRows(multiline ? minimumRows || DEFAULT_MIN_ROWS : 0);\n const valueLength = (value || '').length;\n const isNotEmpty = valueLength > 0;\n\n /**\n * Function triggered when the Clear Button is clicked.\n * The idea is to execute the `onChange` callback with an empty string\n * and remove focus from the clear button.\n * @param evt On clear event.\n */\n const onClear = (evt: React.ChangeEvent) => {\n evt.nativeEvent.preventDefault();\n evt.nativeEvent.stopPropagation();\n (evt.currentTarget as HTMLElement).blur();\n\n onChange('');\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChips: Boolean(chips),\n hasError: !isValid && hasError,\n hasIcon: Boolean(icon),\n hasInput: !multiline,\n hasInputClear: clearButtonProps && isNotEmpty,\n hasLabel: Boolean(label),\n hasPlaceholder: Boolean(placeholder),\n hasTextarea: multiline,\n hasValue: Boolean(value),\n isDisabled,\n isFocus: isFocus || forceFocusStyle,\n isValid,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n {(label || maxLength) && (\n <div className={`${CLASSNAME}__header`}>\n {label && (\n <InputLabel\n htmlFor={textFieldId}\n className={`${CLASSNAME}__label`}\n isRequired={isRequired}\n theme={theme}\n >\n {label}\n </InputLabel>\n )}\n\n {maxLength && (\n <div className={`${CLASSNAME}__char-counter`}>\n <span>{maxLength - valueLength}</span>\n {maxLength - valueLength === 0 && <Icon icon={mdiAlertCircle} size={Size.xxs} />}\n </div>\n )}\n </div>\n )}\n\n <div className={`${CLASSNAME}__wrapper`} ref={textFieldRef}>\n {icon && (\n <Icon\n className={`${CLASSNAME}__input-icon`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={icon}\n size={Size.xs}\n />\n )}\n\n {chips && (\n <div className={`${CLASSNAME}__chips`}>\n {chips}\n\n {renderInputNative({\n id: textFieldId,\n inputRef,\n isDisabled,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {!chips && (\n <div className={`${CLASSNAME}__input-wrapper`}>\n {renderInputNative({\n id: textFieldId,\n inputRef,\n isDisabled,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {(isValid || hasError) && (\n <Icon\n className={`${CLASSNAME}__input-validity`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={isValid ? mdiCheckCircle : mdiAlertCircle}\n size={Size.xxs}\n />\n )}\n\n {clearButtonProps && isNotEmpty && (\n <IconButton\n {...clearButtonProps}\n className={`${CLASSNAME}__input-clear`}\n icon={mdiCloseCircle}\n emphasis={Emphasis.low}\n size={Size.s}\n theme={theme}\n onClick={onClear}\n type=\"button\"\n />\n )}\n\n {afterElement && <div className={`${CLASSNAME}__after-element`}>{afterElement}</div>}\n </div>\n\n {hasError && error && (\n <InputHelper className={`${CLASSNAME}__helper`} kind={Kind.error} theme={theme}>\n {error}\n </InputHelper>\n )}\n\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n </div>\n );\n});\nTextField.displayName = COMPONENT_NAME;\nTextField.className = CLASSNAME;\nTextField.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_MIN_ROWS","DEFAULT_PROPS","theme","Theme","light","type","useComputeNumberOfRows","minimumRows","useState","rows","setRows","recompute","target","currentRows","scrollHeight","clientHeight","recomputeNumberOfRows","renderInputNative","props","id","isDisabled","isRequired","placeholder","multiline","value","setFocus","onChange","onFocus","onBlur","inputRef","name","forwardedProps","ref","useRef","useEffect","current","onTextFieldFocus","event","onTextFieldBlur","handleChange","get","Component","inputProps","className","disabled","required","mergeRefs","TextField","forwardRef","chips","clearButtonProps","error","forceFocusStyle","hasError","helper","icon","isValid","label","maxLength","textFieldRef","afterElement","textFieldId","useMemo","uid","isFocus","valueLength","length","isNotEmpty","onClear","evt","nativeEvent","preventDefault","stopPropagation","currentTarget","blur","classNames","handleBasicClasses","hasChips","Boolean","hasIcon","hasInput","hasInputClear","hasLabel","hasPlaceholder","hasTextarea","hasValue","prefix","mdiAlertCircle","Size","xxs","dark","undefined","xs","mdiCheckCircle","mdiCloseCircle","Emphasis","low","s","Kind","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"TextField.js","sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, RefObject, SyntheticEvent, useEffect, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport get from 'lodash/get';\nimport { uid } from 'uid';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle } from '@lumx/icons';\nimport { Emphasis, Icon, IconButton, IconButtonProps, InputHelper, InputLabel, Kind, Size, Theme } from '@lumx/react';\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 TextFieldProps extends GenericProps {\n /** Chip Group to be rendered before the main text input. */\n chips?: HTMLElement | ReactNode;\n /** Props to pass to the clear button (minus those already set by the TextField props). If not specified, the button won't be displayed. */\n clearButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Error message. */\n error?: string | ReactNode;\n /** Whether we force the focus style or not. */\n forceFocusStyle?: boolean;\n /** Whether the text field is displayed with error style or not. */\n hasError?: boolean;\n /** Additional element to put at the end of the text field. */\n afterElement?: ReactNode;\n /** Helper text. */\n helper?: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Native input id property (generated if not provided to link the label element). */\n id?: string;\n /** Reference to the <input> or <textarea> element. */\n inputRef?: RefObject<HTMLInputElement> | RefObject<HTMLTextAreaElement>;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is required or not. */\n isRequired?: boolean;\n /** Whether the text field is displayed with valid style or not. */\n isValid?: boolean;\n /** Label text. */\n label?: string;\n /** Max string length the input accepts (constrains the input and displays a character counter). */\n maxLength?: number;\n /** Minimum number of rows displayed in multiline mode (requires `multiline` to be enabled). */\n minimumRows?: number;\n /** Whether the text field is a textarea or an input. */\n multiline?: boolean;\n /** Native input name property. */\n name?: string;\n /** Placeholder text. */\n placeholder?: string;\n /** Reference to the wrapper. */\n textFieldRef?: RefObject<HTMLDivElement>;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Value. */\n value?: string;\n /** On blur callback. */\n onBlur?(event: React.FocusEvent): void;\n /** On change callback. */\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n /** On focus callback. */\n onFocus?(event: React.FocusEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TextField';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Default minimum number of rows in the multiline mode.\n */\nconst DEFAULT_MIN_ROWS = 2;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TextFieldProps> = {\n theme: Theme.light,\n type: 'text',\n};\n\n/**\n * Hook that allows to calculate the number of rows needed for a text area.\n * @param minimumRows Minimum number of rows that we want to display.\n * @return rows to be used and a callback to recalculate\n */\nconst useComputeNumberOfRows = (\n minimumRows: number,\n): {\n /** number of rows to be used on the text area */\n rows: number;\n /**\n * Callback in order to recalculate the number of rows due to a change on the text area\n */\n recomputeNumberOfRows(target: Element): void;\n} => {\n const [rows, setRows] = useState(minimumRows);\n\n const recompute = (target: Element) => {\n /**\n * HEAD's UP! This part is a little bit tricky. The idea here is to only\n * display the necessary rows on the textarea. In order to dynamically adjust\n * the height on that field, we need to:\n * 1. Set the current amount of rows to the minimum. That will make the scroll appear.\n * 2. With that, we will have the `scrollHeight`, meaning the height of the container adjusted to the current content\n * 3. With the scroll height, we can figure out how many rows we need to use by dividing the scroll height\n * by the line height.\n * 4. With that number, we can readjust the number of rows on the text area. We need to do that here, if we leave that to\n * the state change through React, there are some scenarios (resize, hitting ENTER or BACKSPACE which add or remove lines)\n * when we will not see the update and the rows will be resized to the minimum.\n * 5. In case there is any other update on the component that changes the UI, we need to keep the number of rows\n * on the state in order to allow React to re-render. Therefore, we save them using `useState`\n */\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = minimumRows;\n let currentRows = target.scrollHeight / (target.clientHeight / minimumRows);\n currentRows = currentRows >= minimumRows ? currentRows : minimumRows;\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = currentRows;\n\n setRows(currentRows);\n };\n\n return {\n recomputeNumberOfRows: recompute,\n rows,\n };\n};\n\ninterface InputNativeProps {\n id?: string;\n inputRef?: RefObject<HTMLInputElement> | RefObject<HTMLTextAreaElement>;\n isDisabled?: boolean;\n isRequired?: boolean;\n multiline?: boolean;\n maxLength?: number;\n placeholder?: string;\n rows: number;\n type: string;\n name?: string;\n value?: string;\n setFocus(focus: boolean): void;\n recomputeNumberOfRows(target: Element): void;\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n onFocus?(value: React.FocusEvent): void;\n onBlur?(value: React.FocusEvent): void;\n}\n\nconst renderInputNative: React.FC<InputNativeProps> = (props) => {\n const {\n id,\n isDisabled,\n isRequired,\n placeholder,\n multiline,\n value,\n setFocus,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n rows,\n recomputeNumberOfRows,\n type,\n name,\n ...forwardedProps\n } = props;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const ref = useRef<HTMLElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n // Recompute the number of rows for the first rendering\n if (multiline && ref && ref.current) {\n recomputeNumberOfRows(ref.current);\n }\n }, [ref, multiline, recomputeNumberOfRows, value]);\n\n const onTextFieldFocus = (event: React.FocusEvent) => {\n onFocus?.(event);\n setFocus(true);\n };\n\n const onTextFieldBlur = (event: React.FocusEvent) => {\n onBlur?.(event);\n setFocus(false);\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n onChange(get(event, 'target.value'), name, event);\n };\n\n const Component = multiline ? 'textarea' : 'input';\n const inputProps: any = {\n ...forwardedProps,\n id,\n className: multiline\n ? `${CLASSNAME}__input-native ${CLASSNAME}__input-native--textarea`\n : `${CLASSNAME}__input-native ${CLASSNAME}__input-native--text`,\n placeholder,\n value,\n name,\n disabled: isDisabled,\n required: isRequired,\n onFocus: onTextFieldFocus,\n onBlur: onTextFieldBlur,\n onChange: handleChange,\n ref: mergeRefs(inputRef as any, ref) as any,\n };\n if (multiline) {\n inputProps.rows = rows;\n } else {\n inputProps.type = type;\n }\n return <Component {...inputProps} />;\n};\n\n/**\n * TextField component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TextField: Comp<TextFieldProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n chips,\n className,\n clearButtonProps,\n disabled,\n error,\n forceFocusStyle,\n hasError,\n helper,\n icon,\n id,\n inputRef,\n isDisabled = disabled,\n isRequired,\n isValid,\n label,\n maxLength,\n minimumRows,\n multiline,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n textFieldRef,\n theme,\n type,\n value,\n afterElement,\n ...forwardedProps\n } = props;\n const textFieldId = useMemo(() => id || `text-field-${uid()}`, [id]);\n const [isFocus, setFocus] = useState(false);\n const { rows, recomputeNumberOfRows } = useComputeNumberOfRows(multiline ? minimumRows || DEFAULT_MIN_ROWS : 0);\n const valueLength = (value || '').length;\n const isNotEmpty = valueLength > 0;\n\n /**\n * Function triggered when the Clear Button is clicked.\n * The idea is to execute the `onChange` callback with an empty string\n * and remove focus from the clear button.\n * @param evt On clear event.\n */\n const onClear = (evt: React.ChangeEvent) => {\n evt.nativeEvent.preventDefault();\n evt.nativeEvent.stopPropagation();\n (evt.currentTarget as HTMLElement).blur();\n\n onChange('');\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChips: Boolean(chips),\n hasError: !isValid && hasError,\n hasIcon: Boolean(icon),\n hasInput: !multiline,\n hasInputClear: clearButtonProps && isNotEmpty,\n hasLabel: Boolean(label),\n hasPlaceholder: Boolean(placeholder),\n hasTextarea: multiline,\n hasValue: Boolean(value),\n isDisabled,\n isFocus: isFocus || forceFocusStyle,\n isValid,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n {(label || maxLength) && (\n <div className={`${CLASSNAME}__header`}>\n {label && (\n <InputLabel\n htmlFor={textFieldId}\n className={`${CLASSNAME}__label`}\n isRequired={isRequired}\n theme={theme}\n >\n {label}\n </InputLabel>\n )}\n\n {maxLength && (\n <div className={`${CLASSNAME}__char-counter`}>\n <span>{maxLength - valueLength}</span>\n {maxLength - valueLength === 0 && <Icon icon={mdiAlertCircle} size={Size.xxs} />}\n </div>\n )}\n </div>\n )}\n\n <div className={`${CLASSNAME}__wrapper`} ref={textFieldRef}>\n {icon && (\n <Icon\n className={`${CLASSNAME}__input-icon`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={icon}\n size={Size.xs}\n />\n )}\n\n {chips && (\n <div className={`${CLASSNAME}__chips`}>\n {chips}\n\n {renderInputNative({\n id: textFieldId,\n inputRef,\n isDisabled,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {!chips && (\n <div className={`${CLASSNAME}__input-wrapper`}>\n {renderInputNative({\n id: textFieldId,\n inputRef,\n isDisabled,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {(isValid || hasError) && (\n <Icon\n className={`${CLASSNAME}__input-validity`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={isValid ? mdiCheckCircle : mdiAlertCircle}\n size={Size.xxs}\n />\n )}\n\n {clearButtonProps && isNotEmpty && (\n <IconButton\n {...clearButtonProps}\n className={`${CLASSNAME}__input-clear`}\n icon={mdiCloseCircle}\n emphasis={Emphasis.low}\n size={Size.s}\n theme={theme}\n onClick={onClear}\n type=\"button\"\n />\n )}\n\n {afterElement && <div className={`${CLASSNAME}__after-element`}>{afterElement}</div>}\n </div>\n\n {hasError && error && (\n <InputHelper className={`${CLASSNAME}__helper`} kind={Kind.error} theme={theme}>\n {error}\n </InputHelper>\n )}\n\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n </div>\n );\n});\nTextField.displayName = COMPONENT_NAME;\nTextField.className = CLASSNAME;\nTextField.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_MIN_ROWS","DEFAULT_PROPS","theme","Theme","light","type","useComputeNumberOfRows","minimumRows","useState","rows","setRows","recompute","target","currentRows","scrollHeight","clientHeight","recomputeNumberOfRows","renderInputNative","props","id","isDisabled","isRequired","placeholder","multiline","value","setFocus","onChange","onFocus","onBlur","inputRef","name","forwardedProps","ref","useRef","useEffect","current","onTextFieldFocus","event","onTextFieldBlur","handleChange","get","Component","inputProps","className","disabled","required","mergeRefs","TextField","forwardRef","chips","clearButtonProps","error","forceFocusStyle","hasError","helper","icon","isValid","label","maxLength","textFieldRef","afterElement","textFieldId","useMemo","uid","isFocus","valueLength","length","isNotEmpty","onClear","evt","nativeEvent","preventDefault","stopPropagation","currentTarget","blur","classNames","handleBasicClasses","hasChips","Boolean","hasIcon","hasInput","hasInputClear","hasLabel","hasPlaceholder","hasTextarea","hasValue","prefix","mdiAlertCircle","Size","xxs","dark","undefined","xs","mdiCheckCircle","mdiCloseCircle","Emphasis","low","s","Kind","displayName","defaultProps"],"mappings":"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"}