@strapi/i18n 5.28.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/CMHeaderActions.js +193 -4
 - package/dist/admin/components/CMHeaderActions.js.map +1 -1
 - package/dist/admin/components/CMHeaderActions.mjs +197 -9
 - package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
 - package/dist/admin/components/LocaleListCell.js +65 -45
 - package/dist/admin/components/LocaleListCell.js.map +1 -1
 - package/dist/admin/components/LocaleListCell.mjs +66 -46
 - package/dist/admin/components/LocaleListCell.mjs.map +1 -1
 - package/dist/admin/components/LocalePicker.js +18 -11
 - package/dist/admin/components/LocalePicker.js.map +1 -1
 - package/dist/admin/components/LocalePicker.mjs +19 -12
 - package/dist/admin/components/LocalePicker.mjs.map +1 -1
 - package/dist/admin/contentManagerHooks/editView.js +6 -3
 - package/dist/admin/contentManagerHooks/editView.js.map +1 -1
 - package/dist/admin/contentManagerHooks/editView.mjs +7 -4
 - package/dist/admin/contentManagerHooks/editView.mjs.map +1 -1
 - package/dist/admin/contentManagerHooks/listView.js +2 -1
 - package/dist/admin/contentManagerHooks/listView.js.map +1 -1
 - package/dist/admin/contentManagerHooks/listView.mjs +2 -1
 - package/dist/admin/contentManagerHooks/listView.mjs.map +1 -1
 - package/dist/admin/hooks/useAILocalizationJobsPolling.js +110 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.js.map +1 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.mjs +89 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.mjs.map +1 -0
 - package/dist/admin/hooks/useI18n.js +4 -4
 - package/dist/admin/hooks/useI18n.js.map +1 -1
 - package/dist/admin/hooks/useI18n.mjs +4 -4
 - package/dist/admin/hooks/useI18n.mjs.map +1 -1
 - package/dist/admin/index.js +1 -0
 - package/dist/admin/index.js.map +1 -1
 - package/dist/admin/index.mjs +2 -1
 - package/dist/admin/index.mjs.map +1 -1
 - package/dist/admin/pages/SettingsPage.js +121 -46
 - package/dist/admin/pages/SettingsPage.js.map +1 -1
 - package/dist/admin/pages/SettingsPage.mjs +124 -30
 - package/dist/admin/pages/SettingsPage.mjs.map +1 -1
 - package/dist/admin/services/aiLocalizationJobs.js +26 -0
 - package/dist/admin/services/aiLocalizationJobs.js.map +1 -0
 - package/dist/admin/services/aiLocalizationJobs.mjs +24 -0
 - package/dist/admin/services/aiLocalizationJobs.mjs.map +1 -0
 - package/dist/admin/services/api.js +3 -1
 - package/dist/admin/services/api.js.map +1 -1
 - package/dist/admin/services/api.mjs +3 -1
 - package/dist/admin/services/api.mjs.map +1 -1
 - package/dist/admin/services/settings.js +29 -0
 - package/dist/admin/services/settings.js.map +1 -0
 - package/dist/admin/services/settings.mjs +26 -0
 - package/dist/admin/services/settings.mjs.map +1 -0
 - package/dist/admin/src/components/CMHeaderActions.d.ts +17 -4
 - package/dist/admin/src/components/LocaleListCell.d.ts +2 -1
 - package/dist/admin/src/hooks/useAILocalizationJobsPolling.d.ts +9 -0
 - package/dist/admin/src/services/aiLocalizationJobs.d.ts +6 -0
 - package/dist/admin/src/services/api.d.ts +1 -1
 - package/dist/admin/src/services/locales.d.ts +1 -1
 - package/dist/admin/src/services/relations.d.ts +1 -1
 - package/dist/admin/src/services/settings.d.ts +5 -0
 - package/dist/admin/translations/en.json.js +10 -0
 - package/dist/admin/translations/en.json.js.map +1 -1
 - package/dist/admin/translations/en.json.mjs +10 -0
 - package/dist/admin/translations/en.json.mjs.map +1 -1
 - package/dist/admin/utils/clean.js +2 -2
 - package/dist/admin/utils/clean.js.map +1 -1
 - package/dist/admin/utils/clean.mjs +2 -2
 - package/dist/admin/utils/clean.mjs.map +1 -1
 - package/dist/server/bootstrap.js +2 -0
 - package/dist/server/bootstrap.js.map +1 -1
 - package/dist/server/bootstrap.mjs +2 -0
 - package/dist/server/bootstrap.mjs.map +1 -1
 - package/dist/server/constants/iso-locales.json.js +4 -0
 - package/dist/server/constants/iso-locales.json.js.map +1 -1
 - package/dist/server/constants/iso-locales.json.mjs +4 -0
 - package/dist/server/constants/iso-locales.json.mjs.map +1 -1
 - package/dist/server/controllers/ai-localization-jobs.js +47 -0
 - package/dist/server/controllers/ai-localization-jobs.js.map +1 -0
 - package/dist/server/controllers/ai-localization-jobs.mjs +45 -0
 - package/dist/server/controllers/ai-localization-jobs.mjs.map +1 -0
 - package/dist/server/controllers/index.js +5 -1
 - package/dist/server/controllers/index.js.map +1 -1
 - package/dist/server/controllers/index.mjs +5 -1
 - package/dist/server/controllers/index.mjs.map +1 -1
 - package/dist/server/controllers/settings.js +24 -0
 - package/dist/server/controllers/settings.js.map +1 -0
 - package/dist/server/controllers/settings.mjs +22 -0
 - package/dist/server/controllers/settings.mjs.map +1 -0
 - package/dist/server/models/ai-localization-job.js +60 -0
 - package/dist/server/models/ai-localization-job.js.map +1 -0
 - package/dist/server/models/ai-localization-job.mjs +57 -0
 - package/dist/server/models/ai-localization-job.mjs.map +1 -0
 - package/dist/server/register.js +3 -1
 - package/dist/server/register.js.map +1 -1
 - package/dist/server/register.mjs +3 -1
 - package/dist/server/register.mjs.map +1 -1
 - package/dist/server/routes/admin.js +40 -0
 - package/dist/server/routes/admin.js.map +1 -1
 - package/dist/server/routes/admin.mjs +40 -0
 - package/dist/server/routes/admin.mjs.map +1 -1
 - package/dist/server/services/ai-localization-jobs.js +64 -0
 - package/dist/server/services/ai-localization-jobs.js.map +1 -0
 - package/dist/server/services/ai-localization-jobs.mjs +62 -0
 - package/dist/server/services/ai-localization-jobs.mjs.map +1 -0
 - package/dist/server/services/ai-localizations.js +253 -5
 - package/dist/server/services/ai-localizations.js.map +1 -1
 - package/dist/server/services/ai-localizations.mjs +253 -5
 - package/dist/server/services/ai-localizations.mjs.map +1 -1
 - package/dist/server/services/index.js +5 -1
 - package/dist/server/services/index.js.map +1 -1
 - package/dist/server/services/index.mjs +5 -1
 - package/dist/server/services/index.mjs.map +1 -1
 - package/dist/server/services/metrics.js +12 -1
 - package/dist/server/services/metrics.js.map +1 -1
 - package/dist/server/services/metrics.mjs +12 -1
 - package/dist/server/services/metrics.mjs.map +1 -1
 - package/dist/server/services/settings.js +25 -0
 - package/dist/server/services/settings.js.map +1 -0
 - package/dist/server/services/settings.mjs +23 -0
 - package/dist/server/services/settings.mjs.map +1 -0
 - package/dist/server/src/bootstrap.d.ts.map +1 -1
 - package/dist/server/src/controllers/ai-localization-jobs.d.ts +17 -0
 - package/dist/server/src/controllers/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/server/src/controllers/index.d.ts +10 -0
 - package/dist/server/src/controllers/index.d.ts.map +1 -1
 - package/dist/server/src/controllers/settings.d.ts +7 -0
 - package/dist/server/src/controllers/settings.d.ts.map +1 -0
 - package/dist/server/src/index.d.ts +41 -2
 - package/dist/server/src/index.d.ts.map +1 -1
 - package/dist/server/src/models/ai-localization-job.d.ts +5 -0
 - package/dist/server/src/models/ai-localization-job.d.ts.map +1 -0
 - package/dist/server/src/models/index.d.ts +5 -0
 - package/dist/server/src/models/index.d.ts.map +1 -0
 - package/dist/server/src/register.d.ts +1 -1
 - package/dist/server/src/register.d.ts.map +1 -1
 - package/dist/server/src/routes/admin.d.ts.map +1 -1
 - package/dist/server/src/services/ai-localization-jobs.d.ts +26 -0
 - package/dist/server/src/services/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/server/src/services/ai-localizations.d.ts +11 -1
 - package/dist/server/src/services/ai-localizations.d.ts.map +1 -1
 - package/dist/server/src/services/index.d.ts +30 -1
 - package/dist/server/src/services/index.d.ts.map +1 -1
 - package/dist/server/src/services/metrics.d.ts +1 -0
 - package/dist/server/src/services/metrics.d.ts.map +1 -1
 - package/dist/server/src/services/settings.d.ts +13 -0
 - package/dist/server/src/services/settings.d.ts.map +1 -0
 - package/dist/server/src/utils/index.d.ts +7 -1
 - package/dist/server/src/utils/index.d.ts.map +1 -1
 - package/dist/server/src/validation/settings.d.ts +12 -0
 - package/dist/server/src/validation/settings.d.ts.map +1 -0
 - package/dist/server/utils/index.js.map +1 -1
 - package/dist/server/utils/index.mjs.map +1 -1
 - package/dist/server/validation/settings.js +11 -0
 - package/dist/server/validation/settings.js.map +1 -0
 - package/dist/server/validation/settings.mjs +9 -0
 - package/dist/server/validation/settings.mjs.map +1 -0
 - package/dist/shared/contracts/ai-localization-jobs.d.ts +27 -0
 - package/dist/shared/contracts/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/shared/contracts/settings.d.ts +40 -0
 - package/dist/shared/contracts/shared.d.ts.map +1 -0
 - package/package.json +8 -6
 
