{"version":3,"file":"Option.mjs","sources":["../../../../admin/src/components/SelectTree/Option.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { components, OptionProps as ReactSelectOptionProps } from 'react-select';\nimport { styled } from 'styled-components';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\n\nconst ToggleButton = styled(Flex)`\n  align-self: flex-end;\n  height: 2.2rem;\n  width: 2.8rem;\n\n  &:hover,\n  &:focus {\n    background-color: ${({ theme }) => theme.colors.primary200};\n  }\n`;\n\ninterface SelectProps {\n  maxDisplayDepth: number;\n  openValues: string[];\n  onOptionToggle: (value: string) => void;\n}\n\ninterface FolderWithDepth extends Folder {\n  depth: number;\n  value: string;\n}\n\ninterface OptionProps extends ReactSelectOptionProps<FolderWithDepth, false> {\n  selectProps: SelectProps & ReactSelectOptionProps<FolderWithDepth, false>['selectProps'];\n}\n\nexport const Option = ({ children, data, selectProps, ...props }: OptionProps) => {\n  const { formatMessage } = useIntl();\n  const { depth, value, children: options } = data;\n  const { maxDisplayDepth, openValues, onOptionToggle } = selectProps;\n  const isOpen = openValues.includes(value);\n\n  const Icon = isOpen ? ChevronUp : ChevronDown;\n\n  return (\n    <components.Option data={data} selectProps={selectProps} {...props}>\n      <Flex alignItems=\"start\">\n        <Typography textColor=\"neutral800\" ellipsis>\n          <span style={{ paddingLeft: `${Math.min(depth, maxDisplayDepth) * 14}px` }}>\n            {children}\n          </span>\n        </Typography>\n\n        {options && options?.length > 0 && (\n          <ToggleButton\n            aria-label={formatMessage({\n              id: 'app.utils.toggle',\n              defaultMessage: 'Toggle',\n            })}\n            tag=\"button\"\n            alignItems=\"center\"\n            hasRadius\n            justifyContent=\"center\"\n            marginLeft=\"auto\"\n            onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n              event.preventDefault();\n              event.stopPropagation();\n\n              onOptionToggle(value);\n            }}\n          >\n            <Icon width=\"1.4rem\" fill=\"neutral500\" />\n          </ToggleButton>\n        )}\n      </Flex>\n    </components.Option>\n  );\n};\n"],"names":["ToggleButton","styled","Flex","theme","colors","primary200","Option","children","data","selectProps","props","formatMessage","useIntl","depth","value","options","maxDisplayDepth","openValues","onOptionToggle","isOpen","includes","Icon","ChevronUp","ChevronDown","_jsx","components","_jsxs","alignItems","Typography","textColor","ellipsis","span","style","paddingLeft","Math","min","length","aria-label","id","defaultMessage","tag","hasRadius","justifyContent","marginLeft","onClick","event","preventDefault","stopPropagation","width","fill"],"mappings":";;;;;;;;AAUA,MAAMA,YAAAA,GAAeC,MAAOC,CAAAA,IAAAA,CAAK;;;;;;;sBAOX,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE/D,CAAC;AAiBM,MAAMC,MAAS,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,KAAoB,EAAA,GAAA;IAC3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEP,QAAUQ,EAAAA,OAAO,EAAE,GAAGP,IAAAA;AAC5C,IAAA,MAAM,EAAEQ,eAAe,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGT,WAAAA;IACxD,MAAMU,MAAAA,GAASF,UAAWG,CAAAA,QAAQ,CAACN,KAAAA,CAAAA;IAEnC,MAAMO,IAAAA,GAAOF,SAASG,SAAYC,GAAAA,WAAAA;IAElC,qBACEC,GAAA,CAACC,WAAWnB,MAAM,EAAA;QAACE,IAAMA,EAAAA,IAAAA;QAAMC,WAAaA,EAAAA,WAAAA;AAAc,QAAA,GAAGC,KAAK;AAChE,QAAA,QAAA,gBAAAgB,IAACxB,CAAAA,IAAAA,EAAAA;YAAKyB,UAAW,EAAA,OAAA;;8BACfH,GAACI,CAAAA,UAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,QAAQ,EAAA,IAAA;AACzC,oBAAA,QAAA,gBAAAN,GAACO,CAAAA,MAAAA,EAAAA;wBAAKC,KAAO,EAAA;4BAAEC,WAAa,EAAA,CAAC,EAAEC,IAAKC,CAAAA,GAAG,CAACtB,KAAOG,EAAAA,eAAAA,CAAAA,GAAmB,EAAG,CAAA,EAAE;AAAE,yBAAA;AACtET,wBAAAA,QAAAA,EAAAA;;;gBAIJQ,OAAWA,IAAAA,OAAAA,EAASqB,MAAS,GAAA,CAAA,kBAC5BZ,GAACxB,CAAAA,YAAAA,EAAAA;AACCqC,oBAAAA,YAAAA,EAAY1B,aAAc,CAAA;wBACxB2B,EAAI,EAAA,kBAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,GAAI,EAAA,QAAA;oBACJb,UAAW,EAAA,QAAA;oBACXc,SAAS,EAAA,IAAA;oBACTC,cAAe,EAAA,QAAA;oBACfC,UAAW,EAAA,MAAA;AACXC,oBAAAA,OAAAA,EAAS,CAACC,KAAAA,GAAAA;AACRA,wBAAAA,KAAAA,CAAMC,cAAc,EAAA;AACpBD,wBAAAA,KAAAA,CAAME,eAAe,EAAA;wBAErB7B,cAAeJ,CAAAA,KAAAA,CAAAA;AACjB,qBAAA;AAEA,oBAAA,QAAA,gBAAAU,GAACH,CAAAA,IAAAA,EAAAA;wBAAK2B,KAAM,EAAA,QAAA;wBAASC,IAAK,EAAA;;;;;;AAMtC;;;;"}