{"version":3,"file":"ReleasesPanel.mjs","sources":["../../../admin/src/components/ReleasesPanel.tsx"],"sourcesContent":["import { useRBAC, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocumentLayout as useDocumentLayout } from '@strapi/content-manager/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { PERMISSIONS } from '../constants';\nimport { useGetReleasesForEntryQuery } from '../services/release';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { ReleaseActionMenu } from './ReleaseActionMenu';\n\nimport type { PanelComponent, PanelComponentProps } from '@strapi/content-manager/strapi-admin';\n\nconst Panel: PanelComponent = ({\n  model,\n  document,\n  documentId,\n  collectionType,\n}: PanelComponentProps) => {\n  const [{ query }] = useQueryParams<{ plugins: { i18n: { locale: string } } }>();\n  const locale = query.plugins?.i18n?.locale;\n\n  const {\n    edit: { options },\n  } = useDocumentLayout(model);\n  const { formatMessage, formatDate, formatTime } = useIntl();\n\n  const { allowedActions } = useRBAC(PERMISSIONS);\n  const { canRead, canDeleteAction } = allowedActions;\n\n  const response = useGetReleasesForEntryQuery(\n    {\n      contentType: model,\n      entryDocumentId: documentId,\n      locale,\n      hasEntryAttached: true,\n    },\n    {\n      skip: !document,\n    }\n  );\n  const releases = response.data?.data;\n\n  const getReleaseColorVariant = (\n    actionType: 'publish' | 'unpublish',\n    shade: '100' | '200' | '600'\n  ) => {\n    if (actionType === 'unpublish') {\n      return `secondary${shade}`;\n    }\n\n    return `success${shade}`;\n  };\n\n  // Project is not EE or contentType does not have draftAndPublish enabled\n  if (!window.strapi.isEE || !options?.draftAndPublish || !canRead) {\n    return null;\n  }\n\n  if (collectionType === 'collection-types' && (!documentId || documentId === 'create')) {\n    return null;\n  }\n\n  if (!releases || releases.length === 0) {\n    return null;\n  }\n\n  return {\n    title: formatMessage({\n      id: 'content-releases.plugin.name',\n      defaultMessage: 'Releases',\n    }),\n    content: (\n      <Flex direction=\"column\" alignItems=\"stretch\" gap={3} width=\"100%\">\n        {releases?.map((release) => (\n          <Flex\n            key={release.id}\n            direction=\"column\"\n            alignItems=\"start\"\n            borderWidth=\"1px\"\n            borderStyle=\"solid\"\n            borderColor={getReleaseColorVariant(release.actions[0].type, '200')}\n            overflow=\"hidden\"\n            hasRadius\n          >\n            <Box\n              paddingTop={3}\n              paddingBottom={3}\n              paddingLeft={4}\n              paddingRight={4}\n              background={getReleaseColorVariant(release.actions[0].type, '100')}\n              width=\"100%\"\n            >\n              <Typography\n                fontSize={1}\n                variant=\"pi\"\n                textColor={getReleaseColorVariant(release.actions[0].type, '600')}\n              >\n                {formatMessage(\n                  {\n                    id: 'content-releases.content-manager-edit-view.list-releases.title',\n                    defaultMessage:\n                      '{isPublish, select, true {Will be published in} other {Will be unpublished in}}',\n                  },\n                  { isPublish: release.actions[0].type === 'publish' }\n                )}\n              </Typography>\n            </Box>\n            <Flex padding={4} direction=\"column\" gap={2} width=\"100%\" alignItems=\"flex-start\">\n              <Typography fontSize={2} fontWeight=\"bold\" variant=\"omega\" textColor=\"neutral700\">\n                {release.name}\n              </Typography>\n              {release.scheduledAt && release.timezone && (\n                <Typography variant=\"pi\" textColor=\"neutral600\">\n                  {formatMessage(\n                    {\n                      id: 'content-releases.content-manager-edit-view.scheduled.date',\n                      defaultMessage: '{date} at {time} ({offset})',\n                    },\n                    {\n                      date: formatDate(new Date(release.scheduledAt), {\n                        day: '2-digit',\n                        month: '2-digit',\n                        year: 'numeric',\n                        timeZone: release.timezone,\n                      }),\n                      time: formatTime(new Date(release.scheduledAt), {\n                        hourCycle: 'h23',\n                        timeZone: release.timezone,\n                      }),\n                      offset: getTimezoneOffset(release.timezone, new Date(release.scheduledAt)),\n                    }\n                  )}\n                </Typography>\n              )}\n              {canDeleteAction ? (\n                <ReleaseActionMenu.Root hasTriggerBorder>\n                  <ReleaseActionMenu.EditReleaseItem releaseId={release.id} />\n                  <ReleaseActionMenu.DeleteReleaseActionItem\n                    releaseId={release.id}\n                    actionId={release.actions[0].id}\n                  />\n                </ReleaseActionMenu.Root>\n              ) : null}\n            </Flex>\n          </Flex>\n        ))}\n      </Flex>\n    ),\n  };\n};\n\nexport { Panel };\n"],"names":["Panel","model","document","documentId","collectionType","query","useQueryParams","locale","plugins","i18n","edit","options","useDocumentLayout","formatMessage","formatDate","formatTime","useIntl","allowedActions","useRBAC","PERMISSIONS","canRead","canDeleteAction","response","useGetReleasesForEntryQuery","contentType","entryDocumentId","hasEntryAttached","skip","releases","data","getReleaseColorVariant","actionType","shade","window","strapi","isEE","draftAndPublish","length","title","id","defaultMessage","content","_jsx","Flex","direction","alignItems","gap","width","map","release","_jsxs","borderWidth","borderStyle","borderColor","actions","type","overflow","hasRadius","Box","paddingTop","paddingBottom","paddingLeft","paddingRight","background","Typography","fontSize","variant","textColor","isPublish","padding","fontWeight","name","scheduledAt","timezone","date","Date","day","month","year","timeZone","time","hourCycle","offset","getTimezoneOffset","ReleaseActionMenu","Root","hasTriggerBorder","EditReleaseItem","releaseId","DeleteReleaseActionItem","actionId"],"mappings":"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"}