| 
         @@ -1,14 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            'use strict';
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            var jsxRuntime = require('react/jsx-runtime');
         
     | 
| 
      
 4 
     | 
    
         
            +
            var strapiAdmin = require('@strapi/admin/strapi-admin');
         
     | 
| 
       4 
5 
     | 
    
         
             
            var designSystem = require('@strapi/design-system');
         
     | 
| 
       5 
     | 
    
         
            -
            var  
     | 
| 
      
 6 
     | 
    
         
            +
            var qs = require('qs');
         
     | 
| 
       6 
7 
     | 
    
         
             
            var reactIntl = require('react-intl');
         
     | 
| 
      
 8 
     | 
    
         
            +
            var reactRouterDom = require('react-router-dom');
         
     | 
| 
       7 
9 
     | 
    
         
             
            var locales = require('../services/locales.js');
         
     | 
| 
      
 10 
     | 
    
         
            +
            var getTranslation = require('../utils/getTranslation.js');
         
     | 
| 
       8 
11 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            const LocaleListCell = ({ locale: currentLocale, localizations })=>{
         
     | 
| 
       10 
     | 
    
         
            -
                const { locale: language } = reactIntl.useIntl();
         
     | 
| 
      
 12 
     | 
    
         
            +
            const LocaleListCell = ({ locale: currentLocale, localizations, documentId })=>{
         
     | 
| 
      
 13 
     | 
    
         
            +
                const { locale: language, formatMessage } = reactIntl.useIntl();
         
     | 
| 
       11 
14 
     | 
    
         
             
                const { data: locales$1 = [] } = locales.useGetLocalesQuery();
         
     | 
| 
      
 15 
     | 
    
         
            +
                const navigate = reactRouterDom.useNavigate();
         
     | 
| 
      
 16 
     | 
    
         
            +
                const [{ query }] = strapiAdmin.useQueryParams();
         
     | 
| 
       12 
17 
     | 
    
         
             
                const formatter = designSystem.useCollator(language, {
         
     | 
| 
       13 
18 
     | 
    
         
             
                    sensitivity: 'base'
         
     | 
| 
       14 
19 
     | 
    
         
             
                });
         
     | 
| 
         @@ -24,55 +29,70 @@ const LocaleListCell = ({ locale: currentLocale, localizations })=>{ 
     | 
|
| 
       24 
29 
     | 
    
         
             
                        return loc === locale.code;
         
     | 
| 
       25 
30 
     | 
    
         
             
                    });
         
     | 
| 
       26 
31 
     | 
    
         
             
                    if (createdLocale) {
         
     | 
| 
       27 
     | 
    
         
            -
                         
     | 
| 
      
 32 
     | 
    
         
            +
                        const name = locale.isDefault ? `${locale.name} (default)` : locale.name;
         
     | 
| 
      
 33 
     | 
    
         
            +
                        acc.push({
         
     | 
| 
      
 34 
     | 
    
         
            +
                            code: locale.code,
         
     | 
| 
      
 35 
     | 
    
         
            +
                            name
         
     | 
| 
      
 36 
     | 
    
         
            +
                        });
         
     | 
| 
       28 
37 
     | 
    
         
             
                    }
         
     | 
| 
       29 
38 
     | 
    
         
             
                    return acc;
         
     | 
| 
       30 
     | 
    
         
            -
                }, []). 
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 39 
     | 
    
         
            +
                }, []).toSorted((a, b)=>formatter.compare(a.name, b.name));
         
     | 
| 
      
 40 
     | 
    
         
            +
                const getDisplayText = ()=>{
         
     | 
| 
      
 41 
     | 
    
         
            +
                    const displayedLocales = localesForDocument.slice(0, 2);
         
     | 
| 
      
 42 
     | 
    
         
            +
                    const remainingCount = localesForDocument.length - 2;
         
     | 
| 
      
 43 
     | 
    
         
            +
                    const baseText = displayedLocales.map(({ name })=>name).join(', ');
         
     | 
| 
      
 44 
     | 
    
         
            +
                    if (remainingCount <= 0) {
         
     | 
| 
      
 45 
     | 
    
         
            +
                        return baseText;
         
     | 
| 
       33 
46 
     | 
    
         
             
                    }
         
     | 
| 
       34 
     | 
    
         
            -
                    return  
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
                    return formatMessage({
         
     | 
| 
      
 48 
     | 
    
         
            +
                        id: getTranslation.getTranslation('CMListView.popover.display-locales.more'),
         
     | 
| 
      
 49 
     | 
    
         
            +
                        defaultMessage: '{locales} + {count} more'
         
     | 
| 
      
 50 
     | 
    
         
            +
                    }, {
         
     | 
| 
      
 51 
     | 
    
         
            +
                        locales: baseText,
         
     | 
| 
      
 52 
     | 
    
         
            +
                        count: remainingCount
         
     | 
| 
      
 53 
     | 
    
         
            +
                    });
         
     | 
| 
      
 54 
     | 
    
         
            +
                };
         
     | 
