@strapi/i18n 5.48.0 → 5.49.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.
Files changed (44) hide show
  1. package/dist/admin/components/CMHeaderActions.js +3 -2
  2. package/dist/admin/components/CMHeaderActions.js.map +1 -1
  3. package/dist/admin/components/CheckboxConfirmation.js +3 -2
  4. package/dist/admin/components/CheckboxConfirmation.js.map +1 -1
  5. package/dist/admin/components/CreateLocale.js +4 -3
  6. package/dist/admin/components/CreateLocale.js.map +1 -1
  7. package/dist/admin/components/DeleteLocale.js +3 -2
  8. package/dist/admin/components/DeleteLocale.js.map +1 -1
  9. package/dist/admin/components/EditLocale.js +3 -2
  10. package/dist/admin/components/EditLocale.js.map +1 -1
  11. package/dist/admin/components/LocalePicker.js +3 -2
  12. package/dist/admin/components/LocalePicker.js.map +1 -1
  13. package/dist/admin/components/LocaleTable.js +3 -2
  14. package/dist/admin/components/LocaleTable.js.map +1 -1
  15. package/dist/admin/hooks/useAILocalizationJobsPolling.js +3 -2
  16. package/dist/admin/hooks/useAILocalizationJobsPolling.js.map +1 -1
  17. package/dist/admin/hooks/useI18n.js +7 -3
  18. package/dist/admin/hooks/useI18n.js.map +1 -1
  19. package/dist/admin/index.js +7 -3
  20. package/dist/admin/index.js.map +1 -1
  21. package/dist/admin/middlewares/extendCTBAttributeInitialData.js +6 -2
  22. package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -1
  23. package/dist/admin/middlewares/rbac-middleware.js +3 -2
  24. package/dist/admin/middlewares/rbac-middleware.js.map +1 -1
  25. package/dist/admin/utils/fields.js +5 -1
  26. package/dist/admin/utils/fields.js.map +1 -1
  27. package/dist/admin/utils/schemas.js +6 -2
  28. package/dist/admin/utils/schemas.js.map +1 -1
  29. package/dist/server/controllers/locales.js +3 -2
  30. package/dist/server/controllers/locales.js.map +1 -1
  31. package/dist/server/register.js +6 -2
  32. package/dist/server/register.js.map +1 -1
  33. package/dist/server/routes/validation/locale.js +3 -2
  34. package/dist/server/routes/validation/locale.js.map +1 -1
  35. package/dist/server/services/content-types.js +6 -2
  36. package/dist/server/services/content-types.js.map +1 -1
  37. package/dist/server/services/content-types.mjs.map +1 -1
  38. package/dist/server/services/localizations.js.map +1 -1
  39. package/dist/server/services/localizations.mjs.map +1 -1
  40. package/dist/server/src/index.d.ts +1 -1
  41. package/dist/server/src/services/content-types.d.ts +1 -1
  42. package/dist/server/src/services/content-types.d.ts.map +1 -1
  43. package/dist/server/src/services/index.d.ts +1 -1
  44. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteLocale.js","sources":["../../../admin/src/components/DeleteLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(false);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Dialog.Root open={visible} onOpenChange={setVisible}>\n <Dialog.Trigger>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.delete'),\n defaultMessage: 'Delete {name} locale',\n },\n {\n name,\n }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirm} />\n </Dialog.Root>\n );\n};\n\nexport { DeleteLocale };\n"],"names":["DeleteLocale","id","name","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","visible","setVisible","React","useState","deleteLocale","useDeleteLocaleMutation","handleConfirm","res","type","message","error","getTranslation","defaultMessage","err","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","IconButton","onClick","label","variant","Trash","ConfirmDialog","onConfirm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,eAAe,CAAC,EAAEC,EAAE,EAAEC,IAAI,EAAqB,GAAA;IACnD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;AAEpD,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAE7C,MAAM,CAACC,aAAa,GAAGC,+BAAAA,EAAAA;AACvB,IAAA,MAAMC,aAAAA,GAAgB,UAAA;QACpB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,YAAAA,CAAab,EAAAA,CAAAA;AAE/B,YAAA,IAAI,WAAWgB,GAAAA,EAAK;gBAClBZ,kBAAAA,CAAmB;oBAAEa,IAAAA,EAAM,QAAA;oBAAUC,OAAAA,EAASX,cAAAA,CAAeS,IAAIG,KAAK;AAAE,iBAAA,CAAA;AAExE,gBAAA;AACF,YAAA;YAEAf,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;AACrBF,oBAAAA,EAAAA,EAAIoB,6BAAAA,CAAe,uCAAA,CAAA;oBACnBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;YAEAX,UAAAA,CAAW,KAAA,CAAA;AACb,QAAA,CAAA,CAAE,OAAOY,GAAAA,EAAK;YACZlB,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;oBACrBF,EAAAA,EAAI,oBAAA;oBACJqB,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEE,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAAA,EAAMjB,OAAAA;QAASkB,YAAAA,EAAcjB,UAAAA;;AACxC,0BAAAkB,cAAA,CAACJ,oBAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,cAAA,CAACE,uBAAAA,EAAAA;AACCC,oBAAAA,OAAAA,EAAS,IAAMrB,UAAAA,CAAW,IAAA,CAAA;AAC1BsB,oBAAAA,KAAAA,EAAO9B,aAAAA,CACL;AACEF,wBAAAA,EAAAA,EAAIoB,6BAAAA,CAAe,8BAAA,CAAA;wBACnBC,cAAAA,EAAgB;qBAClB,EACA;AACEpB,wBAAAA;AACF,qBAAA,CAAA;oBAEFgC,OAAAA,EAAQ,OAAA;AAER,oBAAA,QAAA,gBAAAL,cAAA,CAACM,WAAAA,EAAAA,EAAAA;;;0BAGLN,cAAA,CAACO,yBAAAA,EAAAA;gBAAcC,SAAAA,EAAWrB;;;;AAGhC;;;;"}
