{"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n  DocumentActionComponent,\n  BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  register(app: StrapiApp) {\n    /**\n     * Hook that adds the locale column in the Release Details table\n     * @constant\n     * @type {string}\n     */\n    app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n    if (window.strapi.features.isEnabled('cms-content-releases')) {\n      app.addMenuLink({\n        to: `plugins/${pluginId}`,\n        icon: PaperPlane,\n        intlLabel: {\n          id: `${pluginId}.plugin.name`,\n          defaultMessage: 'Releases',\n        },\n        Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n        permissions: PERMISSIONS.main,\n        position: 2,\n      });\n\n      // Insert the releases container into the CM's sidebar on the Edit View\n      const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n      if (\n        'addEditViewSidePanel' in contentManagerPluginApis &&\n        typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n      ) {\n        contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n      }\n\n      // Insert the \"add to release\" action into the CM's Edit View\n      if (\n        'addDocumentAction' in contentManagerPluginApis &&\n        typeof contentManagerPluginApis.addDocumentAction === 'function'\n      ) {\n        contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n          const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n          actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n          return actions;\n        });\n      }\n\n      app.addSettingsLink('global', {\n        id: pluginId,\n        to: 'releases',\n        intlLabel: {\n          id: `${pluginId}.plugin.name`,\n          defaultMessage: 'Releases',\n        },\n        licenseOnly: true,\n        permissions: [],\n        async Component() {\n          const { ProtectedReleasesSettingsPage } = await import('./pages/ReleasesSettingsPage');\n          return { default: ProtectedReleasesSettingsPage };\n        },\n      });\n\n      if (\n        'addBulkAction' in contentManagerPluginApis &&\n        typeof contentManagerPluginApis.addBulkAction === 'function'\n      ) {\n        contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n          // We want to add this action to just before the delete action all the time\n          const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n          actions.splice(deleteActionIndex, 0, ReleaseAction);\n          return actions;\n        });\n      }\n\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\n      app.widgets.register([\n        {\n          icon: PaperPlane,\n          title: {\n            id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n            defaultMessage: 'Upcoming releases',\n          },\n          component: async () => {\n            const { UpcomingReleasesWidget } = await import('./components/Widgets');\n            return UpcomingReleasesWidget;\n          },\n          pluginId: PLUGIN_ID,\n          id: 'upcoming-releases',\n          link: {\n            label: {\n              id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n              defaultMessage: 'Open Releases',\n            },\n            href: '/plugins/content-releases',\n          },\n        },\n      ]);\n    } else if (\n      !window.strapi.features.isEnabled('cms-content-releases') &&\n      window.strapi?.flags?.promoteEE\n    ) {\n      app.addSettingsLink('global', {\n        id: pluginId,\n        to: '/plugins/purchase-content-releases',\n        intlLabel: {\n          id: `${pluginId}.plugin.name`,\n          defaultMessage: 'Releases',\n        },\n        permissions: [],\n        async Component() {\n          const { PurchaseContentReleases } = await import('./pages/PurchaseContentReleases');\n          return { default: PurchaseContentReleases };\n        },\n        licenseOnly: true,\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, 'content-releases'),\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\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}