@strapi/content-releases 0.0.0-experimental.d00dc50c81bce037c4321a90cc2f790eb3c51acb → 0.0.0-experimental.d23c1d5b0e45dd06ef09977f526c85468be05403

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 (108) hide show
  1. package/dist/_chunks/{App-gu1aiP6i.mjs → App-Cmn2Mkn7.mjs} +213 -200
  2. package/dist/_chunks/App-Cmn2Mkn7.mjs.map +1 -0
  3. package/dist/_chunks/{App-HjWtUYmc.js → App-FVorrIzF.js} +224 -211
  4. package/dist/_chunks/App-FVorrIzF.js.map +1 -0
  5. package/dist/_chunks/{PurchaseContentReleases-3tRbmbY3.mjs → PurchaseContentReleases-C8djn9fP.mjs} +1 -1
  6. package/dist/_chunks/{PurchaseContentReleases-3tRbmbY3.mjs.map → PurchaseContentReleases-C8djn9fP.mjs.map} +1 -1
  7. package/dist/_chunks/{PurchaseContentReleases-bpIYXOfu.js → PurchaseContentReleases-sD6ADHk2.js} +1 -1
  8. package/dist/_chunks/{PurchaseContentReleases-bpIYXOfu.js.map → PurchaseContentReleases-sD6ADHk2.js.map} +1 -1
  9. package/dist/_chunks/{en-ltT1TlKQ.mjs → en-B9Ur3VsE.mjs} +1 -1
  10. package/dist/_chunks/en-B9Ur3VsE.mjs.map +1 -0
  11. package/dist/_chunks/{en-HrREghh3.js → en-DtFJ5ViE.js} +1 -1
  12. package/dist/_chunks/en-DtFJ5ViE.js.map +1 -0
  13. package/dist/_chunks/{index-ZNwxYN8H.js → index-BfJLth9Z.js} +120 -189
  14. package/dist/_chunks/index-BfJLth9Z.js.map +1 -0
  15. package/dist/_chunks/{index-mvj9PSKd.mjs → index-DDohgTaQ.mjs} +125 -194
  16. package/dist/_chunks/index-DDohgTaQ.mjs.map +1 -0
  17. package/dist/admin/index.js +1 -15
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +2 -16
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/admin/src/components/CMReleasesContainer.d.ts +22 -0
  22. package/dist/admin/src/components/RelativeTime.d.ts +28 -0
  23. package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
  24. package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
  25. package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
  26. package/dist/admin/src/components/ReleaseListCell.d.ts +0 -0
  27. package/dist/admin/src/components/ReleaseModal.d.ts +16 -0
  28. package/dist/admin/src/constants.d.ts +58 -0
  29. package/dist/admin/src/index.d.ts +3 -0
  30. package/dist/admin/src/pages/App.d.ts +1 -0
  31. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
  32. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
  33. package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
  34. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
  35. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
  36. package/dist/admin/src/pluginId.d.ts +1 -0
  37. package/dist/admin/src/services/axios.d.ts +29 -0
  38. package/dist/admin/src/services/release.d.ts +429 -0
  39. package/dist/admin/src/store/hooks.d.ts +7 -0
  40. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  41. package/dist/admin/src/utils/time.d.ts +1 -0
  42. package/dist/server/index.js +83 -86
  43. package/dist/server/index.js.map +1 -1
  44. package/dist/server/index.mjs +84 -86
  45. package/dist/server/index.mjs.map +1 -1
  46. package/dist/server/src/bootstrap.d.ts +5 -0
  47. package/dist/server/src/bootstrap.d.ts.map +1 -0
  48. package/dist/server/src/constants.d.ts +12 -0
  49. package/dist/server/src/constants.d.ts.map +1 -0
  50. package/dist/server/src/content-types/index.d.ts +99 -0
  51. package/dist/server/src/content-types/index.d.ts.map +1 -0
  52. package/dist/server/src/content-types/release/index.d.ts +48 -0
  53. package/dist/server/src/content-types/release/index.d.ts.map +1 -0
  54. package/dist/server/src/content-types/release/schema.d.ts +47 -0
  55. package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
  56. package/dist/server/src/content-types/release-action/index.d.ts +50 -0
  57. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
  58. package/dist/server/src/content-types/release-action/schema.d.ts +49 -0
  59. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
  60. package/dist/server/src/controllers/index.d.ts +20 -0
  61. package/dist/server/src/controllers/index.d.ts.map +1 -0
  62. package/dist/server/src/controllers/release-action.d.ts +10 -0
  63. package/dist/server/src/controllers/release-action.d.ts.map +1 -0
  64. package/dist/server/src/controllers/release.d.ts +12 -0
  65. package/dist/server/src/controllers/release.d.ts.map +1 -0
  66. package/dist/server/src/controllers/validation/release-action.d.ts +8 -0
  67. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
  68. package/dist/server/src/controllers/validation/release.d.ts +2 -0
  69. package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
  70. package/dist/server/src/destroy.d.ts +5 -0
  71. package/dist/server/src/destroy.d.ts.map +1 -0
  72. package/dist/server/src/index.d.ts +2096 -0
  73. package/dist/server/src/index.d.ts.map +1 -0
  74. package/dist/server/src/migrations/index.d.ts +13 -0
  75. package/dist/server/src/migrations/index.d.ts.map +1 -0
  76. package/dist/server/src/register.d.ts +5 -0
  77. package/dist/server/src/register.d.ts.map +1 -0
  78. package/dist/server/src/routes/index.d.ts +35 -0
  79. package/dist/server/src/routes/index.d.ts.map +1 -0
  80. package/dist/server/src/routes/release-action.d.ts +18 -0
  81. package/dist/server/src/routes/release-action.d.ts.map +1 -0
  82. package/dist/server/src/routes/release.d.ts +18 -0
  83. package/dist/server/src/routes/release.d.ts.map +1 -0
  84. package/dist/server/src/services/index.d.ts +1826 -0
  85. package/dist/server/src/services/index.d.ts.map +1 -0
  86. package/dist/server/src/services/release.d.ts +66 -0
  87. package/dist/server/src/services/release.d.ts.map +1 -0
  88. package/dist/server/src/services/scheduling.d.ts +18 -0
  89. package/dist/server/src/services/scheduling.d.ts.map +1 -0
  90. package/dist/server/src/services/validation.d.ts +18 -0
  91. package/dist/server/src/services/validation.d.ts.map +1 -0
  92. package/dist/server/src/utils/index.d.ts +14 -0
  93. package/dist/server/src/utils/index.d.ts.map +1 -0
  94. package/dist/shared/contracts/release-actions.d.ts +131 -0
  95. package/dist/shared/contracts/release-actions.d.ts.map +1 -0
  96. package/dist/shared/contracts/releases.d.ts +182 -0
  97. package/dist/shared/contracts/releases.d.ts.map +1 -0
  98. package/dist/shared/types.d.ts +24 -0
  99. package/dist/shared/types.d.ts.map +1 -0
  100. package/dist/shared/validation-schemas.d.ts +2 -0
  101. package/dist/shared/validation-schemas.d.ts.map +1 -0
  102. package/package.json +26 -31
  103. package/dist/_chunks/App-HjWtUYmc.js.map +0 -1
  104. package/dist/_chunks/App-gu1aiP6i.mjs.map +0 -1
  105. package/dist/_chunks/en-HrREghh3.js.map +0 -1
  106. package/dist/_chunks/en-ltT1TlKQ.mjs.map +0 -1
  107. package/dist/_chunks/index-ZNwxYN8H.js.map +0 -1
  108. package/dist/_chunks/index-mvj9PSKd.mjs.map +0 -1
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const helperPlugin = require("@strapi/helper-plugin");
4
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
5
5
  const reactRouterDom = require("react-router-dom");
