{"version":3,"file":"LocaleListCell.mjs","sources":["../../../admin/src/components/LocaleListCell.tsx"],"sourcesContent":["import { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Flex, Menu, Typography, useCollator } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface LocaleListCellProps {\n  localizations: { locale: string }[];\n  locale: string;\n  documentId: string;\n}\n\nconst LocaleListCell = ({\n  locale: currentLocale,\n  localizations,\n  documentId,\n}: LocaleListCellProps) => {\n  const { locale: language, formatMessage } = useIntl();\n  const { data: locales = [] } = useGetLocalesQuery();\n  const navigate = useNavigate();\n  const [{ query }] = useQueryParams<I18nBaseQuery>();\n  const formatter = useCollator(language, {\n    sensitivity: 'base',\n  });\n\n  if (!Array.isArray(locales) || !localizations) {\n    return null;\n  }\n\n  const availableLocales = localizations.map((loc) => loc.locale);\n\n  const localesForDocument = locales\n    .reduce<Array<{ code: string; name: string }>>((acc, locale) => {\n      const createdLocale = [currentLocale, ...availableLocales].find((loc) => {\n        return loc === locale.code;\n      });\n\n      if (createdLocale) {\n        const name = locale.isDefault ? `${locale.name} (default)` : locale.name;\n        acc.push({ code: locale.code, name });\n      }\n\n      return acc;\n    }, [])\n    .toSorted((a, b) => formatter.compare(a.name, b.name));\n\n  const getDisplayText = () => {\n    const displayedLocales = localesForDocument.slice(0, 2);\n    const remainingCount = localesForDocument.length - 2;\n\n    const baseText = displayedLocales.map(({ name }) => name).join(', ');\n\n    if (remainingCount <= 0) {\n      return baseText;\n    }\n\n    return formatMessage(\n      {\n        id: getTranslation('CMListView.popover.display-locales.more'),\n        defaultMessage: '{locales} + {count} more',\n      },\n      { locales: baseText, count: remainingCount }\n    );\n  };\n\n  const handleLocaleClick = (localeCode: string) => {\n    navigate({\n      pathname: documentId,\n      search: stringify({\n        plugins: {\n          ...query.plugins,\n          i18n: { locale: localeCode },\n        },\n      }),\n    });\n  };\n\n  return (\n    <Menu.Root>\n      <Menu.Trigger>\n        <Flex minWidth=\"100%\" alignItems=\"center\" justifyContent=\"center\" fontWeight=\"regular\">\n          <Typography textColor=\"neutral800\" ellipsis marginRight={2}>\n            {getDisplayText()}\n          </Typography>\n        </Flex>\n      </Menu.Trigger>\n      <Menu.Content>\n        {localesForDocument.map(({ code, name }) => (\n          <Menu.Item\n            key={code}\n            onClick={(e: React.MouseEvent) => {\n              e.stopPropagation();\n              handleLocaleClick(code);\n            }}\n          >\n            <Typography textColor=\"neutral800\" fontWeight=\"regular\">\n              {name}\n            </Typography>\n          </Menu.Item>\n        ))}\n      </Menu.Content>\n    </Menu.Root>\n  );\n};\n\nexport { LocaleListCell };\nexport type { LocaleListCellProps };\n"],"names":["LocaleListCell","locale","currentLocale","localizations","documentId","language","formatMessage","useIntl","data","locales","useGetLocalesQuery","navigate","useNavigate","query","useQueryParams","formatter","useCollator","sensitivity","Array","isArray","availableLocales","map","loc","localesForDocument","reduce","acc","createdLocale","find","code","name","isDefault","push","toSorted","a","b","compare","getDisplayText","displayedLocales","slice","remainingCount","length","baseText","join","id","getTranslation","defaultMessage","count","handleLocaleClick","localeCode","pathname","search","stringify","plugins","i18n","_jsxs","Menu","Root","_jsx","Trigger","Flex","minWidth","alignItems","justifyContent","fontWeight","Typography","textColor","ellipsis","marginRight","Content","Item","onClick","e","stopPropagation"],"mappings":"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"}