1
+ {"version":3,"file":"DeleteLocale.js","sources":["../../../admin/src/components/DeleteLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(false);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Dialog.Root open={visible} onOpenChange={setVisible}>\n <Dialog.Trigger>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.delete'),\n defaultMessage: 'Delete {name} locale',\n },\n {\n name,\n }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirm} />\n </Dialog.Root>\n );\n};\n\nexport { DeleteLocale };\n"],"names":["DeleteLocale","id","name","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","visible","setVisible","React","useState","deleteLocale","useDeleteLocaleMutation","handleConfirm","res","type","message","error","getTranslation","defaultMessage","err","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","IconButton","onClick","label","variant","Trash","ConfirmDialog","onConfirm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,eAAe,CAAC,EAAEC,EAAE,EAAEC,IAAI,EAAqB,GAAA;IACnD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;AAEpD,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAE7C,MAAM,CAACC,aAAa,GAAGC,+BAAAA,EAAAA;AACvB,IAAA,MAAMC,aAAAA,GAAgB,UAAA;QACpB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,YAAAA,CAAab,EAAAA,CAAAA;AAE/B,YAAA,IAAI,WAAWgB,GAAAA,EAAK;gBAClBZ,kBAAAA,CAAmB;oBAAEa,IAAAA,EAAM,QAAA;oBAAUC,OAAAA,EAASX,cAAAA,CAAeS,IAAIG,KAAK;AAAE,iBAAA,CAAA;AAExE,gBAAA;AACF,YAAA;YAEAf,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;AACrBF,oBAAAA,EAAAA,EAAIoB,6BAAAA,CAAe,uCAAA,CAAA;oBACnBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;YAEAX,UAAAA,CAAW,KAAA,CAAA;AACb,QAAA,CAAA,CAAE,OAAOY,GAAAA,EAAK;YACZlB,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;oBACrBF,EAAAA,EAAI,oBAAA;oBACJqB,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEE,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAAA,EAAMjB,OAAAA;QAASkB,YAAAA,EAAcjB,UAAAA;;AACxC,0BAAAkB,cAAA,CAACJ,oBAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,cAAA,CAACE,uBAAAA,EAAAA;AACCC,oBAAAA,OAAAA,EAAS,IAAMrB,UAAAA,CAAW,IAAA,CAAA;AAC1BsB,oBAAAA,KAAAA,EAAO9B,aAAAA,CACL;AACEF,wBAAAA,EAAAA,EAAIoB,6BAAAA,CAAe,8BAAA,CAAA;wBACnBC,cAAAA,EAAgB;qBAClB,EACA;AACEpB,wBAAAA;AACF,qBAAA,CAAA;oBAEFgC,OAAAA,EAAQ,OAAA;AAER,oBAAA,QAAA,gBAAAL,cAAA,CAACM,WAAAA,EAAAA,EAAAA;;;0BAGLN,cAAA,CAACO,yBAAAA,EAAAA;gBAAcC,SAAAA,EAAWrB;;;;AAGhC;;;;"}
@@ -11,7 +11,8 @@ var baseQuery = require('../utils/baseQuery.js');
11
11
  var getTranslation = require('../utils/getTranslation.js');
12
12
  var CreateLocale = require('./CreateLocale.js');
13
13
 
14
- function _interopNamespaceDefault(e) {
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
15
16
  var n = Object.create(null);
16
17
  if (e) {
17
18
  Object.keys(e).forEach(function (k) {
@@ -28,7 +29,7 @@ function _interopNamespaceDefault(e) {
28
29
  return Object.freeze(n);
29
30
  }
30
31
 
31
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
 
33
34
  const EditLocale = (props)=>{
34
35
  const { formatMessage } = reactIntl.useIntl();
@@ -1 +1 @@
1
- {"version":3,"file":"EditLocale.js","sources":["../../../admin/src/components/EditLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotification,\n useAPIErrorHandler,\n Form,\n FormHelpers,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Locale, UpdateLocale } from '../../../shared/contracts/locales';\nimport { useUpdateLocaleMutation } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { AdvancedForm, BaseForm, LOCALE_SCHEMA, SubmitButton } from './CreateLocale';\n\n/* -------------------------------------------------------------------------------------------------\n * EditLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditLocaleProps extends Omit<EditModalProps, 'open' | 'onOpenChange'> {}\n\nconst EditLocale = (props: EditLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: props.name,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n <EditModal {...props} open={visible} onOpenChange={setVisible} />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditModalProps extends Pick<Locale, 'id' | 'isDefault' | 'name' | 'code'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\ntype FormValues = UpdateLocale.Request['body'] & { code: string };\n\n/**\n * @internal\n * @description Exported to be used when someone clicks on a table row.\n */\nconst EditModal = ({ id, code, isDefault, name, open, onOpenChange }: EditModalProps) => {\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const refetchPermissions = useAuth('EditModal', (state) => state.refetchPermissions);\n const { formatMessage } = useIntl();\n const titleId = useId();\n\n const [updateLocale] = useUpdateLocaleMutation();\n const handleSubmit = async (\n { code: _code, ...data }: FormValues,\n helpers: FormHelpers<FormValues>\n ) => {\n try {\n /**\n * We don't need to send the code, because the\n * code can never be changed.\n */\n const res = await updateLocale({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.edit.success'),\n defaultMessage: 'Locale successfully edited',\n }),\n });\n\n refetchPermissions();\n onOpenChange(false);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Root open={open} onOpenChange={onOpenChange}>\n <Modal.Content>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={{\n code,\n name,\n isDefault,\n }}\n validationSchema={LOCALE_SCHEMA}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit a locale',\n },\n {\n name,\n }\n )}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider />\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm mode=\"edit\" />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm isDefaultLocale={isDefault} />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nexport { EditLocale, EditModal };\n"],"names":["EditLocale","props","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","_Fragment","_jsx","IconButton","onClick","label","id","getTranslation","defaultMessage","name","variant","Pencil","EditModal","open","onOpenChange","code","isDefault","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","refetchPermissions","useAuth","state","titleId","useId","updateLocale","useUpdateLocaleMutation","handleSubmit","_code","data","helpers","res","isBaseQueryError","error","setErrors","type","message","err","Modal","Root","Content","Form","method","onSubmit","initialValues","validationSchema","LOCALE_SCHEMA","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","Trigger","value","Divider","Box","paddingTop","paddingBottom","BaseForm","mode","AdvancedForm","isDefaultLocale","Footer","Close","Button","SubmitButton"],"mappings":"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"}
1
+ {"version":3,"file":"EditLocale.js","sources":["../../../admin/src/components/EditLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotification,\n useAPIErrorHandler,\n Form,\n FormHelpers,\n useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Modal,\n Tabs,\n Typography,\n useId,\n} from '@strapi/design-system';\nimport { Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Locale, UpdateLocale } from '../../../shared/contracts/locales';\nimport { useUpdateLocaleMutation } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { AdvancedForm, BaseForm, LOCALE_SCHEMA, SubmitButton } from './CreateLocale';\n\n/* -------------------------------------------------------------------------------------------------\n * EditLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditLocaleProps extends Omit<EditModalProps, 'open' | 'onOpenChange'> {}\n\nconst EditLocale = (props: EditLocaleProps) => {\n const { formatMessage } = useIntl();\n const [visible, setVisible] = React.useState(false);\n\n return (\n <>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit {name} locale',\n },\n {\n name: props.name,\n }\n )}\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n <EditModal {...props} open={visible} onOpenChange={setVisible} />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditModalProps extends Pick<Locale, 'id' | 'isDefault' | 'name' | 'code'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\ntype FormValues = UpdateLocale.Request['body'] & { code: string };\n\n/**\n * @internal\n * @description Exported to be used when someone clicks on a table row.\n */\nconst EditModal = ({ id, code, isDefault, name, open, onOpenChange }: EditModalProps) => {\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const refetchPermissions = useAuth('EditModal', (state) => state.refetchPermissions);\n const { formatMessage } = useIntl();\n const titleId = useId();\n\n const [updateLocale] = useUpdateLocaleMutation();\n const handleSubmit = async (\n { code: _code, ...data }: FormValues,\n helpers: FormHelpers<FormValues>\n ) => {\n try {\n /**\n * We don't need to send the code, because the\n * code can never be changed.\n */\n const res = await updateLocale({\n id,\n ...data,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.edit.success'),\n defaultMessage: 'Locale successfully edited',\n }),\n });\n\n refetchPermissions();\n onOpenChange(false);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n }),\n });\n }\n };\n\n return (\n <Modal.Root open={open} onOpenChange={onOpenChange}>\n <Modal.Content>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={{\n code,\n name,\n isDefault,\n }}\n validationSchema={LOCALE_SCHEMA}\n >\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.edit'),\n defaultMessage: 'Edit a locale',\n },\n {\n name,\n }\n )}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n {formatMessage({\n id: getTranslation('Settings.locales.modal.title'),\n defaultMessage: 'Configuration',\n })}\n </Typography>\n <Tabs.List aria-labelledby={titleId}>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\">\n {formatMessage({\n id: getTranslation('Settings.locales.modal.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider />\n <Box paddingTop={7} paddingBottom={7}>\n <Tabs.Content value=\"basic\">\n <BaseForm mode=\"edit\" />\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <AdvancedForm isDefaultLocale={isDefault} />\n </Tabs.Content>\n </Box>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <SubmitButton />\n </Modal.Footer>\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nexport { EditLocale, EditModal };\n"],"names":["EditLocale","props","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","_Fragment","_jsx","IconButton","onClick","label","id","getTranslation","defaultMessage","name","variant","Pencil","EditModal","open","onOpenChange","code","isDefault","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","refetchPermissions","useAuth","state","titleId","useId","updateLocale","useUpdateLocaleMutation","handleSubmit","_code","data","helpers","res","isBaseQueryError","error","setErrors","type","message","err","Modal","Root","Content","Form","method","onSubmit","initialValues","validationSchema","LOCALE_SCHEMA","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","Trigger","value","Divider","Box","paddingTop","paddingBottom","BaseForm","mode","AdvancedForm","isDefaultLocale","Footer","Close","Button","SubmitButton"],"mappings":"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"}
@@ -9,7 +9,8 @@ var useI18n = require('../hooks/useI18n.js');
9
9
  var locales = require('../services/locales.js');
10
10
  var getTranslation = require('../utils/getTranslation.js');
11
11
 
12
- function _interopNamespaceDefault(e) {
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
13
14
  var n = Object.create(null);
14
15
  if (e) {
15
16
  Object.keys(e).forEach(function (k) {
@@ -26,7 +27,7 @@ function _interopNamespaceDefault(e) {
26
27
  return Object.freeze(n);
27
28
  }
28
29
 
29
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
31
 
31
32
  const LocalePicker = ()=>{
32
33
  const { formatMessage } = reactIntl.useIntl();
@@ -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 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
+ {"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAMA,YAAAA,GAAe,IAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;AAE9B,IAAA,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGC,eAAAA,EAAAA;AACxC,IAAA,MAAM,EAAEC,IAAAA,EAAMC,SAAAA,GAAU,EAAE,EAAE,GAAGC,2BAAmBC,SAAAA,EAAW;AAC3DC,QAAAA,IAAAA,EAAM,CAACR;AACT,KAAA,CAAA;AAEA,IAAA,MAAMS,eAAeC,gBAAAA,CAAMC,WAAW,CACpC,CAACC,IAAAA,EAAcC,UAAU,KAAK,GAAA;QAC5Bf,QAAAA,CACE;YACEgB,IAAAA,EAAM,CAAA;YACNC,OAAAA,EAAS;AAAE,gBAAA,GAAGlB,MAAMkB,OAAO;gBAAEC,IAAAA,EAAM;oBAAEC,MAAAA,EAAQL;AAAK;AAAE;AACtD,SAAA,EACA,MAAA,EACAC,OAAAA,CAAAA;IAEJ,CAAA,EACA;AAAChB,QAAAA,KAAAA,CAAMkB,OAAO;AAAEjB,QAAAA;AAAS,KAAA,CAAA;AAG3BY,IAAAA,gBAAAA,CAAMQ,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACC,KAAAA,CAAMC,OAAO,CAACf,SAAAA,CAAAA,IAAY,CAACL,OAAAA,EAAS;AACvC,YAAA;AACF,QAAA;AACA;;;AAGC,QACD,MAAMqB,oBAAAA,GAAuBxB,KAAAA,CAAMkB,OAAO,EAAEC,IAAAA,EAAMC,MAAAA;QAClD,MAAMK,eAAAA,GAAkBjB,UAAQkB,IAAI,CAAC,CAACC,GAAAA,GAAQA,GAAAA,CAAIZ,IAAI,KAAKS,oBAAAA,CAAAA;AAC3D,QAAA,MAAMI,gBAAgBpB,SAAAA,CAAQkB,IAAI,CAAC,CAACN,MAAAA,GAAWA,OAAOS,SAAS,CAAA;QAC/D,IAAI,CAACJ,eAAAA,IAAmBG,aAAAA,EAAeb,IAAAA,EAAM;YAC3CH,YAAAA,CAAagB,aAAAA,CAAcb,IAAI,EAAE,IAAA,CAAA;AACnC,QAAA;IACF,CAAA,EAAG;AAACZ,QAAAA,OAAAA;AAASS,QAAAA,YAAAA;AAAcJ,QAAAA,SAAAA;QAASR,KAAAA,CAAMkB,OAAO,EAAEC,IAAAA,EAAMC;AAAO,KAAA,CAAA;IAEhE,MAAMU,mBAAAA,GAAsBjB,gBAAAA,CAAMkB,OAAO,CAAC,IAAA;QACxC,MAAMC,gBAAAA,GAAmBV,MAAMC,OAAO,CAACf,aACnCA,SAAAA,CAAQyB,MAAM,CAAC,CAACb,MAAAA,GAAAA;AACd;;;;cAKA,OAAOf,SAAAA,CAAU6B,QAAQ,CAACd,MAAAA,CAAOL,IAAI,CAAA,IAAKX,OAAAA,CAAQ8B,QAAQ,CAACd,MAAAA,CAAOL,IAAI,CAAA;AACxE,QAAA,CAAA,CAAA,GACA,EAAE;AAEN,QAAA,OAAOiB,iBACJG,IAAI,CAAC,CAACC,CAAAA,EAAGC,CAAAA,GAAMD,EAAEE,IAAI,CAACC,aAAa,CAACF,EAAEC,IAAI,CAAA,CAAA,CAC1CE,GAAG,CAAC,CAACpB,uBACJqB,cAAA,CAACC,+BAAAA,EAAAA;AAAmCC,gBAAAA,KAAAA,EAAOvB,OAAOL,IAAI;AACnDK,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOkB;AADelB,aAAAA,EAAAA,MAAAA,CAAOwB,EAAE,CAAA,CAAA;IAIxC,CAAA,EAAG;AAACpC,QAAAA,SAAAA;AAASH,QAAAA,SAAAA;AAAWD,QAAAA;AAAQ,KAAA,CAAA;IAEhC,IAAI,CAACD,OAAAA,IAAW,CAACmB,KAAAA,CAAMC,OAAO,CAACf,SAAAA,CAAAA,IAAYA,SAAAA,CAAQqC,MAAM,KAAK,CAAA,EAAG;QAC/D,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,qBACEJ,cAAA,CAACK,yBAAAA,EAAAA;QACCC,IAAAA,EAAK,GAAA;AACLC,QAAAA,YAAAA,EAAYlD,aAAAA,CAAc;AACxB8C,YAAAA,EAAAA,EAAIK,6BAAAA,CAAe,uBAAA,CAAA;YACnBC,cAAAA,EAAgB;AAClB,SAAA,CAAA;AACAP,QAAAA,KAAAA,EAAO3C,KAAAA,CAAMkB,OAAO,EAAEC,IAAAA,EAAMC,MAAAA,IAAUZ,SAAAA,CAAQkB,IAAI,CAAC,CAACN,MAAAA,GAAWA,MAAAA,CAAOS,SAAS,CAAA,EAAGd,IAAAA;;QAElFoC,QAAAA,EAAUvC,YAAAA;AAETkB,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
@@ -8,7 +8,8 @@ var getTranslation = require('../utils/getTranslation.js');
8
8
  var DeleteLocale = require('./DeleteLocale.js');
9
9
  var EditLocale = require('./EditLocale.js');
10
10
 
11
- function _interopNamespaceDefault(e) {
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
12
13
  var n = Object.create(null);
13
14
  if (e) {
14
15
  Object.keys(e).forEach(function (k) {
@@ -25,7 +26,7 @@ function _interopNamespaceDefault(e) {
25
26
  return Object.freeze(n);
26
27
  }
27
28
 
28
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
30
 
30
31
  const LocaleTable = ({ locales = [], canDelete, canUpdate })=>{
31
32
  const [editLocaleId, setEditLocaleId] = React__namespace.useState();
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleTable.js","sources":["../../../admin/src/components/LocaleTable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Flex,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { DeleteLocale } from './DeleteLocale';\nimport { EditLocale, EditModal } from './EditLocale';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * LocaleTable\n * -----------------------------------------------------------------------------------------------*/\n\ntype LocaleTableProps = {\n locales?: Locale[];\n canDelete?: boolean;\n canUpdate?: boolean;\n onDeleteLocale?: (locale: Locale) => void;\n onEditLocale?: (locale: Locale) => void;\n};\n\nconst LocaleTable = ({ locales = [], canDelete, canUpdate }: LocaleTableProps) => {\n const [editLocaleId, setEditLocaleId] = React.useState<Locale['id']>();\n const { formatMessage } = useIntl();\n\n const handleClick = (localeId: Locale['id']) => () => {\n if (canUpdate) {\n setEditLocaleId(localeId);\n }\n };\n\n return (\n <Table colCount={4} rowCount={locales.length + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.id'),\n defaultMessage: 'ID',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.displayName'),\n defaultMessage: 'Display name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.default-locale'),\n defaultMessage: 'Default locale',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {locales.map((locale) => (\n <React.Fragment key={locale.id}>\n <Tr\n onClick={handleClick(locale.id)}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td>\n <Typography textColor=\"neutral800\">{locale.id}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{locale.name}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {locale.isDefault\n ? formatMessage({\n id: getTranslation('Settings.locales.default'),\n defaultMessage: 'Default',\n })\n : null}\n </Typography>\n </Td>\n <Td>\n <Flex gap={1} justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {canUpdate && <EditLocale {...locale} />}\n {canDelete && !locale.isDefault && <DeleteLocale {...locale} />}\n </Flex>\n </Td>\n </Tr>\n <EditModal\n {...locale}\n onOpenChange={() => setEditLocaleId(undefined)}\n open={editLocaleId === locale.id}\n />\n </React.Fragment>\n ))}\n </Tbody>\n </Table>\n );\n};\n\nexport { LocaleTable };\nexport type { LocaleTableProps };\n"],"names":["LocaleTable","locales","canDelete","canUpdate","editLocaleId","setEditLocaleId","React","useState","formatMessage","useIntl","handleClick","localeId","_jsxs","Table","colCount","rowCount","length","_jsx","Thead","Tr","Th","Typography","variant","textColor","id","getTranslation","defaultMessage","VisuallyHidden","Tbody","map","locale","Fragment","onClick","style","cursor","Td","name","isDefault","Flex","gap","justifyContent","e","stopPropagation","EditLocale","DeleteLocale","EditModal","onOpenChange","undefined","open"],"mappings":"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"}
1
+ {"version":3,"file":"LocaleTable.js","sources":["../../../admin/src/components/LocaleTable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Flex,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { DeleteLocale } from './DeleteLocale';\nimport { EditLocale, EditModal } from './EditLocale';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * LocaleTable\n * -----------------------------------------------------------------------------------------------*/\n\ntype LocaleTableProps = {\n locales?: Locale[];\n canDelete?: boolean;\n canUpdate?: boolean;\n onDeleteLocale?: (locale: Locale) => void;\n onEditLocale?: (locale: Locale) => void;\n};\n\nconst LocaleTable = ({ locales = [], canDelete, canUpdate }: LocaleTableProps) => {\n const [editLocaleId, setEditLocaleId] = React.useState<Locale['id']>();\n const { formatMessage } = useIntl();\n\n const handleClick = (localeId: Locale['id']) => () => {\n if (canUpdate) {\n setEditLocaleId(localeId);\n }\n };\n\n return (\n <Table colCount={4} rowCount={locales.length + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.id'),\n defaultMessage: 'ID',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.displayName'),\n defaultMessage: 'Display name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('Settings.locales.row.default-locale'),\n defaultMessage: 'Default locale',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {locales.map((locale) => (\n <React.Fragment key={locale.id}>\n <Tr\n onClick={handleClick(locale.id)}\n style={{ cursor: canUpdate ? 'pointer' : 'default' }}\n >\n <Td>\n <Typography textColor=\"neutral800\">{locale.id}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{locale.name}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {locale.isDefault\n ? formatMessage({\n id: getTranslation('Settings.locales.default'),\n defaultMessage: 'Default',\n })\n : null}\n </Typography>\n </Td>\n <Td>\n <Flex gap={1} justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {canUpdate && <EditLocale {...locale} />}\n {canDelete && !locale.isDefault && <DeleteLocale {...locale} />}\n </Flex>\n </Td>\n </Tr>\n <EditModal\n {...locale}\n onOpenChange={() => setEditLocaleId(undefined)}\n open={editLocaleId === locale.id}\n />\n </React.Fragment>\n ))}\n </Tbody>\n </Table>\n );\n};\n\nexport { LocaleTable };\nexport type { LocaleTableProps };\n"],"names":["LocaleTable","locales","canDelete","canUpdate","editLocaleId","setEditLocaleId","React","useState","formatMessage","useIntl","handleClick","localeId","_jsxs","Table","colCount","rowCount","length","_jsx","Thead","Tr","Th","Typography","variant","textColor","id","getTranslation","defaultMessage","VisuallyHidden","Tbody","map","locale","Fragment","onClick","style","cursor","Td","name","isDefault","Flex","gap","justifyContent","e","stopPropagation","EditLocale","DeleteLocale","EditModal","onOpenChange","undefined","open"],"mappings":"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"}
@@ -7,7 +7,8 @@ var reactRedux = require('react-redux');
7
7
  var aiLocalizationJobs = require('../services/aiLocalizationJobs.js');
8
8
  var getTranslation = require('../utils/getTranslation.js');
9
9
 
10
- function _interopNamespaceDefault(e) {
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
11
12
  var n = Object.create(null);
12
13
  if (e) {
13
14
  Object.keys(e).forEach(function (k) {
@@ -24,7 +25,7 @@ function _interopNamespaceDefault(e) {
24
25
  return Object.freeze(n);
25
26
  }
26
27
 
27
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
29
 
29
30
  const useAILocalizationJobsPolling = ({ documentId, model, collectionType })=>{
30
31
  const { toggleNotification } = strapiAdmin.useNotification();
@@ -1 +1 @@
1
- {"version":3,"file":"useAILocalizationJobsPolling.js","sources":["../../../admin/src/hooks/useAILocalizationJobsPolling.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, adminApi } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\n\nimport { AILocalizationJobs } from '../../../shared/contracts/ai-localization-jobs';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { getTranslation } from '../utils/getTranslation';\n\ninterface UseAILocalizationJobsPollingOptions {\n documentId?: string;\n model?: string;\n collectionType?: string;\n}\n\nexport const useAILocalizationJobsPolling = ({\n documentId,\n model,\n collectionType,\n}: UseAILocalizationJobsPollingOptions) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const [previousJobStatus, setPreviousJobStatus] = React.useState<\n AILocalizationJobs['status'] | null\n >(null);\n\n /**\n * NOTE:\n * Due to a limitation with RTK query it is not possible to dynamically update the polling interval\n * @see https://github.com/reduxjs/redux-toolkit/issues/1651\n */\n const { data: initialJobData } = useGetAILocalizationJobsByDocumentQuery({\n documentId: documentId!,\n model: model!,\n collectionType: collectionType!,\n });\n\n const shouldPoll =\n initialJobData?.data?.status === 'processing' || previousJobStatus === 'processing';\n const { data: jobData } = useGetAILocalizationJobsByDocumentQuery(\n { documentId: documentId!, model: model!, collectionType: collectionType! },\n {\n skip: !shouldPoll,\n pollingInterval: 1000,\n }\n );\n\n const job = jobData?.data || initialJobData?.data;\n const currentJobStatus = job?.status;\n\n const invalidateDocument = React.useCallback(() => {\n dispatch(\n adminApi.util.invalidateTags([\n {\n // @ts-expect-error tag isn't available\n type: 'Document',\n id: collectionType !== 'single-types' ? `${model}_${documentId}` : model,\n },\n ])\n );\n }, [dispatch, collectionType, model, documentId]);\n\n // Check for job status changes and trigger callbacks\n React.useEffect(() => {\n if (!currentJobStatus) return;\n\n // Detect transition from 'processing' to a terminal state\n if (previousJobStatus === 'processing' && currentJobStatus === 'completed') {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('CMEditViewAITranslation.job-completed'),\n defaultMessage: 'AI translation completed successfully!',\n }),\n });\n invalidateDocument();\n }\n\n if (previousJobStatus === 'processing' && currentJobStatus === 'failed') {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: getTranslation('CMEditViewAITranslation.job-failed'),\n defaultMessage: 'AI translation failed. Please try again.',\n }),\n });\n invalidateDocument();\n }\n\n // Update the previous status if it changed\n if (previousJobStatus !== currentJobStatus) {\n setPreviousJobStatus(currentJobStatus);\n }\n }, [\n currentJobStatus,\n previousJobStatus,\n setPreviousJobStatus,\n toggleNotification,\n formatMessage,\n invalidateDocument,\n ]);\n\n return {\n status: job?.status,\n };\n};\n"],"names":["useAILocalizationJobsPolling","documentId","model","collectionType","toggleNotification","useNotification","formatMessage","useIntl","dispatch","useDispatch","previousJobStatus","setPreviousJobStatus","React","useState","data","initialJobData","useGetAILocalizationJobsByDocumentQuery","shouldPoll","status","jobData","skip","pollingInterval","job","currentJobStatus","invalidateDocument","useCallback","adminApi","util","invalidateTags","type","id","useEffect","message","getTranslation","defaultMessage"],"mappings":"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"}
1
+ {"version":3,"file":"useAILocalizationJobsPolling.js","sources":["../../../admin/src/hooks/useAILocalizationJobsPolling.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, adminApi } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\n\nimport { AILocalizationJobs } from '../../../shared/contracts/ai-localization-jobs';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { getTranslation } from '../utils/getTranslation';\n\ninterface UseAILocalizationJobsPollingOptions {\n documentId?: string;\n model?: string;\n collectionType?: string;\n}\n\nexport const useAILocalizationJobsPolling = ({\n documentId,\n model,\n collectionType,\n}: UseAILocalizationJobsPollingOptions) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n\n const [previousJobStatus, setPreviousJobStatus] = React.useState<\n AILocalizationJobs['status'] | null\n >(null);\n\n /**\n * NOTE:\n * Due to a limitation with RTK query it is not possible to dynamically update the polling interval\n * @see https://github.com/reduxjs/redux-toolkit/issues/1651\n */\n const { data: initialJobData } = useGetAILocalizationJobsByDocumentQuery({\n documentId: documentId!,\n model: model!,\n collectionType: collectionType!,\n });\n\n const shouldPoll =\n initialJobData?.data?.status === 'processing' || previousJobStatus === 'processing';\n const { data: jobData } = useGetAILocalizationJobsByDocumentQuery(\n { documentId: documentId!, model: model!, collectionType: collectionType! },\n {\n skip: !shouldPoll,\n pollingInterval: 1000,\n }\n );\n\n const job = jobData?.data || initialJobData?.data;\n const currentJobStatus = job?.status;\n\n const invalidateDocument = React.useCallback(() => {\n dispatch(\n adminApi.util.invalidateTags([\n {\n // @ts-expect-error tag isn't available\n type: 'Document',\n id: collectionType !== 'single-types' ? `${model}_${documentId}` : model,\n },\n ])\n );\n }, [dispatch, collectionType, model, documentId]);\n\n // Check for job status changes and trigger callbacks\n React.useEffect(() => {\n if (!currentJobStatus) return;\n\n // Detect transition from 'processing' to a terminal state\n if (previousJobStatus === 'processing' && currentJobStatus === 'completed') {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('CMEditViewAITranslation.job-completed'),\n defaultMessage: 'AI translation completed successfully!',\n }),\n });\n invalidateDocument();\n }\n\n if (previousJobStatus === 'processing' && currentJobStatus === 'failed') {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: getTranslation('CMEditViewAITranslation.job-failed'),\n defaultMessage: 'AI translation failed. Please try again.',\n }),\n });\n invalidateDocument();\n }\n\n // Update the previous status if it changed\n if (previousJobStatus !== currentJobStatus) {\n setPreviousJobStatus(currentJobStatus);\n }\n }, [\n currentJobStatus,\n previousJobStatus,\n setPreviousJobStatus,\n toggleNotification,\n formatMessage,\n invalidateDocument,\n ]);\n\n return {\n status: job?.status,\n };\n};\n"],"names":["useAILocalizationJobsPolling","documentId","model","collectionType","toggleNotification","useNotification","formatMessage","useIntl","dispatch","useDispatch","previousJobStatus","setPreviousJobStatus","React","useState","data","initialJobData","useGetAILocalizationJobsByDocumentQuery","shouldPoll","status","jobData","skip","pollingInterval","job","currentJobStatus","invalidateDocument","useCallback","adminApi","util","invalidateTags","type","id","useEffect","message","getTranslation","defaultMessage"],"mappings":"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"}
@@ -8,7 +8,10 @@ var reactRouterDom = require('react-router-dom');
8
8
  var fields = require('../utils/fields.js');
9
9
  var strings = require('../utils/strings.js');
10
10
 
11
- function _interopNamespaceDefault(e) {
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule) return e;
12
15
  var n = Object.create(null);
13
16
  if (e) {
14
17
  Object.keys(e).forEach(function (k) {
@@ -25,7 +28,8 @@ function _interopNamespaceDefault(e) {
25
28
  return Object.freeze(n);
26
29
  }
27
30
 
28
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
31
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
+ var union__default = /*#__PURE__*/_interopDefault(union);
29
33
 
30
34
  /**
31
35
  * @alpha
@@ -41,7 +45,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
41
45
  return permissions.reduce((acc, permission)=>{
42
46
  const [actionShorthand] = permission.action.split('.').slice(-1);
43
47
  const permissionKey = `can${strings.capitalize(actionShorthand)}`;
44
- acc[permissionKey] = union(acc[permissionKey] ?? [], permission.properties?.locales ?? []);
48
+ acc[permissionKey] = union__default.default(acc[permissionKey] ?? [], permission.properties?.locales ?? []);
45
49
  return acc;
46
50
  }, {
47
51
  canCreate: [],
@@ -1 +1 @@
1
- {"version":3,"file":"useI18n.js","sources":["../../../admin/src/hooks/useI18n.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useAuth } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument as useDocument } from '@strapi/content-manager/strapi-admin';\nimport union from 'lodash/union';\nimport { useParams } from 'react-router-dom';\n\nimport { doesPluginOptionsHaveI18nLocalized } from '../utils/fields';\nimport { capitalize } from '../utils/strings';\n\ntype UseI18n = () => {\n hasI18n: boolean;\n canCreate: string[];\n canRead: string[];\n canUpdate: string[];\n canDelete: string[];\n canPublish: string[];\n};\n\ntype I18nPermissionKeys = keyof Omit<ReturnType<UseI18n>, 'hasI18n'>;\n\n/**\n * @alpha\n * @description This hook is used to get the i18n status of a content type.\n * Also returns the CRUDP permission locale properties for the content type\n * so we know which locales the user can perform actions on.\n */\nconst useI18n: UseI18n = () => {\n // Extract the params from the URL to pass to our useDocument hook\n const params = useParams<{ collectionType: string; slug: string; model: string }>();\n\n const userPermissions = useAuth('useI18n', (state) => state.permissions);\n const actions = React.useMemo(() => {\n const permissions = userPermissions.filter((permission) => permission.subject === params.slug);\n\n return permissions.reduce<Record<I18nPermissionKeys, string[]>>(\n (acc, permission) => {\n const [actionShorthand] = permission.action.split('.').slice(-1);\n const permissionKey = `can${capitalize(actionShorthand)}` as I18nPermissionKeys;\n\n acc[permissionKey] = union(acc[permissionKey] ?? [], permission.properties?.locales ?? []);\n\n return acc;\n },\n { canCreate: [], canRead: [], canUpdate: [], canDelete: [], canPublish: [] }\n );\n }, [params.slug, userPermissions]);\n\n // TODO: use specific hook to get schema only\n const { schema } = useDocument(\n {\n // We can non-null assert these because below we skip the query if they are not present\n collectionType: params.collectionType!,\n model: params.slug!,\n },\n {\n skip: true,\n }\n );\n\n if (doesPluginOptionsHaveI18nLocalized(schema?.pluginOptions)) {\n return {\n hasI18n: schema.pluginOptions.i18n.localized,\n ...actions,\n };\n }\n\n return {\n hasI18n: false,\n ...actions,\n };\n};\n\nexport { useI18n };\n"],"names":["useI18n","params","useParams","userPermissions","useAuth","state","permissions","actions","React","useMemo","filter","permission","subject","slug","reduce","acc","actionShorthand","action","split","slice","permissionKey","capitalize","union","properties","locales","canCreate","canRead","canUpdate","canDelete","canPublish","schema","useDocument","collectionType","model","skip","doesPluginOptionsHaveI18nLocalized","pluginOptions","hasI18n","i18n","localized"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA;;;;;AAKC,UACKA,OAAAA,GAAmB,IAAA;;AAEvB,IAAA,MAAMC,MAAAA,GAASC,wBAAAA,EAAAA;AAEf,IAAA,MAAMC,kBAAkBC,mBAAAA,CAAQ,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMC,WAAW,CAAA;IACvE,MAAMC,OAAAA,GAAUC,gBAAAA,CAAMC,OAAO,CAAC,IAAA;QAC5B,MAAMH,WAAAA,GAAcH,eAAAA,CAAgBO,MAAM,CAAC,CAACC,aAAeA,UAAAA,CAAWC,OAAO,KAAKX,MAAAA,CAAOY,IAAI,CAAA;AAE7F,QAAA,OAAOP,WAAAA,CAAYQ,MAAM,CACvB,CAACC,GAAAA,EAAKJ,UAAAA,GAAAA;YACJ,MAAM,CAACK,eAAAA,CAAgB,GAAGL,UAAAA,CAAWM,MAAM,CAACC,KAAK,CAAC,GAAA,CAAA,CAAKC,KAAK,CAAC,EAAC,CAAA;AAC9D,YAAA,MAAMC,aAAAA,GAAgB,CAAC,GAAG,EAAEC,mBAAWL,eAAAA,CAAAA,CAAAA,CAAkB;AAEzDD,YAAAA,GAAG,CAACK,aAAAA,CAAc,GAAGE,KAAAA,CAAMP,GAAG,CAACK,aAAAA,CAAc,IAAI,EAAE,EAAET,UAAAA,CAAWY,UAAU,EAAEC,WAAW,EAAE,CAAA;YAEzF,OAAOT,GAAAA;QACT,CAAA,EACA;AAAEU,YAAAA,SAAAA,EAAW,EAAE;AAAEC,YAAAA,OAAAA,EAAS,EAAE;AAAEC,YAAAA,SAAAA,EAAW,EAAE;AAAEC,YAAAA,SAAAA,EAAW,EAAE;AAAEC,YAAAA,UAAAA,EAAY;AAAG,SAAA,CAAA;IAE/E,CAAA,EAAG;AAAC5B,QAAAA,MAAAA,CAAOY,IAAI;AAAEV,QAAAA;AAAgB,KAAA,CAAA;;AAGjC,IAAA,MAAM,EAAE2B,MAAM,EAAE,GAAGC,kCAAAA,CACjB;;AAEEC,QAAAA,cAAAA,EAAgB/B,OAAO+B,cAAc;AACrCC,QAAAA,KAAAA,EAAOhC,OAAOY;KAChB,EACA;QACEqB,IAAAA,EAAM;AACR,KAAA,CAAA;IAGF,IAAIC,yCAAAA,CAAmCL,QAAQM,aAAAA,CAAAA,EAAgB;QAC7D,OAAO;AACLC,YAAAA,OAAAA,EAASP,MAAAA,CAAOM,aAAa,CAACE,IAAI,CAACC,SAAS;AAC5C,YAAA,GAAGhC;AACL,SAAA;AACF,IAAA;IAEA,OAAO;QACL8B,OAAAA,EAAS,KAAA;AACT,QAAA,GAAG9B;AACL,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"useI18n.js","sources":["../../../admin/src/hooks/useI18n.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useAuth } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument as useDocument } from '@strapi/content-manager/strapi-admin';\nimport union from 'lodash/union';\nimport { useParams } from 'react-router-dom';\n\nimport { doesPluginOptionsHaveI18nLocalized } from '../utils/fields';\nimport { capitalize } from '../utils/strings';\n\ntype UseI18n = () => {\n hasI18n: boolean;\n canCreate: string[];\n canRead: string[];\n canUpdate: string[];\n canDelete: string[];\n canPublish: string[];\n};\n\ntype I18nPermissionKeys = keyof Omit<ReturnType<UseI18n>, 'hasI18n'>;\n\n/**\n * @alpha\n * @description This hook is used to get the i18n status of a content type.\n * Also returns the CRUDP permission locale properties for the content type\n * so we know which locales the user can perform actions on.\n */\nconst useI18n: UseI18n = () => {\n // Extract the params from the URL to pass to our useDocument hook\n const params = useParams<{ collectionType: string; slug: string; model: string }>();\n\n const userPermissions = useAuth('useI18n', (state) => state.permissions);\n const actions = React.useMemo(() => {\n const permissions = userPermissions.filter((permission) => permission.subject === params.slug);\n\n return permissions.reduce<Record<I18nPermissionKeys, string[]>>(\n (acc, permission) => {\n const [actionShorthand] = permission.action.split('.').slice(-1);\n const permissionKey = `can${capitalize(actionShorthand)}` as I18nPermissionKeys;\n\n acc[permissionKey] = union(acc[permissionKey] ?? [], permission.properties?.locales ?? []);\n\n return acc;\n },\n { canCreate: [], canRead: [], canUpdate: [], canDelete: [], canPublish: [] }\n );\n }, [params.slug, userPermissions]);\n\n // TODO: use specific hook to get schema only\n const { schema } = useDocument(\n {\n // We can non-null assert these because below we skip the query if they are not present\n collectionType: params.collectionType!,\n model: params.slug!,\n },\n {\n skip: true,\n }\n );\n\n if (doesPluginOptionsHaveI18nLocalized(schema?.pluginOptions)) {\n return {\n hasI18n: schema.pluginOptions.i18n.localized,\n ...actions,\n };\n }\n\n return {\n hasI18n: false,\n ...actions,\n };\n};\n\nexport { useI18n };\n"],"names":["useI18n","params","useParams","userPermissions","useAuth","state","permissions","actions","React","useMemo","filter","permission","subject","slug","reduce","acc","actionShorthand","action","split","slice","permissionKey","capitalize","union","properties","locales","canCreate","canRead","canUpdate","canDelete","canPublish","schema","useDocument","collectionType","model","skip","doesPluginOptionsHaveI18nLocalized","pluginOptions","hasI18n","i18n","localized"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA;;;;;AAKC,UACKA,OAAAA,GAAmB,IAAA;;AAEvB,IAAA,MAAMC,MAAAA,GAASC,wBAAAA,EAAAA;AAEf,IAAA,MAAMC,kBAAkBC,mBAAAA,CAAQ,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMC,WAAW,CAAA;IACvE,MAAMC,OAAAA,GAAUC,gBAAAA,CAAMC,OAAO,CAAC,IAAA;QAC5B,MAAMH,WAAAA,GAAcH,eAAAA,CAAgBO,MAAM,CAAC,CAACC,aAAeA,UAAAA,CAAWC,OAAO,KAAKX,MAAAA,CAAOY,IAAI,CAAA;AAE7F,QAAA,OAAOP,WAAAA,CAAYQ,MAAM,CACvB,CAACC,GAAAA,EAAKJ,UAAAA,GAAAA;YACJ,MAAM,CAACK,eAAAA,CAAgB,GAAGL,UAAAA,CAAWM,MAAM,CAACC,KAAK,CAAC,GAAA,CAAA,CAAKC,KAAK,CAAC,EAAC,CAAA;AAC9D,YAAA,MAAMC,aAAAA,GAAgB,CAAC,GAAG,EAAEC,mBAAWL,eAAAA,CAAAA,CAAAA,CAAkB;AAEzDD,YAAAA,GAAG,CAACK,aAAAA,CAAc,GAAGE,sBAAAA,CAAMP,GAAG,CAACK,aAAAA,CAAc,IAAI,EAAE,EAAET,UAAAA,CAAWY,UAAU,EAAEC,WAAW,EAAE,CAAA;YAEzF,OAAOT,GAAAA;QACT,CAAA,EACA;AAAEU,YAAAA,SAAAA,EAAW,EAAE;AAAEC,YAAAA,OAAAA,EAAS,EAAE;AAAEC,YAAAA,SAAAA,EAAW,EAAE;AAAEC,YAAAA,SAAAA,EAAW,EAAE;AAAEC,YAAAA,UAAAA,EAAY;AAAG,SAAA,CAAA;IAE/E,CAAA,EAAG;AAAC5B,QAAAA,MAAAA,CAAOY,IAAI;AAAEV,QAAAA;AAAgB,KAAA,CAAA;;AAGjC,IAAA,MAAM,EAAE2B,MAAM,EAAE,GAAGC,kCAAAA,CACjB;;AAEEC,QAAAA,cAAAA,EAAgB/B,OAAO+B,cAAc;AACrCC,QAAAA,KAAAA,EAAOhC,OAAOY;KAChB,EACA;QACEqB,IAAAA,EAAM;AACR,KAAA,CAAA;IAGF,IAAIC,yCAAAA,CAAmCL,QAAQM,aAAAA,CAAAA,EAAgB;QAC7D,OAAO;AACLC,YAAAA,OAAAA,EAASP,MAAAA,CAAOM,aAAa,CAACE,IAAI,CAACC,SAAS;AAC5C,YAAA,GAAGhC;AACL,SAAA;AACF,IAAA;IAEA,OAAO;QACL8B,OAAAA,EAAS,KAAA;AACT,QAAA,GAAG9B;AACL,KAAA;AACF;;;;"}
@@ -20,9 +20,12 @@ var getTranslation = require('./utils/getTranslation.js');
20
20
  var prefixPluginTranslations = require('./utils/prefixPluginTranslations.js');
21
21
  var schemas = require('./utils/schemas.js');
22
22
 
23
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
24
+
23
25
  function _interopNamespaceDefaultOnly (e) { return Object.freeze({ __proto__: null, default: e }); }
24
26
 
25
- function _interopNamespaceDefault(e) {
27
+ function _interopNamespace(e) {
28
+ if (e && e.__esModule) return e;
26
29
  var n = Object.create(null);
27
30
  if (e) {
28
31
  Object.keys(e).forEach(function (k) {
@@ -39,7 +42,8 @@ function _interopNamespaceDefault(e) {
39
42
  return Object.freeze(n);
40
43
  }
41
44
 
42
- var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
45
+ var get__default = /*#__PURE__*/_interopDefault(get);
46
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
43
47
 
44
48
  function __variableDynamicImportRuntime1__(path) {
45
49
  switch (path) {
@@ -179,7 +183,7 @@ var index = {
179
183
  if (forTarget !== 'contentType') {
180
184
  return [];
181
185
  }
182
- const hasI18nEnabled = get(contentTypeSchema, [
186
+ const hasI18nEnabled = get__default.default(contentTypeSchema, [
183
187
  'pluginOptions',
184
188
  'i18n',
185
189
  'localized'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import get from 'lodash/get';\nimport * as yup from 'yup';\n\nimport { CheckboxConfirmation } from './components/CheckboxConfirmation';\nimport {\n BulkLocalePublishAction,\n BulkLocaleUnpublishAction,\n DeleteLocaleAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n AITranslationStatusAction,\n} from './components/CMHeaderActions';\nimport {\n DeleteModalAdditionalInfo,\n PublishModalAdditionalInfo,\n UnpublishModalAdditionalInfo,\n} from './components/CMListViewModalsAdditionalInformation';\nimport { LocalePicker } from './components/LocalePicker';\nimport { PERMISSIONS } from './constants';\nimport { mutateEditViewHook } from './contentManagerHooks/editView';\nimport { addColumnToTableHook } from './contentManagerHooks/listView';\nimport { addLocaleToReleasesHook } from './contentReleasesHooks/releaseDetailsView';\nimport { extendCTBAttributeInitialDataMiddleware } from './middlewares/extendCTBAttributeInitialData';\nimport { extendCTBInitialDataMiddleware } from './middlewares/extendCTBInitialData';\nimport { localeMiddleware } from './middlewares/rbac-middleware';\nimport { pluginId } from './pluginId';\nimport { i18nApi } from './services/api';\nimport { LOCALIZED_FIELDS } from './utils/fields';\nimport { getTranslation } from './utils/getTranslation';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\nimport { mutateCTBContentTypeSchema } from './utils/schemas';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n HeaderActionComponent,\n} from '@strapi/content-manager/strapi-admin';\n\ntype ContentTypeBuilderFormsAPI = {\n addContentTypeSchemaMutation: (mutation: typeof mutateCTBContentTypeSchema) => void;\n components: {\n add: (component: { id: string; component: typeof CheckboxConfirmation }) => void;\n };\n extendContentType: (extension: {\n validator: () => Record<string, unknown>;\n form: {\n advanced: () => Array<Record<string, unknown>>;\n };\n }) => void;\n extendFields: (\n fields: typeof LOCALIZED_FIELDS,\n extension: {\n form: {\n advanced: (args: any) => Array<Record<string, unknown>>;\n };\n }\n ) => void;\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: StrapiApp) {\n app.addMiddlewares([extendCTBAttributeInitialDataMiddleware, extendCTBInitialDataMiddleware]);\n app.addMiddlewares([() => i18nApi.middleware]);\n app.addReducers({\n [i18nApi.reducerPath]: i18nApi.reducer,\n });\n app.addRBACMiddleware([localeMiddleware]);\n app.registerPlugin({\n id: pluginId,\n name: pluginId,\n });\n },\n bootstrap(app: StrapiApp) {\n // // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/EditView/mutate-edit-view-layout', mutateEditViewHook);\n // Hooks that checks if the locale is present in the release\n app.registerHook(\n 'ContentReleases/pages/ReleaseDetails/add-locale-in-releases',\n addLocaleToReleasesHook\n );\n\n // Add the settings link\n app.addSettingsLink('global', {\n intlLabel: {\n id: getTranslation('plugin.name'),\n defaultMessage: 'Internationalization',\n },\n id: 'internationalization',\n to: 'internationalization',\n Component: () =>\n import('./pages/SettingsPage').then((mod) => ({ default: mod.ProtectedSettingsPage })),\n permissions: PERMISSIONS.accessMain,\n });\n\n const contentManager = app.getPlugin('content-manager');\n const contentManagerApis = contentManager.apis as ContentManagerPlugin['config']['apis'];\n\n contentManagerApis.addDocumentHeaderAction([\n AITranslationStatusAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n ] as HeaderActionComponent[]);\n contentManagerApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'delete');\n actions.splice(indexOfDeleteAction, 0, DeleteLocaleAction);\n return actions;\n });\n\n contentManagerApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n // When enabled the bulk locale publish action should be the first action\n // in 'More Document Actions' and therefore the third action in the array\n actions.splice(2, 0, BulkLocalePublishAction);\n actions.splice(5, 0, BulkLocaleUnpublishAction);\n return actions;\n });\n\n contentManager.injectComponent('listView', 'actions', {\n name: 'i18n-locale-filter',\n Component: LocalePicker,\n });\n\n contentManager.injectComponent('listView', 'publishModalAdditionalInfos', {\n name: 'i18n-publish-bullets-in-modal',\n Component: PublishModalAdditionalInfo,\n });\n\n contentManager.injectComponent('listView', 'unpublishModalAdditionalInfos', {\n name: 'i18n-unpublish-bullets-in-modal',\n Component: UnpublishModalAdditionalInfo,\n });\n\n contentManager.injectComponent('listView', 'deleteModalAdditionalInfos', {\n name: 'i18n-delete-bullets-in-modal',\n Component: DeleteModalAdditionalInfo,\n });\n\n const ctbPlugin = app.getPlugin('content-type-builder');\n\n if (ctbPlugin) {\n const ctbFormsAPI = ctbPlugin.apis.forms as ContentTypeBuilderFormsAPI;\n ctbFormsAPI.addContentTypeSchemaMutation(mutateCTBContentTypeSchema);\n ctbFormsAPI.components.add({ id: 'checkboxConfirmation', component: CheckboxConfirmation });\n\n ctbFormsAPI.extendContentType({\n validator: () => ({\n i18n: yup.object().shape({\n localized: yup.bool(),\n }),\n }),\n form: {\n advanced() {\n return [\n {\n name: 'pluginOptions.i18n.localized',\n description: {\n id: getTranslation('plugin.schema.i18n.localized.description-content-type'),\n defaultMessage: 'Allows translating an entry into different languages',\n },\n type: 'checkboxConfirmation',\n intlLabel: {\n id: getTranslation('plugin.schema.i18n.localized.label-content-type'),\n defaultMessage: 'Localization',\n },\n },\n ];\n },\n },\n });\n\n ctbFormsAPI.extendFields(LOCALIZED_FIELDS, {\n form: {\n advanced({ contentTypeSchema, forTarget, type, step }: any) {\n if (forTarget !== 'contentType') {\n return [];\n }\n\n const hasI18nEnabled = get(\n contentTypeSchema,\n ['pluginOptions', 'i18n', 'localized'],\n false\n );\n\n if (!hasI18nEnabled) {\n return [];\n }\n\n if (type === 'component' && step === '1') {\n return [];\n }\n\n return [\n {\n name: 'pluginOptions.i18n.localized',\n description: {\n id: getTranslation('plugin.schema.i18n.localized.description-field'),\n defaultMessage: 'The field can have different values in each locale',\n },\n type: 'checkbox',\n intlLabel: {\n id: getTranslation('plugin.schema.i18n.localized.label-field'),\n defaultMessage: 'Enable localization for this field',\n },\n },\n ];\n },\n },\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n"],"names":["register","app","addMiddlewares","extendCTBAttributeInitialDataMiddleware","extendCTBInitialDataMiddleware","i18nApi","middleware","addReducers","reducerPath","reducer","addRBACMiddleware","localeMiddleware","registerPlugin","id","pluginId","name","bootstrap","registerHook","addColumnToTableHook","mutateEditViewHook","addLocaleToReleasesHook","addSettingsLink","intlLabel","getTranslation","defaultMessage","to","Component","then","mod","default","ProtectedSettingsPage","permissions","PERMISSIONS","accessMain","contentManager","getPlugin","contentManagerApis","apis","addDocumentHeaderAction","AITranslationStatusAction","LocalePickerAction","FillFromAnotherLocaleAction","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","DeleteLocaleAction","BulkLocalePublishAction","BulkLocaleUnpublishAction","injectComponent","LocalePicker","PublishModalAdditionalInfo","UnpublishModalAdditionalInfo","DeleteModalAdditionalInfo","ctbPlugin","ctbFormsAPI","forms","addContentTypeSchemaMutation","mutateCTBContentTypeSchema","components","add","component","CheckboxConfirmation","extendContentType","validator","i18n","yup","object","shape","localized","bool","form","advanced","description","extendFields","LOCALIZED_FIELDS","contentTypeSchema","forTarget","step","hasI18nEnabled","get","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import get from 'lodash/get';\nimport * as yup from 'yup';\n\nimport { CheckboxConfirmation } from './components/CheckboxConfirmation';\nimport {\n BulkLocalePublishAction,\n BulkLocaleUnpublishAction,\n DeleteLocaleAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n AITranslationStatusAction,\n} from './components/CMHeaderActions';\nimport {\n DeleteModalAdditionalInfo,\n PublishModalAdditionalInfo,\n UnpublishModalAdditionalInfo,\n} from './components/CMListViewModalsAdditionalInformation';\nimport { LocalePicker } from './components/LocalePicker';\nimport { PERMISSIONS } from './constants';\nimport { mutateEditViewHook } from './contentManagerHooks/editView';\nimport { addColumnToTableHook } from './contentManagerHooks/listView';\nimport { addLocaleToReleasesHook } from './contentReleasesHooks/releaseDetailsView';\nimport { extendCTBAttributeInitialDataMiddleware } from './middlewares/extendCTBAttributeInitialData';\nimport { extendCTBInitialDataMiddleware } from './middlewares/extendCTBInitialData';\nimport { localeMiddleware } from './middlewares/rbac-middleware';\nimport { pluginId } from './pluginId';\nimport { i18nApi } from './services/api';\nimport { LOCALIZED_FIELDS } from './utils/fields';\nimport { getTranslation } from './utils/getTranslation';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\nimport { mutateCTBContentTypeSchema } from './utils/schemas';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n HeaderActionComponent,\n} from '@strapi/content-manager/strapi-admin';\n\ntype ContentTypeBuilderFormsAPI = {\n addContentTypeSchemaMutation: (mutation: typeof mutateCTBContentTypeSchema) => void;\n components: {\n add: (component: { id: string; component: typeof CheckboxConfirmation }) => void;\n };\n extendContentType: (extension: {\n validator: () => Record<string, unknown>;\n form: {\n advanced: () => Array<Record<string, unknown>>;\n };\n }) => void;\n extendFields: (\n fields: typeof LOCALIZED_FIELDS,\n extension: {\n form: {\n advanced: (args: any) => Array<Record<string, unknown>>;\n };\n }\n ) => void;\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: StrapiApp) {\n app.addMiddlewares([extendCTBAttributeInitialDataMiddleware, extendCTBInitialDataMiddleware]);\n app.addMiddlewares([() => i18nApi.middleware]);\n app.addReducers({\n [i18nApi.reducerPath]: i18nApi.reducer,\n });\n app.addRBACMiddleware([localeMiddleware]);\n app.registerPlugin({\n id: pluginId,\n name: pluginId,\n });\n },\n bootstrap(app: StrapiApp) {\n // // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/EditView/mutate-edit-view-layout', mutateEditViewHook);\n // Hooks that checks if the locale is present in the release\n app.registerHook(\n 'ContentReleases/pages/ReleaseDetails/add-locale-in-releases',\n addLocaleToReleasesHook\n );\n\n // Add the settings link\n app.addSettingsLink('global', {\n intlLabel: {\n id: getTranslation('plugin.name'),\n defaultMessage: 'Internationalization',\n },\n id: 'internationalization',\n to: 'internationalization',\n Component: () =>\n import('./pages/SettingsPage').then((mod) => ({ default: mod.ProtectedSettingsPage })),\n permissions: PERMISSIONS.accessMain,\n });\n\n const contentManager = app.getPlugin('content-manager');\n const contentManagerApis = contentManager.apis as ContentManagerPlugin['config']['apis'];\n\n contentManagerApis.addDocumentHeaderAction([\n AITranslationStatusAction,\n LocalePickerAction,\n FillFromAnotherLocaleAction,\n ] as HeaderActionComponent[]);\n contentManagerApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'delete');\n actions.splice(indexOfDeleteAction, 0, DeleteLocaleAction);\n return actions;\n });\n\n contentManagerApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n // When enabled the bulk locale publish action should be the first action\n // in 'More Document Actions' and therefore the third action in the array\n actions.splice(2, 0, BulkLocalePublishAction);\n actions.splice(5, 0, BulkLocaleUnpublishAction);\n return actions;\n });\n\n contentManager.injectComponent('listView', 'actions', {\n name: 'i18n-locale-filter',\n Component: LocalePicker,\n });\n\n contentManager.injectComponent('listView', 'publishModalAdditionalInfos', {\n name: 'i18n-publish-bullets-in-modal',\n Component: PublishModalAdditionalInfo,\n });\n\n contentManager.injectComponent('listView', 'unpublishModalAdditionalInfos', {\n name: 'i18n-unpublish-bullets-in-modal',\n Component: UnpublishModalAdditionalInfo,\n });\n\n contentManager.injectComponent('listView', 'deleteModalAdditionalInfos', {\n name: 'i18n-delete-bullets-in-modal',\n Component: DeleteModalAdditionalInfo,\n });\n\n const ctbPlugin = app.getPlugin('content-type-builder');\n\n if (ctbPlugin) {\n const ctbFormsAPI = ctbPlugin.apis.forms as ContentTypeBuilderFormsAPI;\n ctbFormsAPI.addContentTypeSchemaMutation(mutateCTBContentTypeSchema);\n ctbFormsAPI.components.add({ id: 'checkboxConfirmation', component: CheckboxConfirmation });\n\n ctbFormsAPI.extendContentType({\n validator: () => ({\n i18n: yup.object().shape({\n localized: yup.bool(),\n }),\n }),\n form: {\n advanced() {\n return [\n {\n name: 'pluginOptions.i18n.localized',\n description: {\n id: getTranslation('plugin.schema.i18n.localized.description-content-type'),\n defaultMessage: 'Allows translating an entry into different languages',\n },\n type: 'checkboxConfirmation',\n intlLabel: {\n id: getTranslation('plugin.schema.i18n.localized.label-content-type'),\n defaultMessage: 'Localization',\n },\n },\n ];\n },\n },\n });\n\n ctbFormsAPI.extendFields(LOCALIZED_FIELDS, {\n form: {\n advanced({ contentTypeSchema, forTarget, type, step }: any) {\n if (forTarget !== 'contentType') {\n return [];\n }\n\n const hasI18nEnabled = get(\n contentTypeSchema,\n ['pluginOptions', 'i18n', 'localized'],\n false\n );\n\n if (!hasI18nEnabled) {\n return [];\n }\n\n if (type === 'component' && step === '1') {\n return [];\n }\n\n return [\n {\n name: 'pluginOptions.i18n.localized',\n description: {\n id: getTranslation('plugin.schema.i18n.localized.description-field'),\n defaultMessage: 'The field can have different values in each locale',\n },\n type: 'checkbox',\n intlLabel: {\n id: getTranslation('plugin.schema.i18n.localized.label-field'),\n defaultMessage: 'Enable localization for this field',\n },\n },\n ];\n },\n },\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n"],"names":["register","app","addMiddlewares","extendCTBAttributeInitialDataMiddleware","extendCTBInitialDataMiddleware","i18nApi","middleware","addReducers","reducerPath","reducer","addRBACMiddleware","localeMiddleware","registerPlugin","id","pluginId","name","bootstrap","registerHook","addColumnToTableHook","mutateEditViewHook","addLocaleToReleasesHook","addSettingsLink","intlLabel","getTranslation","defaultMessage","to","Component","then","mod","default","ProtectedSettingsPage","permissions","PERMISSIONS","accessMain","contentManager","getPlugin","contentManagerApis","apis","addDocumentHeaderAction","AITranslationStatusAction","LocalePickerAction","FillFromAnotherLocaleAction","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","DeleteLocaleAction","BulkLocalePublishAction","BulkLocaleUnpublishAction","injectComponent","LocalePicker","PublishModalAdditionalInfo","UnpublishModalAdditionalInfo","DeleteModalAdditionalInfo","ctbPlugin","ctbFormsAPI","forms","addContentTypeSchemaMutation","mutateCTBContentTypeSchema","components","add","component","CheckboxConfirmation","extendContentType","validator","i18n","yup","object","shape","localized","bool","form","advanced","description","extendFields","LOCALIZED_FIELDS","contentTypeSchema","forTarget","step","hasI18nEnabled","get","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -2,6 +2,10 @@
2
2
 
3
3
  var get = require('lodash/get');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var get__default = /*#__PURE__*/_interopDefault(get);
8
+
5
9
  const extendCTBAttributeInitialDataMiddleware = ()=>{
6
10
  return ({ getState })=>(next)=>(action)=>{
7
11
  const enhanceAction = ({ uid })=>{
@@ -9,7 +13,7 @@ const extendCTBAttributeInitialDataMiddleware = ()=>{
9
13
  // of the ctb when the plugin is not mounted
10
14
  try {
11
15
  const store = getState();
12
- const type = get(store, [
16
+ const type = get__default.default(store, [
13
17
  'content-type-builder_dataManagerProvider',
14
18
  'current',
15
19
  'contentTypes',
@@ -18,7 +22,7 @@ const extendCTBAttributeInitialDataMiddleware = ()=>{
18
22
  if (!type || type.modelType !== 'contentType') {
19
23
  return next(action);
20
24
  }
21
- const hasi18nEnabled = get(type, [
25
+ const hasi18nEnabled = get__default.default(type, [
22
26
  'pluginOptions',
23
27
  'i18n',
24
28
  'localized'
@@ -1 +1 @@
1
- {"version":3,"file":"extendCTBAttributeInitialData.js","sources":["../../../admin/src/middlewares/extendCTBAttributeInitialData.ts"],"sourcesContent":["import get from 'lodash/get';\n\nimport type { Middleware } from '@reduxjs/toolkit';\nimport type { Store } from '@strapi/admin/strapi-admin';\n\nconst extendCTBAttributeInitialDataMiddleware: () => Middleware<\n object,\n ReturnType<Store['getState']>\n> = () => {\n return ({ getState }) =>\n (next) =>\n (action) => {\n const enhanceAction = ({ uid }: { uid: string }) => {\n // the block here is to catch the error when trying to access the state\n // of the ctb when the plugin is not mounted\n try {\n const store = getState();\n\n const type = get(store, [\n 'content-type-builder_dataManagerProvider',\n 'current',\n 'contentTypes',\n uid,\n ]);\n\n if (!type || type.modelType !== 'contentType') {\n return next(action);\n }\n\n const hasi18nEnabled = get(type, ['pluginOptions', 'i18n', 'localized'], false);\n\n if (hasi18nEnabled) {\n return next({\n ...action,\n payload: {\n ...action.payload,\n options: {\n pluginOptions: {\n ...(action?.payload?.options?.pluginOptions ?? {}),\n i18n: {\n localized: true,\n },\n },\n },\n },\n });\n }\n\n return next(action);\n } catch (err) {\n return next(action);\n }\n };\n\n const { payload = {}, type } = action ?? {};\n\n if (\n type === 'formModal/setAttributeDataSchema' &&\n !['relation', 'component'].includes(payload.attributeType) &&\n !payload.isEditing\n ) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n if (type === 'formModal/setCustomFieldDataSchema' && !payload.isEditing) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n if (\n type === 'formModal/resetPropsAndSetFormForAddingAnExistingCompo' ||\n type === 'formModal/resetPropsAndSaveCurrentData'\n ) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n return next(action);\n };\n};\n\nexport { extendCTBAttributeInitialDataMiddleware };\n"],"names":["extendCTBAttributeInitialDataMiddleware","getState","next","action","enhanceAction","uid","store","type","get","modelType","hasi18nEnabled","payload","options","pluginOptions","i18n","localized","err","includes","attributeType","isEditing"],"mappings":";;;;AAKA,MAAMA,uCAAAA,GAGF,IAAA;AACF,IAAA,OAAO,CAAC,EAAEC,QAAQ,EAAE,GAClB,CAACC,OACD,CAACC,MAAAA,GAAAA;AACC,gBAAA,MAAMC,aAAAA,GAAgB,CAAC,EAAEC,GAAG,EAAmB,GAAA;;;oBAG7C,IAAI;AACF,wBAAA,MAAMC,KAAAA,GAAQL,QAAAA,EAAAA;wBAEd,MAAMM,IAAAA,GAAOC,IAAIF,KAAAA,EAAO;AACtB,4BAAA,0CAAA;AACA,4BAAA,SAAA;AACA,4BAAA,cAAA;AACAD,4BAAAA;AACD,yBAAA,CAAA;AAED,wBAAA,IAAI,CAACE,IAAAA,IAAQA,IAAAA,CAAKE,SAAS,KAAK,aAAA,EAAe;AAC7C,4BAAA,OAAOP,IAAAA,CAAKC,MAAAA,CAAAA;AACd,wBAAA;wBAEA,MAAMO,cAAAA,GAAiBF,IAAID,IAAAA,EAAM;AAAC,4BAAA,eAAA;AAAiB,4BAAA,MAAA;AAAQ,4BAAA;yBAAY,EAAE,KAAA,CAAA;AAEzE,wBAAA,IAAIG,cAAAA,EAAgB;AAClB,4BAAA,OAAOR,IAAAA,CAAK;AACV,gCAAA,GAAGC,MAAM;gCACTQ,OAAAA,EAAS;AACP,oCAAA,GAAGR,OAAOQ,OAAO;oCACjBC,OAAAA,EAAS;wCACPC,aAAAA,EAAe;AACb,4CAAA,GAAIV,MAAAA,EAAQQ,OAAAA,EAASC,OAAAA,EAASC,aAAAA,IAAiB,EAAE;4CACjDC,IAAAA,EAAM;gDACJC,SAAAA,EAAW;AACb;AACF;AACF;AACF;AACF,6BAAA,CAAA;AACF,wBAAA;AAEA,wBAAA,OAAOb,IAAAA,CAAKC,MAAAA,CAAAA;AACd,oBAAA,CAAA,CAAE,OAAOa,GAAAA,EAAK;AACZ,wBAAA,OAAOd,IAAAA,CAAKC,MAAAA,CAAAA;AACd,oBAAA;AACF,gBAAA,CAAA;gBAEA,MAAM,EAAEQ,UAAU,EAAE,EAAEJ,IAAI,EAAE,GAAGJ,MAAAA,IAAU,EAAC;gBAE1C,IACEI,IAAAA,KAAS,sCACT,CAAC;AAAC,oBAAA,UAAA;AAAY,oBAAA;iBAAY,CAACU,QAAQ,CAACN,OAAAA,CAAQO,aAAa,KACzD,CAACP,OAAAA,CAAQQ,SAAS,EAClB;AACA,oBAAA,OAAOf,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,IAAIE,IAAAA,KAAS,oCAAA,IAAwC,CAACI,OAAAA,CAAQQ,SAAS,EAAE;AACvE,oBAAA,OAAOf,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;gBAEA,IACEE,IAAAA,KAAS,wDAAA,IACTA,IAAAA,KAAS,wCAAA,EACT;AACA,oBAAA,OAAOH,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,OAAOH,IAAAA,CAAKC,MAAAA,CAAAA;AACd,YAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"extendCTBAttributeInitialData.js","sources":["../../../admin/src/middlewares/extendCTBAttributeInitialData.ts"],"sourcesContent":["import get from 'lodash/get';\n\nimport type { Middleware } from '@reduxjs/toolkit';\nimport type { Store } from '@strapi/admin/strapi-admin';\n\nconst extendCTBAttributeInitialDataMiddleware: () => Middleware<\n object,\n ReturnType<Store['getState']>\n> = () => {\n return ({ getState }) =>\n (next) =>\n (action) => {\n const enhanceAction = ({ uid }: { uid: string }) => {\n // the block here is to catch the error when trying to access the state\n // of the ctb when the plugin is not mounted\n try {\n const store = getState();\n\n const type = get(store, [\n 'content-type-builder_dataManagerProvider',\n 'current',\n 'contentTypes',\n uid,\n ]);\n\n if (!type || type.modelType !== 'contentType') {\n return next(action);\n }\n\n const hasi18nEnabled = get(type, ['pluginOptions', 'i18n', 'localized'], false);\n\n if (hasi18nEnabled) {\n return next({\n ...action,\n payload: {\n ...action.payload,\n options: {\n pluginOptions: {\n ...(action?.payload?.options?.pluginOptions ?? {}),\n i18n: {\n localized: true,\n },\n },\n },\n },\n });\n }\n\n return next(action);\n } catch (err) {\n return next(action);\n }\n };\n\n const { payload = {}, type } = action ?? {};\n\n if (\n type === 'formModal/setAttributeDataSchema' &&\n !['relation', 'component'].includes(payload.attributeType) &&\n !payload.isEditing\n ) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n if (type === 'formModal/setCustomFieldDataSchema' && !payload.isEditing) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n if (\n type === 'formModal/resetPropsAndSetFormForAddingAnExistingCompo' ||\n type === 'formModal/resetPropsAndSaveCurrentData'\n ) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n return next(action);\n };\n};\n\nexport { extendCTBAttributeInitialDataMiddleware };\n"],"names":["extendCTBAttributeInitialDataMiddleware","getState","next","action","enhanceAction","uid","store","type","get","modelType","hasi18nEnabled","payload","options","pluginOptions","i18n","localized","err","includes","attributeType","isEditing"],"mappings":";;;;;;;;AAKA,MAAMA,uCAAAA,GAGF,IAAA;AACF,IAAA,OAAO,CAAC,EAAEC,QAAQ,EAAE,GAClB,CAACC,OACD,CAACC,MAAAA,GAAAA;AACC,gBAAA,MAAMC,aAAAA,GAAgB,CAAC,EAAEC,GAAG,EAAmB,GAAA;;;oBAG7C,IAAI;AACF,wBAAA,MAAMC,KAAAA,GAAQL,QAAAA,EAAAA;wBAEd,MAAMM,IAAAA,GAAOC,qBAAIF,KAAAA,EAAO;AACtB,4BAAA,0CAAA;AACA,4BAAA,SAAA;AACA,4BAAA,cAAA;AACAD,4BAAAA;AACD,yBAAA,CAAA;AAED,wBAAA,IAAI,CAACE,IAAAA,IAAQA,IAAAA,CAAKE,SAAS,KAAK,aAAA,EAAe;AAC7C,4BAAA,OAAOP,IAAAA,CAAKC,MAAAA,CAAAA;AACd,wBAAA;wBAEA,MAAMO,cAAAA,GAAiBF,qBAAID,IAAAA,EAAM;AAAC,4BAAA,eAAA;AAAiB,4BAAA,MAAA;AAAQ,4BAAA;yBAAY,EAAE,KAAA,CAAA;AAEzE,wBAAA,IAAIG,cAAAA,EAAgB;AAClB,4BAAA,OAAOR,IAAAA,CAAK;AACV,gCAAA,GAAGC,MAAM;gCACTQ,OAAAA,EAAS;AACP,oCAAA,GAAGR,OAAOQ,OAAO;oCACjBC,OAAAA,EAAS;wCACPC,aAAAA,EAAe;AACb,4CAAA,GAAIV,MAAAA,EAAQQ,OAAAA,EAASC,OAAAA,EAASC,aAAAA,IAAiB,EAAE;4CACjDC,IAAAA,EAAM;gDACJC,SAAAA,EAAW;AACb;AACF;AACF;AACF;AACF,6BAAA,CAAA;AACF,wBAAA;AAEA,wBAAA,OAAOb,IAAAA,CAAKC,MAAAA,CAAAA;AACd,oBAAA,CAAA,CAAE,OAAOa,GAAAA,EAAK;AACZ,wBAAA,OAAOd,IAAAA,CAAKC,MAAAA,CAAAA;AACd,oBAAA;AACF,gBAAA,CAAA;gBAEA,MAAM,EAAEQ,UAAU,EAAE,EAAEJ,IAAI,EAAE,GAAGJ,MAAAA,IAAU,EAAC;gBAE1C,IACEI,IAAAA,KAAS,sCACT,CAAC;AAAC,oBAAA,UAAA;AAAY,oBAAA;iBAAY,CAACU,QAAQ,CAACN,OAAAA,CAAQO,aAAa,KACzD,CAACP,OAAAA,CAAQQ,SAAS,EAClB;AACA,oBAAA,OAAOf,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,IAAIE,IAAAA,KAAS,oCAAA,IAAwC,CAACI,OAAAA,CAAQQ,SAAS,EAAE;AACvE,oBAAA,OAAOf,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;gBAEA,IACEE,IAAAA,KAAS,wDAAA,IACTA,IAAAA,KAAS,wCAAA,EACT;AACA,oBAAA,OAAOH,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,OAAOH,IAAAA,CAAKC,MAAAA,CAAAA;AACd,YAAA,CAAA;AACJ;;;;"}
@@ -3,7 +3,8 @@
3
3
  var qs = require('qs');
4
4
  var reactRouterDom = require('react-router-dom');
5
5
 
6
- function _interopNamespaceDefault(e) {
6
+ function _interopNamespace(e) {
7
+ if (e && e.__esModule) return e;
7
8
  var n = Object.create(null);
8
9
  if (e) {
9
10
  Object.keys(e).forEach(function (k) {
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
20
21
  return Object.freeze(n);
21
22
  }
22
23
 
23
- var qs__namespace = /*#__PURE__*/_interopNamespaceDefault(qs);
24
+ var qs__namespace = /*#__PURE__*/_interopNamespace(qs);
24
25
 
25
26
  const localeMiddleware = (ctx)=>(next)=>(permissions)=>{
26
27
  const match = reactRouterDom.matchPath('/content-manager/:collectionType/:model?/:id', ctx.pathname);
@@ -1 +1 @@
1
- {"version":3,"file":"rbac-middleware.js","sources":["../../../admin/src/middlewares/rbac-middleware.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as qs from 'qs';\nimport { matchPath } from 'react-router-dom';\n\nimport type { RBACMiddleware } from '@strapi/admin/strapi-admin';\n\nconst localeMiddleware: RBACMiddleware = (ctx) => (next) => (permissions) => {\n const match = matchPath('/content-manager/:collectionType/:model?/:id', ctx.pathname);\n\n if (!match) {\n return next(permissions);\n }\n\n const search = qs.parse(ctx.search);\n\n if (typeof search !== 'object') {\n return next(permissions);\n }\n\n if (!('plugins' in search && typeof search.plugins === 'object')) {\n return next(permissions);\n }\n\n if (\n !(\n 'i18n' in search.plugins &&\n typeof search.plugins.i18n === 'object' &&\n !Array.isArray(search.plugins.i18n)\n )\n ) {\n return next(permissions);\n }\n\n const { locale } = search.plugins.i18n;\n\n if (typeof locale !== 'string') {\n return next(permissions);\n }\n\n const revisedPermissions = permissions.filter(\n (permission) =>\n !permission.properties?.locales || permission.properties.locales.includes(locale)\n );\n\n return next(revisedPermissions);\n};\n\nexport { localeMiddleware };\n"],"names":["localeMiddleware","ctx","next","permissions","match","matchPath","pathname","search","qs","parse","plugins","i18n","Array","isArray","locale","revisedPermissions","filter","permission","properties","locales","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,gBAAAA,GAAmC,CAACC,GAAAA,GAAQ,CAACC,OAAS,CAACC,WAAAA,GAAAA;AAC3D,YAAA,MAAMC,KAAAA,GAAQC,wBAAAA,CAAU,8CAAA,EAAgDJ,GAAAA,CAAIK,QAAQ,CAAA;AAEpF,YAAA,IAAI,CAACF,KAAAA,EAAO;AACV,gBAAA,OAAOF,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;AAEA,YAAA,MAAMI,MAAAA,GAASC,aAAAA,CAAGC,KAAK,CAACR,IAAIM,MAAM,CAAA;YAElC,IAAI,OAAOA,WAAW,QAAA,EAAU;AAC9B,gBAAA,OAAOL,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;YAEA,IAAI,EAAE,SAAA,IAAaI,MAAAA,IAAU,OAAOA,MAAAA,CAAOG,OAAO,KAAK,QAAO,CAAA,EAAI;AAChE,gBAAA,OAAOR,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;YAEA,IACE,EACE,MAAA,IAAUI,MAAAA,CAAOG,OAAO,IACxB,OAAOH,MAAAA,CAAOG,OAAO,CAACC,IAAI,KAAK,QAAA,IAC/B,CAACC,MAAMC,OAAO,CAACN,OAAOG,OAAO,CAACC,IAAI,CAAA,CAAA,EAEpC;AACA,gBAAA,OAAOT,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;AAEA,YAAA,MAAM,EAAEW,MAAM,EAAE,GAAGP,MAAAA,CAAOG,OAAO,CAACC,IAAI;YAEtC,IAAI,OAAOG,WAAW,QAAA,EAAU;AAC9B,gBAAA,OAAOZ,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;AAEA,YAAA,MAAMY,qBAAqBZ,WAAAA,CAAYa,MAAM,CAC3C,CAACC,aACC,CAACA,UAAAA,CAAWC,UAAU,EAAEC,WAAWF,UAAAA,CAAWC,UAAU,CAACC,OAAO,CAACC,QAAQ,CAACN,MAAAA,CAAAA,CAAAA;AAG9E,YAAA,OAAOZ,IAAAA,CAAKa,kBAAAA,CAAAA;AACd,QAAA;;;;"}
1
+ {"version":3,"file":"rbac-middleware.js","sources":["../../../admin/src/middlewares/rbac-middleware.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as qs from 'qs';\nimport { matchPath } from 'react-router-dom';\n\nimport type { RBACMiddleware } from '@strapi/admin/strapi-admin';\n\nconst localeMiddleware: RBACMiddleware = (ctx) => (next) => (permissions) => {\n const match = matchPath('/content-manager/:collectionType/:model?/:id', ctx.pathname);\n\n if (!match) {\n return next(permissions);\n }\n\n const search = qs.parse(ctx.search);\n\n if (typeof search !== 'object') {\n return next(permissions);\n }\n\n if (!('plugins' in search && typeof search.plugins === 'object')) {\n return next(permissions);\n }\n\n if (\n !(\n 'i18n' in search.plugins &&\n typeof search.plugins.i18n === 'object' &&\n !Array.isArray(search.plugins.i18n)\n )\n ) {\n return next(permissions);\n }\n\n const { locale } = search.plugins.i18n;\n\n if (typeof locale !== 'string') {\n return next(permissions);\n }\n\n const revisedPermissions = permissions.filter(\n (permission) =>\n !permission.properties?.locales || permission.properties.locales.includes(locale)\n );\n\n return next(revisedPermissions);\n};\n\nexport { localeMiddleware };\n"],"names":["localeMiddleware","ctx","next","permissions","match","matchPath","pathname","search","qs","parse","plugins","i18n","Array","isArray","locale","revisedPermissions","filter","permission","properties","locales","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,gBAAAA,GAAmC,CAACC,GAAAA,GAAQ,CAACC,OAAS,CAACC,WAAAA,GAAAA;AAC3D,YAAA,MAAMC,KAAAA,GAAQC,wBAAAA,CAAU,8CAAA,EAAgDJ,GAAAA,CAAIK,QAAQ,CAAA;AAEpF,YAAA,IAAI,CAACF,KAAAA,EAAO;AACV,gBAAA,OAAOF,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;AAEA,YAAA,MAAMI,MAAAA,GAASC,aAAAA,CAAGC,KAAK,CAACR,IAAIM,MAAM,CAAA;YAElC,IAAI,OAAOA,WAAW,QAAA,EAAU;AAC9B,gBAAA,OAAOL,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;YAEA,IAAI,EAAE,SAAA,IAAaI,MAAAA,IAAU,OAAOA,MAAAA,CAAOG,OAAO,KAAK,QAAO,CAAA,EAAI;AAChE,gBAAA,OAAOR,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;YAEA,IACE,EACE,MAAA,IAAUI,MAAAA,CAAOG,OAAO,IACxB,OAAOH,MAAAA,CAAOG,OAAO,CAACC,IAAI,KAAK,QAAA,IAC/B,CAACC,MAAMC,OAAO,CAACN,OAAOG,OAAO,CAACC,IAAI,CAAA,CAAA,EAEpC;AACA,gBAAA,OAAOT,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;AAEA,YAAA,MAAM,EAAEW,MAAM,EAAE,GAAGP,MAAAA,CAAOG,OAAO,CAACC,IAAI;YAEtC,IAAI,OAAOG,WAAW,QAAA,EAAU;AAC9B,gBAAA,OAAOZ,IAAAA,CAAKC,WAAAA,CAAAA;AACd,YAAA;AAEA,YAAA,MAAMY,qBAAqBZ,WAAAA,CAAYa,MAAM,CAC3C,CAACC,aACC,CAACA,UAAAA,CAAWC,UAAU,EAAEC,WAAWF,UAAAA,CAAWC,UAAU,CAACC,OAAO,CAACC,QAAQ,CAACN,MAAAA,CAAAA,CAAAA;AAG9E,YAAA,OAAOZ,IAAAA,CAAKa,kBAAAA,CAAAA;AACd,QAAA;;;;"}
@@ -2,6 +2,10 @@
2
2
 
3
3
  var has = require('lodash/has');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var has__default = /*#__PURE__*/_interopDefault(has);
8
+
5
9
  const LOCALIZED_FIELDS = [
6
10
  'biginteger',
7
11
  'boolean',
@@ -24,7 +28,7 @@ const LOCALIZED_FIELDS = [
24
28
  'text',
25
29
  'time'
26
30
  ];
27
- const doesPluginOptionsHaveI18nLocalized = (opts)=>has(opts, [
31
+ const doesPluginOptionsHaveI18nLocalized = (opts)=>has__default.default(opts, [
28
32
  'i18n',
29
33
  'localized'
30
34
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sources":["../../../admin/src/utils/fields.ts"],"sourcesContent":["import has from 'lodash/has';\n\nconst LOCALIZED_FIELDS = [\n 'biginteger',\n 'boolean',\n 'component',\n 'date',\n 'datetime',\n 'decimal',\n 'dynamiczone',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'media',\n 'number',\n 'password',\n 'richtext',\n 'blocks',\n 'string',\n 'text',\n 'time',\n];\n\nconst doesPluginOptionsHaveI18nLocalized = (\n opts?: object\n): opts is { i18n: { localized: boolean } } => has(opts, ['i18n', 'localized']);\n\nexport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized };\n"],"names":["LOCALIZED_FIELDS","doesPluginOptionsHaveI18nLocalized","opts","has"],"mappings":";;;;AAEA,MAAMA,gBAAAA,GAAmB;AACvB,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD;AAED,MAAMC,kCAAAA,GAAqC,CACzCC,IAAAA,GAC6CC,GAAAA,CAAID,IAAAA,EAAM;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAY,KAAA;;;;;"}
1
+ {"version":3,"file":"fields.js","sources":["../../../admin/src/utils/fields.ts"],"sourcesContent":["import has from 'lodash/has';\n\nconst LOCALIZED_FIELDS = [\n 'biginteger',\n 'boolean',\n 'component',\n 'date',\n 'datetime',\n 'decimal',\n 'dynamiczone',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'media',\n 'number',\n 'password',\n 'richtext',\n 'blocks',\n 'string',\n 'text',\n 'time',\n];\n\nconst doesPluginOptionsHaveI18nLocalized = (\n opts?: object\n): opts is { i18n: { localized: boolean } } => has(opts, ['i18n', 'localized']);\n\nexport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized };\n"],"names":["LOCALIZED_FIELDS","doesPluginOptionsHaveI18nLocalized","opts","has"],"mappings":";;;;;;;;AAEA,MAAMA,gBAAAA,GAAmB;AACvB,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,SAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD;AAED,MAAMC,kCAAAA,GAAqC,CACzCC,IAAAA,GAC6CC,oBAAAA,CAAID,IAAAA,EAAM;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAY,KAAA;;;;;"}