6
- const index = require("./index-ZNwxYN8H.js");
6
+ const index = require("./index-BfJLth9Z.js");
7
7
  const React = require("react");
8
- const strapiAdmin = require("@strapi/admin/strapi-admin");
9
8
  const designSystem = require("@strapi/design-system");
10
9
  const v2 = require("@strapi/design-system/v2");
11
10
  const icons = require("@strapi/icons");
11
+ const strapiAdmin$1 = require("@strapi/plugin-content-manager/strapi-admin");
12
12
  const format = require("date-fns/format");
13
13
  const dateFnsTz = require("date-fns-tz");
14
14
  const reactIntl = require("react-intl");
@@ -16,10 +16,8 @@ const styled = require("styled-components");
16
16
  const dateFns = require("date-fns");
17
17
  const formik = require("formik");
18
18
  const yup = require("yup");
19
- require("@reduxjs/toolkit/query");
20
- require("axios");
21
- require("@reduxjs/toolkit/query/react");
22
- require("react-redux");
19
+ const reactRedux = require("react-redux");
20
+ const ee = require("@strapi/admin/strapi-admin/ee");
23
21
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
24
22
  function _interopNamespace(e) {
25
23
  if (e && e.__esModule)
@@ -43,6 +41,36 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
43
41
  const format__default = /* @__PURE__ */ _interopDefault(format);
44
42
  const styled__default = /* @__PURE__ */ _interopDefault(styled);
45
43
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
44
+ const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
45
+ const RelativeTime$1 = React__namespace.forwardRef(
46
+ ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
47
+ const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
48
+ const interval = dateFns.intervalToDuration({
49
+ start: timestamp,
50
+ end: Date.now()
51
+ // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
52
+ });
53
+ const unit = intervals.find((intervalUnit) => {
54
+ return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
55
+ });
56
+ const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
57
+ const customInterval = customIntervals.find(
58
+ (custom) => interval[custom.unit] < custom.threshold
59
+ );
60
+ const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
61
+ return /* @__PURE__ */ jsxRuntime.jsx(
62
+ "time",
63
+ {
64
+ ref: forwardedRef,
65
+ dateTime: timestamp.toISOString(),
66
+ role: "time",
67
+ title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
68
+ ...restProps,
69
+ children: displayText
70
+ }
71
+ );
72
+ }
73
+ );
46
74
  const RELEASE_SCHEMA = yup__namespace.object().shape({
47
75
  name: yup__namespace.string().trim().required(),
48
76
  scheduledAt: yup__namespace.string().nullable(),
@@ -280,10 +308,11 @@ const TimezoneComponent = ({ timezoneOptions }) => {
280
308
  }
281
309
  );
282
310
  };