| 
      
 55 
     | 
    
         
            +
                const handleLocaleClick = (localeCode)=>{
         
     | 
| 
      
 56 
     | 
    
         
            +
                    navigate({
         
     | 
| 
      
 57 
     | 
    
         
            +
                        pathname: documentId,
         
     | 
| 
      
 58 
     | 
    
         
            +
                        search: qs.stringify({
         
     | 
| 
      
 59 
     | 
    
         
            +
                            plugins: {
         
     | 
| 
      
 60 
     | 
    
         
            +
                                ...query.plugins,
         
     | 
| 
      
 61 
     | 
    
         
            +
                                i18n: {
         
     | 
| 
      
 62 
     | 
    
         
            +
                                    locale: localeCode
         
     | 
| 
      
 63 
     | 
    
         
            +
                                }
         
     | 
| 
      
 64 
     | 
    
         
            +
                            }
         
     | 
| 
      
 65 
     | 
    
         
            +
                        })
         
     | 
| 
      
 66 
     | 
    
         
            +
                    });
         
     | 
| 
      
 67 
     | 
    
         
            +
                };
         
     | 
| 
      
 68 
     | 
    
         
            +
                return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
         
     | 
| 
       37 
69 
     | 
    
         
             
                    children: [
         
     | 
| 
       38 
     | 
    
         
            -
                        /*#__PURE__*/ jsxRuntime.jsx(designSystem. 
     | 
| 
       39 
     | 
    
         
            -
                            children: /*#__PURE__*/ jsxRuntime.jsx(designSystem. 
     | 
| 
       40 
     | 
    
         
            -
                                 
     | 
| 
       41 
     | 
    
         
            -
                                 
     | 
| 
       42 
     | 
    
         
            -
                                 
     | 
| 
       43 
     | 
    
         
            -
                                 
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                                     
     | 
| 
       46 
     | 
    
         
            -
                                     
     | 
| 
       47 
     | 
    
         
            -
                                     
     | 
| 
       48 
     | 
    
         
            -
                                    children:  
     | 
| 
       49 
     | 
    
         
            -
                                        /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
       50 
     | 
    
         
            -
                                            textColor: "neutral800",
         
     | 
| 
       51 
     | 
    
         
            -
                                            ellipsis: true,
         
     | 
| 
       52 
     | 
    
         
            -
                                            marginRight: 2,
         
     | 
| 
       53 
     | 
    
         
            -
                                            children: localesForDocument.join(', ')
         
     | 
| 
       54 
     | 
    
         
            -
                                        }),
         
     | 
| 
       55 
     | 
    
         
            -
                                        /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
         
     | 
| 
       56 
     | 
    
         
            -
                                            children: /*#__PURE__*/ jsxRuntime.jsx(icons.CaretDown, {
         
     | 
| 
       57 
     | 
    
         
            -
                                                width: "1.2rem",
         
     | 
| 
       58 
     | 
    
         
            -
                                                height: "1.2rem"
         
     | 
| 
       59 
     | 
    
         
            -
                                            })
         
     | 
| 
       60 
     | 
    
         
            -
                                        })
         
     | 
| 
       61 
     | 
    
         
            -
                                    ]
         
     | 
| 
      
 70 
     | 
    
         
            +
                        /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Trigger, {
         
     | 
| 
      
 71 
     | 
    
         
            +
                            children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
         
     | 
| 
      
 72 
     | 
    
         
            +
                                minWidth: "100%",
         
     | 
| 
      
 73 
     | 
    
         
            +
                                alignItems: "center",
         
     | 
| 
      
 74 
     | 
    
         
            +
                                justifyContent: "center",
         
     | 
| 
      
 75 
     | 
    
         
            +
                                fontWeight: "regular",
         
     | 
| 
      
 76 
     | 
    
         
            +
                                children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
      
 77 
     | 
    
         
            +
                                    textColor: "neutral800",
         
     | 
| 
      
 78 
     | 
    
         
            +
                                    ellipsis: true,
         
     | 
| 
      
 79 
     | 
    
         
            +
                                    marginRight: 2,
         
     | 
| 
      
 80 
     | 
    
         
            +
                                    children: getDisplayText()
         
     | 
| 
       62 
81 
     | 
    
         
             
                                })
         
     | 
| 
       63 
82 
     | 
    
         
             
                            })
         
     | 
| 
       64 
83 
     | 
    
         
             
                        }),
         
     | 
| 
       65 
     | 
    
         
            -
                        /*#__PURE__*/ jsxRuntime.jsx(designSystem. 
     | 
| 
       66 
     | 
    
         
            -
                             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                                         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                                         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
      
 84 
     | 
    
         
            +
                        /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Content, {
         
     | 
| 
      
 85 
     | 
    
         
            +
                            children: localesForDocument.map(({ code, name })=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
         
     | 
| 
      
 86 
     | 
    
         
            +
                                    onClick: (e)=>{
         
     | 
| 
      
 87 
     | 
    
         
            +
                                        e.stopPropagation();
         
     | 
| 
      
 88 
     | 
    
         
            +
                                        handleLocaleClick(code);
         
     | 
| 
      
 89 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 90 
     | 
    
         
            +
                                    children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
      
 91 
     | 
    
         
            +
                                        textColor: "neutral800",
         
     | 
| 
      
 92 
     | 
    
         
            +
                                        fontWeight: "regular",
         
     | 
| 
      
 93 
     | 
    
         
            +
                                        children: name
         
     | 
| 
      
 94 
     | 
    
         
            +
                                    })
         
     | 
| 
      
 95 
     | 
    
         
            +
                                }, code))
         
     | 
| 
       76 
96 
     | 
    
         
             
                        })
         
     | 
| 
       77 
97 
     | 
    
         
             
                    ]
         
     | 
| 
       78 
98 
     | 
    
         
             
                });
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"LocaleListCell.js","sources":["../../../admin/src/components/LocaleListCell.tsx"],"sourcesContent":["import {  
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"LocaleListCell.js","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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"}
         
     | 
| 
         @@ -1,12 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { jsxs, jsx } from 'react/jsx-runtime';
         
     | 
