{"version":3,"file":"index.mjs","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: ContentTypeBuilderAdvancedFieldArgs) => Array<Record<string, unknown>>;\n      };\n    }\n  ) => void;\n};\n\ntype ContentTypeBuilderAdvancedFieldArgs = {\n  contentTypeSchema?: Record<string, unknown>;\n  forTarget: string;\n  step?: string;\n  type?: string;\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({\n            contentTypeSchema,\n            forTarget,\n            type,\n            step,\n          }: ContentTypeBuilderAdvancedFieldArgs) {\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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"}