311
+ const useTypedDispatch = reactRedux.useDispatch;
283
312
  const LinkCard = styled__default.default(v2.Link)`
284
313
  display: block;
285
314
  `;
286
- const RelativeTime = styled__default.default(helperPlugin.RelativeTime)`
315
+ const RelativeTime = styled__default.default(RelativeTime$1)`
287
316
  display: inline-block;
288
317
  &::first-letter {
289
318
  text-transform: uppercase;
@@ -317,7 +346,7 @@ const getBadgeProps = (status) => {
317
346
  const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
318
347
  const { formatMessage } = reactIntl.useIntl();
319
348
  if (isError) {
320
- return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {});
349
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
321
350
  }
322
351
  if (releases?.length === 0) {
323
352
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -382,23 +411,26 @@ const ReleasesPage = () => {
382
411
  const tabRef = React__namespace.useRef(null);
383
412
  const location = reactRouterDom.useLocation();
384
413
  const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
385
- const toggleNotification = helperPlugin.useNotification();
414
+ const { toggleNotification } = strapiAdmin.useNotification();
386
415
  const { formatMessage } = reactIntl.useIntl();
387
- const { push, replace } = reactRouterDom.useHistory();
388
- const { formatAPIError } = helperPlugin.useAPIErrorHandler();
389
- const [{ query }, setQuery] = helperPlugin.useQueryParams();
416
+ const navigate = reactRouterDom.useNavigate();
417
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
418
+ const [{ query }, setQuery] = strapiAdmin.useQueryParams();
390
419
  const response = index.useGetReleasesQuery(query);
391
420
  const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
392
- const { getFeature } = strapiAdmin.useLicenseLimits();
421
+ const { getFeature } = ee.useLicenseLimits();
393
422
  const { maximumReleases = 3 } = getFeature("cms-content-releases");
394
- const { trackUsage } = helperPlugin.useTracking();
423
+ const { trackUsage } = strapiAdmin.useTracking();
424
+ const {
425
+ allowedActions: { canCreate }
426
+ } = strapiAdmin.useRBAC(index.PERMISSIONS);
395
427
  const { isLoading, isSuccess, isError } = response;
396
428
  const activeTab = response?.currentData?.meta?.activeTab || "pending";
397
429
  const activeTabIndex = ["pending", "done"].indexOf(activeTab);
398
430
  React__namespace.useEffect(() => {
399
431
  if (location?.state?.errors) {
400
432
  toggleNotification({
401
- type: "warning",
433
+ type: "danger",
402
434
  title: formatMessage({
403
435
  id: "content-releases.pages.Releases.notification.error.title",
404
436
  defaultMessage: "Your request could not be processed."
@@ -408,9 +440,9 @@ const ReleasesPage = () => {
408
440
  defaultMessage: "Please try again or open another release."
409
441
  })
410
442
  });
411
- replace({ state: null });
443
+ navigate("", { replace: true, state: null });
412
444
  }
413
- }, [formatMessage, location?.state?.errors, replace, toggleNotification]);
445
+ }, [formatMessage, location?.state?.errors, navigate, toggleNotification]);
414
446
  React__namespace.useEffect(() => {
415
447
  if (tabRef.current) {
416
448
  tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
@@ -420,7 +452,7 @@ const ReleasesPage = () => {
420
452
  setReleaseModalShown((prev) => !prev);
421
453
  };
422
454
  if (isLoading) {
423
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoading, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
455
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
424
456
  }
425
457
  const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
426
458
  const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
@@ -451,15 +483,15 @@ const ReleasesPage = () => {
451
483
  })
452
484
  });
453
485
  trackUsage("didCreateRelease");
454
- push(`/plugins/content-releases/${response2.data.data.id}`);
486
+ navigate(response2.data.data.id.toString());
455
487
  } else if (index.isAxiosError(response2.error)) {
456
488
  toggleNotification({
457
- type: "warning",
489
+ type: "danger",
458
490
  message: formatAPIError(response2.error)
459
491
  });
460
492
  } else {
461
493
  toggleNotification({
462
- type: "warning",
494
+ type: "danger",
463
495
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
464
496
  });
465
497
  }
@@ -476,7 +508,7 @@ const ReleasesPage = () => {
476
508
  id: "content-releases.pages.Releases.header-subtitle",
477
509
  defaultMessage: "Create and manage content updates"
478
510
  }),