| 
       2 
     | 
    
         
            -
            import {  
     | 
| 
       3 
     | 
    
         
            -
            import {  
     | 
| 
      
 2 
     | 
    
         
            +
            import { useQueryParams } from '@strapi/admin/strapi-admin';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { useCollator, Menu, Flex, Typography } from '@strapi/design-system';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import { stringify } from 'qs';
         
     | 
| 
       4 
5 
     | 
    
         
             
            import { useIntl } from 'react-intl';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { useNavigate } from 'react-router-dom';
         
     | 
| 
       5 
7 
     | 
    
         
             
            import { useGetLocalesQuery } from '../services/locales.mjs';
         
     | 
| 
      
 8 
     | 
    
         
            +
            import { getTranslation } from '../utils/getTranslation.mjs';
         
     | 
| 
       6 
9 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            const LocaleListCell = ({ locale: currentLocale, localizations })=>{
         
     | 
| 
       8 
     | 
    
         
            -
                const { locale: language } = useIntl();
         
     | 
| 
      
 10 
     | 
    
         
            +
            const LocaleListCell = ({ locale: currentLocale, localizations, documentId })=>{
         
     | 
| 
      
 11 
     | 
    
         
            +
                const { locale: language, formatMessage } = useIntl();
         
     | 
| 
       9 
12 
     | 
    
         
             
                const { data: locales = [] } = useGetLocalesQuery();
         
     | 
| 
      
 13 
     | 
    
         
            +
                const navigate = useNavigate();
         
     | 
| 
      
 14 
     | 
    
         
            +
                const [{ query }] = useQueryParams();
         
     | 
| 
       10 
15 
     | 
    
         
             
                const formatter = useCollator(language, {
         
     | 
| 
       11 
16 
     | 
    
         
             
                    sensitivity: 'base'
         
     | 
| 
       12 
17 
     | 
    
         
             
                });
         
     | 
| 
         @@ -22,55 +27,70 @@ const LocaleListCell = ({ locale: currentLocale, localizations })=>{ 
     | 
|
| 
       22 
27 
     | 
    
         
             
                        return loc === locale.code;
         
     | 
| 
       23 
28 
     | 
    
         
             
                    });
         
     | 
| 
       24 
29 
     | 
    
         
             
                    if (createdLocale) {
         
     | 
| 
       25 
     | 
    
         
            -
                         
     | 
| 
      
 30 
     | 
    
         
            +
                        const name = locale.isDefault ? `${locale.name} (default)` : locale.name;
         
     | 
| 
      
 31 
     | 
    
         
            +
                        acc.push({
         
     | 
| 
      
 32 
     | 
    
         
            +
                            code: locale.code,
         
     | 
| 
      
 33 
     | 
    
         
            +
                            name
         
     | 
| 
      
 34 
     | 
    
         
            +
                        });
         
     | 
| 
       26 
35 
     | 
    
         
             
                    }
         
     | 
| 
       27 
36 
     | 
    
         
             
                    return acc;
         
     | 
| 
       28 
     | 
    
         
            -
                }, []). 
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
                }, []).toSorted((a, b)=>formatter.compare(a.name, b.name));
         
     | 
| 
      
 38 
     | 
    
         
            +
                const getDisplayText = ()=>{
         
     | 
| 
      
 39 
     | 
    
         
            +
                    const displayedLocales = localesForDocument.slice(0, 2);
         
     | 
| 
      
 40 
     | 
    
         
            +
                    const remainingCount = localesForDocument.length - 2;
         
     | 
| 
      
 41 
     | 
    
         
            +
                    const baseText = displayedLocales.map(({ name })=>name).join(', ');
         
     | 
| 
      
 42 
     | 
    
         
            +
                    if (remainingCount <= 0) {
         
     | 
| 
      
 43 
     | 
    
         
            +
                        return baseText;
         
     | 
| 
       31 
44 
     | 
    
         
             
                    }
         
     | 
| 
       32 
     | 
    
         
            -
                    return  
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
                    return formatMessage({
         
     | 
| 
      
 46 
     | 
    
         
            +
                        id: getTranslation('CMListView.popover.display-locales.more'),
         
     | 
| 
      
 47 
     | 
    
         
            +
                        defaultMessage: '{locales} + {count} more'
         
     | 
| 
      
 48 
     | 
    
         
            +
                    }, {
         
     | 
| 
      
 49 
     | 
    
         
            +
                        locales: baseText,
         
     | 
| 
      
 50 
     | 
    
         
            +
                        count: remainingCount
         
     | 
| 
      
 51 
     | 
    
         
            +
                    });
         
     | 
| 
      
 52 
     | 
    
         
            +
                };
         
     | 
| 
      
 53 
     | 
    
         
            +
                const handleLocaleClick = (localeCode)=>{
         
     | 
| 
      
 54 
     | 
    
         
            +
                    navigate({
         
     | 
| 
      
 55 
     | 
    
         
            +
                        pathname: documentId,
         
     | 
| 
      
 56 
     | 
    
         
            +
                        search: stringify({
         
     | 
| 
      
 57 
     | 
    
         
            +
                            plugins: {
         
     | 
| 
      
 58 
     | 
    
         
            +
                                ...query.plugins,
         
     | 
| 
      
 59 
     | 
    
         
            +
                                i18n: {
         
     | 
| 
      
 60 
     | 
    
         
            +
                                    locale: localeCode
         
     | 
| 
      
 61 
     | 
    
         
            +
                                }
         
     | 
| 
      
 62 
     | 
    
         
            +
                            }
         
     | 
| 
      
 63 
     | 
    
         
            +
                        })
         
     | 
| 
      
 64 
     | 
    
         
            +
                    });
         
     | 
| 
      
 65 
     | 
    
         
            +
                };
         
     | 
