@chayns-components/core 5.0.0-beta.1113 → 5.0.0-beta.1116

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.
@@ -38,6 +38,8 @@ const StyledMotionAccordion = exports.StyledMotionAccordion = (0, _styledCompone
38
38
  margin-bottom 0.3s ease;
39
39
  will-change: unset !important;
40
40
 
41
+ margin-top: 10px;
42
+
41
43
  ${({
42
44
  $isOpen,
43
45
  $isWrapped,
@@ -68,9 +70,11 @@ const StyledMotionAccordion = exports.StyledMotionAccordion = (0, _styledCompone
68
70
  `}
69
71
  ${({
70
72
  $isWrapped
71
- }) => !$isWrapped && (0, _styledComponents.css)`
72
- margin-top: 10px;
73
- `}
73
+ }) => !$isWrapped ? (0, _styledComponents.css)`
74
+ margin-top: 5px;
75
+ ` : (0, _styledComponents.css)`
76
+ margin: 0;
77
+ `}
74
78
  ${({
75
79
  $isWrapped,
76
80
  $shouldHideBackground,
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledMotionAccordion","exports","styled","motion","div","$isOpen","$isWrapped","$shouldForceBackground","$shouldHideBackground","theme","css","cardBackgroundOpacity","cardBorderRadius","cardShadow","accordionLines","$shouldShowLines","$shouldHideBottomLine","undefined","$isParentWrapped"],"sources":["../../../../src/components/accordion/Accordion.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionAccordionProps = WithTheme<{\n $isOpen: boolean;\n $isParentWrapped?: boolean;\n $isWrapped?: boolean;\n $shouldForceBackground?: boolean;\n $shouldHideBackground?: boolean;\n $shouldShowLines?: boolean;\n $shouldHideBottomLine: boolean;\n}>;\n\nexport const StyledMotionAccordion = styled(motion.div)<StyledMotionAccordionProps>`\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldHideBackground,\n theme,\n }: StyledMotionAccordionProps) =>\n ($isOpen || $shouldForceBackground) &&\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n border-radius: ${theme.cardBorderRadius}px;\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, ${theme.cardShadow});\n `}\n\n ${({ theme }: StyledMotionAccordionProps) =>\n theme.accordionLines &&\n css`\n border-bottom: 1px solid transparent;\n `}\n\n margin-bottom: ${({ $isOpen, $isWrapped }: StyledMotionAccordionProps) =>\n $isOpen && !$isWrapped ? '30px' : '0px'};\n transition:\n background-color 0.3s ease,\n border-bottom-color 0.3s ease,\n border-radius 0.3s ease,\n box-shadow 0.3s ease,\n margin-bottom 0.3s ease;\n will-change: unset !important;\n\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldShowLines,\n $shouldHideBottomLine,\n theme,\n }: StyledMotionAccordionProps) => {\n if ($shouldForceBackground || $shouldHideBottomLine) return undefined;\n\n if (theme.accordionLines) {\n if ($isWrapped && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n\n if (!$isOpen && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n }\n\n return undefined;\n }}\n ${({ $isParentWrapped }: StyledMotionAccordionProps) =>\n $isParentWrapped &&\n css`\n padding-left: 17px;\n `}\n ${({ $isWrapped }: StyledMotionAccordionProps) =>\n !$isWrapped &&\n css`\n margin-top: 10px;\n `}\n ${({ $isWrapped, $shouldHideBackground, theme }: StyledMotionAccordionProps) =>\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n &:hover {\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n }\n `};\n`;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Accordion.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledMotionAccordion","exports","styled","motion","div","$isOpen","$isWrapped","$shouldForceBackground","$shouldHideBackground","theme","css","cardBackgroundOpacity","cardBorderRadius","cardShadow","accordionLines","$shouldShowLines","$shouldHideBottomLine","undefined","$isParentWrapped"],"sources":["../../../../src/components/accordion/Accordion.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionAccordionProps = WithTheme<{\n $isOpen: boolean;\n $isParentWrapped?: boolean;\n $isWrapped?: boolean;\n $shouldForceBackground?: boolean;\n $shouldHideBackground?: boolean;\n $shouldShowLines?: boolean;\n $shouldHideBottomLine: boolean;\n}>;\n\nexport const StyledMotionAccordion = styled(motion.div)<StyledMotionAccordionProps>`\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldHideBackground,\n theme,\n }: StyledMotionAccordionProps) =>\n ($isOpen || $shouldForceBackground) &&\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n border-radius: ${theme.cardBorderRadius}px;\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, ${theme.cardShadow});\n `}\n\n ${({ theme }: StyledMotionAccordionProps) =>\n theme.accordionLines &&\n css`\n border-bottom: 1px solid transparent;\n `}\n\n margin-bottom: ${({ $isOpen, $isWrapped }: StyledMotionAccordionProps) =>\n $isOpen && !$isWrapped ? '30px' : '0px'};\n transition:\n background-color 0.3s ease,\n border-bottom-color 0.3s ease,\n border-radius 0.3s ease,\n box-shadow 0.3s ease,\n margin-bottom 0.3s ease;\n will-change: unset !important;\n\n margin-top: 10px;\n\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldShowLines,\n $shouldHideBottomLine,\n theme,\n }: StyledMotionAccordionProps) => {\n if ($shouldForceBackground || $shouldHideBottomLine) return undefined;\n\n if (theme.accordionLines) {\n if ($isWrapped && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n\n if (!$isOpen && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n }\n\n return undefined;\n }}\n ${({ $isParentWrapped }: StyledMotionAccordionProps) =>\n $isParentWrapped &&\n css`\n padding-left: 17px;\n `}\n ${({ $isWrapped }: StyledMotionAccordionProps) =>\n !$isWrapped\n ? css`\n margin-top: 5px;\n `\n : css`\n margin: 0;\n `}\n ${({ $isWrapped, $shouldHideBackground, theme }: StyledMotionAccordionProps) =>\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n &:hover {\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n }\n `};\n`;\n"],"mappings":"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","ignoreList":[]}
@@ -37,8 +37,8 @@ const AccordionHead = ({
37
37
  titleColor
38
38
  }) => {
39
39
  const [headHeight, setHeadHeight] = (0, _react2.useState)({
40
- closed: isWrapped ? 40 : 33,
41
- open: isWrapped ? 40 : 33
40
+ closed: isWrapped ? 40 : 32,
41
+ open: isWrapped ? 40 : 32
42
42
  });
43
43
  const [isSearchActive, setIsSearchActive] = (0, _react2.useState)(false);
44
44
  const theme = (0, _styledComponents.useTheme)();
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionHead.js","names":["_react","require","_react2","_interopRequireWildcard","_styledComponents","_useElementSize","_accordion","_AreaContextProvider","_Icon","_interopRequireDefault","_Input","_SearchInput","_AccordionHead","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","AccordionHead","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","titleInputProps","onTitleInputChange","titleColor","headHeight","setHeadHeight","useState","closed","open","isSearchActive","setIsSearchActive","theme","useTheme","titleElementWrapperRef","useRef","titleWrapperRef","internalSearchValue","setInternalSearchValue","useEffect","handleOnSearchChance","event","target","value","titleElementChildrenSize","useElementSize","shouldUseChildElement","shouldPreventRightElementClick","useMemo","getElementClickEvent","_titleWrapperRef$curr","getAccordionHeadHeight","width","current","clientWidth","hasSearch","fontSize","iconElement","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","StyledAccordionIcon","className","$icon","accordionHeadHeight","height","StyledMotionAccordionHead","animate","initial","key","StyledMotionIconWrapper","rotate","undefined","StyledMotionContentWrapper","opacity","ref","$isWrapped","AreaContext","Provider","shouldChangeColor","onChange","LayoutGroup","StyledMotionTitleWrapper","AnimatePresence","StyledMotionTitle","scale","exit","$isOpen","$color","$hasSearch","transition","duration","StyledMotionTitleElementWrapper","layout","StyledRightWrapper","$isSearchActive","StyledMotionSearchWrapper","onActiveChange","isActive","placeholder","size","InputSize","Small","StyledMotionRightElementWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../../hooks/useElementSize';\nimport { getAccordionHeadHeight, getElementClickEvent } from '../../../utils/accordion';\nimport { AreaContext } from '../../area-provider/AreaContextProvider';\nimport type { Theme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../../icon/Icon';\nimport Input, { InputSize, type InputProps } from '../../input/Input';\nimport SearchInput from '../../search-input/SearchInput';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionSearchWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\nexport type AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n titleColor?: CSSProperties['color'];\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n titleInputProps,\n onTitleInputChange,\n titleColor,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 33,\n open: isWrapped ? 40 : 33,\n });\n\n const [isSearchActive, setIsSearchActive] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const titleElementWrapperRef = useRef<HTMLDivElement>(null);\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const [internalSearchValue, setInternalSearchValue] = useState<string>();\n\n useEffect(() => {\n setInternalSearchValue(searchValue);\n }, [searchValue]);\n\n const handleOnSearchChance = (event: ChangeEvent<HTMLInputElement>) => {\n setInternalSearchValue(event.target.value);\n if (typeof onSearchChange === 'function') {\n onSearchChange(event);\n }\n };\n\n const titleElementChildrenSize = useElementSize(titleElementWrapperRef, {\n shouldUseChildElement: true,\n });\n\n const shouldPreventRightElementClick = useMemo(\n () => getElementClickEvent(rightElement),\n [rightElement],\n );\n\n useEffect(() => {\n if (typeof onTitleInputChange === 'function') {\n setHeadHeight({ closed: 50, open: 50 });\n } else {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) + 10,\n hasSearch: typeof onSearchChange === 'function',\n }),\n );\n }\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, onSearchChange, onTitleInputChange, theme.fontSize, title]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon\n icons={[isFixed ? 'fa fa-horizontal-rule' : (icon ?? 'fa fa-chevron-right')]}\n />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n (theme.accordionIcon as unknown as number) !== 110 &&\n (theme.accordionIcon as unknown as number) !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as unknown as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? theme.iconStyle : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n let accordionHeadHeight = isOpen ? headHeight.open : headHeight.closed;\n\n if (titleElementChildrenSize && titleElementChildrenSize.height > accordionHeadHeight) {\n // If the titleElement is bigger than the title, the height of the accordion head should be increased.\n // The height of the titleElement is increased by 8px because of the padding of the accordion head element.\n accordionHeadHeight = titleElementChildrenSize.height + 8;\n }\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: accordionHeadHeight }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n key={`accordionHead--${uuid}`}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n key={`accordionHeadIcon--${uuid}`}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n $isWrapped={isWrapped}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n {typeof onTitleInputChange === 'function' ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <Input {...titleInputProps} value={title} onChange={onTitleInputChange} />\n </AreaContext.Provider>\n ) : (\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence\n initial={false}\n key={`accordionHeadTitleWrapper--${uuid}`}\n >\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n $color={titleColor}\n $hasSearch={typeof onSearchChange === 'function'}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? `accordionHeadTitleBig--${uuid}`\n : `accordionHeadTitle--${uuid}`\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper\n layout\n key={`accordionTitleElement--${uuid}`}\n ref={titleElementWrapperRef}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n )}\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper $isSearchActive={isSearchActive}>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen && (\n <StyledMotionSearchWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`searchWrapper--${uuid}`}\n >\n <SearchInput\n onChange={handleOnSearchChance}\n onActiveChange={(isActive) => setIsSearchActive(isActive)}\n placeholder={searchPlaceholder}\n size={InputSize.Small}\n value={internalSearchValue}\n />\n </StyledMotionSearchWrapper>\n )}\n {rightElement && (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightElementWrapper--${uuid}`}\n onClick={\n !isFixed && !shouldPreventRightElementClick\n ? onClick\n : undefined\n }\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AccordionHead.js","names":["_react","require","_react2","_interopRequireWildcard","_styledComponents","_useElementSize","_accordion","_AreaContextProvider","_Icon","_interopRequireDefault","_Input","_SearchInput","_AccordionHead","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","AccordionHead","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","titleInputProps","onTitleInputChange","titleColor","headHeight","setHeadHeight","useState","closed","open","isSearchActive","setIsSearchActive","theme","useTheme","titleElementWrapperRef","useRef","titleWrapperRef","internalSearchValue","setInternalSearchValue","useEffect","handleOnSearchChance","event","target","value","titleElementChildrenSize","useElementSize","shouldUseChildElement","shouldPreventRightElementClick","useMemo","getElementClickEvent","_titleWrapperRef$curr","getAccordionHeadHeight","width","current","clientWidth","hasSearch","fontSize","iconElement","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","StyledAccordionIcon","className","$icon","accordionHeadHeight","height","StyledMotionAccordionHead","animate","initial","key","StyledMotionIconWrapper","rotate","undefined","StyledMotionContentWrapper","opacity","ref","$isWrapped","AreaContext","Provider","shouldChangeColor","onChange","LayoutGroup","StyledMotionTitleWrapper","AnimatePresence","StyledMotionTitle","scale","exit","$isOpen","$color","$hasSearch","transition","duration","StyledMotionTitleElementWrapper","layout","StyledRightWrapper","$isSearchActive","StyledMotionSearchWrapper","onActiveChange","isActive","placeholder","size","InputSize","Small","StyledMotionRightElementWrapper","displayName","_default","exports"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../../hooks/useElementSize';\nimport { getAccordionHeadHeight, getElementClickEvent } from '../../../utils/accordion';\nimport { AreaContext } from '../../area-provider/AreaContextProvider';\nimport type { Theme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../../icon/Icon';\nimport Input, { InputSize, type InputProps } from '../../input/Input';\nimport SearchInput from '../../search-input/SearchInput';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionSearchWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\nexport type AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n titleColor?: CSSProperties['color'];\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n titleInputProps,\n onTitleInputChange,\n titleColor,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 32,\n open: isWrapped ? 40 : 32,\n });\n\n const [isSearchActive, setIsSearchActive] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const titleElementWrapperRef = useRef<HTMLDivElement>(null);\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const [internalSearchValue, setInternalSearchValue] = useState<string>();\n\n useEffect(() => {\n setInternalSearchValue(searchValue);\n }, [searchValue]);\n\n const handleOnSearchChance = (event: ChangeEvent<HTMLInputElement>) => {\n setInternalSearchValue(event.target.value);\n if (typeof onSearchChange === 'function') {\n onSearchChange(event);\n }\n };\n\n const titleElementChildrenSize = useElementSize(titleElementWrapperRef, {\n shouldUseChildElement: true,\n });\n\n const shouldPreventRightElementClick = useMemo(\n () => getElementClickEvent(rightElement),\n [rightElement],\n );\n\n useEffect(() => {\n if (typeof onTitleInputChange === 'function') {\n setHeadHeight({ closed: 50, open: 50 });\n } else {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) + 10,\n hasSearch: typeof onSearchChange === 'function',\n }),\n );\n }\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, onSearchChange, onTitleInputChange, theme.fontSize, title]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon\n icons={[isFixed ? 'fa fa-horizontal-rule' : (icon ?? 'fa fa-chevron-right')]}\n />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n (theme.accordionIcon as unknown as number) !== 110 &&\n (theme.accordionIcon as unknown as number) !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as unknown as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? theme.iconStyle : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n let accordionHeadHeight = isOpen ? headHeight.open : headHeight.closed;\n\n if (titleElementChildrenSize && titleElementChildrenSize.height > accordionHeadHeight) {\n // If the titleElement is bigger than the title, the height of the accordion head should be increased.\n // The height of the titleElement is increased by 8px because of the padding of the accordion head element.\n accordionHeadHeight = titleElementChildrenSize.height + 8;\n }\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: accordionHeadHeight }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n key={`accordionHead--${uuid}`}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n key={`accordionHeadIcon--${uuid}`}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n $isWrapped={isWrapped}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n {typeof onTitleInputChange === 'function' ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <Input {...titleInputProps} value={title} onChange={onTitleInputChange} />\n </AreaContext.Provider>\n ) : (\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence\n initial={false}\n key={`accordionHeadTitleWrapper--${uuid}`}\n >\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n $color={titleColor}\n $hasSearch={typeof onSearchChange === 'function'}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? `accordionHeadTitleBig--${uuid}`\n : `accordionHeadTitle--${uuid}`\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper\n layout\n key={`accordionTitleElement--${uuid}`}\n ref={titleElementWrapperRef}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n )}\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper $isSearchActive={isSearchActive}>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen && (\n <StyledMotionSearchWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`searchWrapper--${uuid}`}\n >\n <SearchInput\n onChange={handleOnSearchChance}\n onActiveChange={(isActive) => setIsSearchActive(isActive)}\n placeholder={searchPlaceholder}\n size={InputSize.Small}\n value={internalSearchValue}\n />\n </StyledMotionSearchWrapper>\n )}\n {rightElement && (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightElementWrapper--${uuid}`}\n onClick={\n !isFixed && !shouldPreventRightElementClick\n ? onClick\n : undefined\n }\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
@@ -90,7 +90,7 @@ const ComboBox = ({
90
90
  (0, _react2.useEffect)(() => {
91
91
  if (styledComboBoxElementRef.current && !container) {
92
92
  const el = styledComboBoxElementRef.current;
93
- const element = el.closest('.dialog-inner') || el.closest('body');
93
+ const element = el.closest('.dialog-inner') || el.closest('.page-provider') || el.closest('body');
94
94
  setNewContainer(element);
95
95
  }
96
96
  }, [container]);
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_comboBox","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBox","bodyWidth","direction","ComboBoxDirection","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","inputValue","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","translateX","setTranslateX","translateY","setTranslateY","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","shouldUseTopAlignment","setShouldUseTopAlignment","isInputFocused","useRef","styledComboBoxElementRef","contentRef","functions","useFunctions","values","useValues","browser","useDevice","isTouch","getIsTouch","areaProvider","useContext","AreaContext","shouldChangeColor","useMemo","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","result","toString","includes","maxHeightValue","parseInt","replace","useEffect","current","el","element","closest","Element","handleInputFocus","useCallback","event","handleInputBlur","handleClick","contains","target","handleOpen","left","comboBoxLeft","top","comboBoxTop","height","getBoundingClientRect","containerHeight","scrollLeft","scrollTop","useTopAlignment","TOP","TOP_LEFT","TOP_RIGHT","hasBottomAlignment","BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","handleClose","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","currentContent","scrollHeight","maxHeightInPixels","getMaxHeightInPixels","body","handleKeyDown","key","_contentRef$current","children","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","id","newSelectedItem","find","String","_styledComboBoxElemen","allItems","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","width","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","calculateContentWidth","text","Math","max","baseWidth","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","LEFT","difference","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","comboBoxGroups","map","createElement","groupName","StyledComboBoxTopic","imageBackground","isSelected","rightElement","subtext","suffixElement","textStyles","bodyStyles","createPortal","AnimatePresence","initial","StyledMotionComboBoxBody","$browser","name","animate","opacity","$overflowY","$translateX","$translateY","exit","$maxHeight","$minWidth","style","$direction","$shouldUseCurrentItemWidth","transition","duration","ref","StyledComboBox","$shouldUseFullWidth","StyledComboBoxHeader","onClick","$isOpen","$isTouch","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n ReactHTML,\n type ReactNode,\n ReactPortal,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BrowserName } from '../../types/chayns';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSProperties;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport type ComboBoxProps = {\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement> /**\n * Function to be executed when the optional input gets its focus.\n */;\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n bodyWidth,\n direction = ComboBoxDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = '280px',\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n inputValue,\n}) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n const [translateX, setTranslateX] = useState<string>('0px');\n const [translateY, setTranslateY] = useState<string>('0px');\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n const [shouldUseTopAlignment, setShouldUseTopAlignment] = useState(false);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const functions = useFunctions();\n const values = useValues();\n\n const { browser } = useDevice();\n\n const isTouch = getIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let result = flatItems.length * 36;\n\n if (lists.length > 1) {\n result += lists.length * 36;\n }\n\n // ToDo: Implement a better solution to also work with percentage values or other units\n if (maxHeight.toString().includes('px')) {\n const maxHeightValue = parseInt(maxHeight.toString().replace('px', ''), 10);\n\n if (maxHeightValue < result) {\n result = maxHeightValue;\n }\n }\n\n return result;\n }, [lists, maxHeight]);\n\n useEffect(() => {\n if (styledComboBoxElementRef.current && !container) {\n const el = styledComboBoxElementRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n const handleOpen = useCallback(() => {\n if (shouldDisableActions) {\n return;\n }\n\n if (styledComboBoxElementRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height,\n } = styledComboBoxElementRef.current.getBoundingClientRect();\n\n const { left, top, height: containerHeight } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n let useTopAlignment = [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n const hasBottomAlignment = [\n ComboBoxDirection.BOTTOM,\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.BOTTOM_RIGHT,\n ].includes(direction);\n\n if (!hasBottomAlignment && y + height + contentHeight > containerHeight) {\n useTopAlignment = true;\n\n setShouldUseTopAlignment(true);\n } else {\n setShouldUseTopAlignment(false);\n }\n\n setInternalCoordinates({ x, y: useTopAlignment ? y : y + height });\n setIsAnimating(true);\n }\n }, [shouldDisableActions, newContainer, contentHeight, direction]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const currentContent = contentRef.current;\n\n if (portal && isAnimating && currentContent) {\n const scrollHeight = currentContent.scrollHeight ?? 0;\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(scrollHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n }\n }, [isAnimating, maxHeight, portal]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n return !!newSelectedItem;\n });\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth =\n calculateContentWidth([{ text: prefix, value: 'prefix' }], functions, values) + 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\n );\n\n const calculatedWidth = baseWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const itemWidth =\n calculateContentWidth([internalSelectedItem], functions, values) +\n paddingWidth +\n imageWidth +\n iconWidth +\n prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth = itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n lists,\n placeholder,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n internalSelectedItem,\n prefix,\n selectedItem,\n functions,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n useEffect(() => {\n if (\n [\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.LEFT,\n ].includes(direction) &&\n typeof bodyWidth === 'number' &&\n typeof minWidth === 'number'\n ) {\n const difference = minWidth - bodyWidth;\n\n setTranslateX(`${difference}px`);\n } else {\n setTranslateX('0px');\n }\n }, [bodyWidth, direction, minWidth]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <div key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic>{list.groupName}</StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n // ToDo: Cleanup this - item should be given as a prop to avoid full spreading\n <ComboBoxItem\n icons={item.icons}\n id={item.value}\n imageBackground={item.imageBackground}\n imageUrl={item.imageUrl}\n isDisabled={item.isDisabled}\n isSelected={selectedItem ? item.value === selectedItem.value : false}\n key={item.value}\n onSelect={handleSetSelectedItem}\n rightElement={item.rightElement}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={list.shouldShowRoundImage ?? shouldShowRoundImage}\n subtext={item.subtext}\n suffixElement={item.suffixElement}\n text={item.text}\n value={item.value}\n textStyles={item.textStyles}\n />\n ))}\n </div>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n const bodyStyles = useMemo(\n () => ({ left: internalCoordinates.x, top: internalCoordinates.y }),\n [internalCoordinates.x, internalCoordinates.y],\n );\n\n useEffect(() => {\n const useTopAlignment =\n shouldUseTopAlignment ||\n [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n if (useTopAlignment) {\n setTranslateY('-100%');\n } else {\n setTranslateY('0px');\n }\n }, [direction, shouldUseTopAlignment]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && (\n <StyledMotionComboBoxBody\n $browser={browser?.name as BrowserName}\n animate={{ height: 'fit-content', opacity: 1 }}\n $overflowY={overflowY}\n $translateX={translateX}\n $translateY={translateY}\n initial={{ height: 0, opacity: 0 }}\n exit={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n style={bodyStyles}\n $direction={direction}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {comboBoxGroups}\n </StyledMotionComboBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n bodyWidth,\n bodyMinWidth,\n bodyStyles,\n browser?.name,\n comboBoxGroups,\n newContainer,\n direction,\n isAnimating,\n maxHeight,\n minWidth,\n overflowY,\n shouldUseCurrentItemWidth,\n translateX,\n translateY,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && <StyledComboBoxPrefix>{prefix}</StyledComboBoxPrefix>}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper onClick={handleClear}>\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true && internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {portal}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n portal,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_comboBox","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBox","bodyWidth","direction","ComboBoxDirection","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","inputValue","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","translateX","setTranslateX","translateY","setTranslateY","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","shouldUseTopAlignment","setShouldUseTopAlignment","isInputFocused","useRef","styledComboBoxElementRef","contentRef","functions","useFunctions","values","useValues","browser","useDevice","isTouch","getIsTouch","areaProvider","useContext","AreaContext","shouldChangeColor","useMemo","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","result","toString","includes","maxHeightValue","parseInt","replace","useEffect","current","el","element","closest","Element","handleInputFocus","useCallback","event","handleInputBlur","handleClick","contains","target","handleOpen","left","comboBoxLeft","top","comboBoxTop","height","getBoundingClientRect","containerHeight","scrollLeft","scrollTop","useTopAlignment","TOP","TOP_LEFT","TOP_RIGHT","hasBottomAlignment","BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","handleClose","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","currentContent","scrollHeight","maxHeightInPixels","getMaxHeightInPixels","body","handleKeyDown","key","_contentRef$current","children","newIndex","prevElement","tabIndex","newElement","focus","_contentRef$current2","id","newSelectedItem","find","String","_styledComboBoxElemen","allItems","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","width","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","calculateContentWidth","text","Math","max","baseWidth","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","LEFT","difference","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","comboBoxGroups","map","createElement","groupName","StyledComboBoxTopic","imageBackground","isSelected","rightElement","subtext","suffixElement","textStyles","bodyStyles","createPortal","AnimatePresence","initial","StyledMotionComboBoxBody","$browser","name","animate","opacity","$overflowY","$translateX","$translateY","exit","$maxHeight","$minWidth","style","$direction","$shouldUseCurrentItemWidth","transition","duration","ref","StyledComboBox","$shouldUseFullWidth","StyledComboBoxHeader","onClick","$isOpen","$isTouch","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","displayName","_default","exports"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n ReactHTML,\n type ReactNode,\n ReactPortal,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BrowserName } from '../../types/chayns';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSProperties;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport type ComboBoxProps = {\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement> /**\n * Function to be executed when the optional input gets its focus.\n */;\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n bodyWidth,\n direction = ComboBoxDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = '280px',\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n inputValue,\n}) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n const [translateX, setTranslateX] = useState<string>('0px');\n const [translateY, setTranslateY] = useState<string>('0px');\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n const [shouldUseTopAlignment, setShouldUseTopAlignment] = useState(false);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const functions = useFunctions();\n const values = useValues();\n\n const { browser } = useDevice();\n\n const isTouch = getIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let result = flatItems.length * 36;\n\n if (lists.length > 1) {\n result += lists.length * 36;\n }\n\n // ToDo: Implement a better solution to also work with percentage values or other units\n if (maxHeight.toString().includes('px')) {\n const maxHeightValue = parseInt(maxHeight.toString().replace('px', ''), 10);\n\n if (maxHeightValue < result) {\n result = maxHeightValue;\n }\n }\n\n return result;\n }, [lists, maxHeight]);\n\n useEffect(() => {\n if (styledComboBoxElementRef.current && !container) {\n const el = styledComboBoxElementRef.current as HTMLElement;\n\n const element =\n el.closest('.dialog-inner') || el.closest('.page-provider') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n const handleOpen = useCallback(() => {\n if (shouldDisableActions) {\n return;\n }\n\n if (styledComboBoxElementRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height,\n } = styledComboBoxElementRef.current.getBoundingClientRect();\n\n const { left, top, height: containerHeight } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n let useTopAlignment = [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n const hasBottomAlignment = [\n ComboBoxDirection.BOTTOM,\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.BOTTOM_RIGHT,\n ].includes(direction);\n\n if (!hasBottomAlignment && y + height + contentHeight > containerHeight) {\n useTopAlignment = true;\n\n setShouldUseTopAlignment(true);\n } else {\n setShouldUseTopAlignment(false);\n }\n\n setInternalCoordinates({ x, y: useTopAlignment ? y : y + height });\n setIsAnimating(true);\n }\n }, [shouldDisableActions, newContainer, contentHeight, direction]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const currentContent = contentRef.current;\n\n if (portal && isAnimating && currentContent) {\n const scrollHeight = currentContent.scrollHeight ?? 0;\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(scrollHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n }\n }, [isAnimating, maxHeight, portal]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n return !!newSelectedItem;\n });\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth =\n calculateContentWidth([{ text: prefix, value: 'prefix' }], functions, values) + 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\n );\n\n const calculatedWidth = baseWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const itemWidth =\n calculateContentWidth([internalSelectedItem], functions, values) +\n paddingWidth +\n imageWidth +\n iconWidth +\n prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth = itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n lists,\n placeholder,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n internalSelectedItem,\n prefix,\n selectedItem,\n functions,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n useEffect(() => {\n if (\n [\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.LEFT,\n ].includes(direction) &&\n typeof bodyWidth === 'number' &&\n typeof minWidth === 'number'\n ) {\n const difference = minWidth - bodyWidth;\n\n setTranslateX(`${difference}px`);\n } else {\n setTranslateX('0px');\n }\n }, [bodyWidth, direction, minWidth]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <div key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic>{list.groupName}</StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n // ToDo: Cleanup this - item should be given as a prop to avoid full spreading\n <ComboBoxItem\n icons={item.icons}\n id={item.value}\n imageBackground={item.imageBackground}\n imageUrl={item.imageUrl}\n isDisabled={item.isDisabled}\n isSelected={selectedItem ? item.value === selectedItem.value : false}\n key={item.value}\n onSelect={handleSetSelectedItem}\n rightElement={item.rightElement}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={list.shouldShowRoundImage ?? shouldShowRoundImage}\n subtext={item.subtext}\n suffixElement={item.suffixElement}\n text={item.text}\n value={item.value}\n textStyles={item.textStyles}\n />\n ))}\n </div>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n const bodyStyles = useMemo(\n () => ({ left: internalCoordinates.x, top: internalCoordinates.y }),\n [internalCoordinates.x, internalCoordinates.y],\n );\n\n useEffect(() => {\n const useTopAlignment =\n shouldUseTopAlignment ||\n [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n if (useTopAlignment) {\n setTranslateY('-100%');\n } else {\n setTranslateY('0px');\n }\n }, [direction, shouldUseTopAlignment]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && (\n <StyledMotionComboBoxBody\n $browser={browser?.name as BrowserName}\n animate={{ height: 'fit-content', opacity: 1 }}\n $overflowY={overflowY}\n $translateX={translateX}\n $translateY={translateY}\n initial={{ height: 0, opacity: 0 }}\n exit={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n style={bodyStyles}\n $direction={direction}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {comboBoxGroups}\n </StyledMotionComboBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n bodyWidth,\n bodyMinWidth,\n bodyStyles,\n browser?.name,\n comboBoxGroups,\n newContainer,\n direction,\n isAnimating,\n maxHeight,\n minWidth,\n overflowY,\n shouldUseCurrentItemWidth,\n translateX,\n translateY,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && <StyledComboBoxPrefix>{prefix}</StyledComboBoxPrefix>}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper onClick={handleClear}>\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true && internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {portal}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n portal,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
@@ -17,7 +17,8 @@ const TagInput = /*#__PURE__*/(0, _react.forwardRef)(({
17
17
  placeholder,
18
18
  tags,
19
19
  onRemove,
20
- onAdd
20
+ onAdd,
21
+ onChange
21
22
  }, ref) => {
22
23
  const [internalTags, setInternalTags] = (0, _react.useState)();
23
24
  const [currentValue, setCurrentValue] = (0, _react.useState)('');
@@ -80,12 +81,15 @@ const TagInput = /*#__PURE__*/(0, _react.forwardRef)(({
80
81
  });
81
82
  }
82
83
  }, [currentValue, internalTags, onAdd, onRemove, selectedId]);