479
- primaryAction: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.create, children: /* @__PURE__ */ jsxRuntime.jsx(
511
+ primaryAction: canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
480
512
  designSystem.Button,
481
513
  {
482
514
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
@@ -487,7 +519,7 @@ const ReleasesPage = () => {
487
519
  defaultMessage: "New release"
488
520
  })
489
521
  }
490
- ) })
522
+ ) : null
491
523
  }
492
524
  ),
493
525
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -566,23 +598,17 @@ const ReleasesPage = () => {
566
598
  ]
567
599
  }
568
600
  ),
569
- response.currentData?.meta?.pagination?.total ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
570
- /* @__PURE__ */ jsxRuntime.jsx(
571
- helperPlugin.PageSizeURLQuery,
572
- {
573
- options: ["8", "16", "32", "64"],
574
- defaultValue: response?.currentData?.meta?.pagination?.pageSize.toString()
575
- }
576
- ),
577
- /* @__PURE__ */ jsxRuntime.jsx(
578
- helperPlugin.PaginationURLQuery,
579
- {
580
- pagination: {
581
- pageCount: response?.currentData?.meta?.pagination?.pageCount || 0
582
- }
583
- }
584
- )
585
- ] }) : null
601
+ /* @__PURE__ */ jsxRuntime.jsxs(
602
+ strapiAdmin.Pagination.Root,
603
+ {
604
+ ...response?.currentData?.meta?.pagination,
605
+ defaultPageSize: response?.currentData?.meta?.pagination?.pageSize,
606
+ children: [
607
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, { options: ["8", "16", "32", "64"] }),
608
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
609
+ ]
610
+ }
611
+ )
586
612
  ] }) }),
587
613
  releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
588
614
  ReleaseModal,
@@ -630,14 +656,18 @@ const TrashIcon = styled__default.default(icons.Trash)`
630
656
  const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
631
657
  max-width: 300px;
632
658
  `;