| 
      
 66 
     | 
    
         
            +
                return /*#__PURE__*/ jsxs(Menu.Root, {
         
     | 
| 
       35 
67 
     | 
    
         
             
                    children: [
         
     | 
| 
       36 
     | 
    
         
            -
                        /*#__PURE__*/ jsx( 
     | 
| 
       37 
     | 
    
         
            -
                            children: /*#__PURE__*/ jsx( 
     | 
| 
       38 
     | 
    
         
            -
                                 
     | 
| 
       39 
     | 
    
         
            -
                                 
     | 
| 
       40 
     | 
    
         
            -
                                 
     | 
| 
       41 
     | 
    
         
            -
                                 
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                                     
     | 
| 
       44 
     | 
    
         
            -
                                     
     | 
| 
       45 
     | 
    
         
            -
                                     
     | 
| 
       46 
     | 
    
         
            -
                                    children:  
     | 
| 
       47 
     | 
    
         
            -
                                        /*#__PURE__*/ jsx(Typography, {
         
     | 
| 
       48 
     | 
    
         
            -
                                            textColor: "neutral800",
         
     | 
| 
       49 
     | 
    
         
            -
                                            ellipsis: true,
         
     | 
| 
       50 
     | 
    
         
            -
                                            marginRight: 2,
         
     | 
| 
       51 
     | 
    
         
            -
                                            children: localesForDocument.join(', ')
         
     | 
| 
       52 
     | 
    
         
            -
                                        }),
         
     | 
| 
       53 
     | 
    
         
            -
                                        /*#__PURE__*/ jsx(Flex, {
         
     | 
| 
       54 
     | 
    
         
            -
                                            children: /*#__PURE__*/ jsx(CaretDown, {
         
     | 
| 
       55 
     | 
    
         
            -
                                                width: "1.2rem",
         
     | 
| 
       56 
     | 
    
         
            -
                                                height: "1.2rem"
         
     | 
| 
       57 
     | 
    
         
            -
                                            })
         
     | 
| 
       58 
     | 
    
         
            -
                                        })
         
     | 
| 
       59 
     | 
    
         
            -
                                    ]
         
     | 
| 
      
 68 
     | 
    
         
            +
                        /*#__PURE__*/ jsx(Menu.Trigger, {
         
     | 
| 
      
 69 
     | 
    
         
            +
                            children: /*#__PURE__*/ jsx(Flex, {
         
     | 
| 
      
 70 
     | 
    
         
            +
                                minWidth: "100%",
         
     | 
| 
      
 71 
     | 
    
         
            +
                                alignItems: "center",
         
     | 
| 
      
 72 
     | 
    
         
            +
                                justifyContent: "center",
         
     | 
| 
      
 73 
     | 
    
         
            +
                                fontWeight: "regular",
         
     | 
| 
      
 74 
     | 
    
         
            +
                                children: /*#__PURE__*/ jsx(Typography, {
         
     | 
| 
      
 75 
     | 
    
         
            +
                                    textColor: "neutral800",
         
     | 
| 
      
 76 
     | 
    
         
            +
                                    ellipsis: true,
         
     | 
| 
      
 77 
     | 
    
         
            +
                                    marginRight: 2,
         
     | 
| 
      
 78 
     | 
    
         
            +
                                    children: getDisplayText()
         
     | 
| 
       60 
79 
     | 
    
         
             
                                })
         
     | 
| 
       61 
80 
     | 
    
         
             
                            })
         
     | 
| 
       62 
81 
     | 
    
         
             
                        }),
         
     | 
| 
       63 
     | 
    
         
            -
                        /*#__PURE__*/ jsx( 
     | 
| 
       64 
     | 
    
         
            -
                             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                                         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                                         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
      
 82 
     | 
    
         
            +
                        /*#__PURE__*/ jsx(Menu.Content, {
         
     | 
| 
      
 83 
     | 
    
         
            +
                            children: localesForDocument.map(({ code, name })=>/*#__PURE__*/ jsx(Menu.Item, {
         
     | 
| 
      
 84 
     | 
    
         
            +
                                    onClick: (e)=>{
         
     | 
| 
      
 85 
     | 
    
         
            +
                                        e.stopPropagation();
         
     | 
| 
      
 86 
     | 
    
         
            +
                                        handleLocaleClick(code);
         
     | 
| 
      
 87 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 88 
     | 
    
         
            +
                                    children: /*#__PURE__*/ jsx(Typography, {
         
     | 
| 
      
 89 
     | 
    
         
            +
                                        textColor: "neutral800",
         
     | 
| 
      
 90 
     | 
    
         
            +
                                        fontWeight: "regular",
         
     | 
| 
      
 91 
     | 
    
         
            +
                                        children: name
         
     | 
| 
      
 92 
     | 
    
         
            +
                                    })
         
     | 
| 
      
 93 
     | 
    
         
            +
                                }, code))
         
     | 
| 
       74 
94 
     | 
    
         
             
                        })
         
     | 
| 
       75 
95 
     | 
    
         
             
                    ]
         
     | 
| 
       76 
96 
     | 
    
         
             
                });
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"LocaleListCell.mjs","sources":["../../../admin/src/components/LocaleListCell.tsx"],"sourcesContent":["import {  
     | 
| 
      
 1 
     | 
    
         
            +
            {"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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"}
         
     | 
| 
         @@ -68,16 +68,26 @@ const LocalePicker = ()=>{ 
     | 
|
| 
       68 
68 
     | 
    
         
             
                    locales$1,
         
     | 
| 
       69 
69 
     | 
    
         
             
                    query.plugins?.i18n?.locale
         
     | 
| 
       70 
70 
     | 
    
         
             
                ]);
         
     | 
| 
      
 71 
     | 
    
         
            +
                const sortedLocaleOptions = React__namespace.useMemo(()=>{
         
     | 
| 
      
 72 
     | 
    
         
            +
                    const displayedLocales = Array.isArray(locales$1) ? locales$1.filter((locale)=>{
         
     | 
| 
      
 73 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 74 
     | 
    
         
            +
                       * If you can create or read we allow you to see the locale exists
         
     | 
| 
      
 75 
     | 
    
         
            +
                       * this is because in the ListView, you may be able to create a new entry
         
     | 
| 
      
 76 
     | 
    
         
            +
                       * in a locale you can't read.
         
     | 
| 
      
 77 
     | 
    
         
            +
                       */ return canCreate.includes(locale.code) || canRead.includes(locale.code);
         
     | 
| 
      
 78 
     | 
    
         
            +
                    }) : [];
         
     | 
| 
      
 79 
     | 
    
         
            +
                    return displayedLocales.sort((a, b)=>a.name.localeCompare(b.name)).map((locale)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
         
     | 
| 
      
 80 
     | 
    
         
            +
                            value: locale.code,
         
     | 
| 
      
 81 
     | 
    
         
            +
                            children: locale.name
         
     | 
| 
      
 82 
     | 
    
         
            +
                        }, locale.id));
         
     | 
| 
      
 83 
     | 
    
         
            +
                }, [
         
     | 
| 
      
 84 
     | 
    
         
            +
                    locales$1,
         
     | 
| 
      
 85 
     | 
    
         
            +
                    canCreate,
         
     | 
| 
      
 86 
     | 
    
         
            +
                    canRead
         
     | 
| 
      
 87 
     | 
    
         
            +
                ]);
         
     | 
| 
       71 
88 
     | 
    
         
             
                if (!hasI18n || !Array.isArray(locales$1) || locales$1.length === 0) {
         
     | 
| 
       72 
89 
     | 
    
         
             
                    return null;
         
     | 
| 
       73 
90 
     | 
    
         
             
                }
         
     | 
| 
       74 
     | 
    
         
            -
                const displayedLocales = locales$1.filter((locale)=>{
         
     | 
| 
       75 
     | 
    
         
            -
                    /**
         
     | 
| 
       76 
     | 
    
         
            -
                 * If you can create or read we allow you to see the locale exists
         
     | 
| 
       77 
     | 
    
         
            -
                 * this is because in the ListView, you may be able to create a new entry
         
     | 
| 
       78 
     | 
    
         
            -
                 * in a locale you can't read.
         
     | 
| 
       79 
     | 
    
         
            -
                 */ return canCreate.includes(locale.code) || canRead.includes(locale.code);
         
     | 
| 
       80 
     | 
    
         
            -
                });
         
     | 
| 
       81 
91 
     | 
    
         
             
                return /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
         
     | 
| 
       82 
92 
     | 
    
         
             
                    size: "S",
         
     | 
| 
       83 
93 
     | 
    
         
             
                    "aria-label": formatMessage({
         
     | 
| 
         @@ -87,10 +97,7 @@ const LocalePicker = ()=>{ 
     | 
|
| 
       87 
97 
     | 
    
         
             
                    value: query.plugins?.i18n?.locale || locales$1.find((locale)=>locale.isDefault)?.code,
         
     | 
| 
       88 
98 
     | 
    
         
             
                    // @ts-expect-error – This can be removed in V2 of the DS.
         
     | 
| 
       89 
99 
     | 
    
         
             
                    onChange: handleChange,
         
     | 
| 
       90 
     | 
    
         
            -
                    children:  
     | 
| 
       91 
     | 
    
         
            -
                            value: locale.code,
         
     | 
| 
       92 
     | 
    
         
            -
                            children: locale.name
         
     | 
| 
       93 
     | 
    
         
            -
                        }, locale.id))
         
     | 
| 
      
 100 
     | 
    
         
            +
                    children: sortedLocaleOptions
         
     | 
| 
       94 
101 
     | 
    
         
             
                });
         
     | 
| 
       95 
102 
     | 
    
         
             
            };
         
     | 
| 
       96 