83
- const handleChange = event => {
84
+ const handleChange = (0, _react.useCallback)(event => {
84
85
  setCurrentValue(event.target.value);
86
+ if (typeof onChange === 'function') {
87
+ onChange(event);
88
+ }
85
89
  if (event.target.value !== '') {
86
90
  setSelectedId(undefined);
87
91
  }
88
- };
92
+ }, [onChange]);
89
93
  const handleIconClick = (0, _react.useCallback)(id => {
90
94
  setInternalTags(prevState => {
91
95
  const updatedTags = (prevState ?? []).filter(tag => tag.id !== id);
@@ -121,7 +125,7 @@ const TagInput = /*#__PURE__*/(0, _react.forwardRef)(({
121
125
  onKeyDown: handleKeyDown,
122
126
  onChange: handleChange,
123
127
  value: currentValue
124
- })), [content, currentValue, handleKeyDown, placeholder, shouldChangeColor, tags]);
128
+ })), [content, currentValue, handleChange, handleKeyDown, placeholder, shouldChangeColor, tags]);
125
129
  });
126
130
  var _default = exports.default = TagInput;
127
131
  //# sourceMappingURL=TagInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TagInput.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_uuid","_Badge","_interopRequireDefault","_Icon","_TagInput","_AreaContextProvider","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TagInput","forwardRef","placeholder","tags","onRemove","onAdd","ref","internalTags","setInternalTags","useState","currentValue","setCurrentValue","selectedId","setSelectedId","areaProvider","useContext","AreaContext","theme","useTheme","useEffect","shouldChangeColor","useMemo","useImperativeHandle","getUnsavedTagText","undefined","handleKeyDown","useCallback","event","key","prevValue","prevTags","newTag","id","uuidv4","text","_internalTags","newSelectedId","length","prevState","_prevState","removedId","updatedTags","filter","tag","handleChange","target","value","handleIconClick","content","items","forEach","push","createElement","backgroundColor","StyledTagInputTagWrapper","StyledTagInputTagWrapperText","icons","onClick","StyledTagInput","$shouldChangeColor","StyledTagInputTagInput","onKeyDown","onChange","_default","exports"],"sources":["../../../../src/components/tag-input/TagInput.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ChangeEvent,\n type KeyboardEvent,\n type ReactElement,\n useImperativeHandle,\n useContext,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Tag } from '../../types/tagInput';\nimport Badge from '../badge/Badge';\nimport Icon from '../icon/Icon';\nimport {\n StyledTagInput,\n StyledTagInputTagInput,\n StyledTagInputTagWrapper,\n StyledTagInputTagWrapperText,\n} from './TagInput.styles';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type TagInputProps = {\n /**\n * Function to be executed when a tag is added.\n */\n onAdd?: (tag: Tag) => void;\n /**\n * Function to be executed when a tag is removed.\n */\n onRemove?: (id: string) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * The tags that should be displayed.\n */\n tags?: Tag[];\n};\n\nexport type TagInputRef = {\n getUnsavedTagText: Tag['text'] | undefined;\n};\n\nconst TagInput = forwardRef<TagInputRef, TagInputProps>(\n ({ placeholder, tags, onRemove, onAdd }, ref) => {\n const [internalTags, setInternalTags] = useState<Tag[]>();\n const [currentValue, setCurrentValue] = useState('');\n const [selectedId, setSelectedId] = useState<Tag['id']>();\n\n const areaProvider = useContext(AreaContext);\n\n const theme = useTheme() as Theme;\n\n useEffect(() => {\n if (tags) {\n setInternalTags(tags);\n }\n }, [tags]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n getUnsavedTagText: currentValue !== '' ? currentValue : undefined,\n }),\n [currentValue],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n setCurrentValue((prevValue) => {\n if (!prevValue) {\n return '';\n }\n\n setInternalTags((prevTags) => {\n const newTag = { id: uuidv4(), text: prevValue };\n\n if (typeof onAdd === 'function') {\n onAdd(newTag);\n }\n\n return prevTags ? [...prevTags, newTag] : [newTag];\n });\n\n return '';\n });\n }\n\n if (event.key === 'Backspace' && currentValue === '') {\n if (!selectedId) {\n if (!internalTags) {\n return;\n }\n\n const newSelectedId = internalTags[internalTags.length - 1]?.id;\n\n setSelectedId(newSelectedId);\n\n return;\n }\n\n setInternalTags((prevState) => {\n if (!prevState) {\n return prevState;\n }\n\n const removedId = prevState[prevState.length - 1]?.id;\n\n if (!removedId) {\n return prevState;\n }\n\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== removedId);\n\n if (typeof onRemove === 'function') {\n onRemove(removedId);\n }\n\n setSelectedId(undefined);\n\n return updatedTags;\n });\n }\n },\n [currentValue, internalTags, onAdd, onRemove, selectedId],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n\n if (event.target.value !== '') {\n setSelectedId(undefined);\n }\n };\n\n const handleIconClick = useCallback(\n (id: string) => {\n setInternalTags((prevState) => {\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== id);\n\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n\n return updatedTags;\n });\n },\n [onRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalTags) {\n return items;\n }\n\n internalTags.forEach(({ text, id }) => {\n items.push(\n <Badge\n key={`tag-input-${id}`}\n backgroundColor={\n id === selectedId ? ((theme['206'] as string) ?? undefined) : undefined\n }\n >\n <StyledTagInputTagWrapper>\n <StyledTagInputTagWrapperText>{text}</StyledTagInputTagWrapperText>\n <Icon icons={['ts-wrong']} onClick={() => handleIconClick(id)} />\n </StyledTagInputTagWrapper>\n </Badge>,\n );\n });\n\n return items;\n }, [handleIconClick, internalTags, selectedId, theme]);\n\n return useMemo(\n () => (\n <StyledTagInput $shouldChangeColor={shouldChangeColor}>\n {content}\n <StyledTagInputTagInput\n placeholder={tags && tags.length > 0 ? undefined : placeholder}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n value={currentValue}\n />\n </StyledTagInput>\n ),\n [content, currentValue, handleKeyDown, placeholder, shouldChangeColor, tags],\n );\n },\n);\n\nexport default TagInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TagInput.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_uuid","_Badge","_interopRequireDefault","_Icon","_TagInput","_AreaContextProvider","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TagInput","forwardRef","placeholder","tags","onRemove","onAdd","onChange","ref","internalTags","setInternalTags","useState","currentValue","setCurrentValue","selectedId","setSelectedId","areaProvider","useContext","AreaContext","theme","useTheme","useEffect","shouldChangeColor","useMemo","useImperativeHandle","getUnsavedTagText","undefined","handleKeyDown","useCallback","event","key","prevValue","prevTags","newTag","id","uuidv4","text","_internalTags","newSelectedId","length","prevState","_prevState","removedId","updatedTags","filter","tag","handleChange","target","value","handleIconClick","content","items","forEach","push","createElement","backgroundColor","StyledTagInputTagWrapper","StyledTagInputTagWrapperText","icons","onClick","StyledTagInput","$shouldChangeColor","StyledTagInputTagInput","onKeyDown","_default","exports"],"sources":["../../../../src/components/tag-input/TagInput.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ChangeEvent,\n type KeyboardEvent,\n type ReactElement,\n useImperativeHandle,\n useContext,\n ChangeEventHandler,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Tag } from '../../types/tagInput';\nimport Badge from '../badge/Badge';\nimport Icon from '../icon/Icon';\nimport {\n StyledTagInput,\n StyledTagInputTagInput,\n StyledTagInputTagWrapper,\n StyledTagInputTagWrapperText,\n} from './TagInput.styles';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type TagInputProps = {\n /**\n * Function to be executed when a tag is added.\n */\n onAdd?: (tag: Tag) => void;\n /**\n * Function to be executed when the value of the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when a tag is removed.\n */\n onRemove?: (id: string) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * The tags that should be displayed.\n */\n tags?: Tag[];\n};\n\nexport type TagInputRef = {\n getUnsavedTagText: Tag['text'] | undefined;\n};\n\nconst TagInput = forwardRef<TagInputRef, TagInputProps>(\n ({ placeholder, tags, onRemove, onAdd, onChange }, ref) => {\n const [internalTags, setInternalTags] = useState<Tag[]>();\n const [currentValue, setCurrentValue] = useState('');\n const [selectedId, setSelectedId] = useState<Tag['id']>();\n\n const areaProvider = useContext(AreaContext);\n\n const theme = useTheme() as Theme;\n\n useEffect(() => {\n if (tags) {\n setInternalTags(tags);\n }\n }, [tags]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n getUnsavedTagText: currentValue !== '' ? currentValue : undefined,\n }),\n [currentValue],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n setCurrentValue((prevValue) => {\n if (!prevValue) {\n return '';\n }\n\n setInternalTags((prevTags) => {\n const newTag = { id: uuidv4(), text: prevValue };\n\n if (typeof onAdd === 'function') {\n onAdd(newTag);\n }\n\n return prevTags ? [...prevTags, newTag] : [newTag];\n });\n\n return '';\n });\n }\n\n if (event.key === 'Backspace' && currentValue === '') {\n if (!selectedId) {\n if (!internalTags) {\n return;\n }\n\n const newSelectedId = internalTags[internalTags.length - 1]?.id;\n\n setSelectedId(newSelectedId);\n\n return;\n }\n\n setInternalTags((prevState) => {\n if (!prevState) {\n return prevState;\n }\n\n const removedId = prevState[prevState.length - 1]?.id;\n\n if (!removedId) {\n return prevState;\n }\n\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== removedId);\n\n if (typeof onRemove === 'function') {\n onRemove(removedId);\n }\n\n setSelectedId(undefined);\n\n return updatedTags;\n });\n }\n },\n [currentValue, internalTags, onAdd, onRemove, selectedId],\n );\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n\n if (event.target.value !== '') {\n setSelectedId(undefined);\n }\n },\n [onChange],\n );\n\n const handleIconClick = useCallback(\n (id: string) => {\n setInternalTags((prevState) => {\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== id);\n\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n\n return updatedTags;\n });\n },\n [onRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalTags) {\n return items;\n }\n\n internalTags.forEach(({ text, id }) => {\n items.push(\n <Badge\n key={`tag-input-${id}`}\n backgroundColor={\n id === selectedId ? ((theme['206'] as string) ?? undefined) : undefined\n }\n >\n <StyledTagInputTagWrapper>\n <StyledTagInputTagWrapperText>{text}</StyledTagInputTagWrapperText>\n <Icon icons={['ts-wrong']} onClick={() => handleIconClick(id)} />\n </StyledTagInputTagWrapper>\n </Badge>,\n );\n });\n\n return items;\n }, [handleIconClick, internalTags, selectedId, theme]);\n\n return useMemo(\n () => (\n <StyledTagInput $shouldChangeColor={shouldChangeColor}>\n {content}\n <StyledTagInputTagInput\n placeholder={tags && tags.length > 0 ? undefined : placeholder}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n value={currentValue}\n />\n </StyledTagInput>\n ),\n [\n content,\n currentValue,\n handleChange,\n handleKeyDown,\n placeholder,\n shouldChangeColor,\n tags,\n ],\n );\n },\n);\n\nexport default TagInput;\n"],"mappings":"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","ignoreList":[]}