633
- const EntryValidationText = ({ action, schema, components, entry }) => {
659
+ const EntryValidationText = ({ action, schema, entry }) => {
634
660
  const { formatMessage } = reactIntl.useIntl();
635
- const { validate } = strapiAdmin.unstable_useDocument();
636
- const { errors } = validate(entry, {
637
- contentType: schema,
638
- components,
639
- isCreatingEntry: false
640
- });
661
+ const { validate } = strapiAdmin$1.unstable_useDocument(
662
+ {
663
+ collectionType: schema?.kind ?? "",
664
+ model: schema?.uid ?? ""
665
+ },
666
+ {
667
+ skip: !schema
668
+ }
669
+ );
670
+ const errors = validate(entry) ?? {};
641
671
  if (Object.keys(errors).length > 0) {
642
672
  const validationErrorsMessages = Object.entries(errors).map(
643
673
  ([key, value]) => formatMessage(
@@ -685,18 +715,22 @@ const ReleaseDetailsLayout = ({
685
715
  isLoading: isLoadingDetails,
686
716
  isError,
687
717
  error
688
- } = index.useGetReleaseQuery({ id: releaseId });
718
+ } = index.useGetReleaseQuery(
719
+ { id: releaseId },
720
+ {
721
+ skip: !releaseId
722
+ }
723
+ );
689
724
  const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
690
- const toggleNotification = helperPlugin.useNotification();
691
- const { formatAPIError } = helperPlugin.useAPIErrorHandler();
692
- const {
693
- allowedActions: { canUpdate, canDelete }
694
- } = helperPlugin.useRBAC(index.PERMISSIONS);
695
- const dispatch = index.useTypedDispatch();
696
- const { trackUsage } = helperPlugin.useTracking();
725
+ const { toggleNotification } = strapiAdmin.useNotification();
726
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
727
+ const { allowedActions } = strapiAdmin.useRBAC(index.PERMISSIONS);
728
+ const { canUpdate, canDelete, canPublish } = allowedActions;
729
+ const dispatch = useTypedDispatch();
730
+ const { trackUsage } = strapiAdmin.useTracking();
697
731
  const release = data?.data;
698
- const handlePublishRelease = async () => {
699
- const response = await publishRelease({ id: releaseId });
732
+ const handlePublishRelease = (id) => async () => {
733
+ const response = await publishRelease({ id });
700
734
  if ("data" in response) {
701
735
  toggleNotification({
702
736
  type: "success",
@@ -713,12 +747,12 @@ const ReleaseDetailsLayout = ({
713
747
  });
714
748
  } else if (index.isAxiosError(response.error)) {
715
749
  toggleNotification({
716
- type: "warning",
750
+ type: "danger",
717
751
  message: formatAPIError(response.error)
718
752
  });
719
753
  } else {
720
754
  toggleNotification({
721
- type: "warning",
755
+ type: "danger",
722
756
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
723
757
  });
724
758
  }
@@ -744,21 +778,19 @@ const ReleaseDetailsLayout = ({
744
778
  return release.createdBy.email;
745
779
  };
746
780
  if (isLoadingDetails) {
747
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoadingDetails, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
781
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
748
782
  }
749
783
  if (isError || !release) {
750
784
  return /* @__PURE__ */ jsxRuntime.jsx(
751
- reactRouterDom.Redirect,
785
+ reactRouterDom.Navigate,
752
786
  {
753
- to: {
754
- pathname: "/plugins/content-releases",
755
- state: {
756
- errors: [
757
- {
758
- code: error?.code
759
- }
760
- ]
761
- }
787
+ to: "..",
788
+ state: {
789
+ errors: [
790
+ {
791
+ code: error?.code
792
+ }
793
+ ]
762
794
  }
763
795
  }
764
796
  );
@@ -802,10 +834,7 @@ const ReleaseDetailsLayout = ({
802
834
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
803
835
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
804
836
  ] }),
805
- navigationAction: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Link, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowLeft, {}), to: "/plugins/content-releases", children: formatMessage({
806
- id: "global.back",
807
- defaultMessage: "Back"
808
- }) }),
837
+ navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
809
838
  primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
810
839
  /* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
811
840
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -871,7 +900,7 @@ const ReleaseDetailsLayout = ({
871
900
  defaultMessage: "Created"
872
901
  }) }),
873
902
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
874
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.RelativeTime, { timestamp: new Date(release.createdAt) }),
903
+ /* @__PURE__ */ jsxRuntime.jsx(RelativeTime$1, { timestamp: new Date(release.createdAt) }),
875
904
  formatMessage(
876
905
  {
877
906
  id: "content-releases.header.actions.created.description",
@@ -889,12 +918,12 @@ const ReleaseDetailsLayout = ({
889
918
  id: "content-releases.header.actions.refresh",
890
919
  defaultMessage: "Refresh"
891
920
  }) }),
892
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.publish, children: /* @__PURE__ */ jsxRuntime.jsx(
921
+ canPublish ? /* @__PURE__ */ jsxRuntime.jsx(
893
922
  designSystem.Button,
894
923
  {
895
924
  size: "S",
896
925
  variant: "default",
897
- onClick: handlePublishRelease,
926
+ onClick: handlePublishRelease(release.id.toString()),
898
927
  loading: isPublishing,
899
928
  disabled: release.actions.meta.count === 0,
900
929
  children: formatMessage({
@@ -902,7 +931,7 @@ const ReleaseDetailsLayout = ({
902
931
  defaultMessage: "Publish"
903
932
  })
904
933
  }
905
- ) })
934
+ ) : null
906
935
  ] })
907
936
  }
908
937
  ),
@@ -929,27 +958,11 @@ const getGroupByOptionLabel = (value) => {
929
958
  defaultMessage: "Content-Types"
930
959
  };
931
960
  };
932
- const DEFAULT_RELEASE_DETAILS_HEADER = [
933
- {
934
- key: "__name__",
935
- fieldSchema: { type: "string" },
936
- metadatas: {
937
- label: {
938
- id: "content-releases.page.ReleaseDetails.table.header.label.name",
939
- defaultMessage: "name"
940
- },
941
- searchable: false,
942
- sortable: false
943
- },
944
- name: "name"
945
- }
946
- ];
947
- const ReleaseDetailsBody = () => {
961
+ const ReleaseDetailsBody = ({ releaseId }) => {
948
962
  const { formatMessage } = reactIntl.useIntl();
949
- const { releaseId } = reactRouterDom.useParams();
950
- const [{ query }, setQuery] = helperPlugin.useQueryParams();
951
- const toggleNotification = helperPlugin.useNotification();
952
- const { formatAPIError } = helperPlugin.useAPIErrorHandler();
963
+ const [{ query }, setQuery] = strapiAdmin.useQueryParams();
964
+ const { toggleNotification } = strapiAdmin.useNotification();
965
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
953
966
  const {
954
967
  data: releaseData,
955
968
  isLoading: isReleaseLoading,
@@ -958,15 +971,18 @@ const ReleaseDetailsBody = () => {
958
971
  } = index.useGetReleaseQuery({ id: releaseId });
959
972
  const {
960
973
  allowedActions: { canUpdate }
961
- } = helperPlugin.useRBAC(index.PERMISSIONS);
962
- const { runHookWaterfall } = helperPlugin.useStrapiApp();
963
- const {
964
- displayedHeaders,
965
- hasI18nEnabled
966
- } = runHookWaterfall(
974
+ } = strapiAdmin.useRBAC(index.PERMISSIONS);
975
+ const runHookWaterfall = strapiAdmin.useStrapiApp("ReleaseDetailsPage", (state) => state.runHookWaterfall);
976
+ const { hasI18nEnabled } = runHookWaterfall(
967
977
  "ContentReleases/pages/ReleaseDetails/add-locale-in-releases",
968
978
  {
969
- displayedHeaders: DEFAULT_RELEASE_DETAILS_HEADER,
979
+ displayedHeaders: {
980
+ label: formatMessage({
981
+ id: "content-releases.page.ReleaseDetails.table.header.label.locale",
982
+ defaultMessage: "locale"
983
+ }),
984
+ name: "locale"
985
+ },
970
986
  hasI18nEnabled: false
971
987
  }
972
988
  );
@@ -1000,19 +1016,19 @@ const ReleaseDetailsBody = () => {
1000
1016
  if ("error" in response) {
1001
1017
  if (index.isAxiosError(response.error)) {
1002
1018
  toggleNotification({
1003
- type: "warning",
1019
+ type: "danger",
1004
1020
  message: formatAPIError(response.error)
1005
1021
  });
1006
1022
  } else {
1007
1023
  toggleNotification({
1008
- type: "warning",
1024
+ type: "danger",
1009
1025
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1010
1026
  });
1011
1027
  }
1012
1028
  }
1013
1029
  };
1014
1030
  if (isLoading || isReleaseLoading) {
1015
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
1031
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
1016
1032
  }
1017
1033
  const releaseActions = data?.data;
1018
1034
  const releaseMeta = data?.meta;
@@ -1031,28 +1047,22 @@ const ReleaseDetailsBody = () => {
1031
1047
  });
1032
1048
  }
1033
1049
  return /* @__PURE__ */ jsxRuntime.jsx(
1034
- reactRouterDom.Redirect,
1050
+ reactRouterDom.Navigate,
1035
1051
  {
1036
- to: {
1037
- pathname: "/plugins/content-releases",
1038
- state: {
1039
- errors: errorsArray
1040
- }
1052
+ to: "..",
1053
+ state: {
1054
+ errors: errorsArray
1041
1055
  }
1042
1056
  }
1043
1057
  );
1044
1058
  }
1045
1059
  if (isError || !releaseActions) {
1046
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {}) });
1060
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
1047
1061
  }
