{"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,MAAAA,CAAOC,IAAAA,CAAK;;;;;;;sBAOX,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAE/D,CAAC;AAiBM,MAAMC,MAAAA,GAAS,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,KAAAA,EAAoB,GAAA;IAC3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEP,QAAAA,EAAUQ,OAAO,EAAE,GAAGP,IAAAA;AAC5C,IAAA,MAAM,EAAEQ,eAAe,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGT,WAAAA;IACxD,MAAMU,MAAAA,GAASF,UAAAA,CAAWG,QAAQ,CAACN,KAAAA,CAAAA;IAEnC,MAAMO,IAAAA,GAAOF,SAASG,SAAAA,GAAYC,WAAAA;IAElC,qBACEC,GAAA,CAACC,WAAWnB,MAAM,EAAA;QAACE,IAAAA,EAAMA,IAAAA;QAAMC,WAAAA,EAAaA,WAAAA;AAAc,QAAA,GAAGC,KAAK;AAChE,QAAA,QAAA,gBAAAgB,IAAA,CAACxB,IAAAA,EAAAA;YAAKyB,UAAAA,EAAW,OAAA;;8BACfH,GAAA,CAACI,UAAAA,EAAAA;oBAAWC,SAAAA,EAAU,YAAA;oBAAaC,QAAQ,EAAA,IAAA;AACzC,oBAAA,QAAA,gBAAAN,GAAA,CAACO,MAAAA,EAAAA;wBAAKC,KAAAA,EAAO;4BAAEC,WAAAA,EAAa,CAAA,EAAGC,KAAKC,GAAG,CAACtB,OAAOG,eAAAA,CAAAA,GAAmB,EAAA,CAAG,EAAE;AAAE,yBAAA;AACtET,wBAAAA,QAAAA,EAAAA;;;gBAIJQ,OAAAA,IAAWA,OAAAA,EAASqB,MAAAA,GAAS,CAAA,kBAC5BZ,GAAA,CAACxB,YAAAA,EAAAA;AACCqC,oBAAAA,YAAAA,EAAY1B,aAAAA,CAAc;wBACxB2B,EAAAA,EAAI,kBAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;oBACAC,GAAAA,EAAI,QAAA;oBACJb,UAAAA,EAAW,QAAA;oBACXc,SAAS,EAAA,IAAA;oBACTC,cAAAA,EAAe,QAAA;oBACfC,UAAAA,EAAW,MAAA;AACXC,oBAAAA,OAAAA,EAAS,CAACC,KAAAA,GAAAA;AACRA,wBAAAA,KAAAA,CAAMC,cAAc,EAAA;AACpBD,wBAAAA,KAAAA,CAAME,eAAe,EAAA;wBAErB7B,cAAAA,CAAeJ,KAAAA,CAAAA;AACjB,oBAAA,CAAA;AAEA,oBAAA,QAAA,gBAAAU,GAAA,CAACH,IAAAA,EAAAA;wBAAK2B,KAAAA,EAAM,QAAA;wBAASC,IAAAA,EAAK;;;;;;AAMtC;;;;"}