@@ -40,6 +40,8 @@ export const StyledMotionAccordion = styled(motion.div)`
40
40
  margin-bottom 0.3s ease;
41
41
  will-change: unset !important;
42
42
 
43
+ margin-top: 10px;
44
+
43
45
  ${_ref4 => {
44
46
  let {
45
47
  $isOpen,
@@ -76,9 +78,11 @@ export const StyledMotionAccordion = styled(motion.div)`
76
78
  let {
77
79
  $isWrapped
78
80
  } = _ref6;
79
- return !$isWrapped && css`
80
- margin-top: 10px;
81
- `;
81
+ return !$isWrapped ? css`
82
+ margin-top: 5px;
83
+ ` : css`
84
+ margin: 0;
85
+ `;
82
86
  }}
83
87
  ${_ref7 => {
84
88
  let {
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.styles.js","names":["motion","styled","css","StyledMotionAccordion","div","_ref","$isOpen","$isWrapped","$shouldForceBackground","$shouldHideBackground","theme","cardBackgroundOpacity","cardBorderRadius","cardShadow","_ref2","accordionLines","_ref3","_ref4","$shouldShowLines","$shouldHideBottomLine","undefined","_ref5","$isParentWrapped","_ref6","_ref7"],"sources":["../../../../src/components/accordion/Accordion.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionAccordionProps = WithTheme<{\n $isOpen: boolean;\n $isParentWrapped?: boolean;\n $isWrapped?: boolean;\n $shouldForceBackground?: boolean;\n $shouldHideBackground?: boolean;\n $shouldShowLines?: boolean;\n $shouldHideBottomLine: boolean;\n}>;\n\nexport const StyledMotionAccordion = styled(motion.div)<StyledMotionAccordionProps>`\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldHideBackground,\n theme,\n }: StyledMotionAccordionProps) =>\n ($isOpen || $shouldForceBackground) &&\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n border-radius: ${theme.cardBorderRadius}px;\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, ${theme.cardShadow});\n `}\n\n ${({ theme }: StyledMotionAccordionProps) =>\n theme.accordionLines &&\n css`\n border-bottom: 1px solid transparent;\n `}\n\n margin-bottom: ${({ $isOpen, $isWrapped }: StyledMotionAccordionProps) =>\n $isOpen && !$isWrapped ? '30px' : '0px'};\n transition:\n background-color 0.3s ease,\n border-bottom-color 0.3s ease,\n border-radius 0.3s ease,\n box-shadow 0.3s ease,\n margin-bottom 0.3s ease;\n will-change: unset !important;\n\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldShowLines,\n $shouldHideBottomLine,\n theme,\n }: StyledMotionAccordionProps) => {\n if ($shouldForceBackground || $shouldHideBottomLine) return undefined;\n\n if (theme.accordionLines) {\n if ($isWrapped && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n\n if (!$isOpen && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n }\n\n return undefined;\n }}\n ${({ $isParentWrapped }: StyledMotionAccordionProps) =>\n $isParentWrapped &&\n css`\n padding-left: 17px;\n `}\n ${({ $isWrapped }: StyledMotionAccordionProps) =>\n !$isWrapped &&\n css`\n margin-top: 10px;\n `}\n ${({ $isWrapped, $shouldHideBackground, theme }: StyledMotionAccordionProps) =>\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n &:hover {\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n }\n `};\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAa/C,OAAO,MAAMC,qBAAqB,GAAGF,MAAM,CAACD,MAAM,CAACI,GAAG,CAA6B;AACnF,MAAMC,IAAA;EAAA,IAAC;IACCC,OAAO;IACPC,UAAU;IACVC,sBAAsB;IACtBC,qBAAqB;IACrBC;EACwB,CAAC,GAAAL,IAAA;EAAA,OACzB,CAACC,OAAO,IAAIE,sBAAsB,KAClC,CAACD,UAAU,IACX,CAACE,qBAAqB,IACtBP,GAAG;AACX,qCAAqCQ,KAAK,CAAC,SAAS,CAAC,KAAKA,KAAK,CAACC,qBAAqB;AACrF,6BAA6BD,KAAK,CAACE,gBAAgB;AACnD,oDAAoDF,KAAK,CAACG,UAAU;AACpE,SAAS;AAAA;AACT;AACA,MAAMC,KAAA;EAAA,IAAC;IAAEJ;EAAkC,CAAC,GAAAI,KAAA;EAAA,OACpCJ,KAAK,CAACK,cAAc,IACpBb,GAAG;AACX;AACA,SAAS;AAAA;AACT;AACA,qBAAqBc,KAAA;EAAA,IAAC;IAAEV,OAAO;IAAEC;EAAuC,CAAC,GAAAS,KAAA;EAAA,OACjEV,OAAO,IAAI,CAACC,UAAU,GAAG,MAAM,GAAG,KAAK;AAAA;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMU,KAAA,IAOgC;EAAA,IAP/B;IACCX,OAAO;IACPC,UAAU;IACVC,sBAAsB;IACtBU,gBAAgB;IAChBC,qBAAqB;IACrBT;EACwB,CAAC,GAAAO,KAAA;EACzB,IAAIT,sBAAsB,IAAIW,qBAAqB,EAAE,OAAOC,SAAS;EAErE,IAAIV,KAAK,CAACK,cAAc,EAAE;IACtB,IAAIR,UAAU,IAAIW,gBAAgB,EAAE;MAChC,OAAOhB,GAAG;AAC1B,gDAAgDQ,KAAK,CAAC,cAAc,CAAC;AACrE,iBAAiB;IACL;IAEA,IAAI,CAACJ,OAAO,IAAIY,gBAAgB,EAAE;MAC9B,OAAOhB,GAAG;AAC1B,gDAAgDQ,KAAK,CAAC,cAAc,CAAC;AACrE,iBAAiB;IACL;EACJ;EAEA,OAAOU,SAAS;AACpB,CAAC;AACL,MAAMC,KAAA;EAAA,IAAC;IAAEC;EAA6C,CAAC,GAAAD,KAAA;EAAA,OAC/CC,gBAAgB,IAChBpB,GAAG;AACX;AACA,SAAS;AAAA;AACT,MAAMqB,KAAA;EAAA,IAAC;IAAEhB;EAAuC,CAAC,GAAAgB,KAAA;EAAA,OACzC,CAAChB,UAAU,IACXL,GAAG;AACX;AACA,SAAS;AAAA;AACT,MAAMsB,KAAA;EAAA,IAAC;IAAEjB,UAAU;IAAEE,qBAAqB;IAAEC;EAAkC,CAAC,GAAAc,KAAA;EAAA,OACvE,CAACjB,UAAU,IACX,CAACE,qBAAqB,IACtBP,GAAG;AACX;AACA,yCAAyCQ,KAAK,CAAC,SAAS,CAAC,KAAKA,KAAK,CAACC,qBAAqB;AACzF;AACA,SAAS;AAAA;AACT,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Accordion.styles.js","names":["motion","styled","css","StyledMotionAccordion","div","_ref","$isOpen","$isWrapped","$shouldForceBackground","$shouldHideBackground","theme","cardBackgroundOpacity","cardBorderRadius","cardShadow","_ref2","accordionLines","_ref3","_ref4","$shouldShowLines","$shouldHideBottomLine","undefined","_ref5","$isParentWrapped","_ref6","_ref7"],"sources":["../../../../src/components/accordion/Accordion.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMotionAccordionProps = WithTheme<{\n $isOpen: boolean;\n $isParentWrapped?: boolean;\n $isWrapped?: boolean;\n $shouldForceBackground?: boolean;\n $shouldHideBackground?: boolean;\n $shouldShowLines?: boolean;\n $shouldHideBottomLine: boolean;\n}>;\n\nexport const StyledMotionAccordion = styled(motion.div)<StyledMotionAccordionProps>`\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldHideBackground,\n theme,\n }: StyledMotionAccordionProps) =>\n ($isOpen || $shouldForceBackground) &&\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n border-radius: ${theme.cardBorderRadius}px;\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, ${theme.cardShadow});\n `}\n\n ${({ theme }: StyledMotionAccordionProps) =>\n theme.accordionLines &&\n css`\n border-bottom: 1px solid transparent;\n `}\n\n margin-bottom: ${({ $isOpen, $isWrapped }: StyledMotionAccordionProps) =>\n $isOpen && !$isWrapped ? '30px' : '0px'};\n transition:\n background-color 0.3s ease,\n border-bottom-color 0.3s ease,\n border-radius 0.3s ease,\n box-shadow 0.3s ease,\n margin-bottom 0.3s ease;\n will-change: unset !important;\n\n margin-top: 10px;\n\n ${({\n $isOpen,\n $isWrapped,\n $shouldForceBackground,\n $shouldShowLines,\n $shouldHideBottomLine,\n theme,\n }: StyledMotionAccordionProps) => {\n if ($shouldForceBackground || $shouldHideBottomLine) return undefined;\n\n if (theme.accordionLines) {\n if ($isWrapped && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n\n if (!$isOpen && $shouldShowLines) {\n return css`\n border-bottom-color: rgba(${theme['headline-rgb']}, 0.5);\n `;\n }\n }\n\n return undefined;\n }}\n ${({ $isParentWrapped }: StyledMotionAccordionProps) =>\n $isParentWrapped &&\n css`\n padding-left: 17px;\n `}\n ${({ $isWrapped }: StyledMotionAccordionProps) =>\n !$isWrapped\n ? css`\n margin-top: 5px;\n `\n : css`\n margin: 0;\n `}\n ${({ $isWrapped, $shouldHideBackground, theme }: StyledMotionAccordionProps) =>\n !$isWrapped &&\n !$shouldHideBackground &&\n css`\n &:hover {\n background-color: rgba(${theme['100-rgb']}, ${theme.cardBackgroundOpacity});\n }\n `};\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAa/C,OAAO,MAAMC,qBAAqB,GAAGF,MAAM,CAACD,MAAM,CAACI,GAAG,CAA6B;AACnF,MAAMC,IAAA;EAAA,IAAC;IACCC,OAAO;IACPC,UAAU;IACVC,sBAAsB;IACtBC,qBAAqB;IACrBC;EACwB,CAAC,GAAAL,IAAA;EAAA,OACzB,CAACC,OAAO,IAAIE,sBAAsB,KAClC,CAACD,UAAU,IACX,CAACE,qBAAqB,IACtBP,GAAG;AACX,qCAAqCQ,KAAK,CAAC,SAAS,CAAC,KAAKA,KAAK,CAACC,qBAAqB;AACrF,6BAA6BD,KAAK,CAACE,gBAAgB;AACnD,oDAAoDF,KAAK,CAACG,UAAU;AACpE,SAAS;AAAA;AACT;AACA,MAAMC,KAAA;EAAA,IAAC;IAAEJ;EAAkC,CAAC,GAAAI,KAAA;EAAA,OACpCJ,KAAK,CAACK,cAAc,IACpBb,GAAG;AACX;AACA,SAAS;AAAA;AACT;AACA,qBAAqBc,KAAA;EAAA,IAAC;IAAEV,OAAO;IAAEC;EAAuC,CAAC,GAAAS,KAAA;EAAA,OACjEV,OAAO,IAAI,CAACC,UAAU,GAAG,MAAM,GAAG,KAAK;AAAA;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMU,KAAA,IAOgC;EAAA,IAP/B;IACCX,OAAO;IACPC,UAAU;IACVC,sBAAsB;IACtBU,gBAAgB;IAChBC,qBAAqB;IACrBT;EACwB,CAAC,GAAAO,KAAA;EACzB,IAAIT,sBAAsB,IAAIW,qBAAqB,EAAE,OAAOC,SAAS;EAErE,IAAIV,KAAK,CAACK,cAAc,EAAE;IACtB,IAAIR,UAAU,IAAIW,gBAAgB,EAAE;MAChC,OAAOhB,GAAG;AAC1B,gDAAgDQ,KAAK,CAAC,cAAc,CAAC;AACrE,iBAAiB;IACL;IAEA,IAAI,CAACJ,OAAO,IAAIY,gBAAgB,EAAE;MAC9B,OAAOhB,GAAG;AAC1B,gDAAgDQ,KAAK,CAAC,cAAc,CAAC;AACrE,iBAAiB;IACL;EACJ;EAEA,OAAOU,SAAS;AACpB,CAAC;AACL,MAAMC,KAAA;EAAA,IAAC;IAAEC;EAA6C,CAAC,GAAAD,KAAA;EAAA,OAC/CC,gBAAgB,IAChBpB,GAAG;AACX;AACA,SAAS;AAAA;AACT,MAAMqB,KAAA;EAAA,IAAC;IAAEhB;EAAuC,CAAC,GAAAgB,KAAA;EAAA,OACzC,CAAChB,UAAU,GACLL,GAAG;AACjB;AACA,eAAe,GACDA,GAAG;AACjB;AACA,eAAe;AAAA;AACf,MAAMsB,KAAA;EAAA,IAAC;IAAEjB,UAAU;IAAEE,qBAAqB;IAAEC;EAAkC,CAAC,GAAAc,KAAA;EAAA,OACvE,CAACjB,UAAU,IACX,CAACE,qBAAqB,IACtBP,GAAG;AACX;AACA,yCAAyCQ,KAAK,CAAC,SAAS,CAAC,KAAKA,KAAK,CAACC,qBAAqB;AACzF;AACA,SAAS;AAAA;AACT,CAAC","ignoreList":[]}
@@ -30,8 +30,8 @@ const AccordionHead = _ref => {
30
30
  titleColor
31
31
  } = _ref;
32
32
  const [headHeight, setHeadHeight] = useState({
33
- closed: isWrapped ? 40 : 33,
34
- open: isWrapped ? 40 : 33
33
+ closed: isWrapped ? 40 : 32,
34
+ open: isWrapped ? 40 : 32
35
35
  });
36
36
  const [isSearchActive, setIsSearchActive] = useState(false);
37
37
  const theme = useTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionHead.js","names":["AnimatePresence","LayoutGroup","React","useEffect","useMemo","useRef","useState","useTheme","useElementSize","getAccordionHeadHeight","getElementClickEvent","AreaContext","Icon","Input","InputSize","SearchInput","StyledAccordionIcon","StyledMotionAccordionHead","StyledMotionContentWrapper","StyledMotionIconWrapper","StyledMotionRightElementWrapper","StyledMotionSearchWrapper","StyledMotionTitle","StyledMotionTitleElementWrapper","StyledMotionTitleWrapper","StyledRightWrapper","AccordionHead","_ref","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","titleInputProps","onTitleInputChange","titleColor","headHeight","setHeadHeight","closed","open","isSearchActive","setIsSearchActive","theme","titleElementWrapperRef","titleWrapperRef","internalSearchValue","setInternalSearchValue","handleOnSearchChance","event","target","value","titleElementChildrenSize","shouldUseChildElement","shouldPreventRightElementClick","width","current","clientWidth","hasSearch","fontSize","iconElement","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","className","$icon","accordionHeadHeight","height","animate","initial","key","rotate","undefined","opacity","ref","$isWrapped","Provider","shouldChangeColor","_extends","onChange","scale","exit","$isOpen","$color","$hasSearch","transition","duration","layout","$isSearchActive","onActiveChange","isActive","placeholder","size","Small","displayName"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../../hooks/useElementSize';\nimport { getAccordionHeadHeight, getElementClickEvent } from '../../../utils/accordion';\nimport { AreaContext } from '../../area-provider/AreaContextProvider';\nimport type { Theme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../../icon/Icon';\nimport Input, { InputSize, type InputProps } from '../../input/Input';\nimport SearchInput from '../../search-input/SearchInput';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionSearchWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\nexport type AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n titleColor?: CSSProperties['color'];\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n titleInputProps,\n onTitleInputChange,\n titleColor,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 33,\n open: isWrapped ? 40 : 33,\n });\n\n const [isSearchActive, setIsSearchActive] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const titleElementWrapperRef = useRef<HTMLDivElement>(null);\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const [internalSearchValue, setInternalSearchValue] = useState<string>();\n\n useEffect(() => {\n setInternalSearchValue(searchValue);\n }, [searchValue]);\n\n const handleOnSearchChance = (event: ChangeEvent<HTMLInputElement>) => {\n setInternalSearchValue(event.target.value);\n if (typeof onSearchChange === 'function') {\n onSearchChange(event);\n }\n };\n\n const titleElementChildrenSize = useElementSize(titleElementWrapperRef, {\n shouldUseChildElement: true,\n });\n\n const shouldPreventRightElementClick = useMemo(\n () => getElementClickEvent(rightElement),\n [rightElement],\n );\n\n useEffect(() => {\n if (typeof onTitleInputChange === 'function') {\n setHeadHeight({ closed: 50, open: 50 });\n } else {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) + 10,\n hasSearch: typeof onSearchChange === 'function',\n }),\n );\n }\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, onSearchChange, onTitleInputChange, theme.fontSize, title]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon\n icons={[isFixed ? 'fa fa-horizontal-rule' : (icon ?? 'fa fa-chevron-right')]}\n />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n (theme.accordionIcon as unknown as number) !== 110 &&\n (theme.accordionIcon as unknown as number) !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as unknown as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? theme.iconStyle : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n let accordionHeadHeight = isOpen ? headHeight.open : headHeight.closed;\n\n if (titleElementChildrenSize && titleElementChildrenSize.height > accordionHeadHeight) {\n // If the titleElement is bigger than the title, the height of the accordion head should be increased.\n // The height of the titleElement is increased by 8px because of the padding of the accordion head element.\n accordionHeadHeight = titleElementChildrenSize.height + 8;\n }\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: accordionHeadHeight }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n key={`accordionHead--${uuid}`}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n key={`accordionHeadIcon--${uuid}`}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n $isWrapped={isWrapped}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n {typeof onTitleInputChange === 'function' ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <Input {...titleInputProps} value={title} onChange={onTitleInputChange} />\n </AreaContext.Provider>\n ) : (\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence\n initial={false}\n key={`accordionHeadTitleWrapper--${uuid}`}\n >\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n $color={titleColor}\n $hasSearch={typeof onSearchChange === 'function'}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? `accordionHeadTitleBig--${uuid}`\n : `accordionHeadTitle--${uuid}`\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper\n layout\n key={`accordionTitleElement--${uuid}`}\n ref={titleElementWrapperRef}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n )}\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper $isSearchActive={isSearchActive}>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen && (\n <StyledMotionSearchWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`searchWrapper--${uuid}`}\n >\n <SearchInput\n onChange={handleOnSearchChance}\n onActiveChange={(isActive) => setIsSearchActive(isActive)}\n placeholder={searchPlaceholder}\n size={InputSize.Small}\n value={internalSearchValue}\n />\n </StyledMotionSearchWrapper>\n )}\n {rightElement && (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightElementWrapper--${uuid}`}\n onClick={\n !isFixed && !shouldPreventRightElementClick\n ? onClick\n : undefined\n }\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AccordionHead.js","names":["AnimatePresence","LayoutGroup","React","useEffect","useMemo","useRef","useState","useTheme","useElementSize","getAccordionHeadHeight","getElementClickEvent","AreaContext","Icon","Input","InputSize","SearchInput","StyledAccordionIcon","StyledMotionAccordionHead","StyledMotionContentWrapper","StyledMotionIconWrapper","StyledMotionRightElementWrapper","StyledMotionSearchWrapper","StyledMotionTitle","StyledMotionTitleElementWrapper","StyledMotionTitleWrapper","StyledRightWrapper","AccordionHead","_ref","icon","isOpen","isFixed","isTitleGreyed","isWrapped","onClick","onSearchChange","rightElement","searchPlaceholder","searchValue","shouldRotateIcon","title","titleElement","uuid","titleInputProps","onTitleInputChange","titleColor","headHeight","setHeadHeight","closed","open","isSearchActive","setIsSearchActive","theme","titleElementWrapperRef","titleWrapperRef","internalSearchValue","setInternalSearchValue","handleOnSearchChance","event","target","value","titleElementChildrenSize","shouldUseChildElement","shouldPreventRightElementClick","width","current","clientWidth","hasSearch","fontSize","iconElement","createElement","icons","internalIcon","accordionIcon","toString","internalIconStyle","iconStyle","className","$icon","accordionHeadHeight","height","animate","initial","key","rotate","undefined","opacity","ref","$isWrapped","Provider","shouldChangeColor","_extends","onChange","scale","exit","$isOpen","$color","$hasSearch","transition","duration","layout","$isSearchActive","onActiveChange","isActive","placeholder","size","Small","displayName"],"sources":["../../../../../src/components/accordion/accordion-head/AccordionHead.tsx"],"sourcesContent":["import { AnimatePresence, LayoutGroup } from 'motion/react';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n MouseEventHandler,\n ReactNode,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { useElementSize } from '../../../hooks/useElementSize';\nimport { getAccordionHeadHeight, getElementClickEvent } from '../../../utils/accordion';\nimport { AreaContext } from '../../area-provider/AreaContextProvider';\nimport type { Theme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../../icon/Icon';\nimport Input, { InputSize, type InputProps } from '../../input/Input';\nimport SearchInput from '../../search-input/SearchInput';\nimport {\n StyledAccordionIcon,\n StyledMotionAccordionHead,\n StyledMotionContentWrapper,\n StyledMotionIconWrapper,\n StyledMotionRightElementWrapper,\n StyledMotionSearchWrapper,\n StyledMotionTitle,\n StyledMotionTitleElementWrapper,\n StyledMotionTitleWrapper,\n StyledRightWrapper,\n} from './AccordionHead.styles';\n\nexport type AccordionHeadProps = {\n icon?: string;\n isOpen: boolean;\n isFixed: boolean;\n isTitleGreyed: boolean;\n isWrapped: boolean;\n onClick: MouseEventHandler<HTMLDivElement>;\n onSearchChange?: ChangeEventHandler<HTMLInputElement>;\n rightElement?: ReactNode;\n searchPlaceholder?: string;\n searchValue?: string;\n shouldRotateIcon?: boolean;\n title: string;\n titleElement?: ReactNode;\n uuid: string;\n onTitleInputChange?: ChangeEventHandler<HTMLInputElement>;\n titleInputProps?: InputProps;\n titleColor?: CSSProperties['color'];\n};\n\ninterface HeadHeight {\n closed: number;\n open: number;\n}\n\nconst AccordionHead: FC<AccordionHeadProps> = ({\n icon,\n isOpen,\n isFixed,\n isTitleGreyed,\n isWrapped,\n onClick,\n onSearchChange,\n rightElement,\n searchPlaceholder,\n searchValue,\n shouldRotateIcon,\n title,\n titleElement,\n uuid,\n titleInputProps,\n onTitleInputChange,\n titleColor,\n}) => {\n const [headHeight, setHeadHeight] = useState<HeadHeight>({\n closed: isWrapped ? 40 : 32,\n open: isWrapped ? 40 : 32,\n });\n\n const [isSearchActive, setIsSearchActive] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const titleElementWrapperRef = useRef<HTMLDivElement>(null);\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n\n const [internalSearchValue, setInternalSearchValue] = useState<string>();\n\n useEffect(() => {\n setInternalSearchValue(searchValue);\n }, [searchValue]);\n\n const handleOnSearchChance = (event: ChangeEvent<HTMLInputElement>) => {\n setInternalSearchValue(event.target.value);\n if (typeof onSearchChange === 'function') {\n onSearchChange(event);\n }\n };\n\n const titleElementChildrenSize = useElementSize(titleElementWrapperRef, {\n shouldUseChildElement: true,\n });\n\n const shouldPreventRightElementClick = useMemo(\n () => getElementClickEvent(rightElement),\n [rightElement],\n );\n\n useEffect(() => {\n if (typeof onTitleInputChange === 'function') {\n setHeadHeight({ closed: 50, open: 50 });\n } else {\n setHeadHeight(\n getAccordionHeadHeight({\n isWrapped,\n title,\n width: (titleWrapperRef.current?.clientWidth ?? 0) + 10,\n hasSearch: typeof onSearchChange === 'function',\n }),\n );\n }\n // The fontSize need to be included to trigger a new calculation.\n // After the size is increased, the Title is cut at the bottom.\n }, [isWrapped, onSearchChange, onTitleInputChange, theme.fontSize, title]);\n\n const iconElement = useMemo(() => {\n if (icon || isFixed) {\n return (\n <Icon\n icons={[isFixed ? 'fa fa-horizontal-rule' : (icon ?? 'fa fa-chevron-right')]}\n />\n );\n }\n\n let internalIcon = 'f105';\n\n if (\n theme?.accordionIcon &&\n (theme.accordionIcon as unknown as number) !== 110 &&\n (theme.accordionIcon as unknown as number) !== 1110100\n ) {\n internalIcon = (theme.accordionIcon as unknown as number).toString(16);\n }\n\n const internalIconStyle = theme?.iconStyle ? theme.iconStyle : 'fa-regular';\n\n return <StyledAccordionIcon className={internalIconStyle} $icon={internalIcon} />;\n }, [icon, theme, isFixed]);\n\n let accordionHeadHeight = isOpen ? headHeight.open : headHeight.closed;\n\n if (titleElementChildrenSize && titleElementChildrenSize.height > accordionHeadHeight) {\n // If the titleElement is bigger than the title, the height of the accordion head should be increased.\n // The height of the titleElement is increased by 8px because of the padding of the accordion head element.\n accordionHeadHeight = titleElementChildrenSize.height + 8;\n }\n\n return (\n <StyledMotionAccordionHead\n animate={{ height: accordionHeadHeight }}\n className=\"beta-chayns-accordion-head\"\n initial={false}\n key={`accordionHead--${uuid}`}\n >\n <StyledMotionIconWrapper\n animate={{ rotate: (isOpen || isFixed) && shouldRotateIcon ? 90 : 0 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n key={`accordionHeadIcon--${uuid}`}\n >\n {iconElement}\n </StyledMotionIconWrapper>\n <StyledMotionContentWrapper\n animate={{ opacity: isTitleGreyed ? 0.5 : 1 }}\n initial={false}\n onClick={!isFixed ? onClick : undefined}\n ref={titleWrapperRef}\n $isWrapped={isWrapped}\n key={`accordionHeadContentWrapper--${uuid}`}\n >\n {typeof onTitleInputChange === 'function' ? (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <AreaContext.Provider value={{ shouldChangeColor: true }}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <Input {...titleInputProps} value={title} onChange={onTitleInputChange} />\n </AreaContext.Provider>\n ) : (\n <LayoutGroup key={`accordionHeadLayoutGroup--${uuid}`}>\n <StyledMotionTitleWrapper key={`accordionHeadTitleWrapperWrapper--${uuid}`}>\n <AnimatePresence\n initial={false}\n key={`accordionHeadTitleWrapper--${uuid}`}\n >\n <StyledMotionTitle\n animate={{ scale: 1 }}\n initial={{ scale: isOpen && !isWrapped ? 1 / 1.3 : 1.3 }}\n exit={{ opacity: 0 }}\n $isOpen={isOpen}\n $isWrapped={isWrapped}\n $color={titleColor}\n $hasSearch={typeof onSearchChange === 'function'}\n transition={{\n opacity: {\n duration: 0,\n },\n }}\n key={\n isOpen && !isWrapped\n ? `accordionHeadTitleBig--${uuid}`\n : `accordionHeadTitle--${uuid}`\n }\n >\n {title}\n </StyledMotionTitle>\n </AnimatePresence>\n </StyledMotionTitleWrapper>\n {titleElement && (\n <StyledMotionTitleElementWrapper\n layout\n key={`accordionTitleElement--${uuid}`}\n ref={titleElementWrapperRef}\n >\n {titleElement}\n </StyledMotionTitleElementWrapper>\n )}\n </LayoutGroup>\n )}\n </StyledMotionContentWrapper>\n {(typeof onSearchChange === 'function' || rightElement) && (\n <StyledRightWrapper $isSearchActive={isSearchActive}>\n <AnimatePresence initial={false} key={`accordionRightWrapper--${uuid}`}>\n {typeof onSearchChange === 'function' && isOpen && (\n <StyledMotionSearchWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`searchWrapper--${uuid}`}\n >\n <SearchInput\n onChange={handleOnSearchChance}\n onActiveChange={(isActive) => setIsSearchActive(isActive)}\n placeholder={searchPlaceholder}\n size={InputSize.Small}\n value={internalSearchValue}\n />\n </StyledMotionSearchWrapper>\n )}\n {rightElement && (\n <StyledMotionRightElementWrapper\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={`rightElementWrapper--${uuid}`}\n onClick={\n !isFixed && !shouldPreventRightElementClick\n ? onClick\n : undefined\n }\n >\n {rightElement}\n </StyledMotionRightElementWrapper>\n )}\n </AnimatePresence>\n </StyledRightWrapper>\n )}\n </StyledMotionAccordionHead>\n );\n};\n\nAccordionHead.displayName = 'AccordionHead';\n\nexport default AccordionHead;\n"],"mappings":"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","ignoreList":[]}
@@ -83,7 +83,7 @@ const ComboBox = _ref => {
83
83
  useEffect(() => {
84
84
  if (styledComboBoxElementRef.current && !container) {
85
85
  const el = styledComboBoxElementRef.current;
86
- const element = el.closest('.dialog-inner') || el.closest('body');
86
+ const element = el.closest('.dialog-inner') || el.closest('.page-provider') || el.closest('body');
87
87
  setNewContainer(element);
88
88
  }
89
89
  }, [container]);
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["useDevice","useFunctions","useValues","AnimatePresence","React","useCallback","useContext","useEffect","useMemo","useRef","useState","createPortal","ComboBoxDirection","calculateContentWidth","getMaxHeightInPixels","getIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","StyledMotionComboBoxBody","ComboBox","_ref","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","inputValue","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","translateX","setTranslateX","translateY","setTranslateY","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","shouldUseTopAlignment","setShouldUseTopAlignment","isInputFocused","styledComboBoxElementRef","contentRef","functions","values","browser","isTouch","areaProvider","shouldChangeColor","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","result","toString","includes","maxHeightValue","parseInt","replace","current","el","element","closest","Element","handleInputFocus","event","handleInputBlur","handleClick","contains","target","handleOpen","left","comboBoxLeft","top","comboBoxTop","height","getBoundingClientRect","containerHeight","scrollLeft","scrollTop","useTopAlignment","TOP","TOP_LEFT","TOP_RIGHT","hasBottomAlignment","BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","handleClose","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","currentContent","scrollHeight","maxHeightInPixels","body","handleKeyDown","e","key","children","newIndex","prevElement","tabIndex","newElement","focus","id","newSelectedItem","find","_ref2","String","allItems","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","width","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","text","Math","max","baseWidth","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","LEFT","difference","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","_ref3","handleHeaderClick","comboBoxGroups","map","createElement","groupName","imageBackground","isSelected","rightElement","subtext","suffixElement","textStyles","bodyStyles","initial","$browser","name","animate","opacity","$overflowY","$translateX","$translateY","exit","$maxHeight","$minWidth","style","$direction","$shouldUseCurrentItemWidth","transition","duration","ref","$shouldUseFullWidth","onClick","$isOpen","$isTouch","$isDisabled","$shouldChangeColor","$shouldShowBigImage","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onBlur","onFocus","$shouldShowBorderLeft","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n ReactHTML,\n type ReactNode,\n ReactPortal,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BrowserName } from '../../types/chayns';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSProperties;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport type ComboBoxProps = {\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement> /**\n * Function to be executed when the optional input gets its focus.\n */;\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n bodyWidth,\n direction = ComboBoxDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = '280px',\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n inputValue,\n}) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n const [translateX, setTranslateX] = useState<string>('0px');\n const [translateY, setTranslateY] = useState<string>('0px');\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n const [shouldUseTopAlignment, setShouldUseTopAlignment] = useState(false);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const functions = useFunctions();\n const values = useValues();\n\n const { browser } = useDevice();\n\n const isTouch = getIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let result = flatItems.length * 36;\n\n if (lists.length > 1) {\n result += lists.length * 36;\n }\n\n // ToDo: Implement a better solution to also work with percentage values or other units\n if (maxHeight.toString().includes('px')) {\n const maxHeightValue = parseInt(maxHeight.toString().replace('px', ''), 10);\n\n if (maxHeightValue < result) {\n result = maxHeightValue;\n }\n }\n\n return result;\n }, [lists, maxHeight]);\n\n useEffect(() => {\n if (styledComboBoxElementRef.current && !container) {\n const el = styledComboBoxElementRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n const handleOpen = useCallback(() => {\n if (shouldDisableActions) {\n return;\n }\n\n if (styledComboBoxElementRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height,\n } = styledComboBoxElementRef.current.getBoundingClientRect();\n\n const { left, top, height: containerHeight } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n let useTopAlignment = [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n const hasBottomAlignment = [\n ComboBoxDirection.BOTTOM,\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.BOTTOM_RIGHT,\n ].includes(direction);\n\n if (!hasBottomAlignment && y + height + contentHeight > containerHeight) {\n useTopAlignment = true;\n\n setShouldUseTopAlignment(true);\n } else {\n setShouldUseTopAlignment(false);\n }\n\n setInternalCoordinates({ x, y: useTopAlignment ? y : y + height });\n setIsAnimating(true);\n }\n }, [shouldDisableActions, newContainer, contentHeight, direction]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const currentContent = contentRef.current;\n\n if (portal && isAnimating && currentContent) {\n const scrollHeight = currentContent.scrollHeight ?? 0;\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(scrollHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n }\n }, [isAnimating, maxHeight, portal]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n return !!newSelectedItem;\n });\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth =\n calculateContentWidth([{ text: prefix, value: 'prefix' }], functions, values) + 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\n );\n\n const calculatedWidth = baseWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const itemWidth =\n calculateContentWidth([internalSelectedItem], functions, values) +\n paddingWidth +\n imageWidth +\n iconWidth +\n prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth = itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n lists,\n placeholder,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n internalSelectedItem,\n prefix,\n selectedItem,\n functions,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n useEffect(() => {\n if (\n [\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.LEFT,\n ].includes(direction) &&\n typeof bodyWidth === 'number' &&\n typeof minWidth === 'number'\n ) {\n const difference = minWidth - bodyWidth;\n\n setTranslateX(`${difference}px`);\n } else {\n setTranslateX('0px');\n }\n }, [bodyWidth, direction, minWidth]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <div key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic>{list.groupName}</StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n // ToDo: Cleanup this - item should be given as a prop to avoid full spreading\n <ComboBoxItem\n icons={item.icons}\n id={item.value}\n imageBackground={item.imageBackground}\n imageUrl={item.imageUrl}\n isDisabled={item.isDisabled}\n isSelected={selectedItem ? item.value === selectedItem.value : false}\n key={item.value}\n onSelect={handleSetSelectedItem}\n rightElement={item.rightElement}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={list.shouldShowRoundImage ?? shouldShowRoundImage}\n subtext={item.subtext}\n suffixElement={item.suffixElement}\n text={item.text}\n value={item.value}\n textStyles={item.textStyles}\n />\n ))}\n </div>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n const bodyStyles = useMemo(\n () => ({ left: internalCoordinates.x, top: internalCoordinates.y }),\n [internalCoordinates.x, internalCoordinates.y],\n );\n\n useEffect(() => {\n const useTopAlignment =\n shouldUseTopAlignment ||\n [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n if (useTopAlignment) {\n setTranslateY('-100%');\n } else {\n setTranslateY('0px');\n }\n }, [direction, shouldUseTopAlignment]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && (\n <StyledMotionComboBoxBody\n $browser={browser?.name as BrowserName}\n animate={{ height: 'fit-content', opacity: 1 }}\n $overflowY={overflowY}\n $translateX={translateX}\n $translateY={translateY}\n initial={{ height: 0, opacity: 0 }}\n exit={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n style={bodyStyles}\n $direction={direction}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {comboBoxGroups}\n </StyledMotionComboBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n bodyWidth,\n bodyMinWidth,\n bodyStyles,\n browser?.name,\n comboBoxGroups,\n newContainer,\n direction,\n isAnimating,\n maxHeight,\n minWidth,\n overflowY,\n shouldUseCurrentItemWidth,\n translateX,\n translateY,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && <StyledComboBoxPrefix>{prefix}</StyledComboBoxPrefix>}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper onClick={handleClear}>\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true && internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {portal}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n portal,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,YAAY,EAAEC,SAAS,QAAQ,YAAY;AAC/D,SAASC,eAAe,QAAQ,cAAc;AAC9C,OAAOC,KAAK,IAQRC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,SAASC,YAAY,QAAQ,WAAW;AAExC,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SAASC,qBAAqB,EAAEC,oBAAoB,QAAQ,uBAAuB;AACnF,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,WAAW,QAAQ,sCAAsC;AAElE,OAAOC,IAAI,MAAM,cAAc;AAC/B,OAAOC,YAAY,MAAM,8BAA8B;AACvD,SACIC,cAAc,EACdC,8BAA8B,EAC9BC,oBAAoB,EACpBC,yBAAyB,EACzBC,mBAAmB,EACnBC,yBAAyB,EACzBC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,oBAAoB,EACpBC,yCAAyC,EACzCC,mBAAmB,EACnBC,wBAAwB,QACrB,mBAAmB;AAqG1B,MAAMC,QAA2B,GAAGC,IAAA,IAoB9B;EAAA,IApB+B;IACjCC,SAAS;IACTC,SAAS,GAAGtB,iBAAiB,CAACuB,KAAK;IACnCC,UAAU,GAAG,KAAK;IAClBC,KAAK;IACLC,SAAS,GAAG,OAAO;IACnBC,QAAQ;IACRC,WAAW;IACXC,MAAM;IACNC,SAAS;IACTC,YAAY;IACZC,kBAAkB;IAClBC,mBAAmB;IACnBC,oBAAoB;IACpBC,YAAY;IACZC,kBAAkB,GAAG,KAAK;IAC1BC,aAAa;IACbC,yBAAyB,GAAG,KAAK;IACjCC,WAAW;IACXC;EACJ,CAAC,GAAApB,IAAA;EACG,MAAM,CAACqB,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG5C,QAAQ,CAAgB,CAAC;EACjF,MAAM,CAAC6C,WAAW,EAAEC,cAAc,CAAC,GAAG9C,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAAC+C,QAAQ,EAAEC,WAAW,CAAC,GAAGhD,QAAQ,CAAqBiD,SAAS,CAAC;EACvE,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGnD,QAAQ,CAAC,CAAC,CAAC;EACnD,MAAM,CAACoD,YAAY,EAAEC,eAAe,CAAC,GAAGrD,QAAQ,CAAgB,IAAI,CAAC;EACrE,MAAM,CAACsD,SAAS,EAAEC,YAAY,CAAC,GAAGvD,QAAQ,CAA6B,QAAQ,CAAC;EAChF,MAAM,CAACwD,UAAU,EAAEC,aAAa,CAAC,GAAGzD,QAAQ,CAAS,KAAK,CAAC;EAC3D,MAAM,CAAC0D,UAAU,EAAEC,aAAa,CAAC,GAAG3D,QAAQ,CAAS,KAAK,CAAC;EAC3D,MAAM,CAAC4D,MAAM,EAAEC,SAAS,CAAC,GAAG7D,QAAQ,CAAc,CAAC;EACnD,MAAM,CAAC8D,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG/D,QAAQ,CAAyB;IACnFgE,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE;EACP,CAAC,CAAC;EACF,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGnE,QAAQ,CAAiBgC,SAAS,IAAI,IAAI,CAAC;EACnF,MAAM,CAACoC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGrE,QAAQ,CAAC,KAAK,CAAC;EAEzE,MAAMsE,cAAc,GAAGvE,MAAM,CAAC,KAAK,CAAC;EAEpC,MAAMwE,wBAAwB,GAAGxE,MAAM,CAAiB,IAAI,CAAC;EAC7D,MAAMyE,UAAU,GAAGzE,MAAM,CAAwB,IAAI,CAAC;EAEtD,MAAM0E,SAAS,GAAGlF,YAAY,CAAC,CAAC;EAChC,MAAMmF,MAAM,GAAGlF,SAAS,CAAC,CAAC;EAE1B,MAAM;IAAEmF;EAAQ,CAAC,GAAGrF,SAAS,CAAC,CAAC;EAE/B,MAAMsF,OAAO,GAAGvE,UAAU,CAAC,CAAC;EAE5B,MAAMwE,YAAY,GAAGjF,UAAU,CAACU,WAAW,CAAC;EAE5C,MAAMwE,iBAAiB,GAAGhF,OAAO,CAC7B,MAAM+E,YAAY,CAACC,iBAAiB,IAAI,KAAK,EAC7C,CAACD,YAAY,CAACC,iBAAiB,CACnC,CAAC;EAED,MAAMC,oBAAoB,GAAGjF,OAAO,CAAC,MAAM;IACvC,IAAI,CAACmC,YAAY,EAAE;MACf,OAAO,KAAK;IAChB;IAEA,MAAM+C,aAAa,GAAGrD,KAAK,CAACsD,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IAExD,OACIF,aAAa,CAACG,MAAM,KAAK,CAAC,IAC1BH,aAAa,CAACI,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,KAAK,KAAKrD,YAAY,CAACqD,KAAK,CAAC;EAEvE,CAAC,EAAE,CAAC3D,KAAK,EAAEM,YAAY,CAAC,CAAC;EAEzB,MAAMsD,aAAa,GAAGzF,OAAO,CAAC,MAAM;IAChC,MAAM0F,SAAS,GAAG7D,KAAK,CAACsD,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IAEpD,IAAIO,MAAM,GAAGD,SAAS,CAACL,MAAM,GAAG,EAAE;IAElC,IAAIxD,KAAK,CAACwD,MAAM,GAAG,CAAC,EAAE;MAClBM,MAAM,IAAI9D,KAAK,CAACwD,MAAM,GAAG,EAAE;IAC/B;;IAEA;IACA,IAAIvD,SAAS,CAAC8D,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,IAAI,CAAC,EAAE;MACrC,MAAMC,cAAc,GAAGC,QAAQ,CAACjE,SAAS,CAAC8D,QAAQ,CAAC,CAAC,CAACI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;MAE3E,IAAIF,cAAc,GAAGH,MAAM,EAAE;QACzBA,MAAM,GAAGG,cAAc;MAC3B;IACJ;IAEA,OAAOH,MAAM;EACjB,CAAC,EAAE,CAAC9D,KAAK,EAAEC,SAAS,CAAC,CAAC;EAEtB/B,SAAS,CAAC,MAAM;IACZ,IAAI0E,wBAAwB,CAACwB,OAAO,IAAI,CAAC/D,SAAS,EAAE;MAChD,MAAMgE,EAAE,GAAGzB,wBAAwB,CAACwB,OAAsB;MAE1D,MAAME,OAAO,GAAGD,EAAE,CAACE,OAAO,CAAC,eAAe,CAAC,IAAIF,EAAE,CAACE,OAAO,CAAC,MAAM,CAAC;MAEjE/B,eAAe,CAAC8B,OAAO,CAAC;IAC5B;EACJ,CAAC,EAAE,CAACjE,SAAS,CAAC,CAAC;EAEfnC,SAAS,CAAC,MAAM;IACZ,IAAImC,SAAS,YAAYmE,OAAO,EAAE;MAC9BhC,eAAe,CAACnC,SAAS,CAAC;IAC9B;EACJ,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMoE,gBAAqD,GAAGzG,WAAW,CACpE0G,KAAK,IAAK;IACP/B,cAAc,CAACyB,OAAO,GAAG,IAAI;IAC7B1D,YAAY,GAAGgE,KAAK,CAAC;EACzB,CAAC,EACD,CAAChE,YAAY,CACjB,CAAC;EAED,MAAMiE,eAAoD,GAAG3G,WAAW,CACnE0G,KAAK,IAAK;IACP/B,cAAc,CAACyB,OAAO,GAAG,KAAK;IAC9BtD,WAAW,GAAG4D,KAAK,CAAC;EACxB,CAAC,EACD,CAAC5D,WAAW,CAChB,CAAC;EAED,MAAM8D,WAAW,GAAG5G,WAAW,CAC1B0G,KAAiB,IAAK;IACnB,IACI9B,wBAAwB,CAACwB,OAAO,IAChC,CAACxB,wBAAwB,CAACwB,OAAO,CAACS,QAAQ,CAACH,KAAK,CAACI,MAAc,CAAC,IAChEjC,UAAU,CAACuB,OAAO,IAClB,CAACvB,UAAU,CAACuB,OAAO,CAACS,QAAQ,CAACH,KAAK,CAACI,MAAc,CAAC,EACpD;MACE3D,cAAc,CAAC,KAAK,CAAC;IACzB;EACJ,CAAC,EACD,CAACyB,wBAAwB,CAC7B,CAAC;EAED,MAAMmC,UAAU,GAAG/G,WAAW,CAAC,MAAM;IACjC,IAAIoF,oBAAoB,EAAE;MACtB;IACJ;IAEA,IAAIR,wBAAwB,CAACwB,OAAO,IAAI7B,YAAY,EAAE;MAClD,MAAM;QACFyC,IAAI,EAAEC,YAAY;QAClBC,GAAG,EAAEC,WAAW;QAChBC;MACJ,CAAC,GAAGxC,wBAAwB,CAACwB,OAAO,CAACiB,qBAAqB,CAAC,CAAC;MAE5D,MAAM;QAAEL,IAAI;QAAEE,GAAG;QAAEE,MAAM,EAAEE;MAAgB,CAAC,GAAG/C,YAAY,CAAC8C,qBAAqB,CAAC,CAAC;MAEnF,MAAMhD,CAAC,GAAG4C,YAAY,GAAGD,IAAI,GAAGzC,YAAY,CAACgD,UAAU;MACvD,MAAMjD,CAAC,GAAG6C,WAAW,GAAGD,GAAG,GAAG3C,YAAY,CAACiD,SAAS;MAEpD,IAAIC,eAAe,GAAG,CAClBlH,iBAAiB,CAACmH,GAAG,EACrBnH,iBAAiB,CAACoH,QAAQ,EAC1BpH,iBAAiB,CAACqH,SAAS,CAC9B,CAAC5B,QAAQ,CAACnE,SAAS,CAAC;MAErB,MAAMgG,kBAAkB,GAAG,CACvBtH,iBAAiB,CAACuH,MAAM,EACxBvH,iBAAiB,CAACwH,WAAW,EAC7BxH,iBAAiB,CAACyH,YAAY,CACjC,CAAChC,QAAQ,CAACnE,SAAS,CAAC;MAErB,IAAI,CAACgG,kBAAkB,IAAIvD,CAAC,GAAG8C,MAAM,GAAGxB,aAAa,GAAG0B,eAAe,EAAE;QACrEG,eAAe,GAAG,IAAI;QAEtB/C,wBAAwB,CAAC,IAAI,CAAC;MAClC,CAAC,MAAM;QACHA,wBAAwB,CAAC,KAAK,CAAC;MACnC;MAEAN,sBAAsB,CAAC;QAAEC,CAAC;QAAEC,CAAC,EAAEmD,eAAe,GAAGnD,CAAC,GAAGA,CAAC,GAAG8C;MAAO,CAAC,CAAC;MAClEjE,cAAc,CAAC,IAAI,CAAC;IACxB;EACJ,CAAC,EAAE,CAACiC,oBAAoB,EAAEb,YAAY,EAAEqB,aAAa,EAAE/D,SAAS,CAAC,CAAC;EAElE,MAAMoG,WAAW,GAAGjI,WAAW,CAAC,MAAM;IAClCmD,cAAc,CAAC,KAAK,CAAC;EACzB,CAAC,EAAE,EAAE,CAAC;;EAEN;AACJ;AACA;EACIjD,SAAS,CAAC,MAAM;IACZgI,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAEvB,WAAW,CAAC;IAE/C,OAAO,MAAM;MACTsB,QAAQ,CAACE,mBAAmB,CAAC,OAAO,EAAExB,WAAW,CAAC;IACtD,CAAC;EACL,CAAC,EAAE,CAACA,WAAW,EAAEhC,wBAAwB,CAAC,CAAC;;EAE3C;AACJ;AACA;EACI,MAAMyD,qBAAqB,GAAGrI,WAAW,CACpCsI,YAA4B,IAAK;IAC9B,IAAI,OAAOpG,QAAQ,KAAK,UAAU,EAAE;MAChC,MAAMqG,cAAc,GAAGrG,QAAQ,CAACoG,YAAY,CAAC;MAE7C,IAAIC,cAAc,KAAK,KAAK,EAAE;QAC1B;MACJ;MAEA,IAAIA,cAAc,YAAYC,OAAO,EAAE;QACnC,KAAKD,cAAc,CAACE,IAAI,CAAEC,sBAAsB,IAAK;UACjD,IAAIA,sBAAsB,EAAE;UAE5BzF,uBAAuB,CAACqF,YAAY,CAAC;UACrCnF,cAAc,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC;QAEF;MACJ;IACJ;IAEAF,uBAAuB,CAACqF,YAAY,CAAC;IACrCnF,cAAc,CAAC,KAAK,CAAC;EACzB,CAAC,EACD,CAACjB,QAAQ,CACb,CAAC;EAED,MAAMyG,WAAW,GAAG3I,WAAW,CAC1B0G,KAAuC,IAAK;IACzCA,KAAK,CAACkC,cAAc,CAAC,CAAC;IACtBlC,KAAK,CAACmC,eAAe,CAAC,CAAC;IAEvBR,qBAAqB,CAAC/E,SAAS,CAAC;EACpC,CAAC,EACD,CAAC+E,qBAAqB,CAC1B,CAAC;EAEDnI,SAAS,CAAC,MAAM;IACZ,MAAM4I,cAAc,GAAGjE,UAAU,CAACuB,OAAO;IAEzC,IAAInC,MAAM,IAAIf,WAAW,IAAI4F,cAAc,EAAE;MACzC,MAAMC,YAAY,GAAGD,cAAc,CAACC,YAAY,IAAI,CAAC;MAErD,MAAMC,iBAAiB,GAAGvI,oBAAoB,CAC1CwB,SAAS,EACT2C,wBAAwB,CAACwB,OAAO,IAAI8B,QAAQ,CAACe,IACjD,CAAC;MAEDrF,YAAY,CAACmF,YAAY,GAAGC,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxE;EACJ,CAAC,EAAE,CAAC9F,WAAW,EAAEjB,SAAS,EAAEgC,MAAM,CAAC,CAAC;EAEpC/D,SAAS,CAAC,MAAM;IACZ,MAAMgJ,aAAa,GAAIC,CAAgB,IAAK;MACxC,IAAI,CAACjG,WAAW,EAAE;QACd;MACJ;MAEA,IAAIiG,CAAC,CAACC,GAAG,KAAK,SAAS,IAAID,CAAC,CAACC,GAAG,KAAK,WAAW,EAAE;QAC9CD,CAAC,CAACP,cAAc,CAAC,CAAC;QAElB,MAAMS,QAAQ,GAAGxE,UAAU,CAACuB,OAAO,EAAEiD,QAAQ;QAE7C,IAAIA,QAAQ,IAAIA,QAAQ,CAAC7D,MAAM,GAAG,CAAC,EAAE;UACjC,MAAM8D,QAAQ,GACV7F,YAAY,KAAK,IAAI,GACf,CAACA,YAAY,IAAI0F,CAAC,CAACC,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGC,QAAQ,CAAC7D,MAAM,IAChE6D,QAAQ,CAAC7D,MAAM,GACf,CAAC;UAEX,IAAI/B,YAAY,KAAK,IAAI,EAAE;YACvB,MAAM8F,WAAW,GAAGF,QAAQ,CAAC5F,YAAY,CAAmB;YAE5D8F,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;UAC7B;UAEA9F,eAAe,CAAC4F,QAAQ,CAAC;UAEzB,MAAMG,UAAU,GAAGJ,QAAQ,CAACC,QAAQ,CAAmB;UAEvDG,UAAU,CAACD,QAAQ,GAAG,CAAC;UAEvBC,UAAU,CAACC,KAAK,CAAC,CAAC;QACtB;MACJ,CAAC,MAAM,IAAIP,CAAC,CAACC,GAAG,KAAK,OAAO,IAAI3F,YAAY,KAAK,IAAI,EAAE;QACnD,MAAM6C,OAAO,GAAGzB,UAAU,CAACuB,OAAO,EAAEiD,QAAQ,CAAC5F,YAAY,CAAC;QAE1D,IAAI,CAAC6C,OAAO,EAAE;UACV;QACJ;QAEA,MAAM;UAAEqD;QAAG,CAAC,GAAGrD,OAAO;QAEtB,IAAIsD,eAA0C;QAE9C5H,KAAK,CAACyD,IAAI,CAAEF,IAAI,IAAK;UACjBqE,eAAe,GAAGrE,IAAI,CAACA,IAAI,CAACsE,IAAI,CAC5BC,KAAA;YAAA,IAAC;cAAEnE;YAAM,CAAC,GAAAmE,KAAA;YAAA,OAAKC,MAAM,CAACpE,KAAK,CAAC,KAAKgE,EAAE,CAACxD,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;UAAA,CACtE,CAAC;UACD,OAAO,CAAC,CAACyD,eAAe;QAC5B,CAAC,CAAC;QAEF,IAAI,CAACA,eAAe,EAAE;UAClB;QACJ;QAEAvB,qBAAqB,CAACuB,eAAe,CAAC;MAC1C;IACJ,CAAC;IAED1B,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEe,aAAa,CAAC;IAEnD,OAAO,MAAM;MACThB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEc,aAAa,CAAC;IAC1D,CAAC;EACL,CAAC,EAAE,CAACzF,YAAY,EAAE4E,qBAAqB,EAAEnF,WAAW,EAAElB,KAAK,CAAC,CAAC;;EAE7D;AACJ;AACA;EACI9B,SAAS,CAAC,MAAM;IACZ,MAAM8J,QAAQ,GAAGhI,KAAK,CAACsD,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IACnD,MAAM0E,QAAQ,GAAG,CAAC3H,YAAY,EAAE,GAAG0H,QAAQ,CAAC,CAACvE,IAAI,CAAEC,IAAI,IAAKA,IAAI,EAAEwE,QAAQ,CAAC;IAC3E,MAAMC,OAAO,GAAG,CAAC7H,YAAY,EAAE,GAAG0H,QAAQ,CAAC,CAACvE,IAAI,CAAEC,IAAI,IAAKA,IAAI,EAAE0E,KAAK,CAAC;IAEvE,MAAMC,WAAW,GACbzF,wBAAwB,CAACwB,OAAO,EAAEkE,aAAa,EAAEjD,qBAAqB,CAAC,CAAC,CAACkD,KAAK,IAAI,CAAC;IAEvF,MAAMC,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,MAAMC,UAAU,GAAGR,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,MAAMS,SAAS,GAAGP,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;IAEpC,IAAIQ,WAAW,GAAG,CAAC;IAEnB,IAAIvI,MAAM,EAAE;MACR,MAAMwI,eAAe,GACjBpK,qBAAqB,CAAC,CAAC;QAAEqK,IAAI,EAAEzI,MAAM;QAAEuD,KAAK,EAAE;MAAS,CAAC,CAAC,EAAEb,SAAS,EAAEC,MAAM,CAAC,GAAG,CAAC;MAErF4F,WAAW,GAAGG,IAAI,CAACC,GAAG,CAACH,eAAe,EAAE,EAAE,CAAC;IAC/C;IAEA,MAAMI,SAAS,GAAGxK,qBAAqB,CACnC,CACI,GAAGwJ,QAAQ,EACX;MAAEa,IAAI,EAAE1I,WAAW;MAAEwD,KAAK,EAAE;IAAc,CAAC,EAC3C,IAAIrD,YAAY,GAAG,CAACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAC1C,EACDwC,SAAS,EACTC,MACJ,CAAC;IAED,MAAMkG,eAAe,GAAGD,SAAS,GAAGR,YAAY,GAAGC,UAAU,GAAGC,SAAS,GAAGC,WAAW;IAEvF,IAAIO,WAAW,GAAGD,eAAe;IACjC,IAAIE,eAAe,GAAGF,eAAe;;IAErC;IACA,IAAItI,kBAAkB,EAAE;MACpBuI,WAAW,GAAGb,WAAW;MAEzBc,eAAe,GACXd,WAAW,GAAGY,eAAe,GAAG,EAAE,GAAGA,eAAe,GAAG,EAAE,GAAGZ,WAAW;IAC/E;;IAEA;IAAA,KACK,IAAIxH,yBAAyB,IAAIG,oBAAoB,EAAE;MACxD,MAAMoI,SAAS,GACX5K,qBAAqB,CAAC,CAACwC,oBAAoB,CAAC,EAAE8B,SAAS,EAAEC,MAAM,CAAC,GAChEyF,YAAY,GACZC,UAAU,GACVC,SAAS,GACTC,WAAW;MAEfO,WAAW,GAAGE,SAAS;MAEvBD,eAAe,GAAGC,SAAS,GAAGH,eAAe,GAAG,EAAE,GAAGA,eAAe,GAAG,EAAE,GAAGG,SAAS;IACzF;IAEA,IAAIF,WAAW,GAAGb,WAAW,EAAE;MAC3Ba,WAAW,GAAGb,WAAW;IAC7B;IAEA,IAAIc,eAAe,GAAGd,WAAW,EAAE;MAC/Bc,eAAe,GAAGd,WAAW;IACjC;IAEAhH,WAAW,CAAC6H,WAAW,CAAC;IACxB1H,eAAe,CAACX,yBAAyB,GAAGqI,WAAW,GAAGC,eAAe,CAAC;EAC9E,CAAC,EAAE,CACCnJ,KAAK,EACLG,WAAW,EACXQ,kBAAkB,EAClBE,yBAAyB,EACzBG,oBAAoB,EACpBZ,MAAM,EACNE,YAAY,EACZwC,SAAS,EACTC,MAAM,CACT,CAAC;;EAEF;AACJ;AACA;EACI7E,SAAS,CAAC,MAAM;IACZiD,cAAc,CAAC,KAAK,CAAC;IACrBF,uBAAuB,CAACX,YAAY,CAAC;EACzC,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElBpC,SAAS,CAAC,MAAM;IACZ,IACI,CACIK,iBAAiB,CAACwH,WAAW,EAC7BxH,iBAAiB,CAACoH,QAAQ,EAC1BpH,iBAAiB,CAAC8K,IAAI,CACzB,CAACrF,QAAQ,CAACnE,SAAS,CAAC,IACrB,OAAOD,SAAS,KAAK,QAAQ,IAC7B,OAAOwB,QAAQ,KAAK,QAAQ,EAC9B;MACE,MAAMkI,UAAU,GAAGlI,QAAQ,GAAGxB,SAAS;MAEvCkC,aAAa,CAAC,GAAGwH,UAAU,IAAI,CAAC;IACpC,CAAC,MAAM;MACHxH,aAAa,CAAC,KAAK,CAAC;IACxB;EACJ,CAAC,EAAE,CAAClC,SAAS,EAAEC,SAAS,EAAEuB,QAAQ,CAAC,CAAC;EAEpC,MAAMmI,mBAAmB,GAAGpL,OAAO,CAAC,MAAM;IACtC,IAAImC,YAAY,EAAE;MACd,OAAOA,YAAY,CAAC4H,QAAQ;IAChC;IAEA,IAAIlH,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB,CAACkH,QAAQ;IACxC;IAEA,OAAO5G,SAAS;EACpB,CAAC,EAAE,CAACN,oBAAoB,EAAEV,YAAY,CAAC,CAAC;EAExC,MAAMkJ,eAAe,GAAGrL,OAAO,CAAC,MAAM;IAClC,IAAImC,YAAY,EAAE;MACd,OAAOA,YAAY,CAAC8H,KAAK;IAC7B;IAEA,IAAIpH,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB,CAACoH,KAAK;IACrC;IAEA,OAAO9G,SAAS;EACpB,CAAC,EAAE,CAACN,oBAAoB,EAAEV,YAAY,CAAC,CAAC;;EAExC;AACJ;AACA;EACI,MAAMmJ,eAAe,GAAGtL,OAAO,CAAC,MAAM;IAClC,IAAI0K,IAAI,GAAG1I,WAAW;IAEtB,IAAIG,YAAY,EAAE;MACduI,IAAI,GAAGvI,YAAY,CAACuI,IAAI;IAC5B,CAAC,MAAM,IAAI7H,oBAAoB,EAAE;MAC7B6H,IAAI,GAAG7H,oBAAoB,CAAC6H,IAAI;IACpC;IAEA,OAAOA,IAAI;EACf,CAAC,EAAE,CAAC7H,oBAAoB,EAAEb,WAAW,EAAEG,YAAY,CAAC,CAAC;EAErD,MAAMoJ,+BAA+B,GAAGvL,OAAO,CAAC,MAAM;IAClD,MAAMwL,gBAAgB,GAAG3J,KAAK,CAAC6H,IAAI,CAAEtE,IAAI,IACrCA,IAAI,CAACA,IAAI,CAACE,IAAI,CACVmG,KAAA;MAAA,IAAC;QAAEjG;MAAM,CAAC,GAAAiG,KAAA;MAAA,OAAKjG,KAAK,MAAMrD,YAAY,EAAEqD,KAAK,IAAI3C,oBAAoB,EAAE2C,KAAK,CAAC;IAAA,CACjF,CACJ,CAAC;IAED,OAAOgG,gBAAgB,EAAElJ,oBAAoB,IAAIA,oBAAoB;EACzE,CAAC,EAAE,CAACO,oBAAoB,EAAE2C,KAAK,EAAE3D,KAAK,EAAEM,YAAY,EAAEqD,KAAK,EAAElD,oBAAoB,CAAC,CAAC;;EAEnF;AACJ;AACA;EACI,MAAMoJ,iBAAiB,GAAG7L,WAAW,CAAC,MAAM;IACxC,IAAI,CAAC+B,UAAU,IAAI,CAAC4C,cAAc,CAACyB,OAAO,EAAE;MACxC,IAAIlD,WAAW,EAAE;QACb+E,WAAW,CAAC,CAAC;MACjB,CAAC,MAAM;QACHlB,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CAACkB,WAAW,EAAElB,UAAU,EAAE7D,WAAW,EAAEnB,UAAU,CAAC,CAAC;EAEtD,MAAM+J,cAAc,GAAG3L,OAAO,CAC1B,MACI6B,KAAK,CAAC+J,GAAG,CAAExG,IAAI,iBACXxF,KAAA,CAAAiM,aAAA;IAAK5C,GAAG,EAAE7D,IAAI,CAAC0G,SAAS,IAAI;EAAgB,GACvC1G,IAAI,CAAC0G,SAAS,IAAIjK,KAAK,CAACwD,MAAM,GAAG,CAAC,iBAC/BzF,KAAA,CAAAiM,aAAA,CAACxK,mBAAmB,QAAE+D,IAAI,CAAC0G,SAA+B,CAC7D,EACA1G,IAAI,CAACA,IAAI,CAACwG,GAAG,CAAErG,IAAI;EAAA;EAChB;EACA3F,KAAA,CAAAiM,aAAA,CAACnL,YAAY;IACTuJ,KAAK,EAAE1E,IAAI,CAAC0E,KAAM;IAClBT,EAAE,EAAEjE,IAAI,CAACC,KAAM;IACfuG,eAAe,EAAExG,IAAI,CAACwG,eAAgB;IACtChC,QAAQ,EAAExE,IAAI,CAACwE,QAAS;IACxBnI,UAAU,EAAE2D,IAAI,CAAC3D,UAAW;IAC5BoK,UAAU,EAAE7J,YAAY,GAAGoD,IAAI,CAACC,KAAK,KAAKrD,YAAY,CAACqD,KAAK,GAAG,KAAM;IACrEyD,GAAG,EAAE1D,IAAI,CAACC,KAAM;IAChBzD,QAAQ,EAAEmG,qBAAsB;IAChC+D,YAAY,EAAE1G,IAAI,CAAC0G,YAAa;IAChC7J,kBAAkB,EAAEA,kBAAmB;IACvCE,oBAAoB,EAAE8C,IAAI,CAAC9C,oBAAoB,IAAIA,oBAAqB;IACxE4J,OAAO,EAAE3G,IAAI,CAAC2G,OAAQ;IACtBC,aAAa,EAAE5G,IAAI,CAAC4G,aAAc;IAClCzB,IAAI,EAAEnF,IAAI,CAACmF,IAAK;IAChBlF,KAAK,EAAED,IAAI,CAACC,KAAM;IAClB4G,UAAU,EAAE7G,IAAI,CAAC6G;EAAW,CAC/B,CACJ,CACA,CACR,CAAC,EACN,CAAClE,qBAAqB,EAAErG,KAAK,EAAEM,YAAY,EAAEC,kBAAkB,EAAEE,oBAAoB,CACzF,CAAC;EAED,MAAM+J,UAAU,GAAGrM,OAAO,CACtB,OAAO;IAAE6G,IAAI,EAAE7C,mBAAmB,CAACE,CAAC;IAAE6C,GAAG,EAAE/C,mBAAmB,CAACG;EAAE,CAAC,CAAC,EACnE,CAACH,mBAAmB,CAACE,CAAC,EAAEF,mBAAmB,CAACG,CAAC,CACjD,CAAC;EAEDpE,SAAS,CAAC,MAAM;IACZ,MAAMuH,eAAe,GACjBhD,qBAAqB,IACrB,CACIlE,iBAAiB,CAACmH,GAAG,EACrBnH,iBAAiB,CAACoH,QAAQ,EAC1BpH,iBAAiB,CAACqH,SAAS,CAC9B,CAAC5B,QAAQ,CAACnE,SAAS,CAAC;IAEzB,IAAI4F,eAAe,EAAE;MACjBzD,aAAa,CAAC,OAAO,CAAC;IAC1B,CAAC,MAAM;MACHA,aAAa,CAAC,KAAK,CAAC;IACxB;EACJ,CAAC,EAAE,CAACnC,SAAS,EAAE4C,qBAAqB,CAAC,CAAC;EAEtCvE,SAAS,CAAC,MAAM;IACZ,IAAI,CAACqE,YAAY,EAAE;MACf;IACJ;IAEAL,SAAS,CAAC,mBACN5D,YAAY,cACRP,KAAA,CAAAiM,aAAA,CAAClM,eAAe;MAAC2M,OAAO,EAAE;IAAM,GAC3BvJ,WAAW,iBACRnD,KAAA,CAAAiM,aAAA,CAACvK,wBAAwB;MACrBiL,QAAQ,EAAE1H,OAAO,EAAE2H,IAAoB;MACvCC,OAAO,EAAE;QAAExF,MAAM,EAAE,aAAa;QAAEyF,OAAO,EAAE;MAAE,CAAE;MAC/CC,UAAU,EAAEnJ,SAAU;MACtBoJ,WAAW,EAAElJ,UAAW;MACxBmJ,WAAW,EAAEjJ,UAAW;MACxB0I,OAAO,EAAE;QAAErF,MAAM,EAAE,CAAC;QAAEyF,OAAO,EAAE;MAAE,CAAE;MACnCI,IAAI,EAAE;QAAE7F,MAAM,EAAE,CAAC;QAAEyF,OAAO,EAAE;MAAE,CAAE;MAChCK,UAAU,EAAEjL,SAAU;MACtBkL,SAAS,EAAEvL,SAAS,IAAI2B,YAAa;MACrC6J,KAAK,EAAEZ,UAAW;MAClBa,UAAU,EAAExL,SAAU;MACtByL,0BAA0B,EAAEzK,yBAA0B;MACtD0K,UAAU,EAAE;QAAEC,QAAQ,EAAE;MAAI,CAAE;MAC9BhE,QAAQ,EAAE,CAAE;MACZiE,GAAG,EAAE5I;IAAW,GAEfiH,cACqB,CAEjB,CAAC,EAClBvH,YACJ,CACJ,CAAC;EACL,CAAC,EAAE,CACC3C,SAAS,EACT2B,YAAY,EACZiJ,UAAU,EACVxH,OAAO,EAAE2H,IAAI,EACbb,cAAc,EACdvH,YAAY,EACZ1C,SAAS,EACTqB,WAAW,EACXjB,SAAS,EACTmB,QAAQ,EACRO,SAAS,EACTd,yBAAyB,EACzBgB,UAAU,EACVE,UAAU,CACb,CAAC;EAEF,OAAO5D,OAAO,CACV,mBACIJ,KAAA,CAAAiM,aAAA,CAAClL,cAAc;IACX2M,GAAG,EAAE7I,wBAAyB;IAC9BuI,SAAS,EAAE/J,QAAS;IACpBsK,mBAAmB,EAAE/K,kBAAmB;IACxC2K,0BAA0B,EAAEzK;EAA0B,gBAEtD9C,KAAA,CAAAiM,aAAA,CAAChL,oBAAoB;IACjBqM,UAAU,EAAExL,SAAU;IACtB8L,OAAO,EAAE9B,iBAAkB;IAC3B+B,OAAO,EAAE1K,WAAY;IACrB2K,QAAQ,EAAE5I,OAAQ;IAClB6I,WAAW,EAAE/L,UAAW;IACxBgM,kBAAkB,EAAE5I,iBAAkB;IACtC6I,mBAAmB,EAAEzL;EAAmB,gBAExCxC,KAAA,CAAAiM,aAAA,CAACzK,yCAAyC,QACrCa,MAAM,iBAAIrC,KAAA,CAAAiM,aAAA,CAAC1K,oBAAoB,QAAEc,MAA6B,CAAC,eAChErC,KAAA,CAAAiM,aAAA,CAAC7K,yBAAyB;IACtB8M,oBAAoB,EAAE,CAAC3L,YAAY,IAAI,CAACU;EAAqB,GAE5DuI,mBAAmB,iBAChBxL,KAAA,CAAAiM,aAAA,CAAC5K,8BAA8B;IAC3B8M,GAAG,EAAE3C,mBAAoB;IACzByC,mBAAmB,EAAEzL,kBAAmB;IACxC4L,qBAAqB,EAAEzC;EAAgC,CAC1D,CACJ,EACAF,eAAe,iBAAIzL,KAAA,CAAAiM,aAAA,CAACpL,IAAI;IAACwJ,KAAK,EAAEoB;EAAgB,CAAE,CAAC,EACnD,OAAOzI,UAAU,KAAK,QAAQ,gBAC3BhD,KAAA,CAAAiM,aAAA,CAAC9K,mBAAmB;IAChBkN,QAAQ,EAAErM,UAAW;IACrB4D,KAAK,EAAE5C,UAAW;IAClBsL,QAAQ,EAAEzL,aAAc;IACxB0L,MAAM,EAAE3H,eAAgB;IACxB4H,OAAO,EAAE9H,gBAAiB;IAC1BtE,WAAW,EAAEsJ;EAAgB,CAChC,CAAC,gBAEF1L,KAAA,CAAAiM,aAAA,CAAC3K,6BAA6B,QACzBoK,eAC0B,CAClC,EACAzI,oBAAoB,IACjBA,oBAAoB,CAACsJ,aAAa,IAClCtJ,oBAAoB,CAACsJ,aACF,CACY,CAAC,EAC3C9J,mBAAmB,IAAIQ,oBAAoB,iBACxCjD,KAAA,CAAAiM,aAAA,CAACjL,8BAA8B;IAAC4M,OAAO,EAAEhF;EAAY,gBACjD5I,KAAA,CAAAiM,aAAA,CAACpL,IAAI;IAACwJ,KAAK,EAAE,CAAC,aAAa;EAAE,CAAE,CACH,CACnC,EACA,CAAChF,oBAAoB,iBAClBrF,KAAA,CAAAiM,aAAA,CAAC/K,yBAAyB;IACtBuN,qBAAqB,EACjBhM,mBAAmB,KAAK,IAAI,IAAIQ,oBAAoB,KAAKM;EAC5D,gBAEDvD,KAAA,CAAAiM,aAAA,CAACpL,IAAI;IAACwJ,KAAK,EAAE,CAAC,oBAAoB;EAAE,CAAE,CACf,CAEb,CAAC,EACtBnG,MACW,CACnB,EACD,CACIb,QAAQ,EACRT,kBAAkB,EAClBE,yBAAyB,EACzBhB,SAAS,EACTgK,iBAAiB,EACjB3I,WAAW,EACX+B,OAAO,EACPlD,UAAU,EACVoD,iBAAiB,EACjB5C,kBAAkB,EAClBH,MAAM,EACNE,YAAY,EACZU,oBAAoB,EACpBuI,mBAAmB,EACnBG,+BAA+B,EAC/BF,eAAe,EACfzI,UAAU,EACVH,aAAa,EACb+D,eAAe,EACfF,gBAAgB,EAChBgF,eAAe,EACfjJ,mBAAmB,EACnBmG,WAAW,EACXvD,oBAAoB,EACpBnB,MAAM,CAEd,CAAC;AACL,CAAC;AAEDvC,QAAQ,CAAC+M,WAAW,GAAG,UAAU;AAEjC,eAAe/M,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"ComboBox.js","names":["useDevice","useFunctions","useValues","AnimatePresence","React","useCallback","useContext","useEffect","useMemo","useRef","useState","createPortal","ComboBoxDirection","calculateContentWidth","getMaxHeightInPixels","getIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","StyledMotionComboBoxBody","ComboBox","_ref","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","inputValue","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","overflowY","setOverflowY","translateX","setTranslateX","translateY","setTranslateY","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","shouldUseTopAlignment","setShouldUseTopAlignment","isInputFocused","styledComboBoxElementRef","contentRef","functions","values","browser","isTouch","areaProvider","shouldChangeColor","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","result","toString","includes","maxHeightValue","parseInt","replace","current","el","element","closest","Element","handleInputFocus","event","handleInputBlur","handleClick","contains","target","handleOpen","left","comboBoxLeft","top","comboBoxTop","height","getBoundingClientRect","containerHeight","scrollLeft","scrollTop","useTopAlignment","TOP","TOP_LEFT","TOP_RIGHT","hasBottomAlignment","BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","handleClose","document","addEventListener","removeEventListener","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","currentContent","scrollHeight","maxHeightInPixels","body","handleKeyDown","e","key","children","newIndex","prevElement","tabIndex","newElement","focus","id","newSelectedItem","find","_ref2","String","allItems","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","width","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","text","Math","max","baseWidth","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","itemWidth","LEFT","difference","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","_ref3","handleHeaderClick","comboBoxGroups","map","createElement","groupName","imageBackground","isSelected","rightElement","subtext","suffixElement","textStyles","bodyStyles","initial","$browser","name","animate","opacity","$overflowY","$translateX","$translateY","exit","$maxHeight","$minWidth","style","$direction","$shouldUseCurrentItemWidth","transition","duration","ref","$shouldUseFullWidth","onClick","$isOpen","$isTouch","$isDisabled","$shouldChangeColor","$shouldShowBigImage","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onBlur","onFocus","$shouldShowBorderLeft","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FC,\n FocusEventHandler,\n ReactHTML,\n type ReactNode,\n ReactPortal,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BrowserName } from '../../types/chayns';\nimport { ComboBoxDirection } from '../../types/comboBox';\nimport { calculateContentWidth, getMaxHeightInPixels } from '../../utils/calculate';\nimport { getIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n StyledMotionComboBoxBody,\n} from './ComboBox.styles';\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSProperties;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport type ComboBoxProps = {\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: ComboBoxDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: CSSProperties['maxHeight'];\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement> /**\n * Function to be executed when the optional input gets its focus.\n */;\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n};\n\nconst ComboBox: FC<ComboBoxProps> = ({\n bodyWidth,\n direction = ComboBoxDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = '280px',\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n inputValue,\n}) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [overflowY, setOverflowY] = useState<CSSProperties['overflowY']>('hidden');\n const [translateX, setTranslateX] = useState<string>('0px');\n const [translateY, setTranslateY] = useState<string>('0px');\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n const [shouldUseTopAlignment, setShouldUseTopAlignment] = useState(false);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const functions = useFunctions();\n const values = useValues();\n\n const { browser } = useDevice();\n\n const isTouch = getIsTouch();\n\n const areaProvider = useContext(AreaContext);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let result = flatItems.length * 36;\n\n if (lists.length > 1) {\n result += lists.length * 36;\n }\n\n // ToDo: Implement a better solution to also work with percentage values or other units\n if (maxHeight.toString().includes('px')) {\n const maxHeightValue = parseInt(maxHeight.toString().replace('px', ''), 10);\n\n if (maxHeightValue < result) {\n result = maxHeightValue;\n }\n }\n\n return result;\n }, [lists, maxHeight]);\n\n useEffect(() => {\n if (styledComboBoxElementRef.current && !container) {\n const el = styledComboBoxElementRef.current as HTMLElement;\n\n const element =\n el.closest('.dialog-inner') || el.closest('.page-provider') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (\n styledComboBoxElementRef.current &&\n !styledComboBoxElementRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n setIsAnimating(false);\n }\n },\n [styledComboBoxElementRef],\n );\n\n const handleOpen = useCallback(() => {\n if (shouldDisableActions) {\n return;\n }\n\n if (styledComboBoxElementRef.current && newContainer) {\n const {\n left: comboBoxLeft,\n top: comboBoxTop,\n height,\n } = styledComboBoxElementRef.current.getBoundingClientRect();\n\n const { left, top, height: containerHeight } = newContainer.getBoundingClientRect();\n\n const x = comboBoxLeft - left + newContainer.scrollLeft;\n const y = comboBoxTop - top + newContainer.scrollTop;\n\n let useTopAlignment = [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n const hasBottomAlignment = [\n ComboBoxDirection.BOTTOM,\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.BOTTOM_RIGHT,\n ].includes(direction);\n\n if (!hasBottomAlignment && y + height + contentHeight > containerHeight) {\n useTopAlignment = true;\n\n setShouldUseTopAlignment(true);\n } else {\n setShouldUseTopAlignment(false);\n }\n\n setInternalCoordinates({ x, y: useTopAlignment ? y : y + height });\n setIsAnimating(true);\n }\n }, [shouldDisableActions, newContainer, contentHeight, direction]);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function adds an event listener to the document to close the combobox when the user clicks outside of it\n */\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [handleClick, styledComboBoxElementRef]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const currentContent = contentRef.current;\n\n if (portal && isAnimating && currentContent) {\n const scrollHeight = currentContent.scrollHeight ?? 0;\n\n const maxHeightInPixels = getMaxHeightInPixels(\n maxHeight,\n styledComboBoxElementRef.current ?? document.body,\n );\n\n setOverflowY(scrollHeight > maxHeightInPixels ? 'scroll' : 'hidden');\n }\n }, [isAnimating, maxHeight, portal]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex + (e.key === 'ArrowUp' ? -1 : 1) + children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n newElement.tabIndex = 0;\n\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n return !!newSelectedItem;\n });\n\n if (!newSelectedItem) {\n return;\n }\n\n handleSetSelectedItem(newSelectedItem);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth =\n calculateContentWidth([{ text: prefix, value: 'prefix' }], functions, values) + 5;\n\n prefixWidth = Math.max(prefixTextWidth, 32);\n }\n\n const baseWidth = calculateContentWidth(\n [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n values,\n );\n\n const calculatedWidth = baseWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const itemWidth =\n calculateContentWidth([internalSelectedItem], functions, values) +\n paddingWidth +\n imageWidth +\n iconWidth +\n prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth = itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n lists,\n placeholder,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n internalSelectedItem,\n prefix,\n selectedItem,\n functions,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n useEffect(() => {\n if (\n [\n ComboBoxDirection.BOTTOM_LEFT,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.LEFT,\n ].includes(direction) &&\n typeof bodyWidth === 'number' &&\n typeof minWidth === 'number'\n ) {\n const difference = minWidth - bodyWidth;\n\n setTranslateX(`${difference}px`);\n } else {\n setTranslateX('0px');\n }\n }, [bodyWidth, direction, minWidth]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <div key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic>{list.groupName}</StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n // ToDo: Cleanup this - item should be given as a prop to avoid full spreading\n <ComboBoxItem\n icons={item.icons}\n id={item.value}\n imageBackground={item.imageBackground}\n imageUrl={item.imageUrl}\n isDisabled={item.isDisabled}\n isSelected={selectedItem ? item.value === selectedItem.value : false}\n key={item.value}\n onSelect={handleSetSelectedItem}\n rightElement={item.rightElement}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={list.shouldShowRoundImage ?? shouldShowRoundImage}\n subtext={item.subtext}\n suffixElement={item.suffixElement}\n text={item.text}\n value={item.value}\n textStyles={item.textStyles}\n />\n ))}\n </div>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n const bodyStyles = useMemo(\n () => ({ left: internalCoordinates.x, top: internalCoordinates.y }),\n [internalCoordinates.x, internalCoordinates.y],\n );\n\n useEffect(() => {\n const useTopAlignment =\n shouldUseTopAlignment ||\n [\n ComboBoxDirection.TOP,\n ComboBoxDirection.TOP_LEFT,\n ComboBoxDirection.TOP_RIGHT,\n ].includes(direction);\n\n if (useTopAlignment) {\n setTranslateY('-100%');\n } else {\n setTranslateY('0px');\n }\n }, [direction, shouldUseTopAlignment]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && (\n <StyledMotionComboBoxBody\n $browser={browser?.name as BrowserName}\n animate={{ height: 'fit-content', opacity: 1 }}\n $overflowY={overflowY}\n $translateX={translateX}\n $translateY={translateY}\n initial={{ height: 0, opacity: 0 }}\n exit={{ height: 0, opacity: 0 }}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n style={bodyStyles}\n $direction={direction}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n transition={{ duration: 0.2 }}\n tabIndex={0}\n ref={contentRef}\n >\n {comboBoxGroups}\n </StyledMotionComboBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n bodyWidth,\n bodyMinWidth,\n bodyStyles,\n browser?.name,\n comboBoxGroups,\n newContainer,\n direction,\n isAnimating,\n maxHeight,\n minWidth,\n overflowY,\n shouldUseCurrentItemWidth,\n translateX,\n translateY,\n ]);\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && <StyledComboBoxPrefix>{prefix}</StyledComboBoxPrefix>}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper onClick={handleClear}>\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $shouldShowBorderLeft={\n shouldShowClearIcon === true && internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {portal}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n portal,\n ],\n );\n};\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,8 @@ const TagInput = /*#__PURE__*/forwardRef((_ref, ref) => {
10
10
  placeholder,
11
11
  tags,
12
12
  onRemove,
13
- onAdd
13
+ onAdd,
14
+ onChange
14
15
  } = _ref;
15
16
  const [internalTags, setInternalTags] = useState();
16
17
  const [currentValue, setCurrentValue] = useState('');
@@ -71,12 +72,15 @@ const TagInput = /*#__PURE__*/forwardRef((_ref, ref) => {
71
72
  });
72
73
  }