1048
1062
  if (Object.keys(releaseActions).length === 0) {
1049
1063
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
1050
- helperPlugin.NoContent,
1064
+ designSystem.EmptyStateLayout,
1051
1065
  {
1052
- content: {
1053
- id: "content-releases.pages.Details.tab.emptyEntries",
1054
- defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
1055
- },
1056
1066
  action: /* @__PURE__ */ jsxRuntime.jsx(
1057
1067
  v2.LinkButton,
1058
1068
  {
@@ -1067,19 +1077,59 @@ const ReleaseDetailsBody = () => {
1067
1077
  defaultMessage: "Open the Content Manager"
1068
1078
  })
1069
1079
  }
1070
- )
1080
+ ),
1081
+ icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
1082
+ content: formatMessage({
1083
+ id: "content-releases.pages.Details.tab.emptyEntries",
1084
+ defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
1085
+ })
1071
1086
  }
1072
1087
  ) });
1073
1088
  }
1089
+ const groupByLabel = formatMessage({
1090
+ id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
1091
+ defaultMessage: "Group by"
1092
+ });
1093
+ const headers = [
1094
+ // ...displayedHeaders,
1095
+ {
1096
+ label: formatMessage({
1097
+ id: "content-releases.page.ReleaseDetails.table.header.label.name",
1098
+ defaultMessage: "name"
1099
+ }),
1100
+ name: "name"
1101
+ },
1102
+ {
1103
+ label: formatMessage({
1104
+ id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1105
+ defaultMessage: "content-type"
1106
+ }),
1107
+ name: "content-type"
1108
+ },
1109
+ {
1110
+ label: formatMessage({
1111
+ id: "content-releases.page.ReleaseDetails.table.header.label.action",
1112
+ defaultMessage: "action"
1113
+ }),
1114
+ name: "action"
1115
+ },
1116
+ ...!release.releasedAt ? [
1117
+ {
1118
+ label: formatMessage({
1119
+ id: "content-releases.page.ReleaseDetails.table.header.label.status",
1120
+ defaultMessage: "status"
1121
+ }),
1122
+ name: "status"
1123
+ }
1124
+ ] : []
1125
+ ];
1074
1126
  const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;
