{"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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"}