73
74
  }, [currentValue, internalTags, onAdd, onRemove, selectedId]);
74
- const handleChange = event => {
75
+ const handleChange = useCallback(event => {
75
76
  setCurrentValue(event.target.value);
77
+ if (typeof onChange === 'function') {
78
+ onChange(event);
79
+ }
76
80
  if (event.target.value !== '') {
77
81
  setSelectedId(undefined);
78
82
  }
79
- };
83
+ }, [onChange]);
80
84
  const handleIconClick = useCallback(id => {
81
85
  setInternalTags(prevState => {
82
86
  const updatedTags = (prevState ?? []).filter(tag => tag.id !== id);
@@ -113,7 +117,7 @@ const TagInput = /*#__PURE__*/forwardRef((_ref, ref) => {
113
117
  onKeyDown: handleKeyDown,
114
118
  onChange: handleChange,
115
119
  value: currentValue
116
- })), [content, currentValue, handleKeyDown, placeholder, shouldChangeColor, tags]);
120
+ })), [content, currentValue, handleChange, handleKeyDown, placeholder, shouldChangeColor, tags]);
117
121
  });
118
122
  export default TagInput;
119
123
  //# sourceMappingURL=TagInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TagInput.js","names":["React","forwardRef","useCallback","useEffect","useMemo","useState","useImperativeHandle","useContext","useTheme","v4","uuidv4","Badge","Icon","StyledTagInput","StyledTagInputTagInput","StyledTagInputTagWrapper","StyledTagInputTagWrapperText","AreaContext","TagInput","_ref","ref","placeholder","tags","onRemove","onAdd","internalTags","setInternalTags","currentValue","setCurrentValue","selectedId","setSelectedId","areaProvider","theme","shouldChangeColor","getUnsavedTagText","undefined","handleKeyDown","event","key","prevValue","prevTags","newTag","id","text","newSelectedId","length","prevState","removedId","updatedTags","filter","tag","handleChange","target","value","handleIconClick","content","items","forEach","_ref2","push","createElement","backgroundColor","icons","onClick","$shouldChangeColor","onKeyDown","onChange"],"sources":["../../../../src/components/tag-input/TagInput.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ChangeEvent,\n type KeyboardEvent,\n type ReactElement,\n useImperativeHandle,\n useContext,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Tag } from '../../types/tagInput';\nimport Badge from '../badge/Badge';\nimport Icon from '../icon/Icon';\nimport {\n StyledTagInput,\n StyledTagInputTagInput,\n StyledTagInputTagWrapper,\n StyledTagInputTagWrapperText,\n} from './TagInput.styles';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type TagInputProps = {\n /**\n * Function to be executed when a tag is added.\n */\n onAdd?: (tag: Tag) => void;\n /**\n * Function to be executed when a tag is removed.\n */\n onRemove?: (id: string) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * The tags that should be displayed.\n */\n tags?: Tag[];\n};\n\nexport type TagInputRef = {\n getUnsavedTagText: Tag['text'] | undefined;\n};\n\nconst TagInput = forwardRef<TagInputRef, TagInputProps>(\n ({ placeholder, tags, onRemove, onAdd }, ref) => {\n const [internalTags, setInternalTags] = useState<Tag[]>();\n const [currentValue, setCurrentValue] = useState('');\n const [selectedId, setSelectedId] = useState<Tag['id']>();\n\n const areaProvider = useContext(AreaContext);\n\n const theme = useTheme() as Theme;\n\n useEffect(() => {\n if (tags) {\n setInternalTags(tags);\n }\n }, [tags]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n getUnsavedTagText: currentValue !== '' ? currentValue : undefined,\n }),\n [currentValue],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n setCurrentValue((prevValue) => {\n if (!prevValue) {\n return '';\n }\n\n setInternalTags((prevTags) => {\n const newTag = { id: uuidv4(), text: prevValue };\n\n if (typeof onAdd === 'function') {\n onAdd(newTag);\n }\n\n return prevTags ? [...prevTags, newTag] : [newTag];\n });\n\n return '';\n });\n }\n\n if (event.key === 'Backspace' && currentValue === '') {\n if (!selectedId) {\n if (!internalTags) {\n return;\n }\n\n const newSelectedId = internalTags[internalTags.length - 1]?.id;\n\n setSelectedId(newSelectedId);\n\n return;\n }\n\n setInternalTags((prevState) => {\n if (!prevState) {\n return prevState;\n }\n\n const removedId = prevState[prevState.length - 1]?.id;\n\n if (!removedId) {\n return prevState;\n }\n\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== removedId);\n\n if (typeof onRemove === 'function') {\n onRemove(removedId);\n }\n\n setSelectedId(undefined);\n\n return updatedTags;\n });\n }\n },\n [currentValue, internalTags, onAdd, onRemove, selectedId],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n\n if (event.target.value !== '') {\n setSelectedId(undefined);\n }\n };\n\n const handleIconClick = useCallback(\n (id: string) => {\n setInternalTags((prevState) => {\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== id);\n\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n\n return updatedTags;\n });\n },\n [onRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalTags) {\n return items;\n }\n\n internalTags.forEach(({ text, id }) => {\n items.push(\n <Badge\n key={`tag-input-${id}`}\n backgroundColor={\n id === selectedId ? ((theme['206'] as string) ?? undefined) : undefined\n }\n >\n <StyledTagInputTagWrapper>\n <StyledTagInputTagWrapperText>{text}</StyledTagInputTagWrapperText>\n <Icon icons={['ts-wrong']} onClick={() => handleIconClick(id)} />\n </StyledTagInputTagWrapper>\n </Badge>,\n );\n });\n\n return items;\n }, [handleIconClick, internalTags, selectedId, theme]);\n\n return useMemo(\n () => (\n <StyledTagInput $shouldChangeColor={shouldChangeColor}>\n {content}\n <StyledTagInputTagInput\n placeholder={tags && tags.length > 0 ? undefined : placeholder}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n value={currentValue}\n />\n </StyledTagInput>\n ),\n [content, currentValue, handleKeyDown, placeholder, shouldChangeColor, tags],\n );\n },\n);\n\nexport default TagInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TagInput.js","names":["React","forwardRef","useCallback","useEffect","useMemo","useState","useImperativeHandle","useContext","useTheme","v4","uuidv4","Badge","Icon","StyledTagInput","StyledTagInputTagInput","StyledTagInputTagWrapper","StyledTagInputTagWrapperText","AreaContext","TagInput","_ref","ref","placeholder","tags","onRemove","onAdd","onChange","internalTags","setInternalTags","currentValue","setCurrentValue","selectedId","setSelectedId","areaProvider","theme","shouldChangeColor","getUnsavedTagText","undefined","handleKeyDown","event","key","prevValue","prevTags","newTag","id","text","newSelectedId","length","prevState","removedId","updatedTags","filter","tag","handleChange","target","value","handleIconClick","content","items","forEach","_ref2","push","createElement","backgroundColor","icons","onClick","$shouldChangeColor","onKeyDown"],"sources":["../../../../src/components/tag-input/TagInput.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ChangeEvent,\n type KeyboardEvent,\n type ReactElement,\n useImperativeHandle,\n useContext,\n ChangeEventHandler,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Tag } from '../../types/tagInput';\nimport Badge from '../badge/Badge';\nimport Icon from '../icon/Icon';\nimport {\n StyledTagInput,\n StyledTagInputTagInput,\n StyledTagInputTagWrapper,\n StyledTagInputTagWrapperText,\n} from './TagInput.styles';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type TagInputProps = {\n /**\n * Function to be executed when a tag is added.\n */\n onAdd?: (tag: Tag) => void;\n /**\n * Function to be executed when the value of the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when a tag is removed.\n */\n onRemove?: (id: string) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * The tags that should be displayed.\n */\n tags?: Tag[];\n};\n\nexport type TagInputRef = {\n getUnsavedTagText: Tag['text'] | undefined;\n};\n\nconst TagInput = forwardRef<TagInputRef, TagInputProps>(\n ({ placeholder, tags, onRemove, onAdd, onChange }, ref) => {\n const [internalTags, setInternalTags] = useState<Tag[]>();\n const [currentValue, setCurrentValue] = useState('');\n const [selectedId, setSelectedId] = useState<Tag['id']>();\n\n const areaProvider = useContext(AreaContext);\n\n const theme = useTheme() as Theme;\n\n useEffect(() => {\n if (tags) {\n setInternalTags(tags);\n }\n }, [tags]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n getUnsavedTagText: currentValue !== '' ? currentValue : undefined,\n }),\n [currentValue],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n setCurrentValue((prevValue) => {\n if (!prevValue) {\n return '';\n }\n\n setInternalTags((prevTags) => {\n const newTag = { id: uuidv4(), text: prevValue };\n\n if (typeof onAdd === 'function') {\n onAdd(newTag);\n }\n\n return prevTags ? [...prevTags, newTag] : [newTag];\n });\n\n return '';\n });\n }\n\n if (event.key === 'Backspace' && currentValue === '') {\n if (!selectedId) {\n if (!internalTags) {\n return;\n }\n\n const newSelectedId = internalTags[internalTags.length - 1]?.id;\n\n setSelectedId(newSelectedId);\n\n return;\n }\n\n setInternalTags((prevState) => {\n if (!prevState) {\n return prevState;\n }\n\n const removedId = prevState[prevState.length - 1]?.id;\n\n if (!removedId) {\n return prevState;\n }\n\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== removedId);\n\n if (typeof onRemove === 'function') {\n onRemove(removedId);\n }\n\n setSelectedId(undefined);\n\n return updatedTags;\n });\n }\n },\n [currentValue, internalTags, onAdd, onRemove, selectedId],\n );\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n\n if (event.target.value !== '') {\n setSelectedId(undefined);\n }\n },\n [onChange],\n );\n\n const handleIconClick = useCallback(\n (id: string) => {\n setInternalTags((prevState) => {\n const updatedTags = (prevState ?? []).filter((tag) => tag.id !== id);\n\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n\n return updatedTags;\n });\n },\n [onRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!internalTags) {\n return items;\n }\n\n internalTags.forEach(({ text, id }) => {\n items.push(\n <Badge\n key={`tag-input-${id}`}\n backgroundColor={\n id === selectedId ? ((theme['206'] as string) ?? undefined) : undefined\n }\n >\n <StyledTagInputTagWrapper>\n <StyledTagInputTagWrapperText>{text}</StyledTagInputTagWrapperText>\n <Icon icons={['ts-wrong']} onClick={() => handleIconClick(id)} />\n </StyledTagInputTagWrapper>\n </Badge>,\n );\n });\n\n return items;\n }, [handleIconClick, internalTags, selectedId, theme]);\n\n return useMemo(\n () => (\n <StyledTagInput $shouldChangeColor={shouldChangeColor}>\n {content}\n <StyledTagInputTagInput\n placeholder={tags && tags.length > 0 ? undefined : placeholder}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n value={currentValue}\n />\n </StyledTagInput>\n ),\n [\n content,\n currentValue,\n handleChange,\n handleKeyDown,\n placeholder,\n shouldChangeColor,\n tags,\n ],\n );\n },\n);\n\nexport default TagInput;\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,14 @@