1075
1127
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
1076
1128
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
1077
1129
  designSystem.SingleSelect,
1078
1130
  {
1079
- "aria-label": formatMessage({
1080
- id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
1081
- defaultMessage: "Group by"
1082
- }),
1131
+ placeholder: groupByLabel,
1132
+ "aria-label": groupByLabel,
1083
1133
  customizeContent: (value) => formatMessage(
1084
1134
  {
1085
1135
  id: `content-releases.pages.ReleaseDetails.groupBy.label`,
@@ -1097,62 +1147,18 @@ const ReleaseDetailsBody = () => {
1097
1147
  Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
1098
1148
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
1099
1149
  /* @__PURE__ */ jsxRuntime.jsx(
1100
- helperPlugin.Table.Root,
1150
+ strapiAdmin.Table.Root,
1101
1151
  {
1102
1152
  rows: releaseActions[key].map((item) => ({
1103
1153
  ...item,
1104
1154
  id: Number(item.entry.id)
1105
1155
  })),
1106
- colCount: releaseActions[key].length,
1107
- isLoading,
1108
- isFetching,
1109
- children: /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Content, { children: [
1110
- /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Head, { children: [
1111
- displayedHeaders.map(({ key: key2, fieldSchema, metadatas, name }) => /* @__PURE__ */ jsxRuntime.jsx(
1112
- helperPlugin.Table.HeaderCell,
1113
- {
1114
- fieldSchemaType: fieldSchema.type,
1115
- label: formatMessage(metadatas.label),
1116
- name
1117
- },
1118
- key2
1119
- )),
1120
- /* @__PURE__ */ jsxRuntime.jsx(
1121
- helperPlugin.Table.HeaderCell,
1122
- {
1123
- fieldSchemaType: "string",
1124
- label: formatMessage({
1125
- id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
1126
- defaultMessage: "content-type"
1127
- }),
1128
- name: "content-type"
1129
- }
1130
- ),
1131
- /* @__PURE__ */ jsxRuntime.jsx(
1132
- helperPlugin.Table.HeaderCell,
1133
- {
1134
- fieldSchemaType: "string",
1135
- label: formatMessage({
1136
- id: "content-releases.page.ReleaseDetails.table.header.label.action",
1137
- defaultMessage: "action"
1138
- }),
1139
- name: "action"
1140
- }
1141
- ),
1142
- !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsx(
1143
- helperPlugin.Table.HeaderCell,
1144
- {
1145
- fieldSchemaType: "string",
1146
- label: formatMessage({
1147
- id: "content-releases.page.ReleaseDetails.table.header.label.status",
1148
- defaultMessage: "status"
1149
- }),
1150
- name: "status"
1151
- }
1152
- )
1153
- ] }),
1154
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.LoadingBody, {}),
1155
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.Body, { children: releaseActions[key].map(
1156
+ headers,
1157
+ isLoading: isLoading || isFetching,
1158
+ children: /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
1159
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Head, { children: headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, { ...header }, header.name)) }),
1160
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
1161
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.Body, { children: releaseActions[key].map(
1156
1162
  ({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
1157
1163
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
1158
1164
  hasI18nEnabled && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
@@ -1209,34 +1215,39 @@ const ReleaseDetailsBody = () => {
1209
1215
  }
1210
1216
  )
1211
1217
  ] }, `releases-group-${key}`)),
1212
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
1213
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.PageSizeURLQuery, { defaultValue: releaseMeta?.pagination?.pageSize.toString() }),
1214
- /* @__PURE__ */ jsxRuntime.jsx(
1215
- helperPlugin.PaginationURLQuery,
1216
- {
1217
- pagination: {
1218
- pageCount: releaseMeta?.pagination?.pageCount || 0
1219
- }
1220
- }
1221
- )
1222
- ] })
1218
+ /* @__PURE__ */ jsxRuntime.jsxs(
1219
+ strapiAdmin.Pagination.Root,
1220
+ {
1221
+ ...releaseMeta?.pagination,
1222
+ defaultPageSize: releaseMeta?.pagination?.pageSize,
1223
+ children: [
1224
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
1225
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
1226
+ ]
1227
+ }
1228
+ )
1223
1229
  ] }) });
1224
1230
  };
1225
1231
  const ReleaseDetailsPage = () => {
1226
1232
  const { formatMessage } = reactIntl.useIntl();
1227
1233
  const { releaseId } = reactRouterDom.useParams();
1228
- const toggleNotification = helperPlugin.useNotification();
1229
- const { formatAPIError } = helperPlugin.useAPIErrorHandler();
1230
- const { replace } = reactRouterDom.useHistory();
1234
+ const { toggleNotification } = strapiAdmin.useNotification();
1235
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
1236
+ const navigate = reactRouterDom.useNavigate();
1231
1237
  const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
1232
1238
  const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
1233
1239
  const {
1234
1240
  isLoading: isLoadingDetails,
1235
1241
  data,
1236
1242
  isSuccess: isSuccessDetails
1237
- } = index.useGetReleaseQuery({ id: releaseId });
1243
+ } = index.useGetReleaseQuery(
1244
+ { id: releaseId },
1245
+ {
1246
+ skip: !releaseId
1247
+ }
1248
+ );
1238
1249
  const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