103 
     | 
    
         | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"LocalePicker.js","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n  page?: number;\n}\n\nconst LocalePicker = () => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<Query>();\n\n  const { hasI18n, canRead, canCreate } = useI18n();\n  const { data: locales = [] } = useGetLocalesQuery(undefined, {\n    skip: !hasI18n,\n  });\n\n  const handleChange = React.useCallback(\n    (code: string, replace = false) => {\n      setQuery(\n        {\n          page: 1,\n          plugins: { ...query.plugins, i18n: { locale: code } },\n        },\n        'push',\n        replace\n      );\n    },\n    [query.plugins, setQuery]\n  );\n\n  React.useEffect(() => {\n    if (!Array.isArray(locales) || !hasI18n) {\n      return;\n    }\n    /**\n     * Handle the case where the current locale query param doesn't exist\n     * in the list of available locales, so we redirect to the default locale.\n     */\n    const currentDesiredLocale = query.plugins?.i18n?.locale;\n    const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n    const defaultLocale = locales.find((locale) => locale.isDefault);\n    if (!doesLocaleExist && defaultLocale?.code) {\n      handleChange(defaultLocale.code, true);\n    }\n  }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale]);\n\n   
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"LocalePicker.js","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n  page?: number;\n}\n\nconst LocalePicker = () => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<Query>();\n\n  const { hasI18n, canRead, canCreate } = useI18n();\n  const { data: locales = [] } = useGetLocalesQuery(undefined, {\n    skip: !hasI18n,\n  });\n\n  const handleChange = React.useCallback(\n    (code: string, replace = false) => {\n      setQuery(\n        {\n          page: 1,\n          plugins: { ...query.plugins, i18n: { locale: code } },\n        },\n        'push',\n        replace\n      );\n    },\n    [query.plugins, setQuery]\n  );\n\n  React.useEffect(() => {\n    if (!Array.isArray(locales) || !hasI18n) {\n      return;\n    }\n    /**\n     * Handle the case where the current locale query param doesn't exist\n     * in the list of available locales, so we redirect to the default locale.\n     */\n    const currentDesiredLocale = query.plugins?.i18n?.locale;\n    const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n    const defaultLocale = locales.find((locale) => locale.isDefault);\n    if (!doesLocaleExist && defaultLocale?.code) {\n      handleChange(defaultLocale.code, true);\n    }\n  }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale]);\n\n  const sortedLocaleOptions = React.useMemo(() => {\n    const displayedLocales = Array.isArray(locales)\n      ? locales.filter((locale) => {\n          /**\n           * If you can create or read we allow you to see the locale exists\n           * this is because in the ListView, you may be able to create a new entry\n           * in a locale you can't read.\n           */\n          return canCreate.includes(locale.code) || canRead.includes(locale.code);\n        })\n      : [];\n\n    return displayedLocales\n      .sort((a, b) => a.name.localeCompare(b.name))\n      .map((locale) => (\n        <SingleSelectOption key={locale.id} value={locale.code}>\n          {locale.name}\n        </SingleSelectOption>\n      ));\n  }, [locales, canCreate, canRead]);\n\n  if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n    return null;\n  }\n\n  return (\n    <SingleSelect\n      size=\"S\"\n      aria-label={formatMessage({\n        id: getTranslation('actions.select-locale'),\n        defaultMessage: 'Select locale',\n      })}\n      value={query.plugins?.i18n?.locale || locales.find((locale) => locale.isDefault)?.code}\n      // @ts-expect-error – This can be removed in V2 of the DS.\n      onChange={handleChange}\n    >\n      {sortedLocaleOptions}\n    </SingleSelect>\n  );\n};\n\nexport { LocalePicker };\n"],"names":["LocalePicker","formatMessage","useIntl","query","setQuery","useQueryParams","hasI18n","canRead","canCreate","useI18n","data","locales","useGetLocalesQuery","undefined","skip","handleChange","React","useCallback","code","replace","page","plugins","i18n","locale","useEffect","Array","isArray","currentDesiredLocale","doesLocaleExist","find","loc","defaultLocale","isDefault","sortedLocaleOptions","useMemo","displayedLocales","filter","includes","sort","a","b","name","localeCompare","map","_jsx","SingleSelectOption","value","id","length","SingleSelect","size","aria-label","getTranslation","defaultMessage","onChange"],"mappings":"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"}
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { jsx } from 'react/jsx-runtime';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import * as React from 'react';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { useQueryParams } from '@strapi/admin/strapi-admin';
         
     | 
| 
       4 
     | 
    
         
            -
            import {  
     | 
| 
      
 4 
     | 
    
         
            +
            import { SingleSelectOption, SingleSelect } from '@strapi/design-system';
         
     | 
| 
       5 
5 
     | 
    
         
             
            import { useIntl } from 'react-intl';
         
     | 
| 
       6 
6 
     | 
    
         
             
            import { useI18n } from '../hooks/useI18n.mjs';
         
     | 
| 
       7 
7 
     | 
    
         
             
            import { useGetLocalesQuery } from '../services/locales.mjs';
         
     | 
| 
         @@ -47,16 +47,26 @@ const LocalePicker = ()=>{ 
     | 
|
| 
       47 
47 
     | 
    
         
             
                    locales,
         
     | 
| 
       48 
48 
     | 
    
         
             
                    query.plugins?.i18n?.locale
         
     | 
| 
       49 
49 
     | 
    
         
             
                ]);
         
     | 
| 
      
 50 
     | 
    
         
            +
                const sortedLocaleOptions = React.useMemo(()=>{
         
     | 
| 
      
 51 
     | 
    
         
            +
                    const displayedLocales = Array.isArray(locales) ? locales.filter((locale)=>{
         
     | 
| 
      
 52 
     | 
    
         
            +
                        /**
         
     | 
| 
      
 53 
     | 
    
         
            +
                       * If you can create or read we allow you to see the locale exists
         
     | 
| 
      
 54 
     | 
    
         
            +
                       * this is because in the ListView, you may be able to create a new entry
         
     | 
| 
      
 55 
     | 
    
         
            +
                       * in a locale you can't read.
         
     | 
| 
      
 56 
     | 
    
         
            +
                       */ return canCreate.includes(locale.code) || canRead.includes(locale.code);
         
     | 
| 
      
 57 
     | 
    
         
            +
                    }) : [];
         
     | 
| 
      
 58 
     | 
    
         
            +
                    return displayedLocales.sort((a, b)=>a.name.localeCompare(b.name)).map((locale)=>/*#__PURE__*/ jsx(SingleSelectOption, {
         
     | 
| 
      
 59 
     | 
    
         
            +
                            value: locale.code,
         
     | 
| 
      
 60 
     | 
    
         
            +
                            children: locale.name
         
     | 
| 
      
 61 
     | 
    
         
            +
                        }, locale.id));
         
     | 
| 
      
 62 
     | 
    
         
            +
                }, [
         
     | 
| 
      
 63 
     | 
    
         
            +
                    locales,
         
     | 
| 
      
 64 
     | 
    
         
            +
                    canCreate,
         
     | 
| 
      
 65 
     | 
    
         
            +
                    canRead
         
     | 
| 
      
 66 
     | 
    
         
            +
                ]);
         
     | 
| 
       50 
67 
     | 
    
         
             
                if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {
         
     | 
| 
       51 
68 
     | 
    
         
             
                    return null;
         
     | 
| 
       52 
69 
     | 
    
         
             
                }
         
     | 
| 
       53 
     | 
    
         
            -
                const displayedLocales = locales.filter((locale)=>{
         
     | 
| 
       54 
     | 
    
         
            -
                    /**
         
     | 
| 
       55 
     | 
    
         
            -
                 * If you can create or read we allow you to see the locale exists
         
     | 
| 
       56 
     | 
    
         
            -
                 * this is because in the ListView, you may be able to create a new entry
         
     | 
| 
       57 
     | 
    
         
            -
                 * in a locale you can't read.
         
     | 
| 
       58 
     | 
    
         
            -
                 */ return canCreate.includes(locale.code) || canRead.includes(locale.code);
         
     | 
| 
       59 
     | 
    
         
            -
                });
         
     | 