1
- import React from 'react';
1
+ import React, { ChangeEventHandler } from 'react';
2
2
  import type { Tag } from '../../types/tagInput';
3
3
  export type TagInputProps = {
4
4
  /**
5
5
  * Function to be executed when a tag is added.
6
6
  */
7
7
  onAdd?: (tag: Tag) => void;
8
+ /**
9
+ * Function to be executed when the value of the input is changed.
10
+ */
11
+ onChange?: ChangeEventHandler<HTMLInputElement>;
8
12
  /**
9
13
  * Function to be executed when a tag is removed.
10
14
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.0-beta.1113",
3
+ "version": "5.0.0-beta.1116",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -51,22 +51,22 @@
51
51
  "url": "https://github.com/TobitSoftware/chayns-components/issues"
52
52
  },
53
53
  "devDependencies": {
54
- "@babel/cli": "^7.27.1",
54
+ "@babel/cli": "^7.27.2",
55
55
  "@babel/core": "^7.27.1",
56
- "@babel/preset-env": "^7.27.1",
56
+ "@babel/preset-env": "^7.27.2",
57
57
  "@babel/preset-react": "^7.27.1",
58
58
  "@babel/preset-typescript": "^7.27.1",
59
- "@types/react": "^18.3.21",
59
+ "@types/react": "^18.3.22",
60
60
  "@types/react-dom": "^18.3.7",
61
61
  "@types/styled-components": "^5.1.34",
62
62
  "@types/uuid": "^10.0.0",
63
63
  "babel-loader": "^9.2.1",
64
- "chayns-api": "^2.2.20",
64
+ "chayns-api": "^2.2.21",
65
65
  "cross-env": "^7.0.3",
66
66
  "lerna": "^8.2.2",
67
67
  "react": "^18.3.1",
68
68
  "react-dom": "^18.3.1",
69
- "styled-components": "^6.1.17",
69
+ "styled-components": "^6.1.18",
70
70
  "typescript": "^5.8.3"
71
71
  },
72
72
  "dependencies": {
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "a0bd3497334d3561c9521e69cd6e728bef1c9c6b"
89
+ "gitHead": "6a2633f5e255424ee74e97b2525c3e6a23923f1c"
90
90
  }