1239
- const [deleteRelease, { isLoading: isDeletingRelease }] = index.useDeleteReleaseMutation();
1250
+ const [deleteRelease] = index.useDeleteReleaseMutation();
1240
1251
  const toggleEditReleaseModal = () => {
1241
1252
  setReleaseModalShown((prev) => !prev);
1242
1253
  };
@@ -1247,10 +1258,13 @@ const ReleaseDetailsPage = () => {
1247
1258
  {
1248
1259
  toggleEditReleaseModal,
1249
1260
  toggleWarningSubmit,
1250
- children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) })
1261
+ children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
1251
1262
  }
1252
1263
  );
1253
1264
  }
1265
+ if (!releaseId) {
1266
+ return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: ".." });
1267
+ }
1254
1268
  const releaseData = isSuccessDetails && data?.data || null;
1255
1269
  const title = releaseData?.name || "";
1256
1270
  const timezone = releaseData?.timezone ?? null;
@@ -1275,12 +1289,12 @@ const ReleaseDetailsPage = () => {
1275
1289
  toggleEditReleaseModal();
1276
1290
  } else if (index.isAxiosError(response.error)) {
1277
1291
  toggleNotification({
1278
- type: "warning",
1292
+ type: "danger",
1279
1293
  message: formatAPIError(response.error)
1280
1294
  });
1281
1295
  } else {
1282
1296
  toggleNotification({
1283
- type: "warning",
1297
+ type: "danger",
1284
1298
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1285
1299
  });
1286
1300
  }
@@ -1290,15 +1304,15 @@ const ReleaseDetailsPage = () => {
1290
1304
  id: releaseId
1291
1305
  });
1292
1306
  if ("data" in response) {
1293
- replace("/plugins/content-releases");
1307
+ navigate("..");
1294
1308
  } else if (index.isAxiosError(response.error)) {
1295
1309
  toggleNotification({
1296
- type: "warning",
1310
+ type: "danger",
1297
1311
  message: formatAPIError(response.error)
1298
1312
  });
1299
1313
  } else {
1300
1314
  toggleNotification({
1301
- type: "warning",
1315
+ type: "danger",
1302
1316
  message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
1303
1317
  });
1304
1318
  }
@@ -1309,7 +1323,7 @@ const ReleaseDetailsPage = () => {
1309
1323
  toggleEditReleaseModal,
1310
1324
  toggleWarningSubmit,
1311
1325
  children: [
1312
- /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {}),
1326
+ /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, { releaseId }),
1313
1327
  releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
1314
1328
  ReleaseModal,
1315
1329
  {
@@ -1327,16 +1341,15 @@ const ReleaseDetailsPage = () => {
1327
1341
  }
1328
1342
  ),
1329
1343
  /* @__PURE__ */ jsxRuntime.jsx(
1330
- helperPlugin.ConfirmDialog,
1344
+ strapiAdmin.ConfirmDialog,
1331
1345
  {
1332
- bodyText: {
1346
+ isOpen: showWarningSubmit,
1347
+ onClose: toggleWarningSubmit,
1348
+ onConfirm: handleDeleteRelease,
1349
+ children: formatMessage({
1333
1350
  id: "content-releases.dialog.confirmation-message",
1334
1351
  defaultMessage: "Are you sure you want to delete this release?"
1335
- },
1336
- isOpen: showWarningSubmit,
1337
- isConfirmButtonLoading: isDeletingRelease,
1338
- onToggleDialog: toggleWarningSubmit,
1339
- onConfirm: handleDeleteRelease
1352
+ })
1340
1353
  }
1341
1354
  )
1342
1355
  ]
@@ -1344,10 +1357,10 @@ const ReleaseDetailsPage = () => {
1344
1357
  );
1345
1358
  };
1346
1359
  const App = () => {
1347
- return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Switch, { children: [
1348
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}`, component: ReleasesPage }),
1349
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}/:releaseId`, component: ReleaseDetailsPage })
1360
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
1361
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ReleasesPage, {}) }),
1362
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":releaseId", element: /* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsPage, {}) })
1350
1363
  ] }) });
1351
1364
  };
1352
1365
  exports.App = App;
1353
- //# sourceMappingURL=App-HjWtUYmc.js.map
1366
+ //# sourceMappingURL=App-FVorrIzF.js.map