| 
       60 
70 
     | 
    
         
             
                return /*#__PURE__*/ jsx(SingleSelect, {
         
     | 
| 
       61 
71 
     | 
    
         
             
                    size: "S",
         
     | 
| 
       62 
72 
     | 
    
         
             
                    "aria-label": formatMessage({
         
     | 
| 
         @@ -66,10 +76,7 @@ const LocalePicker = ()=>{ 
     | 
|
| 
       66 
76 
     | 
    
         
             
                    value: query.plugins?.i18n?.locale || locales.find((locale)=>locale.isDefault)?.code,
         
     | 
| 
       67 
77 
     | 
    
         
             
                    // @ts-expect-error – This can be removed in V2 of the DS.
         
     | 
| 
       68 
78 
     | 
    
         
             
                    onChange: handleChange,
         
     | 
| 
       69 
     | 
    
         
            -
                    children:  
     | 
| 
       70 
     | 
    
         
            -
                            value: locale.code,
         
     | 
| 
       71 
     | 
    
         
            -
                            children: locale.name
         
     | 
| 
       72 
     | 
    
         
            -
                        }, locale.id))
         
     | 
| 
      
 79 
     | 
    
         
            +
                    children: sortedLocaleOptions
         
     | 
| 
       73 
80 
     | 
    
         
             
                });
         
     | 
| 
       74 
81 
     | 
    
         
             
            };
         
     | 
| 
       75 
82 
     | 
    
         | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"LocalePicker.mjs","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n  page?: number;\n}\n\nconst LocalePicker = () => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<Query>();\n\n  const { hasI18n, canRead, canCreate } = useI18n();\n  const { data: locales = [] } = useGetLocalesQuery(undefined, {\n    skip: !hasI18n,\n  });\n\n  const handleChange = React.useCallback(\n    (code: string, replace = false) => {\n      setQuery(\n        {\n          page: 1,\n          plugins: { ...query.plugins, i18n: { locale: code } },\n        },\n        'push',\n        replace\n      );\n    },\n    [query.plugins, setQuery]\n  );\n\n  React.useEffect(() => {\n    if (!Array.isArray(locales) || !hasI18n) {\n      return;\n    }\n    /**\n     * Handle the case where the current locale query param doesn't exist\n     * in the list of available locales, so we redirect to the default locale.\n     */\n    const currentDesiredLocale = query.plugins?.i18n?.locale;\n    const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n    const defaultLocale = locales.find((locale) => locale.isDefault);\n    if (!doesLocaleExist && defaultLocale?.code) {\n      handleChange(defaultLocale.code, true);\n    }\n  }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale]);\n\n   
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"LocalePicker.mjs","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n  page?: number;\n}\n\nconst LocalePicker = () => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<Query>();\n\n  const { hasI18n, canRead, canCreate } = useI18n();\n  const { data: locales = [] } = useGetLocalesQuery(undefined, {\n    skip: !hasI18n,\n  });\n\n  const handleChange = React.useCallback(\n    (code: string, replace = false) => {\n      setQuery(\n        {\n          page: 1,\n          plugins: { ...query.plugins, i18n: { locale: code } },\n        },\n        'push',\n        replace\n      );\n    },\n    [query.plugins, setQuery]\n  );\n\n  React.useEffect(() => {\n    if (!Array.isArray(locales) || !hasI18n) {\n      return;\n    }\n    /**\n     * Handle the case where the current locale query param doesn't exist\n     * in the list of available locales, so we redirect to the default locale.\n     */\n    const currentDesiredLocale = query.plugins?.i18n?.locale;\n    const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n    const defaultLocale = locales.find((locale) => locale.isDefault);\n    if (!doesLocaleExist && defaultLocale?.code) {\n      handleChange(defaultLocale.code, true);\n    }\n  }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale]);\n\n  const sortedLocaleOptions = React.useMemo(() => {\n    const displayedLocales = Array.isArray(locales)\n      ? locales.filter((locale) => {\n          /**\n           * If you can create or read we allow you to see the locale exists\n           * this is because in the ListView, you may be able to create a new entry\n           * in a locale you can't read.\n           */\n          return canCreate.includes(locale.code) || canRead.includes(locale.code);\n        })\n      : [];\n\n    return displayedLocales\n      .sort((a, b) => a.name.localeCompare(b.name))\n      .map((locale) => (\n        <SingleSelectOption key={locale.id} value={locale.code}>\n          {locale.name}\n        </SingleSelectOption>\n      ));\n  }, [locales, canCreate, canRead]);\n\n  if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n    return null;\n  }\n\n  return (\n    <SingleSelect\n      size=\"S\"\n      aria-label={formatMessage({\n        id: getTranslation('actions.select-locale'),\n        defaultMessage: 'Select locale',\n      })}\n      value={query.plugins?.i18n?.locale || locales.find((locale) => locale.isDefault)?.code}\n      // @ts-expect-error – This can be removed in V2 of the DS.\n      onChange={handleChange}\n    >\n      {sortedLocaleOptions}\n    </SingleSelect>\n  );\n};\n\nexport { LocalePicker };\n"],"names":["LocalePicker","formatMessage","useIntl","query","setQuery","useQueryParams","hasI18n","canRead","canCreate","useI18n","data","locales","useGetLocalesQuery","undefined","skip","handleChange","React","useCallback","code","replace","page","plugins","i18n","locale","useEffect","Array","isArray","currentDesiredLocale","doesLocaleExist","find","loc","defaultLocale","isDefault","sortedLocaleOptions","useMemo","displayedLocales","filter","includes","sort","a","b","name","localeCompare","map","_jsx","SingleSelectOption","value","id","length","SingleSelect","size","aria-label","getTranslation","defaultMessage","onChange"],"mappings":"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"}
         
     | 
| 
         @@ -82,9 +82,12 @@ const LabelAction = ({ title, icon })=>{ 
     | 
|
| 
       82 
82 
     | 
    
         
             
                            tag: "span",
         
     | 
| 
       83 
83 
     | 
    
         
             
                            children: formatMessage(title)
         
     | 
| 
       84 
84 
     | 
    
         
             
                        }),
         
     | 
| 
       85 
     | 
    
         
            -
                        /*#__PURE__*/  
     | 
| 
       86 
     | 
    
         
            -
                             
     | 
| 
       87 
     | 
    
         
            -
                             
     | 
| 
      
 85 
     | 
    
         
            +
                        /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
         
     | 
| 
      
 86 
     | 
    
         
            +
                            label: formatMessage(title),
         
     | 
| 
      
 87 
     | 
    
         
            +
                            children: /*#__PURE__*/ React__namespace.cloneElement(icon, {
         
     | 
| 
      
 88 
     | 
    
         
            +
                                'aria-hidden': true,
         
     | 
| 
      
 89 
     | 
    
         
            +
                                focusable: false
         
     | 
| 
      
 90 
     | 
    
         
            +
                            })
         
     | 
| 
       88 
91 
     | 
    
         
             
                        })
         
     | 
| 
       89 
92 
     | 
    
         
             
                    ]
         
     | 
| 
       90 
93 
     | 
    
         
             
                });
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"editView.js","sources":["../../../admin/src/contentManagerHooks/editView.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Flex, VisuallyHidden } from '@strapi/design-system';\nimport { Earth, EarthStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { EditFieldLayout, EditLayout } from '@strapi/content-manager/strapi-admin';\n\ninterface MutateEditViewArgs {\n  layout: EditLayout;\n}\n\nconst mutateEditViewHook = ({ layout }: MutateEditViewArgs): MutateEditViewArgs => {\n  // If i18n isn't explicitly enabled on the content type, then no field can be localized\n  if (\n    !('i18n' in layout.options) ||\n    (typeof layout.options.i18n === 'object' &&\n      layout.options.i18n !== null &&\n      'localized' in layout.options.i18n &&\n      !layout.options.i18n.localized)\n  ) {\n    return { layout };\n  }\n\n  const components = Object.entries(layout.components).reduce<EditLayout['components']>(\n    (acc, [key, componentLayout]) => {\n      return {\n        ...acc,\n        [key]: {\n          ...componentLayout,\n          layout: componentLayout.layout.map((row) => row.map(addLabelActionToField)),\n        },\n      };\n    },\n    {}\n  );\n\n  return {\n    layout: {\n      ...layout,\n      components,\n      layout: layout.layout.map((panel) => panel.map((row) => row.map(addLabelActionToField))),\n    },\n  } satisfies Pick<MutateEditViewArgs, 'layout'>;\n};\n\nconst addLabelActionToField = (field: EditFieldLayout) => {\n  const isFieldLocalized = doesFieldHaveI18nPluginOpt(field.attribute.pluginOptions)\n    ? field.attribute.pluginOptions.i18n.localized\n    : true || ['uid', 'relation'].includes(field.attribute.type);\n\n  const labelActionProps = {\n    title: {\n      id: isFieldLocalized\n        ? getTranslation('Field.localized')\n        : getTranslation('Field.not-localized'),\n      defaultMessage: isFieldLocalized\n        ? 'This value is unique for the selected locale'\n        : 'This value is the same across all locales',\n    },\n    icon: isFieldLocalized ? <Earth /> : null,\n  };\n\n  return {\n    ...field,\n    labelAction: isFieldLocalized ? <LabelAction {...labelActionProps} /> : null,\n  };\n};\n\nconst doesFieldHaveI18nPluginOpt = (\n  pluginOpts?: object\n): pluginOpts is { i18n: { localized: boolean } } => {\n  if (!pluginOpts) {\n    return false;\n  }\n\n  return (\n    'i18n' in pluginOpts &&\n    typeof pluginOpts.i18n === 'object' &&\n    pluginOpts.i18n !== null &&\n    'localized' in pluginOpts.i18n\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LabelAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LabelActionProps {\n  title: MessageDescriptor;\n  icon: React.ReactNode;\n}\n\nconst LabelAction = ({ title, icon }: LabelActionProps) => {\n  const { formatMessage } = useIntl();\n\n  return (\n    <Span tag=\"span\">\n      <VisuallyHidden tag=\"span\">{formatMessage(title)}</VisuallyHidden>\n      {React.cloneElement(icon as React.ReactElement, {\n 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"editView.js","sources":["../../../admin/src/contentManagerHooks/editView.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Flex, Tooltip, VisuallyHidden } from '@strapi/design-system';\nimport { Earth, EarthStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { EditFieldLayout, EditLayout } from '@strapi/content-manager/strapi-admin';\n\ninterface MutateEditViewArgs {\n  layout: EditLayout;\n}\n\nconst mutateEditViewHook = ({ layout }: MutateEditViewArgs): MutateEditViewArgs => {\n  // If i18n isn't explicitly enabled on the content type, then no field can be localized\n  if (\n    !('i18n' in layout.options) ||\n    (typeof layout.options.i18n === 'object' &&\n      layout.options.i18n !== null &&\n      'localized' in layout.options.i18n &&\n      !layout.options.i18n.localized)\n  ) {\n    return { layout };\n  }\n\n  const components = Object.entries(layout.components).reduce<EditLayout['components']>(\n    (acc, [key, componentLayout]) => {\n      return {\n        ...acc,\n        [key]: {\n          ...componentLayout,\n          layout: componentLayout.layout.map((row) => row.map(addLabelActionToField)),\n        },\n      };\n    },\n    {}\n  );\n\n  return {\n    layout: {\n      ...layout,\n      components,\n      layout: layout.layout.map((panel) => panel.map((row) => row.map(addLabelActionToField))),\n    },\n  } satisfies Pick<MutateEditViewArgs, 'layout'>;\n};\n\nconst addLabelActionToField = (field: EditFieldLayout) => {\n  const isFieldLocalized = doesFieldHaveI18nPluginOpt(field.attribute.pluginOptions)\n    ? field.attribute.pluginOptions.i18n.localized\n    : true || ['uid', 'relation'].includes(field.attribute.type);\n\n  const labelActionProps = {\n    title: {\n      id: isFieldLocalized\n        ? getTranslation('Field.localized')\n        : getTranslation('Field.not-localized'),\n      defaultMessage: isFieldLocalized\n        ? 'This value is unique for the selected locale'\n        : 'This value is the same across all locales',\n    },\n    icon: isFieldLocalized ? <Earth /> : null,\n  };\n\n  return {\n    ...field,\n    labelAction: isFieldLocalized ? <LabelAction {...labelActionProps} /> : null,\n  };\n};\n\nconst doesFieldHaveI18nPluginOpt = (\n  pluginOpts?: object\n): pluginOpts is { i18n: { localized: boolean } } => {\n  if (!pluginOpts) {\n    return false;\n  }\n\n  return (\n    'i18n' in pluginOpts &&\n    typeof pluginOpts.i18n === 'object' &&\n    pluginOpts.i18n !== null &&\n    'localized' in pluginOpts.i18n\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LabelAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LabelActionProps {\n  title: MessageDescriptor;\n  icon: React.ReactNode;\n}\n\nconst LabelAction = ({ title, icon }: LabelActionProps) => {\n  const { formatMessage } = useIntl();\n\n  return (\n    <Span tag=\"span\">\n      <VisuallyHidden tag=\"span\">{formatMessage(title)}</VisuallyHidden>\n      <Tooltip label={formatMessage(title)}>\n        {React.cloneElement(icon as React.ReactElement, {\n          'aria-hidden': true,\n          focusable: false, // See: https://allyjs.io/tutorials/focusing-in-svg.html#making-svg-elements-focusable\n        })}\n      </Tooltip>\n    </Span>\n  );\n};\n\nconst Span = styled(Flex)`\n  svg {\n    width: 12px;\n    height: 12px;\n\n    fill: ${({ theme }) => theme.colors.neutral500};\n\n    path {\n      fill: ${({ theme }) => theme.colors.neutral500};\n    }\n  }\n`;\n\nexport { mutateEditViewHook };\n"],"names":["mutateEditViewHook","layout","options","i18n","localized","components","Object","entries","reduce","acc","key","componentLayout","map","row","addLabelActionToField","panel","field","isFieldLocalized","doesFieldHaveI18nPluginOpt","attribute","pluginOptions","labelActionProps","title","id","getTranslation","defaultMessage","icon","_jsx","Earth","labelAction","LabelAction","pluginOpts","formatMessage","useIntl","_jsxs","Span","tag","VisuallyHidden","Tooltip","label","React","cloneElement","focusable","styled","Flex","theme","colors","neutral500"],"mappings":"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"}
         
     |