@strapi/admin 4.15.5 → 4.16.1
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.
- package/dist/_chunks/{AuthenticatedApp-da1595e9.mjs → AuthenticatedApp-722b2e84.mjs} +23 -23
- package/dist/_chunks/{AuthenticatedApp-da1595e9.mjs.map → AuthenticatedApp-722b2e84.mjs.map} +1 -1
- package/dist/_chunks/{AuthenticatedApp-61dfdab8.js → AuthenticatedApp-7e646400.js} +23 -23
- package/dist/_chunks/{AuthenticatedApp-61dfdab8.js.map → AuthenticatedApp-7e646400.js.map} +1 -1
- package/dist/_chunks/{HomePage-f3052b59.js → HomePage-0e0dc215.js} +4 -4
- package/dist/_chunks/{HomePage-f3052b59.js.map → HomePage-0e0dc215.js.map} +1 -1
- package/dist/_chunks/{HomePage-2690d237.mjs → HomePage-76bcd0cd.mjs} +4 -4
- package/dist/_chunks/{HomePage-2690d237.mjs.map → HomePage-76bcd0cd.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-3792b299.mjs → HomePage-8c98b31f.mjs} +4 -4
- package/dist/_chunks/{HomePage-3792b299.mjs.map → HomePage-8c98b31f.mjs.map} +1 -1
- package/dist/_chunks/{HomePage-48934b34.js → HomePage-ef787733.js} +4 -4
- package/dist/_chunks/{HomePage-48934b34.js.map → HomePage-ef787733.js.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-3bd06321.mjs → InstalledPluginsPage-67b5f9c2.mjs} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-3bd06321.mjs.map → InstalledPluginsPage-67b5f9c2.mjs.map} +1 -1
- package/dist/_chunks/{InstalledPluginsPage-da0780c1.js → InstalledPluginsPage-6f0897e8.js} +3 -3
- package/dist/_chunks/{InstalledPluginsPage-da0780c1.js.map → InstalledPluginsPage-6f0897e8.js.map} +1 -1
- package/dist/_chunks/{Login-ab4b47ad.js → Login-5b447dd2.js} +2 -2
- package/dist/_chunks/{Login-ab4b47ad.js.map → Login-5b447dd2.js.map} +1 -1
- package/dist/_chunks/{Login-8f68c65a.mjs → Login-8ade15b8.mjs} +2 -2
- package/dist/_chunks/{Login-8f68c65a.mjs.map → Login-8ade15b8.mjs.map} +1 -1
- package/dist/_chunks/{MarketplacePage-935fca72.js → MarketplacePage-1c954f9d.js} +3 -3
- package/dist/_chunks/{MarketplacePage-935fca72.js.map → MarketplacePage-1c954f9d.js.map} +1 -1
- package/dist/_chunks/{MarketplacePage-95af86bb.mjs → MarketplacePage-58fc8a9a.mjs} +3 -3
- package/dist/_chunks/{MarketplacePage-95af86bb.mjs.map → MarketplacePage-58fc8a9a.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-20de1b54.mjs → ProfilePage-a2f0366d.mjs} +3 -3
- package/dist/_chunks/{ProfilePage-20de1b54.mjs.map → ProfilePage-a2f0366d.mjs.map} +1 -1
- package/dist/_chunks/{ProfilePage-b8b29c4d.js → ProfilePage-a68483d3.js} +3 -3
- package/dist/_chunks/{ProfilePage-b8b29c4d.js.map → ProfilePage-a68483d3.js.map} +1 -1
- package/dist/_chunks/{SalesPage-c5cbb366.js → SalesPage-4a0a68fb.js} +2 -2
- package/dist/_chunks/SalesPage-4a0a68fb.js.map +1 -0
- package/dist/_chunks/{SalesPage-c7c94c3f.mjs → SalesPage-fceedf48.mjs} +2 -2
- package/dist/_chunks/{SalesPage-c7c94c3f.mjs.map → SalesPage-fceedf48.mjs.map} +1 -1
- package/dist/_chunks/{build-92e15b93.mjs → build-1026ce7c.mjs} +2 -2
- package/dist/_chunks/{build-92e15b93.mjs.map → build-1026ce7c.mjs.map} +1 -1
- package/dist/_chunks/{build-df2f219f.js → build-d99bcc06.js} +2 -2
- package/dist/_chunks/{build-df2f219f.js.map → build-d99bcc06.js.map} +1 -1
- package/dist/_chunks/{constants-ec71917d.js → constants-155022af.js} +3 -3
- package/dist/_chunks/{constants-ec71917d.js.map → constants-155022af.js.map} +1 -1
- package/dist/_chunks/{constants-db792b94.mjs → constants-32d352b6.mjs} +3 -3
- package/dist/_chunks/{constants-db792b94.mjs.map → constants-32d352b6.mjs.map} +1 -1
- package/dist/_chunks/{constants-008a1527.js → constants-3967338c.js} +5 -5
- package/dist/_chunks/{constants-008a1527.js.map → constants-3967338c.js.map} +1 -1
- package/dist/_chunks/{constants-1d345364.mjs → constants-6bf1c3c2.mjs} +5 -5
- package/dist/_chunks/{constants-1d345364.mjs.map → constants-6bf1c3c2.mjs.map} +1 -1
- package/dist/_chunks/{constants-797ada28.js → constants-d097f266.js} +6 -6
- package/dist/_chunks/{constants-797ada28.js.map → constants-d097f266.js.map} +1 -1
- package/dist/_chunks/{constants-278adc05.mjs → constants-da1ff847.mjs} +6 -6
- package/dist/_chunks/{constants-278adc05.mjs.map → constants-da1ff847.mjs.map} +1 -1
- package/dist/_chunks/{constants-4be682e5.js → constants-eb77e47a.js} +2 -2
- package/dist/_chunks/{constants-4be682e5.js.map → constants-eb77e47a.js.map} +1 -1
- package/dist/_chunks/{constants-29d123f8.mjs → constants-ecad1e20.mjs} +2 -2
- package/dist/_chunks/{constants-29d123f8.mjs.map → constants-ecad1e20.mjs.map} +1 -1
- package/dist/_chunks/{develop-a46fed01.mjs → develop-72394876.mjs} +2 -2
- package/dist/_chunks/{develop-a46fed01.mjs.map → develop-72394876.mjs.map} +1 -1
- package/dist/_chunks/{develop-4d25a6e0.js → develop-da585b1e.js} +2 -2
- package/dist/_chunks/{develop-4d25a6e0.js.map → develop-da585b1e.js.map} +1 -1
- package/dist/_chunks/{index-f5b276a8.mjs → index-061947f1.mjs} +21 -21
- package/dist/_chunks/{index-f5b276a8.mjs.map → index-061947f1.mjs.map} +1 -1
- package/dist/_chunks/{index-003c2cab.mjs → index-06e97c47.mjs} +5 -5
- package/dist/_chunks/{index-003c2cab.mjs.map → index-06e97c47.mjs.map} +1 -1
- package/dist/_chunks/{index-cbf9952d.js → index-1482f542.js} +2 -2
- package/dist/_chunks/{index-cbf9952d.js.map → index-1482f542.js.map} +1 -1
- package/dist/_chunks/{index-154693de.mjs → index-14887b9d.mjs} +3 -3
- package/dist/_chunks/{index-154693de.mjs.map → index-14887b9d.mjs.map} +1 -1
- package/dist/_chunks/{index-9f30a92e.js → index-1502dedd.js} +4 -4
- package/dist/_chunks/{index-9f30a92e.js.map → index-1502dedd.js.map} +1 -1
- package/dist/_chunks/{index-345c0ae9.js → index-19bd1210.js} +6 -6
- package/dist/_chunks/{index-345c0ae9.js.map → index-19bd1210.js.map} +1 -1
- package/dist/_chunks/{index-0fbbca7a.js → index-2064cfaf.js} +3 -3
- package/dist/_chunks/{index-0fbbca7a.js.map → index-2064cfaf.js.map} +1 -1
- package/dist/_chunks/{index-40d047a8.mjs → index-209cca35.mjs} +3 -3
- package/dist/_chunks/{index-40d047a8.mjs.map → index-209cca35.mjs.map} +1 -1
- package/dist/_chunks/{index-bde05e9e.mjs → index-24c2627d.mjs} +3 -3
- package/dist/_chunks/{index-bde05e9e.mjs.map → index-24c2627d.mjs.map} +1 -1
- package/dist/_chunks/{index-d5f569ab.js → index-24d1e175.js} +5 -5
- package/dist/_chunks/{index-d5f569ab.js.map → index-24d1e175.js.map} +1 -1
- package/dist/_chunks/{index-bc709e72.js → index-272d8fb9.js} +3 -3
- package/dist/_chunks/{index-bc709e72.js.map → index-272d8fb9.js.map} +1 -1
- package/dist/_chunks/{index-3c693658.mjs → index-2cf8d1f6.mjs} +3 -3
- package/dist/_chunks/{index-3c693658.mjs.map → index-2cf8d1f6.mjs.map} +1 -1
- package/dist/_chunks/{index-d9882c45.mjs → index-35c3f9f1.mjs} +4 -4
- package/dist/_chunks/{index-d9882c45.mjs.map → index-35c3f9f1.mjs.map} +1 -1
- package/dist/_chunks/{index-8e034257.mjs → index-391891ba.mjs} +3 -3
- package/dist/_chunks/{index-8e034257.mjs.map → index-391891ba.mjs.map} +1 -1
- package/dist/_chunks/{index-f3e7f8cc.mjs → index-3939f07e.mjs} +4 -4
- package/dist/_chunks/{index-f3e7f8cc.mjs.map → index-3939f07e.mjs.map} +1 -1
- package/dist/_chunks/{index-a6f1ccf6.mjs → index-3aab6b0f.mjs} +6 -6
- package/dist/_chunks/{index-a6f1ccf6.mjs.map → index-3aab6b0f.mjs.map} +1 -1
- package/dist/_chunks/{index-b6ee936b.mjs → index-3c67c00b.mjs} +14 -8
- package/dist/_chunks/{index-b6ee936b.mjs.map → index-3c67c00b.mjs.map} +1 -1
- package/dist/_chunks/{index-834fad5c.mjs → index-48c35356.mjs} +5 -5
- package/dist/_chunks/{index-834fad5c.mjs.map → index-48c35356.mjs.map} +1 -1
- package/dist/_chunks/{index-dc89c18c.mjs → index-49b7e6ff.mjs} +8 -4
- package/dist/_chunks/index-49b7e6ff.mjs.map +1 -0
- package/dist/_chunks/{index-69d47db4.js → index-4a019067.js} +3 -3
- package/dist/_chunks/{index-69d47db4.js.map → index-4a019067.js.map} +1 -1
- package/dist/_chunks/{index-b42866c5.mjs → index-55155d83.mjs} +2 -2
- package/dist/_chunks/{index-b42866c5.mjs.map → index-55155d83.mjs.map} +1 -1
- package/dist/_chunks/{index-9304d6de.js → index-57f9a06f.js} +511 -475
- package/dist/_chunks/index-57f9a06f.js.map +1 -0
- package/dist/_chunks/{index-cc38783c.mjs → index-61852c7a.mjs} +3 -3
- package/dist/_chunks/{index-cc38783c.mjs.map → index-61852c7a.mjs.map} +1 -1
- package/dist/_chunks/{index-e34335f1.js → index-6685e5a8.js} +3 -3
- package/dist/_chunks/{index-e34335f1.js.map → index-6685e5a8.js.map} +1 -1
- package/dist/_chunks/{index-2b22b1a0.js → index-6731bae9.js} +5 -5
- package/dist/_chunks/{index-2b22b1a0.js.map → index-6731bae9.js.map} +1 -1
- package/dist/_chunks/{index-40495ca1.mjs → index-674778e2.mjs} +2 -2
- package/dist/_chunks/{index-40495ca1.mjs.map → index-674778e2.mjs.map} +1 -1
- package/dist/_chunks/{index-bfb581a2.js → index-6a8a1f1d.js} +3 -3
- package/dist/_chunks/{index-bfb581a2.js.map → index-6a8a1f1d.js.map} +1 -1
- package/dist/_chunks/{index-f52ae628.mjs → index-707e89df.mjs} +3 -3
- package/dist/_chunks/{index-f52ae628.mjs.map → index-707e89df.mjs.map} +1 -1
- package/dist/_chunks/{index-eebad65d.js → index-724169b2.js} +3 -3
- package/dist/_chunks/{index-eebad65d.js.map → index-724169b2.js.map} +1 -1
- package/dist/_chunks/{index-924a1288.js → index-73971882.js} +3 -3
- package/dist/_chunks/{index-924a1288.js.map → index-73971882.js.map} +1 -1
- package/dist/_chunks/{index-1f4afa21.js → index-78f4851e.js} +3 -3
- package/dist/_chunks/{index-1f4afa21.js.map → index-78f4851e.js.map} +1 -1
- package/dist/_chunks/{index-f55a69e7.mjs → index-7a797b0f.mjs} +4 -4
- package/dist/_chunks/{index-f55a69e7.mjs.map → index-7a797b0f.mjs.map} +1 -1
- package/dist/_chunks/{index-5a5b0567.js → index-7b174d49.js} +21 -21
- package/dist/_chunks/{index-5a5b0567.js.map → index-7b174d49.js.map} +1 -1
- package/dist/_chunks/{index-7bfab5f5.js → index-819443df.js} +4 -4
- package/dist/_chunks/{index-7bfab5f5.js.map → index-819443df.js.map} +1 -1
- package/dist/_chunks/{index-6797e259.mjs → index-82fca9fd.mjs} +3 -3
- package/dist/_chunks/{index-6797e259.mjs.map → index-82fca9fd.mjs.map} +1 -1
- package/dist/_chunks/{index-81509193.mjs → index-8609fab4.mjs} +513 -477
- package/dist/_chunks/index-8609fab4.mjs.map +1 -0
- package/dist/_chunks/{index-51986071.mjs → index-86a4fbbf.mjs} +3 -3
- package/dist/_chunks/{index-51986071.mjs.map → index-86a4fbbf.mjs.map} +1 -1
- package/dist/_chunks/{index-0ed05075.js → index-8f8eaed6.js} +14 -8
- package/dist/_chunks/{index-0ed05075.js.map → index-8f8eaed6.js.map} +1 -1
- package/dist/_chunks/{index-e0e235a0.js → index-91726188.js} +3 -3
- package/dist/_chunks/{index-e0e235a0.js.map → index-91726188.js.map} +1 -1
- package/dist/_chunks/{index-46138ec7.mjs → index-97c03ee2.mjs} +4 -4
- package/dist/_chunks/{index-46138ec7.mjs.map → index-97c03ee2.mjs.map} +1 -1
- package/dist/_chunks/{index-be3e5f69.mjs → index-9b2501ca.mjs} +2 -2
- package/dist/_chunks/{index-be3e5f69.mjs.map → index-9b2501ca.mjs.map} +1 -1
- package/dist/_chunks/{index-1ebd9d8c.mjs → index-aad003e4.mjs} +5 -5
- package/dist/_chunks/{index-1ebd9d8c.mjs.map → index-aad003e4.mjs.map} +1 -1
- package/dist/_chunks/{index-9c26fffe.js → index-ad0512f0.js} +4 -4
- package/dist/_chunks/{index-9c26fffe.js.map → index-ad0512f0.js.map} +1 -1
- package/dist/_chunks/{index-72494b79.js → index-b247e702.js} +3 -3
- package/dist/_chunks/{index-72494b79.js.map → index-b247e702.js.map} +1 -1
- package/dist/_chunks/{index-9f2d5dc8.js → index-b3ad6e5f.js} +3 -3
- package/dist/_chunks/{index-9f2d5dc8.js.map → index-b3ad6e5f.js.map} +1 -1
- package/dist/_chunks/{index-787a0db6.js → index-b5eec5e2.js} +5 -5
- package/dist/_chunks/{index-787a0db6.js.map → index-b5eec5e2.js.map} +1 -1
- package/dist/_chunks/{index-035f8c59.js → index-b6b2a306.js} +3 -3
- package/dist/_chunks/{index-035f8c59.js.map → index-b6b2a306.js.map} +1 -1
- package/dist/_chunks/{index-4f557234.mjs → index-be9a9d91.mjs} +3 -3
- package/dist/_chunks/{index-4f557234.mjs.map → index-be9a9d91.mjs.map} +1 -1
- package/dist/_chunks/{index-56b499fb.mjs → index-c5fa9006.mjs} +5 -5
- package/dist/_chunks/{index-56b499fb.mjs.map → index-c5fa9006.mjs.map} +1 -1
- package/dist/_chunks/{index-f7dbd21b.js → index-c6c83bb3.js} +2 -2
- package/dist/_chunks/{index-f7dbd21b.js.map → index-c6c83bb3.js.map} +1 -1
- package/dist/_chunks/{index-97a59f73.js → index-c8b6afca.js} +4 -4
- package/dist/_chunks/{index-97a59f73.js.map → index-c8b6afca.js.map} +1 -1
- package/dist/_chunks/{index-557e0c47.js → index-caab4b20.js} +2 -2
- package/dist/_chunks/{index-557e0c47.js.map → index-caab4b20.js.map} +1 -1
- package/dist/_chunks/{index-6353193a.mjs → index-cc38421b.mjs} +5 -5
- package/dist/_chunks/{index-6353193a.mjs.map → index-cc38421b.mjs.map} +1 -1
- package/dist/_chunks/{index-b2d4d126.js → index-cdcf1a78.js} +5 -5
- package/dist/_chunks/{index-b2d4d126.js.map → index-cdcf1a78.js.map} +1 -1
- package/dist/_chunks/{index-9118a940.mjs → index-cea88049.mjs} +4 -4
- package/dist/_chunks/{index-9118a940.mjs.map → index-cea88049.mjs.map} +1 -1
- package/dist/_chunks/{index-0c9fceff.js → index-ceacb143.js} +5 -5
- package/dist/_chunks/{index-0c9fceff.js.map → index-ceacb143.js.map} +1 -1
- package/dist/_chunks/{index-d2b3c398.mjs → index-d1219a93.mjs} +3 -3
- package/dist/_chunks/{index-d2b3c398.mjs.map → index-d1219a93.mjs.map} +1 -1
- package/dist/_chunks/{index-039f8e26.mjs → index-d47fc57d.mjs} +4 -4
- package/dist/_chunks/{index-039f8e26.mjs.map → index-d47fc57d.mjs.map} +1 -1
- package/dist/_chunks/{index-46c3ee85.mjs → index-d844fbda.mjs} +3 -3
- package/dist/_chunks/{index-46c3ee85.mjs.map → index-d844fbda.mjs.map} +1 -1
- package/dist/_chunks/{index-bac648de.js → index-d9aae905.js} +5 -5
- package/dist/_chunks/{index-bac648de.js.map → index-d9aae905.js.map} +1 -1
- package/dist/_chunks/{index-25975989.js → index-dab453d2.js} +4 -4
- package/dist/_chunks/{index-25975989.js.map → index-dab453d2.js.map} +1 -1
- package/dist/_chunks/{index-1932eedf.mjs → index-dd897afb.mjs} +3 -3
- package/dist/_chunks/{index-1932eedf.mjs.map → index-dd897afb.mjs.map} +1 -1
- package/dist/_chunks/{index-f7cf652c.js → index-ec2d87cb.js} +4 -4
- package/dist/_chunks/{index-f7cf652c.js.map → index-ec2d87cb.js.map} +1 -1
- package/dist/_chunks/{index-eaff38ba.js → index-ecfaf6c1.js} +3 -3
- package/dist/_chunks/{index-eaff38ba.js.map → index-ecfaf6c1.js.map} +1 -1
- package/dist/_chunks/{index-a9625818.mjs → index-ff4fb44c.mjs} +5 -5
- package/dist/_chunks/{index-a9625818.mjs.map → index-ff4fb44c.mjs.map} +1 -1
- package/dist/_chunks/{index-1a74fa41.js → index-ffd2f664.js} +8 -4
- package/dist/_chunks/index-ffd2f664.js.map +1 -0
- package/dist/_chunks/{ru-d43423ea.mjs → ru-9aad40c5.mjs} +91 -42
- package/dist/_chunks/{ru-d43423ea.mjs.map → ru-9aad40c5.mjs.map} +1 -1
- package/dist/_chunks/{ru-07958f09.js → ru-c0293425.js} +91 -42
- package/dist/_chunks/{ru-07958f09.js.map → ru-c0293425.js.map} +1 -1
- package/dist/_chunks/{schema-15e33d1c.js → schema-336f4dd6.js} +2 -2
- package/dist/_chunks/{schema-15e33d1c.js.map → schema-336f4dd6.js.map} +1 -1
- package/dist/_chunks/{schema-a7f695ae.mjs → schema-60d9880c.mjs} +2 -2
- package/dist/_chunks/{schema-a7f695ae.mjs.map → schema-60d9880c.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-2f84e76e.mjs → validateWorkflow-022b5005.mjs} +3 -3
- package/dist/_chunks/{validateWorkflow-2f84e76e.mjs.map → validateWorkflow-022b5005.mjs.map} +1 -1
- package/dist/_chunks/{validateWorkflow-6b5dffaf.js → validateWorkflow-7f76e43f.js} +3 -3
- package/dist/_chunks/{validateWorkflow-6b5dffaf.js.map → validateWorkflow-7f76e43f.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksContent.d.ts +5 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +34 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +18 -0
- package/dist/admin/src/content-manager/components/BlocksInput/BlocksToolbar.d.ts +2 -0
- package/dist/admin/src/content-manager/components/BlocksInput/hooks/useBlocksStore.d.ts +32 -0
- package/dist/admin/src/content-manager/components/BlocksInput/hooks/useModifiersStore.d.ts +20 -0
- package/dist/admin/src/content-manager/components/BlocksInput/plugins/withLinks.d.ts +8 -0
- package/dist/admin/src/content-manager/components/BlocksInput/plugins/withStrapiSchema.d.ts +8 -0
- package/dist/admin/src/content-manager/components/BlocksInput/tests/mock-schema.d.ts +2 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/links.d.ts +10 -0
- package/dist/admin/src/content-manager/components/BlocksInput/utils/types.d.ts +6 -0
- package/dist/admin/src/hooks/useAdminUsers.d.ts +3 -3
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/render.d.ts +3 -1
- package/dist/cli.js +1 -1
- package/dist/cli.mjs +1 -1
- package/package.json +14 -14
- package/server/services/__tests__/user.test.js +15 -0
- package/server/services/user.js +1 -4
- package/dist/_chunks/SalesPage-c5cbb366.js.map +0 -1
- package/dist/_chunks/index-1a74fa41.js.map +0 -1
- package/dist/_chunks/index-81509193.mjs.map +0 -1
- package/dist/_chunks/index-9304d6de.js.map +0 -1
- package/dist/_chunks/index-dc89c18c.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createContext, useState, useRef } from "react";
|
|
2
2
|
import { useDrop, useDrag } from "react-dnd";
|
|
3
3
|
import { createSelector } from "@reduxjs/toolkit";
|
|
4
|
-
import { J as initialState } from "./index-
|
|
4
|
+
import { J as initialState } from "./index-3c67c00b.mjs";
|
|
5
5
|
import { translatedErrors } from "@strapi/helper-plugin";
|
|
6
6
|
import get from "lodash/get";
|
|
7
7
|
import isBoolean from "lodash/isBoolean";
|
|
@@ -487,4 +487,4 @@ export {
|
|
|
487
487
|
selectFieldSizes as s,
|
|
488
488
|
useDragAndDrop as u
|
|
489
489
|
};
|
|
490
|
-
//# sourceMappingURL=schema-
|
|
490
|
+
//# sourceMappingURL=schema-60d9880c.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-a7f695ae.mjs","sources":["../../admin/src/content-manager/utils/getTrad.js","../../admin/src/content-manager/contexts/Wysiwyg.js","../../admin/src/content-manager/hooks/useKeyboardDragAndDrop.js","../../admin/src/content-manager/hooks/useDragAndDrop.js","../../admin/src/content-manager/pages/App/selectors.js","../../admin/src/content-manager/utils/composeRefs.js","../../admin/src/content-manager/utils/isFieldTypeNumber.js","../../admin/src/content-manager/utils/schema.js"],"sourcesContent":["const getTrad = (id) => `content-manager.${id}`;\n\nexport default getTrad;\n","import { createContext } from 'react';\n\nconst WysiwygContext = createContext();\n\nexport default WysiwygContext;\n","import { useState } from 'react';\n\n/**\n * @typedef UseKeyboardDragAndDropCallbacks\n *\n * @type {{\n * onCancel?: (index: number) => void,\n * onDropItem?: (index: number) => void,\n * onGrabItem?: (index: number) => void,\n * onMoveItem: (newIndex: number, currentIndex: number) => void,\n * }}\n */\n\n/**\n * Utility hook designed to implement keyboard accessibile drag and drop by\n * returning an onKeyDown handler to be passed to the drag icon button.\n *\n * @internal - You should use `useDragAndDrop` instead.\n *\n * @type {(active: boolean, index: number, callbacks: UseKeyboardDragAndDropCallbacks) => (event: React.KeyboardEvent<HTMLButtonElement>) => void}\n */\nexport const useKeyboardDragAndDrop = (\n active,\n index,\n { onCancel, onDropItem, onGrabItem, onMoveItem }\n) => {\n const [isSelected, setIsSelected] = useState(false);\n /**\n * @type {(movement: 'UP' | 'DOWN') => void})}\n */\n const handleMove = (movement) => {\n if (!isSelected) {\n return;\n }\n\n if (movement === 'UP') {\n onMoveItem(index - 1, index);\n } else if (movement === 'DOWN') {\n onMoveItem(index + 1, index);\n }\n };\n\n const handleDragClick = () => {\n if (isSelected) {\n if (onDropItem) {\n onDropItem(index);\n }\n setIsSelected(false);\n } else {\n if (onGrabItem) {\n onGrabItem(index);\n }\n setIsSelected(true);\n }\n };\n\n const handleCancel = () => {\n if (isSelected) {\n setIsSelected(false);\n\n if (onCancel) {\n onCancel(index);\n }\n }\n };\n\n /**\n * @type {React.KeyboardEventHandler<HTMLButtonElement>}\n */\n const handleKeyDown = (e) => {\n if (!active) {\n return;\n }\n\n if (e.key === 'Tab' && !isSelected) {\n return;\n }\n\n e.preventDefault();\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n handleDragClick();\n break;\n\n case 'Escape':\n handleCancel();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n handleMove('DOWN');\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n handleMove('UP');\n break;\n\n default:\n }\n };\n\n return handleKeyDown;\n};\n","import { useRef } from 'react';\n\nimport { useDrag, useDrop } from 'react-dnd';\n\nimport { useKeyboardDragAndDrop } from './useKeyboardDragAndDrop';\n\n/**\n * @typedef UseDragAndDropOptions\n *\n * @type {{\n * type?: string,\n * index: number,\n * item?: object,\n * onStart?: () => void,\n * onEnd?: () => void,\n * dropSensitivity?: 'regular' | 'immediate'\n * } & import('./useKeyboardDragAndDrop').UseKeyboardDragAndDropCallbacks}\n */\n\n/**\n * @typedef UseDragAndDropReturn\n *\n * @type {[props: {handlerId: import('dnd-core').Identifier, isDragging: boolean, handleKeyDown: (event: import('react').KeyboardEvent<HTMLButtonElement>) => void}, objectRef: React.RefObject<HTMLElement>, dropRef: import('react-dnd').ConnectDropTarget, dragRef: import('react-dnd').ConnectDragSource, dragPreviewRef: import('react-dnd').ConnectDragPreview]}\n */\n\n/**\n * A utility hook abstracting the general drag and drop hooks from react-dnd.\n * Centralising the same behaviours and by default offering keyboard support.\n *\n * @type {(active: boolean, options: UseDragAndDropOptions) => UseDragAndDropReturn}\n */\nexport const useDragAndDrop = (\n active,\n {\n type = 'STRAPI_DND',\n index,\n item = {},\n onStart,\n onEnd,\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n dropSensitivity = 'regular',\n }\n) => {\n const objectRef = useRef(null);\n\n const [{ handlerId }, dropRef] = useDrop({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item, monitor) {\n if (!objectRef.current) {\n return;\n }\n const dragIndex = item.index;\n const newInd = index;\n\n // Don't replace items with themselves\n if (dragIndex === newInd) {\n return;\n }\n\n if (dropSensitivity === 'regular') {\n const hoverBoundingRect = objectRef.current.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n // Dragging downwards\n if (dragIndex < newInd && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > newInd && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n\n // Time to actually perform the action\n onMoveItem(newInd, dragIndex);\n item.index = newInd;\n },\n });\n\n const [{ isDragging }, dragRef, dragPreviewRef] = useDrag({\n type,\n item() {\n if (onStart) {\n onStart();\n }\n\n /**\n * This will be attached and it helps define the preview sizes\n * when a component is flexy e.g. Relations\n */\n const { width } = objectRef.current?.getBoundingClientRect() ?? {};\n\n return { index, width, ...item };\n },\n end() {\n if (onEnd) {\n onEnd();\n }\n },\n canDrag: active,\n /**\n * This is for useful when the item is in a virtualized list.\n * However, if we don't have an ID then we want the libraries\n * defaults to take care of this.\n */\n isDragging: item.id\n ? (monitor) => {\n return item.id === monitor.getItem().id;\n }\n : undefined,\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const handleKeyDown = useKeyboardDragAndDrop(active, index, {\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n });\n\n return [{ handlerId, isDragging, handleKeyDown }, objectRef, dropRef, dragRef, dragPreviewRef];\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport { initialState } from './reducer';\n\nconst selectAppDomain = () => (state) => {\n return state['content-manager_app'] || initialState;\n};\n\nconst makeSelectApp = () =>\n createSelector(selectAppDomain(), (substate) => {\n return substate;\n });\n\nconst makeSelectModels = () => createSelector(selectAppDomain(), (state) => state.models);\n\nconst makeSelectModelLinks = () =>\n createSelector(selectAppDomain(), (state) => ({\n collectionTypeLinks: state.collectionTypeLinks,\n singleTypeLinks: state.singleTypeLinks,\n }));\n\nconst makeSelectModelAndComponentSchemas = () =>\n createSelector(selectAppDomain(), ({ components, models }) => ({\n schemas: [...components, ...models],\n }));\n\nconst selectFieldSizes = createSelector(selectAppDomain(), (state) => state.fieldSizes);\n\nexport default makeSelectApp;\nexport {\n makeSelectModelAndComponentSchemas,\n makeSelectModelLinks,\n makeSelectModels,\n selectAppDomain,\n selectFieldSizes,\n};\n","/**\n * @typedef PossibleRef<T>\n * @type {React.Ref<T> | undefined;}\n *\n * @typedef setRef\n * @type {<T>(ref: PossibleRef<T>, value: T) => React.RefCallback<T>}\n */\n\n/**\n * @type {setRef}\n */\nconst setRef = (ref, value) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n};\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n *\n * @type {<T>(...refs: PossibleRef<T>[]) => (node: T) => void}\n */\nexport const composeRefs = (...refs) => {\n return (node) => refs.forEach((ref) => setRef(ref, node));\n};\n","export default function isFieldTypeNumber(type) {\n return ['integer', 'biginteger', 'decimal', 'float', 'number'].includes(type);\n}\n","import { translatedErrors as errorsTrads } from '@strapi/helper-plugin';\nimport get from 'lodash/get';\nimport isBoolean from 'lodash/isBoolean';\nimport isEmpty from 'lodash/isEmpty';\nimport isNaN from 'lodash/isNaN';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport isFieldTypeNumber from './isFieldTypeNumber';\n\nyup.addMethod(yup.mixed, 'defined', function () {\n return this.test('defined', errorsTrads.required, (value) => value !== undefined);\n});\n\nyup.addMethod(yup.array, 'notEmptyMin', function (min) {\n return this.test('notEmptyMin', errorsTrads.min, (value) => {\n if (isEmpty(value)) {\n return true;\n }\n\n return value.length >= min;\n });\n});\n\nyup.addMethod(yup.string, 'isInferior', function (message, max) {\n return this.test('isInferior', message, function (value) {\n if (!value) {\n return true;\n }\n\n if (Number.isNaN(toNumber(value))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(value);\n });\n});\n\nyup.addMethod(yup.string, 'isSuperior', function (message, min) {\n return this.test('isSuperior', message, function (value) {\n if (!value) {\n return true;\n }\n\n if (Number.isNaN(toNumber(value))) {\n return true;\n }\n\n return toNumber(value) >= toNumber(min);\n });\n});\n\nconst getAttributes = (data) => get(data, ['attributes'], {});\n\nconst createYupSchema = (\n model,\n { components },\n options = {\n isCreatingEntry: true,\n isDraft: true,\n isFromComponent: false,\n isJSONTestDisabled: false,\n }\n) => {\n const attributes = getAttributes(model);\n\n return yup.object().shape(\n Object.keys(attributes).reduce((acc, current) => {\n const attribute = attributes[current];\n\n if (\n attribute.type !== 'relation' &&\n attribute.type !== 'component' &&\n attribute.type !== 'dynamiczone'\n ) {\n const formatted = createYupSchemaAttribute(attribute.type, attribute, options);\n acc[current] = formatted;\n }\n\n if (attribute.type === 'relation') {\n acc[current] = [\n 'oneWay',\n 'oneToOne',\n 'manyToOne',\n 'oneToManyMorph',\n 'oneToOneMorph',\n ].includes(attribute.relationType)\n ? yup.object().nullable()\n : yup.array().nullable();\n }\n\n if (attribute.type === 'component') {\n const componentFieldSchema = createYupSchema(\n components[attribute.component],\n {\n components,\n },\n { ...options, isFromComponent: true }\n );\n\n if (attribute.repeatable === true) {\n const { min, max, required } = attribute;\n\n let componentSchema = yup.lazy((value) => {\n let baseSchema = yup.array().of(componentFieldSchema);\n\n if (min) {\n if (required) {\n baseSchema = baseSchema.min(min, errorsTrads.min);\n } else if (required !== true && isEmpty(value)) {\n baseSchema = baseSchema.nullable();\n } else {\n baseSchema = baseSchema.min(min, errorsTrads.min);\n }\n } else if (required && !options.isDraft) {\n baseSchema = baseSchema.min(1, errorsTrads.required);\n }\n\n if (max) {\n baseSchema = baseSchema.max(max, errorsTrads.max);\n }\n\n return baseSchema;\n });\n\n acc[current] = componentSchema;\n\n return acc;\n }\n const componentSchema = yup.lazy((obj) => {\n if (obj !== undefined) {\n return attribute.required === true && !options.isDraft\n ? componentFieldSchema.defined()\n : componentFieldSchema.nullable();\n }\n\n return attribute.required === true ? yup.object().defined() : yup.object().nullable();\n });\n\n acc[current] = componentSchema;\n\n return acc;\n }\n\n if (attribute.type === 'dynamiczone') {\n let dynamicZoneSchema = yup.array().of(\n yup.lazy(({ __component }) => {\n return createYupSchema(\n components[__component],\n { components },\n { ...options, isFromComponent: true }\n );\n })\n );\n\n const { max, min } = attribute;\n\n if (min) {\n if (attribute.required) {\n dynamicZoneSchema = dynamicZoneSchema\n .test('min', errorsTrads.min, (value) => {\n if (options.isCreatingEntry) {\n return value && value.length >= min;\n }\n\n if (value === undefined) {\n return true;\n }\n\n return value !== null && value.length >= min;\n })\n .test('required', errorsTrads.required, (value) => {\n if (options.isCreatingEntry) {\n return value !== null || value !== undefined;\n }\n\n if (value === undefined) {\n return true;\n }\n\n return value !== null;\n });\n } else {\n dynamicZoneSchema = dynamicZoneSchema.notEmptyMin(min);\n }\n } else if (attribute.required && !options.isDraft) {\n dynamicZoneSchema = dynamicZoneSchema.test('required', errorsTrads.required, (value) => {\n if (options.isCreatingEntry) {\n return value !== null || value !== undefined;\n }\n\n if (value === undefined) {\n return true;\n }\n\n return value !== null;\n });\n }\n\n if (max) {\n dynamicZoneSchema = dynamicZoneSchema.max(max, errorsTrads.max);\n }\n\n acc[current] = dynamicZoneSchema;\n }\n\n return acc;\n }, {})\n );\n};\n\nconst createYupSchemaAttribute = (type, validations, options) => {\n let schema = yup.mixed();\n\n if (['string', 'uid', 'text', 'richtext', 'email', 'password', 'enumeration'].includes(type)) {\n schema = yup.string();\n }\n\n if (type === 'blocks') {\n schema = yup.mixed().test('isJSON', errorsTrads.json, (value) => {\n // Disable the test for bulk publish, it's valid when it comes from the db\n if (options.isJSONTestDisabled) {\n return true;\n }\n\n // Don't run validations on drafts\n if (options.isDraft) {\n return true;\n }\n\n // The backend validates the actual schema, check if a value different than null is not an array\n if (value && !Array.isArray(value)) {\n return false;\n }\n\n return true;\n });\n }\n\n if (type === 'json') {\n schema = yup\n .mixed(errorsTrads.json)\n .test('isJSON', errorsTrads.json, (value) => {\n // Disable the test for bulk publish, it's valid when it comes from the db\n if (options.isJSONTestDisabled) {\n return true;\n }\n\n if (!value || !value.length) {\n return true;\n }\n\n try {\n JSON.parse(value);\n\n return true;\n } catch (err) {\n return false;\n }\n })\n .nullable()\n .test('required', errorsTrads.required, (value) => {\n if (validations.required && (!value || !value.length)) {\n return false;\n }\n\n return true;\n });\n }\n\n if (type === 'email') {\n schema = schema.email(errorsTrads.email);\n }\n\n if (['number', 'integer', 'float', 'decimal'].includes(type)) {\n schema = yup\n .number()\n .transform((cv) => (isNaN(cv) ? undefined : cv))\n .typeError();\n }\n\n if (type === 'biginteger') {\n schema = yup.string().matches(/^-?\\d*$/);\n }\n\n if (['date', 'datetime'].includes(type)) {\n schema = yup.date();\n }\n\n Object.keys(validations).forEach((validation) => {\n const validationValue = validations[validation];\n\n if (\n !!validationValue ||\n (!isBoolean(validationValue) && Number.isInteger(Math.floor(validationValue))) ||\n validationValue === 0\n ) {\n switch (validation) {\n case 'required': {\n if (!options.isDraft) {\n if (type === 'password' && options.isCreatingEntry) {\n schema = schema.required(errorsTrads.required);\n }\n\n if (type !== 'password') {\n if (options.isCreatingEntry) {\n schema = schema.required(errorsTrads.required);\n } else {\n schema = schema.test('required', errorsTrads.required, (value) => {\n // Field is not touched and the user is editing the entry\n if (value === undefined && !options.isFromComponent) {\n return true;\n }\n\n if (isFieldTypeNumber(type)) {\n if (value === 0) {\n return true;\n }\n\n return !!value;\n }\n\n if (type === 'boolean') {\n // Boolean value can be undefined/unset in modifiedData when generated in a new component\n return value !== null && value !== undefined;\n }\n\n if (type === 'date' || type === 'datetime') {\n if (typeof value === 'string') {\n return !isEmpty(value);\n }\n\n return !isEmpty(value?.toString());\n }\n\n return !isEmpty(value);\n });\n }\n }\n }\n\n break;\n }\n\n case 'max': {\n if (type === 'biginteger') {\n schema = schema.isInferior(errorsTrads.max, validationValue);\n } else {\n schema = schema.max(validationValue, errorsTrads.max);\n }\n break;\n }\n case 'maxLength':\n schema = schema.max(validationValue, errorsTrads.maxLength);\n break;\n case 'min': {\n if (type === 'biginteger') {\n schema = schema.isSuperior(errorsTrads.min, validationValue);\n } else {\n schema = schema.min(validationValue, errorsTrads.min);\n }\n break;\n }\n case 'minLength': {\n if (!options.isDraft) {\n schema = schema.min(validationValue, errorsTrads.minLength);\n }\n break;\n }\n case 'regex':\n schema = schema.matches(new RegExp(validationValue), {\n message: errorsTrads.regex,\n excludeEmptyString: !validations.required,\n });\n break;\n case 'lowercase':\n if (['text', 'textarea', 'email', 'string'].includes(type)) {\n schema = schema.strict().lowercase();\n }\n break;\n case 'uppercase':\n if (['text', 'textarea', 'email', 'string'].includes(type)) {\n schema = schema.strict().uppercase();\n }\n break;\n case 'positive':\n if (isFieldTypeNumber(type)) {\n schema = schema.positive();\n }\n break;\n case 'negative':\n if (isFieldTypeNumber(type)) {\n schema = schema.negative();\n }\n break;\n default:\n schema = schema.nullable();\n }\n }\n });\n\n return schema;\n};\n\nexport default createYupSchema;\n"],"names":["item","errorsTrads","componentSchema"],"mappings":";;;;;;;;;;;AAAA,MAAM,UAAU,CAAC,OAAO,mBAAmB,EAAE;AAE7C,MAAA,YAAe;ACAQ,cAAc;ACmBxB,MAAA,yBAAyB,CACpC,QACA,OACA,EAAE,UAAU,YAAY,YAAY,iBACjC;AACH,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAI5C,QAAA,aAAa,CAAC,aAAa;AAC/B,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AAEA,QAAI,aAAa,MAAM;AACV,iBAAA,QAAQ,GAAG,KAAK;AAAA,IAAA,WAClB,aAAa,QAAQ;AACnB,iBAAA,QAAQ,GAAG,KAAK;AAAA,IAC7B;AAAA,EAAA;AAGF,QAAM,kBAAkB,MAAM;AAC5B,QAAI,YAAY;AACd,UAAI,YAAY;AACd,mBAAW,KAAK;AAAA,MAClB;AACA,oBAAc,KAAK;AAAA,IAAA,OACd;AACL,UAAI,YAAY;AACd,mBAAW,KAAK;AAAA,MAClB;AACA,oBAAc,IAAI;AAAA,IACpB;AAAA,EAAA;AAGF,QAAM,eAAe,MAAM;AACzB,QAAI,YAAY;AACd,oBAAc,KAAK;AAEnB,UAAI,UAAU;AACZ,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAAA,EAAA;AAMI,QAAA,gBAAgB,CAAC,MAAM;AAC3B,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI,EAAE,QAAQ,SAAS,CAAC,YAAY;AAClC;AAAA,IACF;AAEA,MAAE,eAAe;AAEjB,YAAQ,EAAE,KAAK;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AACa;AAChB;AAAA,MAEF,KAAK;AACU;AACb;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH,mBAAW,MAAM;AACjB;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH,mBAAW,IAAI;AACf;AAAA,IAGJ;AAAA,EAAA;AAGK,SAAA;AACT;AC1Ea,MAAA,iBAAiB,CAC5B,QACA;AAAA,EACE,OAAO;AAAA,EACP;AAAA,EACA,OAAO,CAAC;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AACpB,MACG;AACG,QAAA,YAAY,OAAO,IAAI;AAE7B,QAAM,CAAC,EAAE,UAAA,GAAa,OAAO,IAAI,QAAQ;AAAA,IACvC,QAAQ;AAAA,IACR,QAAQ,SAAS;AACR,aAAA;AAAA,QACL,WAAW,QAAQ,aAAa;AAAA,MAAA;AAAA,IAEpC;AAAA,IACA,MAAMA,OAAM,SAAS;AACf,UAAA,CAAC,UAAU,SAAS;AACtB;AAAA,MACF;AACA,YAAM,YAAYA,MAAK;AACvB,YAAM,SAAS;AAGf,UAAI,cAAc,QAAQ;AACxB;AAAA,MACF;AAEA,UAAI,oBAAoB,WAAW;AAC3B,cAAA,oBAAoB,UAAU,QAAQ,sBAAsB;AAClE,cAAM,gBAAgB,kBAAkB,SAAS,kBAAkB,OAAO;AACpE,cAAA,eAAe,QAAQ;AACvB,cAAA,eAAe,aAAa,IAAI,kBAAkB;AAGpD,YAAA,YAAY,UAAU,eAAe,cAAc;AACrD;AAAA,QACF;AAGI,YAAA,YAAY,UAAU,eAAe,cAAc;AACrD;AAAA,QACF;AAAA,MACF;AAGA,iBAAW,QAAQ,SAAS;AAC5BA,YAAK,QAAQ;AAAA,IACf;AAAA,EAAA,CACD;AAED,QAAM,CAAC,EAAE,cAAc,SAAS,cAAc,IAAI,QAAQ;AAAA,IACxD;AAAA,IACA,OAAO;AACL,UAAI,SAAS;AACH;MACV;AAMA,YAAM,EAAE,MAAM,IAAI,UAAU,SAAS,2BAA2B;AAEhE,aAAO,EAAE,OAAO,OAAO,GAAG,KAAK;AAAA,IACjC;AAAA,IACA,MAAM;AACJ,UAAI,OAAO;AACH;MACR;AAAA,IACF;AAAA,IACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMT,YAAY,KAAK,KACb,CAAC,YAAY;AACX,aAAO,KAAK,OAAO,QAAQ,QAAA,EAAU;AAAA,IAEvC,IAAA;AAAA,IACJ,SAAS,CAAC,aAAa;AAAA,MACrB,YAAY,QAAQ,WAAW;AAAA,IAAA;AAAA,EACjC,CACD;AAEK,QAAA,gBAAgB,uBAAuB,QAAQ,OAAO;AAAA,IAC1D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEM,SAAA,CAAC,EAAE,WAAW,YAAY,iBAAiB,WAAW,SAAS,SAAS,cAAc;AAC/F;AClIM,MAAA,kBAAkB,MAAM,CAAC,UAAU;AAChC,SAAA,MAAM,qBAAqB,KAAK;AACzC;AASA,MAAM,uBAAuB,MAC3B,eAAe,gBAAgB,GAAG,CAAC,WAAW;AAAA,EAC5C,qBAAqB,MAAM;AAAA,EAC3B,iBAAiB,MAAM;AACzB,EAAE;AAEE,MAAA,qCAAqC,MACzC,eAAe,gBAAA,GAAmB,CAAC,EAAE,YAAY,cAAc;AAAA,EAC7D,SAAS,CAAC,GAAG,YAAY,GAAG,MAAM;AACpC,EAAE;AAEJ,MAAM,mBAAmB,eAAe,gBAAA,GAAmB,CAAC,UAAU,MAAM,UAAU;ACftF,MAAM,SAAS,CAAC,KAAK,UAAU;AACzB,MAAA,OAAO,QAAQ,YAAY;AAC7B,QAAI,KAAK;AAAA,EACA,WAAA,QAAQ,QAAQ,QAAQ,QAAW;AAC5C,QAAI,UAAU;AAAA,EAChB;AACF;AAQa,MAAA,cAAc,IAAI,SAAS;AAC/B,SAAA,CAAC,SAAS,KAAK,QAAQ,CAAC,QAAQ,OAAO,KAAK,IAAI,CAAC;AAC1D;AC3BA,SAAwB,kBAAkB,MAAM;AACvC,SAAA,CAAC,WAAW,cAAc,WAAW,SAAS,QAAQ,EAAE,SAAS,IAAI;AAC9E;ACQA,IAAI,UAAU,IAAI,OAAO,WAAW,WAAY;AACvC,SAAA,KAAK,KAAK,WAAWC,iBAAY,UAAU,CAAC,UAAU,UAAU,MAAS;AAClF,CAAC;AAED,IAAI,UAAU,IAAI,OAAO,eAAe,SAAU,KAAK;AACrD,SAAO,KAAK,KAAK,eAAeA,iBAAY,KAAK,CAAC,UAAU;AACtD,QAAA,QAAQ,KAAK,GAAG;AACX,aAAA;AAAA,IACT;AAEA,WAAO,MAAM,UAAU;AAAA,EAAA,CACxB;AACH,CAAC;AAED,IAAI,UAAU,IAAI,QAAQ,cAAc,SAAU,SAAS,KAAK;AAC9D,SAAO,KAAK,KAAK,cAAc,SAAS,SAAU,OAAO;AACvD,QAAI,CAAC,OAAO;AACH,aAAA;AAAA,IACT;AAEA,QAAI,OAAO,MAAM,SAAS,KAAK,CAAC,GAAG;AAC1B,aAAA;AAAA,IACT;AAEA,WAAO,SAAS,GAAG,KAAK,SAAS,KAAK;AAAA,EAAA,CACvC;AACH,CAAC;AAED,IAAI,UAAU,IAAI,QAAQ,cAAc,SAAU,SAAS,KAAK;AAC9D,SAAO,KAAK,KAAK,cAAc,SAAS,SAAU,OAAO;AACvD,QAAI,CAAC,OAAO;AACH,aAAA;AAAA,IACT;AAEA,QAAI,OAAO,MAAM,SAAS,KAAK,CAAC,GAAG;AAC1B,aAAA;AAAA,IACT;AAEA,WAAO,SAAS,KAAK,KAAK,SAAS,GAAG;AAAA,EAAA,CACvC;AACH,CAAC;AAED,MAAM,gBAAgB,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,GAAG,CAAA,CAAE;AAE5D,MAAM,kBAAkB,CACtB,OACA,EAAE,WAAA,GACF,UAAU;AAAA,EACR,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,oBAAoB;AACtB,MACG;AACG,QAAA,aAAa,cAAc,KAAK;AAE/B,SAAA,IAAI,SAAS;AAAA,IAClB,OAAO,KAAK,UAAU,EAAE,OAAO,CAAC,KAAK,YAAY;AACzC,YAAA,YAAY,WAAW,OAAO;AAGlC,UAAA,UAAU,SAAS,cACnB,UAAU,SAAS,eACnB,UAAU,SAAS,eACnB;AACA,cAAM,YAAY,yBAAyB,UAAU,MAAM,WAAW,OAAO;AAC7E,YAAI,OAAO,IAAI;AAAA,MACjB;AAEI,UAAA,UAAU,SAAS,YAAY;AACjC,YAAI,OAAO,IAAI;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACA,EAAA,SAAS,UAAU,YAAY,IAC7B,IAAI,SAAS,SAAS,IACtB,IAAI,QAAQ,SAAS;AAAA,MAC3B;AAEI,UAAA,UAAU,SAAS,aAAa;AAClC,cAAM,uBAAuB;AAAA,UAC3B,WAAW,UAAU,SAAS;AAAA,UAC9B;AAAA,YACE;AAAA,UACF;AAAA,UACA,EAAE,GAAG,SAAS,iBAAiB,KAAK;AAAA,QAAA;AAGlC,YAAA,UAAU,eAAe,MAAM;AACjC,gBAAM,EAAE,KAAK,KAAK,SAAA,IAAa;AAE/B,cAAIC,mBAAkB,IAAI,KAAK,CAAC,UAAU;AACxC,gBAAI,aAAa,IAAI,MAAM,EAAE,GAAG,oBAAoB;AAEpD,gBAAI,KAAK;AACP,kBAAI,UAAU;AACZ,6BAAa,WAAW,IAAI,KAAKD,iBAAY,GAAG;AAAA,cACvC,WAAA,aAAa,QAAQ,QAAQ,KAAK,GAAG;AAC9C,6BAAa,WAAW;cAAS,OAC5B;AACL,6BAAa,WAAW,IAAI,KAAKA,iBAAY,GAAG;AAAA,cAClD;AAAA,YACS,WAAA,YAAY,CAAC,QAAQ,SAAS;AACvC,2BAAa,WAAW,IAAI,GAAGA,iBAAY,QAAQ;AAAA,YACrD;AAEA,gBAAI,KAAK;AACP,2BAAa,WAAW,IAAI,KAAKA,iBAAY,GAAG;AAAA,YAClD;AAEO,mBAAA;AAAA,UAAA,CACR;AAED,cAAI,OAAO,IAAIC;AAER,iBAAA;AAAA,QACT;AACA,cAAM,kBAAkB,IAAI,KAAK,CAAC,QAAQ;AACxC,cAAI,QAAQ,QAAW;AACd,mBAAA,UAAU,aAAa,QAAQ,CAAC,QAAQ,UAC3C,qBAAqB,QAAA,IACrB,qBAAqB,SAAS;AAAA,UACpC;AAEO,iBAAA,UAAU,aAAa,OAAO,IAAI,OAAA,EAAS,QAAA,IAAY,IAAI,OAAO,EAAE,SAAS;AAAA,QAAA,CACrF;AAED,YAAI,OAAO,IAAI;AAER,eAAA;AAAA,MACT;AAEI,UAAA,UAAU,SAAS,eAAe;AAChC,YAAA,oBAAoB,IAAI,MAAA,EAAQ;AAAA,UAClC,IAAI,KAAK,CAAC,EAAE,kBAAkB;AACrB,mBAAA;AAAA,cACL,WAAW,WAAW;AAAA,cACtB,EAAE,WAAW;AAAA,cACb,EAAE,GAAG,SAAS,iBAAiB,KAAK;AAAA,YAAA;AAAA,UACtC,CACD;AAAA,QAAA;AAGG,cAAA,EAAE,KAAK,IAAQ,IAAA;AAErB,YAAI,KAAK;AACP,cAAI,UAAU,UAAU;AACtB,gCAAoB,kBACjB,KAAK,OAAOD,iBAAY,KAAK,CAAC,UAAU;AACvC,kBAAI,QAAQ,iBAAiB;AACpB,uBAAA,SAAS,MAAM,UAAU;AAAA,cAClC;AAEA,kBAAI,UAAU,QAAW;AAChB,uBAAA;AAAA,cACT;AAEO,qBAAA,UAAU,QAAQ,MAAM,UAAU;AAAA,YAAA,CAC1C,EACA,KAAK,YAAYA,iBAAY,UAAU,CAAC,UAAU;AACjD,kBAAI,QAAQ,iBAAiB;AACpB,uBAAA,UAAU,QAAQ,UAAU;AAAA,cACrC;AAEA,kBAAI,UAAU,QAAW;AAChB,uBAAA;AAAA,cACT;AAEA,qBAAO,UAAU;AAAA,YAAA,CAClB;AAAA,UAAA,OACE;AACe,gCAAA,kBAAkB,YAAY,GAAG;AAAA,UACvD;AAAA,QACS,WAAA,UAAU,YAAY,CAAC,QAAQ,SAAS;AACjD,8BAAoB,kBAAkB,KAAK,YAAYA,iBAAY,UAAU,CAAC,UAAU;AACtF,gBAAI,QAAQ,iBAAiB;AACpB,qBAAA,UAAU,QAAQ,UAAU;AAAA,YACrC;AAEA,gBAAI,UAAU,QAAW;AAChB,qBAAA;AAAA,YACT;AAEA,mBAAO,UAAU;AAAA,UAAA,CAClB;AAAA,QACH;AAEA,YAAI,KAAK;AACP,8BAAoB,kBAAkB,IAAI,KAAKA,iBAAY,GAAG;AAAA,QAChE;AAEA,YAAI,OAAO,IAAI;AAAA,MACjB;AAEO,aAAA;AAAA,IACT,GAAG,EAAE;AAAA,EAAA;AAET;AAEA,MAAM,2BAA2B,CAAC,MAAM,aAAa,YAAY;AAC3D,MAAA,SAAS,IAAI;AAEb,MAAA,CAAC,UAAU,OAAO,QAAQ,YAAY,SAAS,YAAY,aAAa,EAAE,SAAS,IAAI,GAAG;AAC5F,aAAS,IAAI;EACf;AAEA,MAAI,SAAS,UAAU;AACZ,aAAA,IAAI,QAAQ,KAAK,UAAUA,iBAAY,MAAM,CAAC,UAAU;AAE/D,UAAI,QAAQ,oBAAoB;AACvB,eAAA;AAAA,MACT;AAGA,UAAI,QAAQ,SAAS;AACZ,eAAA;AAAA,MACT;AAGA,UAAI,SAAS,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC3B,eAAA;AAAA,MACT;AAEO,aAAA;AAAA,IAAA,CACR;AAAA,EACH;AAEA,MAAI,SAAS,QAAQ;AACV,aAAA,IACN,MAAMA,iBAAY,IAAI,EACtB,KAAK,UAAUA,iBAAY,MAAM,CAAC,UAAU;AAE3C,UAAI,QAAQ,oBAAoB;AACvB,eAAA;AAAA,MACT;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ;AACpB,eAAA;AAAA,MACT;AAEI,UAAA;AACF,aAAK,MAAM,KAAK;AAET,eAAA;AAAA,eACA,KAAK;AACL,eAAA;AAAA,MACT;AAAA,IAAA,CACD,EACA,SAAS,EACT,KAAK,YAAYA,iBAAY,UAAU,CAAC,UAAU;AACjD,UAAI,YAAY,aAAa,CAAC,SAAS,CAAC,MAAM,SAAS;AAC9C,eAAA;AAAA,MACT;AAEO,aAAA;AAAA,IAAA,CACR;AAAA,EACL;AAEA,MAAI,SAAS,SAAS;AACX,aAAA,OAAO,MAAMA,iBAAY,KAAK;AAAA,EACzC;AAEI,MAAA,CAAC,UAAU,WAAW,SAAS,SAAS,EAAE,SAAS,IAAI,GAAG;AAC5D,aAAS,IACN,SACA,UAAU,CAAC,OAAQ,MAAM,EAAE,IAAI,SAAY,EAAG,EAC9C,UAAU;AAAA,EACf;AAEA,MAAI,SAAS,cAAc;AACzB,aAAS,IAAI,OAAS,EAAA,QAAQ,SAAS;AAAA,EACzC;AAEA,MAAI,CAAC,QAAQ,UAAU,EAAE,SAAS,IAAI,GAAG;AACvC,aAAS,IAAI;EACf;AAEA,SAAO,KAAK,WAAW,EAAE,QAAQ,CAAC,eAAe;AACzC,UAAA,kBAAkB,YAAY,UAAU;AAE9C,QACE,CAAC,CAAC,mBACD,CAAC,UAAU,eAAe,KAAK,OAAO,UAAU,KAAK,MAAM,eAAe,CAAC,KAC5E,oBAAoB,GACpB;AACA,cAAQ,YAAY;AAAA,QAClB,KAAK,YAAY;AACX,cAAA,CAAC,QAAQ,SAAS;AAChB,gBAAA,SAAS,cAAc,QAAQ,iBAAiB;AACzC,uBAAA,OAAO,SAASA,iBAAY,QAAQ;AAAA,YAC/C;AAEA,gBAAI,SAAS,YAAY;AACvB,kBAAI,QAAQ,iBAAiB;AAClB,yBAAA,OAAO,SAASA,iBAAY,QAAQ;AAAA,cAAA,OACxC;AACL,yBAAS,OAAO,KAAK,YAAYA,iBAAY,UAAU,CAAC,UAAU;AAEhE,sBAAI,UAAU,UAAa,CAAC,QAAQ,iBAAiB;AAC5C,2BAAA;AAAA,kBACT;AAEI,sBAAA,kBAAkB,IAAI,GAAG;AAC3B,wBAAI,UAAU,GAAG;AACR,6BAAA;AAAA,oBACT;AAEA,2BAAO,CAAC,CAAC;AAAA,kBACX;AAEA,sBAAI,SAAS,WAAW;AAEf,2BAAA,UAAU,QAAQ,UAAU;AAAA,kBACrC;AAEI,sBAAA,SAAS,UAAU,SAAS,YAAY;AACtC,wBAAA,OAAO,UAAU,UAAU;AACtB,6BAAA,CAAC,QAAQ,KAAK;AAAA,oBACvB;AAEA,2BAAO,CAAC,QAAQ,OAAO,SAAU,CAAA;AAAA,kBACnC;AAEO,yBAAA,CAAC,QAAQ,KAAK;AAAA,gBAAA,CACtB;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAEA;AAAA,QACF;AAAA,QAEA,KAAK,OAAO;AACV,cAAI,SAAS,cAAc;AACzB,qBAAS,OAAO,WAAWA,iBAAY,KAAK,eAAe;AAAA,UAAA,OACtD;AACL,qBAAS,OAAO,IAAI,iBAAiBA,iBAAY,GAAG;AAAA,UACtD;AACA;AAAA,QACF;AAAA,QACA,KAAK;AACH,mBAAS,OAAO,IAAI,iBAAiBA,iBAAY,SAAS;AAC1D;AAAA,QACF,KAAK,OAAO;AACV,cAAI,SAAS,cAAc;AACzB,qBAAS,OAAO,WAAWA,iBAAY,KAAK,eAAe;AAAA,UAAA,OACtD;AACL,qBAAS,OAAO,IAAI,iBAAiBA,iBAAY,GAAG;AAAA,UACtD;AACA;AAAA,QACF;AAAA,QACA,KAAK,aAAa;AACZ,cAAA,CAAC,QAAQ,SAAS;AACpB,qBAAS,OAAO,IAAI,iBAAiBA,iBAAY,SAAS;AAAA,UAC5D;AACA;AAAA,QACF;AAAA,QACA,KAAK;AACH,mBAAS,OAAO,QAAQ,IAAI,OAAO,eAAe,GAAG;AAAA,YACnD,SAASA,iBAAY;AAAA,YACrB,oBAAoB,CAAC,YAAY;AAAA,UAAA,CAClC;AACD;AAAA,QACF,KAAK;AACC,cAAA,CAAC,QAAQ,YAAY,SAAS,QAAQ,EAAE,SAAS,IAAI,GAAG;AACjD,qBAAA,OAAO,OAAO,EAAE,UAAU;AAAA,UACrC;AACA;AAAA,QACF,KAAK;AACC,cAAA,CAAC,QAAQ,YAAY,SAAS,QAAQ,EAAE,SAAS,IAAI,GAAG;AACjD,qBAAA,OAAO,OAAO,EAAE,UAAU;AAAA,UACrC;AACA;AAAA,QACF,KAAK;AACC,cAAA,kBAAkB,IAAI,GAAG;AAC3B,qBAAS,OAAO;UAClB;AACA;AAAA,QACF,KAAK;AACC,cAAA,kBAAkB,IAAI,GAAG;AAC3B,qBAAS,OAAO;UAClB;AACA;AAAA,QACF;AACE,mBAAS,OAAO;MACpB;AAAA,IACF;AAAA,EAAA,CACD;AAEM,SAAA;AACT;"}
|
|
1
|
+
{"version":3,"file":"schema-60d9880c.mjs","sources":["../../admin/src/content-manager/utils/getTrad.js","../../admin/src/content-manager/contexts/Wysiwyg.js","../../admin/src/content-manager/hooks/useKeyboardDragAndDrop.js","../../admin/src/content-manager/hooks/useDragAndDrop.js","../../admin/src/content-manager/pages/App/selectors.js","../../admin/src/content-manager/utils/composeRefs.js","../../admin/src/content-manager/utils/isFieldTypeNumber.js","../../admin/src/content-manager/utils/schema.js"],"sourcesContent":["const getTrad = (id) => `content-manager.${id}`;\n\nexport default getTrad;\n","import { createContext } from 'react';\n\nconst WysiwygContext = createContext();\n\nexport default WysiwygContext;\n","import { useState } from 'react';\n\n/**\n * @typedef UseKeyboardDragAndDropCallbacks\n *\n * @type {{\n * onCancel?: (index: number) => void,\n * onDropItem?: (index: number) => void,\n * onGrabItem?: (index: number) => void,\n * onMoveItem: (newIndex: number, currentIndex: number) => void,\n * }}\n */\n\n/**\n * Utility hook designed to implement keyboard accessibile drag and drop by\n * returning an onKeyDown handler to be passed to the drag icon button.\n *\n * @internal - You should use `useDragAndDrop` instead.\n *\n * @type {(active: boolean, index: number, callbacks: UseKeyboardDragAndDropCallbacks) => (event: React.KeyboardEvent<HTMLButtonElement>) => void}\n */\nexport const useKeyboardDragAndDrop = (\n active,\n index,\n { onCancel, onDropItem, onGrabItem, onMoveItem }\n) => {\n const [isSelected, setIsSelected] = useState(false);\n /**\n * @type {(movement: 'UP' | 'DOWN') => void})}\n */\n const handleMove = (movement) => {\n if (!isSelected) {\n return;\n }\n\n if (movement === 'UP') {\n onMoveItem(index - 1, index);\n } else if (movement === 'DOWN') {\n onMoveItem(index + 1, index);\n }\n };\n\n const handleDragClick = () => {\n if (isSelected) {\n if (onDropItem) {\n onDropItem(index);\n }\n setIsSelected(false);\n } else {\n if (onGrabItem) {\n onGrabItem(index);\n }\n setIsSelected(true);\n }\n };\n\n const handleCancel = () => {\n if (isSelected) {\n setIsSelected(false);\n\n if (onCancel) {\n onCancel(index);\n }\n }\n };\n\n /**\n * @type {React.KeyboardEventHandler<HTMLButtonElement>}\n */\n const handleKeyDown = (e) => {\n if (!active) {\n return;\n }\n\n if (e.key === 'Tab' && !isSelected) {\n return;\n }\n\n e.preventDefault();\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n handleDragClick();\n break;\n\n case 'Escape':\n handleCancel();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n handleMove('DOWN');\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n handleMove('UP');\n break;\n\n default:\n }\n };\n\n return handleKeyDown;\n};\n","import { useRef } from 'react';\n\nimport { useDrag, useDrop } from 'react-dnd';\n\nimport { useKeyboardDragAndDrop } from './useKeyboardDragAndDrop';\n\n/**\n * @typedef UseDragAndDropOptions\n *\n * @type {{\n * type?: string,\n * index: number,\n * item?: object,\n * onStart?: () => void,\n * onEnd?: () => void,\n * dropSensitivity?: 'regular' | 'immediate'\n * } & import('./useKeyboardDragAndDrop').UseKeyboardDragAndDropCallbacks}\n */\n\n/**\n * @typedef UseDragAndDropReturn\n *\n * @type {[props: {handlerId: import('dnd-core').Identifier, isDragging: boolean, handleKeyDown: (event: import('react').KeyboardEvent<HTMLButtonElement>) => void}, objectRef: React.RefObject<HTMLElement>, dropRef: import('react-dnd').ConnectDropTarget, dragRef: import('react-dnd').ConnectDragSource, dragPreviewRef: import('react-dnd').ConnectDragPreview]}\n */\n\n/**\n * A utility hook abstracting the general drag and drop hooks from react-dnd.\n * Centralising the same behaviours and by default offering keyboard support.\n *\n * @type {(active: boolean, options: UseDragAndDropOptions) => UseDragAndDropReturn}\n */\nexport const useDragAndDrop = (\n active,\n {\n type = 'STRAPI_DND',\n index,\n item = {},\n onStart,\n onEnd,\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n dropSensitivity = 'regular',\n }\n) => {\n const objectRef = useRef(null);\n\n const [{ handlerId }, dropRef] = useDrop({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item, monitor) {\n if (!objectRef.current) {\n return;\n }\n const dragIndex = item.index;\n const newInd = index;\n\n // Don't replace items with themselves\n if (dragIndex === newInd) {\n return;\n }\n\n if (dropSensitivity === 'regular') {\n const hoverBoundingRect = objectRef.current.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n // Dragging downwards\n if (dragIndex < newInd && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > newInd && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n\n // Time to actually perform the action\n onMoveItem(newInd, dragIndex);\n item.index = newInd;\n },\n });\n\n const [{ isDragging }, dragRef, dragPreviewRef] = useDrag({\n type,\n item() {\n if (onStart) {\n onStart();\n }\n\n /**\n * This will be attached and it helps define the preview sizes\n * when a component is flexy e.g. Relations\n */\n const { width } = objectRef.current?.getBoundingClientRect() ?? {};\n\n return { index, width, ...item };\n },\n end() {\n if (onEnd) {\n onEnd();\n }\n },\n canDrag: active,\n /**\n * This is for useful when the item is in a virtualized list.\n * However, if we don't have an ID then we want the libraries\n * defaults to take care of this.\n */\n isDragging: item.id\n ? (monitor) => {\n return item.id === monitor.getItem().id;\n }\n : undefined,\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const handleKeyDown = useKeyboardDragAndDrop(active, index, {\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n });\n\n return [{ handlerId, isDragging, handleKeyDown }, objectRef, dropRef, dragRef, dragPreviewRef];\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport { initialState } from './reducer';\n\nconst selectAppDomain = () => (state) => {\n return state['content-manager_app'] || initialState;\n};\n\nconst makeSelectApp = () =>\n createSelector(selectAppDomain(), (substate) => {\n return substate;\n });\n\nconst makeSelectModels = () => createSelector(selectAppDomain(), (state) => state.models);\n\nconst makeSelectModelLinks = () =>\n createSelector(selectAppDomain(), (state) => ({\n collectionTypeLinks: state.collectionTypeLinks,\n singleTypeLinks: state.singleTypeLinks,\n }));\n\nconst makeSelectModelAndComponentSchemas = () =>\n createSelector(selectAppDomain(), ({ components, models }) => ({\n schemas: [...components, ...models],\n }));\n\nconst selectFieldSizes = createSelector(selectAppDomain(), (state) => state.fieldSizes);\n\nexport default makeSelectApp;\nexport {\n makeSelectModelAndComponentSchemas,\n makeSelectModelLinks,\n makeSelectModels,\n selectAppDomain,\n selectFieldSizes,\n};\n","/**\n * @typedef PossibleRef<T>\n * @type {React.Ref<T> | undefined;}\n *\n * @typedef setRef\n * @type {<T>(ref: PossibleRef<T>, value: T) => React.RefCallback<T>}\n */\n\n/**\n * @type {setRef}\n */\nconst setRef = (ref, value) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n};\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n *\n * @type {<T>(...refs: PossibleRef<T>[]) => (node: T) => void}\n */\nexport const composeRefs = (...refs) => {\n return (node) => refs.forEach((ref) => setRef(ref, node));\n};\n","export default function isFieldTypeNumber(type) {\n return ['integer', 'biginteger', 'decimal', 'float', 'number'].includes(type);\n}\n","import { translatedErrors as errorsTrads } from '@strapi/helper-plugin';\nimport get from 'lodash/get';\nimport isBoolean from 'lodash/isBoolean';\nimport isEmpty from 'lodash/isEmpty';\nimport isNaN from 'lodash/isNaN';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport isFieldTypeNumber from './isFieldTypeNumber';\n\nyup.addMethod(yup.mixed, 'defined', function () {\n return this.test('defined', errorsTrads.required, (value) => value !== undefined);\n});\n\nyup.addMethod(yup.array, 'notEmptyMin', function (min) {\n return this.test('notEmptyMin', errorsTrads.min, (value) => {\n if (isEmpty(value)) {\n return true;\n }\n\n return value.length >= min;\n });\n});\n\nyup.addMethod(yup.string, 'isInferior', function (message, max) {\n return this.test('isInferior', message, function (value) {\n if (!value) {\n return true;\n }\n\n if (Number.isNaN(toNumber(value))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(value);\n });\n});\n\nyup.addMethod(yup.string, 'isSuperior', function (message, min) {\n return this.test('isSuperior', message, function (value) {\n if (!value) {\n return true;\n }\n\n if (Number.isNaN(toNumber(value))) {\n return true;\n }\n\n return toNumber(value) >= toNumber(min);\n });\n});\n\nconst getAttributes = (data) => get(data, ['attributes'], {});\n\nconst createYupSchema = (\n model,\n { components },\n options = {\n isCreatingEntry: true,\n isDraft: true,\n isFromComponent: false,\n isJSONTestDisabled: false,\n }\n) => {\n const attributes = getAttributes(model);\n\n return yup.object().shape(\n Object.keys(attributes).reduce((acc, current) => {\n const attribute = attributes[current];\n\n if (\n attribute.type !== 'relation' &&\n attribute.type !== 'component' &&\n attribute.type !== 'dynamiczone'\n ) {\n const formatted = createYupSchemaAttribute(attribute.type, attribute, options);\n acc[current] = formatted;\n }\n\n if (attribute.type === 'relation') {\n acc[current] = [\n 'oneWay',\n 'oneToOne',\n 'manyToOne',\n 'oneToManyMorph',\n 'oneToOneMorph',\n ].includes(attribute.relationType)\n ? yup.object().nullable()\n : yup.array().nullable();\n }\n\n if (attribute.type === 'component') {\n const componentFieldSchema = createYupSchema(\n components[attribute.component],\n {\n components,\n },\n { ...options, isFromComponent: true }\n );\n\n if (attribute.repeatable === true) {\n const { min, max, required } = attribute;\n\n let componentSchema = yup.lazy((value) => {\n let baseSchema = yup.array().of(componentFieldSchema);\n\n if (min) {\n if (required) {\n baseSchema = baseSchema.min(min, errorsTrads.min);\n } else if (required !== true && isEmpty(value)) {\n baseSchema = baseSchema.nullable();\n } else {\n baseSchema = baseSchema.min(min, errorsTrads.min);\n }\n } else if (required && !options.isDraft) {\n baseSchema = baseSchema.min(1, errorsTrads.required);\n }\n\n if (max) {\n baseSchema = baseSchema.max(max, errorsTrads.max);\n }\n\n return baseSchema;\n });\n\n acc[current] = componentSchema;\n\n return acc;\n }\n const componentSchema = yup.lazy((obj) => {\n if (obj !== undefined) {\n return attribute.required === true && !options.isDraft\n ? componentFieldSchema.defined()\n : componentFieldSchema.nullable();\n }\n\n return attribute.required === true ? yup.object().defined() : yup.object().nullable();\n });\n\n acc[current] = componentSchema;\n\n return acc;\n }\n\n if (attribute.type === 'dynamiczone') {\n let dynamicZoneSchema = yup.array().of(\n yup.lazy(({ __component }) => {\n return createYupSchema(\n components[__component],\n { components },\n { ...options, isFromComponent: true }\n );\n })\n );\n\n const { max, min } = attribute;\n\n if (min) {\n if (attribute.required) {\n dynamicZoneSchema = dynamicZoneSchema\n .test('min', errorsTrads.min, (value) => {\n if (options.isCreatingEntry) {\n return value && value.length >= min;\n }\n\n if (value === undefined) {\n return true;\n }\n\n return value !== null && value.length >= min;\n })\n .test('required', errorsTrads.required, (value) => {\n if (options.isCreatingEntry) {\n return value !== null || value !== undefined;\n }\n\n if (value === undefined) {\n return true;\n }\n\n return value !== null;\n });\n } else {\n dynamicZoneSchema = dynamicZoneSchema.notEmptyMin(min);\n }\n } else if (attribute.required && !options.isDraft) {\n dynamicZoneSchema = dynamicZoneSchema.test('required', errorsTrads.required, (value) => {\n if (options.isCreatingEntry) {\n return value !== null || value !== undefined;\n }\n\n if (value === undefined) {\n return true;\n }\n\n return value !== null;\n });\n }\n\n if (max) {\n dynamicZoneSchema = dynamicZoneSchema.max(max, errorsTrads.max);\n }\n\n acc[current] = dynamicZoneSchema;\n }\n\n return acc;\n }, {})\n );\n};\n\nconst createYupSchemaAttribute = (type, validations, options) => {\n let schema = yup.mixed();\n\n if (['string', 'uid', 'text', 'richtext', 'email', 'password', 'enumeration'].includes(type)) {\n schema = yup.string();\n }\n\n if (type === 'blocks') {\n schema = yup.mixed().test('isJSON', errorsTrads.json, (value) => {\n // Disable the test for bulk publish, it's valid when it comes from the db\n if (options.isJSONTestDisabled) {\n return true;\n }\n\n // Don't run validations on drafts\n if (options.isDraft) {\n return true;\n }\n\n // The backend validates the actual schema, check if a value different than null is not an array\n if (value && !Array.isArray(value)) {\n return false;\n }\n\n return true;\n });\n }\n\n if (type === 'json') {\n schema = yup\n .mixed(errorsTrads.json)\n .test('isJSON', errorsTrads.json, (value) => {\n // Disable the test for bulk publish, it's valid when it comes from the db\n if (options.isJSONTestDisabled) {\n return true;\n }\n\n if (!value || !value.length) {\n return true;\n }\n\n try {\n JSON.parse(value);\n\n return true;\n } catch (err) {\n return false;\n }\n })\n .nullable()\n .test('required', errorsTrads.required, (value) => {\n if (validations.required && (!value || !value.length)) {\n return false;\n }\n\n return true;\n });\n }\n\n if (type === 'email') {\n schema = schema.email(errorsTrads.email);\n }\n\n if (['number', 'integer', 'float', 'decimal'].includes(type)) {\n schema = yup\n .number()\n .transform((cv) => (isNaN(cv) ? undefined : cv))\n .typeError();\n }\n\n if (type === 'biginteger') {\n schema = yup.string().matches(/^-?\\d*$/);\n }\n\n if (['date', 'datetime'].includes(type)) {\n schema = yup.date();\n }\n\n Object.keys(validations).forEach((validation) => {\n const validationValue = validations[validation];\n\n if (\n !!validationValue ||\n (!isBoolean(validationValue) && Number.isInteger(Math.floor(validationValue))) ||\n validationValue === 0\n ) {\n switch (validation) {\n case 'required': {\n if (!options.isDraft) {\n if (type === 'password' && options.isCreatingEntry) {\n schema = schema.required(errorsTrads.required);\n }\n\n if (type !== 'password') {\n if (options.isCreatingEntry) {\n schema = schema.required(errorsTrads.required);\n } else {\n schema = schema.test('required', errorsTrads.required, (value) => {\n // Field is not touched and the user is editing the entry\n if (value === undefined && !options.isFromComponent) {\n return true;\n }\n\n if (isFieldTypeNumber(type)) {\n if (value === 0) {\n return true;\n }\n\n return !!value;\n }\n\n if (type === 'boolean') {\n // Boolean value can be undefined/unset in modifiedData when generated in a new component\n return value !== null && value !== undefined;\n }\n\n if (type === 'date' || type === 'datetime') {\n if (typeof value === 'string') {\n return !isEmpty(value);\n }\n\n return !isEmpty(value?.toString());\n }\n\n return !isEmpty(value);\n });\n }\n }\n }\n\n break;\n }\n\n case 'max': {\n if (type === 'biginteger') {\n schema = schema.isInferior(errorsTrads.max, validationValue);\n } else {\n schema = schema.max(validationValue, errorsTrads.max);\n }\n break;\n }\n case 'maxLength':\n schema = schema.max(validationValue, errorsTrads.maxLength);\n break;\n case 'min': {\n if (type === 'biginteger') {\n schema = schema.isSuperior(errorsTrads.min, validationValue);\n } else {\n schema = schema.min(validationValue, errorsTrads.min);\n }\n break;\n }\n case 'minLength': {\n if (!options.isDraft) {\n schema = schema.min(validationValue, errorsTrads.minLength);\n }\n break;\n }\n case 'regex':\n schema = schema.matches(new RegExp(validationValue), {\n message: errorsTrads.regex,\n excludeEmptyString: !validations.required,\n });\n break;\n case 'lowercase':\n if (['text', 'textarea', 'email', 'string'].includes(type)) {\n schema = schema.strict().lowercase();\n }\n break;\n case 'uppercase':\n if (['text', 'textarea', 'email', 'string'].includes(type)) {\n schema = schema.strict().uppercase();\n }\n break;\n case 'positive':\n if (isFieldTypeNumber(type)) {\n schema = schema.positive();\n }\n break;\n case 'negative':\n if (isFieldTypeNumber(type)) {\n schema = schema.negative();\n }\n break;\n default:\n schema = schema.nullable();\n }\n }\n });\n\n return schema;\n};\n\nexport default createYupSchema;\n"],"names":["item","errorsTrads","componentSchema"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { useEffect } from "react";
|
|
3
|
-
import { V as useTypedStore } from "./index-
|
|
3
|
+
import { V as useTypedStore } from "./index-3c67c00b.mjs";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { Box, Typography, Flex, MultiSelectOption, IconButton, VisuallyHidden, Accordion, AccordionToggle, AccordionContent, Grid, GridItem, TextInput, SingleSelect, SingleSelectOption, MultiSelect, MultiSelectGroup } from "@strapi/design-system";
|
|
6
6
|
import { useTracking, useNotification, NotAllowedInput, ConfirmDialog, useCollator } from "@strapi/helper-plugin";
|
|
@@ -12,7 +12,7 @@ import { PlusCircle, More, Drag, Duplicate } from "@strapi/icons";
|
|
|
12
12
|
import { MenuItem, Menu } from "@strapi/design-system/v2";
|
|
13
13
|
import { useField } from "formik";
|
|
14
14
|
import { getEmptyImage } from "react-dnd-html5-backend";
|
|
15
|
-
import { u as useDragAndDrop, c as composeRefs } from "./schema-
|
|
15
|
+
import { u as useDragAndDrop, c as composeRefs } from "./schema-60d9880c.mjs";
|
|
16
16
|
import "axios";
|
|
17
17
|
import { produce } from "immer";
|
|
18
18
|
import "lodash/cloneDeep";
|
|
@@ -1098,4 +1098,4 @@ export {
|
|
|
1098
1098
|
useInjectReducer as u,
|
|
1099
1099
|
validateWorkflow as v
|
|
1100
1100
|
};
|
|
1101
|
-
//# sourceMappingURL=validateWorkflow-
|
|
1101
|
+
//# sourceMappingURL=validateWorkflow-022b5005.mjs.map
|
package/dist/_chunks/{validateWorkflow-2f84e76e.mjs.map → validateWorkflow-022b5005.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateWorkflow-2f84e76e.mjs","sources":["../../admin/src/hooks/useInjectReducer.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions/index.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage/AddStage.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/Stage.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stages.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/WorkflowAttributes/WorkflowAttributes.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/validateWorkflow.js"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { Reducer } from '@reduxjs/toolkit';\n\nimport { useTypedStore } from '../core/store/hooks';\n\n/**\n * Inject a new reducer into the global redux-store.\n *\n * @export\n * @param {string} namespace - Store namespace of the injected reducer\n * @param {Function} reducer - Reducer function\n * @return void\n */\n\nexport function useInjectReducer(namespace: string, reducer: Reducer) {\n const store = useTypedStore();\n\n useEffect(() => {\n store.injectReducer(namespace, reducer);\n }, [store, namespace, reducer]);\n}\n","import {\n ACTION_ADD_STAGE,\n ACTION_CLONE_STAGE,\n ACTION_DELETE_STAGE,\n ACTION_RESET_WORKFLOW,\n ACTION_SET_CONTENT_TYPES,\n ACTION_SET_IS_LOADING,\n ACTION_SET_ROLES,\n ACTION_SET_WORKFLOW,\n ACTION_SET_WORKFLOWS,\n ACTION_UPDATE_STAGE,\n ACTION_UPDATE_STAGES,\n ACTION_UPDATE_STAGE_POSITION,\n ACTION_UPDATE_WORKFLOW,\n} from '../constants';\n\nexport function cloneStage(id) {\n return {\n type: ACTION_CLONE_STAGE,\n payload: { id },\n };\n}\n\nexport function setWorkflow({ workflow }) {\n return {\n type: ACTION_SET_WORKFLOW,\n payload: workflow,\n };\n}\n\nexport function setWorkflows({ workflows }) {\n return {\n type: ACTION_SET_WORKFLOWS,\n payload: workflows,\n };\n}\n\nexport function deleteStage(stageId) {\n return {\n type: ACTION_DELETE_STAGE,\n payload: {\n stageId,\n },\n };\n}\n\nexport function addStage(stage = {}) {\n return {\n type: ACTION_ADD_STAGE,\n payload: stage,\n };\n}\n\nexport function updateStage(stageId, payload) {\n return {\n type: ACTION_UPDATE_STAGE,\n payload: {\n stageId,\n ...payload,\n },\n };\n}\n\nexport function updateStages(payload) {\n return {\n type: ACTION_UPDATE_STAGES,\n payload,\n };\n}\n\nexport function updateStagePosition(oldIndex, newIndex) {\n return {\n type: ACTION_UPDATE_STAGE_POSITION,\n payload: {\n newIndex,\n oldIndex,\n },\n };\n}\n\nexport function updateWorkflow(payload) {\n return {\n type: ACTION_UPDATE_WORKFLOW,\n payload,\n };\n}\n\nexport function resetWorkflow() {\n return {\n type: ACTION_RESET_WORKFLOW,\n };\n}\n\nexport function setContentTypes(payload) {\n return {\n type: ACTION_SET_CONTENT_TYPES,\n payload,\n };\n}\n\nexport function setRoles(payload) {\n return {\n type: ACTION_SET_ROLES,\n payload,\n };\n}\n\nexport function setIsLoading(isLoading) {\n return {\n type: ACTION_SET_IS_LOADING,\n payload: isLoading,\n };\n}\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nconst StyledAddIcon = styled(PlusCircle)`\n > circle {\n fill: ${({ theme }) => theme.colors.neutral150};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst StyledButton = styled(Box)`\n border-radius: 26px;\n\n svg {\n height: ${({ theme }) => theme.spaces[6]};\n width: ${({ theme }) => theme.spaces[6]};\n\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary600} !important;\n ${Typography} {\n color: ${({ theme }) => theme.colors.primary600} !important;\n }\n\n ${StyledAddIcon} {\n > circle {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral100};\n }\n }\n }\n\n &:active {\n ${Typography} {\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n ${StyledAddIcon} {\n > circle {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral100};\n }\n }\n }\n`;\n\nexport function AddStage({ children, ...props }) {\n return (\n <StyledButton\n as=\"button\"\n background=\"neutral0\"\n border=\"neutral150\"\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={3}\n shadow=\"filterShadow\"\n {...props}\n >\n <Flex gap={2}>\n <StyledAddIcon aria-hidden />\n\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {children}\n </Typography>\n </Flex>\n </StyledButton>\n );\n}\n\nAddStage.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","import { produce } from 'immer';\n\nimport {\n ACTION_ADD_STAGE,\n ACTION_CLONE_STAGE,\n ACTION_DELETE_STAGE,\n ACTION_RESET_WORKFLOW,\n ACTION_SET_CONTENT_TYPES,\n ACTION_SET_IS_LOADING,\n ACTION_SET_ROLES,\n ACTION_SET_WORKFLOW,\n ACTION_SET_WORKFLOWS,\n ACTION_UPDATE_STAGE,\n ACTION_UPDATE_STAGES,\n ACTION_UPDATE_STAGE_POSITION,\n ACTION_UPDATE_WORKFLOW,\n STAGE_COLOR_DEFAULT,\n} from '../constants';\n\nexport const initialState = {\n serverState: {\n contentTypes: {\n collectionTypes: [],\n singleTypes: [],\n },\n roles: [],\n workflow: null,\n workflows: [],\n },\n clientState: {\n currentWorkflow: {\n data: {\n name: '',\n contentTypes: [],\n stages: [],\n permissions: undefined,\n },\n },\n isLoading: true,\n },\n};\n\nexport function reducer(state = initialState, action) {\n return produce(state, (draft) => {\n const { payload } = action;\n\n switch (action.type) {\n case ACTION_SET_CONTENT_TYPES: {\n draft.serverState.contentTypes = payload;\n break;\n }\n\n case ACTION_SET_IS_LOADING: {\n draft.clientState.isLoading = payload;\n break;\n }\n\n case ACTION_SET_ROLES: {\n draft.serverState.roles = payload;\n break;\n }\n\n case ACTION_SET_WORKFLOW: {\n const workflow = payload;\n\n if (workflow) {\n draft.serverState.workflow = workflow;\n draft.clientState.currentWorkflow.data = {\n ...workflow,\n stages: workflow.stages.map((stage) => ({\n ...stage,\n // A safety net in case a stage does not have a color assigned;\n // this should not happen\n color: stage?.color ?? STAGE_COLOR_DEFAULT,\n })),\n };\n }\n break;\n }\n\n case ACTION_SET_WORKFLOWS: {\n draft.serverState.workflows = payload;\n break;\n }\n\n case ACTION_RESET_WORKFLOW: {\n draft.clientState = initialState.clientState;\n draft.serverState = initialState.serverState;\n break;\n }\n\n case ACTION_DELETE_STAGE: {\n const { stageId } = payload;\n const { currentWorkflow } = state.clientState;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages.filter(\n (stage) => (stage?.id ?? stage.__temp_key__) !== stageId\n );\n\n break;\n }\n\n case ACTION_ADD_STAGE: {\n const { currentWorkflow } = state.clientState;\n\n if (!currentWorkflow.data) {\n draft.clientState.currentWorkflow.data = {\n stages: [],\n };\n }\n\n const newTempKey = getMaxTempKey(draft.clientState.currentWorkflow.data.stages);\n\n draft.clientState.currentWorkflow.data.stages.push({\n ...payload,\n color: payload?.color ?? STAGE_COLOR_DEFAULT,\n __temp_key__: newTempKey,\n });\n\n break;\n }\n\n case ACTION_CLONE_STAGE: {\n const { currentWorkflow } = state.clientState;\n const { id } = payload;\n\n const sourceStageIndex = currentWorkflow.data.stages.findIndex(\n (stage) => (stage?.id ?? stage?.__temp_key__) === id\n );\n const sourceStage = currentWorkflow.data.stages[sourceStageIndex];\n\n draft.clientState.currentWorkflow.data.stages.splice(sourceStageIndex + 1, 0, {\n ...sourceStage,\n id: undefined,\n __temp_key__: getMaxTempKey(draft.clientState.currentWorkflow.data.stages),\n });\n\n break;\n }\n\n case ACTION_UPDATE_STAGE: {\n const { currentWorkflow } = state.clientState;\n const { stageId, ...modified } = payload;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages.map((stage) =>\n (stage.id ?? stage.__temp_key__) === stageId\n ? {\n ...stage,\n ...modified,\n }\n : stage\n );\n\n break;\n }\n\n case ACTION_UPDATE_STAGES: {\n const { currentWorkflow } = state.clientState;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages.map(\n (stage) => ({\n ...stage,\n ...payload,\n })\n );\n\n break;\n }\n\n case ACTION_UPDATE_STAGE_POSITION: {\n const {\n currentWorkflow: {\n data: { stages },\n },\n } = state.clientState;\n const { newIndex, oldIndex } = payload;\n\n if (newIndex >= 0 && newIndex < stages.length) {\n const stage = stages[oldIndex];\n let newStages = [...stages];\n\n newStages.splice(oldIndex, 1);\n newStages.splice(newIndex, 0, stage);\n\n draft.clientState.currentWorkflow.data.stages = newStages;\n }\n\n break;\n }\n\n case ACTION_UPDATE_WORKFLOW: {\n draft.clientState.currentWorkflow.data = {\n ...draft.clientState.currentWorkflow.data,\n ...payload,\n };\n\n break;\n }\n\n default:\n break;\n }\n });\n}\n\n/**\n * @type {(stages: Array<{id?: number; __temp_key__: number}>) => number}\n */\nconst getMaxTempKey = (stages = []) => {\n /**\n * We check if there are ids or __temp_key__ because you may add a stage to a list of stages\n * already in the DB, alternatively you might add multiple new stages at once.\n */\n const ids = stages.map((stage) => stage.id ?? stage.__temp_key__);\n\n /**\n * If there are no ids it will return 0 as the max value\n * because the max value is -1.\n */\n return Math.max(...ids, -1) + 1;\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport isEqual from 'lodash/isEqual';\n\nimport { REDUX_NAMESPACE } from './constants';\nimport { initialState } from './reducer';\n\nexport const selectNamespace = (state) => state[REDUX_NAMESPACE] ?? initialState;\n\nexport const selectContentTypes = createSelector(\n selectNamespace,\n ({ serverState: { contentTypes } }) => contentTypes\n);\n\nexport const selectRoles = createSelector(selectNamespace, ({ serverState: { roles } }) => roles);\n\nexport const selectCurrentWorkflow = createSelector(\n selectNamespace,\n ({ clientState: { currentWorkflow } }) => currentWorkflow.data\n);\n\nexport const selectWorkflows = createSelector(\n selectNamespace,\n ({ serverState: { workflows } }) => workflows\n);\n\nexport const selectIsWorkflowDirty = createSelector(\n selectNamespace,\n ({ serverState, clientState: { currentWorkflow } }) =>\n !isEqual(serverState.workflow, currentWorkflow.data)\n);\n\nexport const selectHasDeletedServerStages = createSelector(\n selectNamespace,\n ({ serverState, clientState: { currentWorkflow } }) =>\n !(serverState.workflow?.stages ?? []).every(\n (stage) => !!currentWorkflow.data.stages.find(({ id }) => id === stage.id)\n )\n);\n\nexport const selectIsLoading = createSelector(\n selectNamespace,\n ({ clientState: { isLoading } }) => isLoading\n);\n\nexport const selectServerState = createSelector(selectNamespace, ({ serverState }) => serverState);\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Flex,\n Grid,\n GridItem,\n IconButton,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n SingleSelect,\n SingleSelectOption,\n TextInput,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Menu, MenuItem } from '@strapi/design-system/v2';\nimport {\n ConfirmDialog,\n useNotification,\n NotAllowedInput,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Drag, More } from '@strapi/icons';\nimport { useField } from 'formik';\nimport PropTypes from 'prop-types';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { useDragAndDrop } from '../../../../../../../../../../admin/src/content-manager/hooks';\nimport { composeRefs } from '../../../../../../../../../../admin/src/content-manager/utils';\nimport {\n cloneStage,\n deleteStage,\n updateStage,\n updateStagePosition,\n updateStages,\n} from '../../../actions';\nimport { DRAG_DROP_TYPES } from '../../../constants';\nimport { selectRoles } from '../../../selectors';\nimport { getAvailableStageColors, getStageColorByHex } from '../../../utils/colors';\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\n// Grow the size of the permission Select\nconst PermissionWrapper = styled(Flex)`\n > * {\n flex-grow: 1;\n }\n`;\n\nconst DeleteMenuItem = styled(MenuItem)`\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\n// Removing the font-size from the child-span aligns the\n// more icon vertically\nconst ContextMenuTrigger = styled(Menu.Trigger)`\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n > span {\n font-size: 0;\n }\n`;\n\n// As soon as either `as` or `forwardedAs` is set, the component\n// resets some styles and e.g. the `hasBorder` prop no longer works,\n// which is why this bit of CSS has been added manually ¯\\_(ツ)_/¯\nconst DragIconButton = styled(IconButton)`\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n display: flex;\n justify-content: center;\n\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n svg {\n height: auto;\n width: ${({ theme }) => theme.spaces[3]}};\n }\n`;\n\nconst AVAILABLE_COLORS = getAvailableStageColors();\n\nfunction StageDropPreview() {\n return (\n <Box\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n display=\"block\"\n hasRadius\n padding={6}\n shadow=\"tableShadow\"\n />\n );\n}\n\nexport function Stage({\n id,\n index,\n canDelete,\n canReorder,\n canUpdate,\n isOpen: isOpenDefault = false,\n stagesCount,\n}) {\n /**\n *\n * @param {number} index\n * @returns {string}\n */\n const getItemPos = (index) => `${index + 1} of ${stagesCount}`;\n\n /**\n *\n * @param {number} index\n * @returns {void}\n */\n const handleGrabStage = (index) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.grab-item',\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: nameField.value,\n position: getItemPos(index),\n }\n )\n );\n };\n\n /**\n *\n * @param {number} index\n * @returns {void}\n */\n const handleDropStage = (index) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.drop-item',\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: nameField.value,\n position: getItemPos(index),\n }\n )\n );\n };\n\n /**\n *\n * @param {number} index\n * @returns {void}\n */\n const handleCancelDragStage = () => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.cancel-item',\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: nameField.value,\n }\n )\n );\n };\n\n const handleMoveStage = (newIndex, oldIndex) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.reorder',\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: nameField.value,\n position: getItemPos(newIndex),\n }\n )\n );\n\n dispatch(updateStagePosition(oldIndex, newIndex));\n };\n\n const handleApplyPermissionsToAllStages = () => {\n setIsApplyAllConfirmationOpen(true);\n };\n\n const [liveText, setLiveText] = React.useState(null);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const dispatch = useDispatch();\n const toggleNotification = useNotification();\n const [isOpen, setIsOpen] = React.useState(isOpenDefault);\n const [isApplyAllConfirmationOpen, setIsApplyAllConfirmationOpen] = React.useState(false);\n const [nameField, nameMeta, nameHelper] = useField(`stages.${index}.name`);\n const [colorField, colorMeta, colorHelper] = useField(`stages.${index}.color`);\n const [permissionsField, permissionsMeta, permissionsHelper] = useField(\n `stages.${index}.permissions`\n );\n const roles = useSelector(selectRoles);\n const [{ handlerId, isDragging, handleKeyDown }, stageRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(canReorder, {\n index,\n item: {\n name: nameField.value,\n },\n onGrabItem: handleGrabStage,\n onDropItem: handleDropStage,\n onMoveItem: handleMoveStage,\n onCancel: handleCancelDragStage,\n type: DRAG_DROP_TYPES.STAGE,\n });\n\n const composedRef = composeRefs(stageRef, dropRef);\n\n const colorOptions = AVAILABLE_COLORS.map(({ hex, name }) => ({\n value: hex,\n label: formatMessage(\n {\n id: 'Settings.review-workflows.stage.color.name',\n defaultMessage: '{name}',\n },\n { name }\n ),\n color: hex,\n }));\n\n const { themeColorName } = getStageColorByHex(colorField.value) ?? {};\n\n const filteredRoles = roles\n // Super admins always have permissions to do everything and therefore\n // there is no point for this role to show up in the role combobox\n .filter((role) => role.code !== 'strapi-super-admin');\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n return (\n <Box ref={composedRef}>\n {liveText && <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>}\n\n {isDragging ? (\n <StageDropPreview />\n ) : (\n <Accordion\n size=\"S\"\n variant=\"primary\"\n onToggle={() => {\n setIsOpen(!isOpen);\n\n if (!isOpen) {\n trackUsage('willEditStage');\n }\n }}\n expanded={isOpen}\n shadow=\"tableShadow\"\n error={nameMeta.error ?? colorMeta?.error ?? permissionsMeta?.error ?? false}\n hasErrorMessage={false}\n >\n <AccordionToggle\n title={nameField.value}\n togglePosition=\"left\"\n action={\n (canDelete || canUpdate) && (\n <Flex>\n <Menu.Root>\n <ContextMenuTrigger size=\"S\" endIcon={null} paddingLeft={2} paddingRight={2}>\n <More aria-hidden focusable={false} />\n <VisuallyHidden as=\"span\">\n {formatMessage({\n id: '[tbdb].components.DynamicZone.more-actions',\n defaultMessage: 'More actions',\n })}\n </VisuallyHidden>\n </ContextMenuTrigger>\n {/* z-index needs to be as big as the one defined for the wrapper in Stages, otherwise the menu\n * disappears behind the accordion\n */}\n <Menu.Content popoverPlacement=\"bottom-end\" zIndex={2}>\n <Menu.SubRoot>\n {canUpdate && (\n <MenuItem onClick={() => dispatch(cloneStage(id))}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </MenuItem>\n )}\n\n {canDelete && (\n <DeleteMenuItem onClick={() => dispatch(deleteStage(id))}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </DeleteMenuItem>\n )}\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n\n {canUpdate && (\n <DragIconButton\n background=\"transparent\"\n forwardedAs=\"div\"\n hasRadius\n role=\"button\"\n noBorder\n tabIndex={0}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.drag',\n defaultMessage: 'Drag',\n })}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </DragIconButton>\n )}\n </Flex>\n )\n }\n />\n <AccordionContent padding={6} background=\"neutral0\" hasRadius>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n {...nameField}\n id={nameField.name}\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.name.label',\n defaultMessage: 'Stage name',\n })}\n error={nameMeta.error ?? false}\n onChange={(event) => {\n nameHelper.setValue(event.target.value);\n dispatch(updateStage(id, { name: event.target.value }));\n }}\n required\n />\n </GridItem>\n\n <GridItem col={6}>\n <SingleSelect\n disabled={!canUpdate}\n error={colorMeta?.error ?? false}\n id={colorField.name}\n required\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.color',\n defaultMessage: 'Color',\n })}\n onChange={(value) => {\n colorHelper.setValue(value);\n dispatch(updateStage(id, { color: value }));\n }}\n value={colorField.value.toUpperCase()}\n startIcon={\n <Flex\n as=\"span\"\n height={2}\n background={colorField.value}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {colorOptions.map(({ value, label, color }) => {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <SingleSelectOption\n value={value}\n key={value}\n startIcon={\n <Flex\n as=\"span\"\n height={2}\n background={color}\n borderColor={\n themeColorName === 'neutral0' ? 'neutral150' : 'transparent'\n }\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </GridItem>\n\n <GridItem col={6}>\n {filteredRoles.length === 0 ? (\n <NotAllowedInput\n description={{\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }}\n intlLabel={{\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n }}\n name={permissionsField.name}\n />\n ) : (\n <Flex alignItems=\"flex-end\" gap={3}>\n <PermissionWrapper grow={1}>\n <MultiSelect\n {...permissionsField}\n disabled={!canUpdate}\n error={permissionsMeta.error ?? false}\n id={permissionsField.name}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n onChange={(values) => {\n // Because the select components expects strings for values, but\n // the yup schema validates we are sending full permission objects to the API,\n // we must coerce the string value back to an object\n const permissions = values.map((value) => ({\n role: parseInt(value, 10),\n action: 'admin::review-workflows.stage.transition',\n }));\n\n permissionsHelper.setValue(permissions);\n dispatch(updateStage(id, { permissions }));\n }}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.placeholder',\n defaultMessage: 'Select a role',\n })}\n required\n // The Select component expects strings for values\n value={(permissionsField.value ?? []).map(\n (permission) => `${permission.role}`\n )}\n withTags\n >\n {[\n {\n label: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.allRoles.label',\n defaultMessage: 'All roles',\n }),\n\n children: filteredRoles.map((role) => ({\n value: `${role.id}`,\n label: role.name,\n })),\n },\n ].map((role) => {\n if ('children' in role) {\n return (\n <MultiSelectGroup\n key={role.label}\n label={role.label}\n values={role.children.map((child) => child.value)}\n >\n {role.children.map((role) => {\n return (\n <NestedOption key={role.value} value={role.value}>\n {role.label}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n }\n\n return (\n <MultiSelectOption key={role.value} value={role.value}>\n {role.label}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n </PermissionWrapper>\n\n <IconButton\n disabled={!canUpdate}\n icon={<Duplicate />}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.apply.label',\n defaultMessage: 'Apply to all stages',\n })}\n size=\"L\"\n variant=\"secondary\"\n onClick={() => handleApplyPermissionsToAllStages(permissionsField.value)}\n />\n </Flex>\n )}\n </GridItem>\n </Grid>\n </AccordionContent>\n </Accordion>\n )}\n\n <ConfirmDialog.Root\n iconRightButton={null}\n isOpen={isApplyAllConfirmationOpen}\n onToggleDialog={() => setIsApplyAllConfirmationOpen(false)}\n onConfirm={() => {\n dispatch(updateStages({ permissions: permissionsField.value }));\n setIsApplyAllConfirmationOpen(false);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success',\n defaultMessage: 'Applied roles to all other stages of the workflow',\n }),\n });\n }}\n variantRightButton=\"primary\"\n >\n <ConfirmDialog.Body>\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy',\n defaultMessage:\n 'Roles that can change that stage will be applied to all the other stages.',\n })}\n </Typography>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n </Box>\n );\n}\n\nStage.propTypes = PropTypes.shape({\n id: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n canDelete: PropTypes.bool.isRequired,\n canReorder: PropTypes.bool.isRequired,\n canUpdate: PropTypes.bool.isRequired,\n stagesCount: PropTypes.number.isRequired,\n}).isRequired;\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { useTracking } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { addStage } from '../../actions';\nimport { AddStage } from '../AddStage';\n\nimport { Stage } from './Stage';\n\nconst Background = styled(Box)`\n transform: translateX(-50%);\n`;\n\nexport function Stages({ canDelete, canUpdate, stages }) {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const { trackUsage } = useTracking();\n\n return (\n <Flex direction=\"column\" gap={6} width=\"100%\">\n <Box position=\"relative\" spacing={4} width=\"100%\">\n <Background\n background=\"neutral200\"\n height=\"100%\"\n left=\"50%\"\n position=\"absolute\"\n top=\"0\"\n width={2}\n zIndex={1}\n />\n\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={6}\n zIndex={2}\n position=\"relative\"\n as=\"ol\"\n >\n {stages.map((stage, index) => {\n const id = stage?.id ?? stage.__temp_key__;\n\n return (\n <Box key={`stage-${id}`} as=\"li\">\n <Stage\n id={id}\n index={index}\n isOpen={!stage.id}\n canDelete={stages.length > 1 && canDelete}\n canReorder={stages.length > 1}\n canUpdate={canUpdate}\n stagesCount={stages.length}\n />\n </Box>\n );\n })}\n </Flex>\n </Box>\n\n {canUpdate && (\n <AddStage\n type=\"button\"\n onClick={() => {\n dispatch(addStage({ name: '' }));\n trackUsage('willCreateStage');\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.add',\n defaultMessage: 'Add new stage',\n })}\n </AddStage>\n )}\n </Flex>\n );\n}\n\nStages.defaultProps = {\n canDelete: true,\n canUpdate: true,\n stages: [],\n};\n\nStages.propTypes = {\n canDelete: PropTypes.bool,\n canUpdate: PropTypes.bool,\n stages: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n __temp_key__: PropTypes.number,\n name: PropTypes.string.isRequired,\n })\n ),\n};\n","import * as React from 'react';\n\nimport {\n Grid,\n GridItem,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { useCollator } from '@strapi/helper-plugin';\nimport { useField } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { updateWorkflow } from '../../actions';\nimport { selectContentTypes, selectCurrentWorkflow, selectWorkflows } from '../../selectors';\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\nconst ContentTypeTakeNotice = styled(Typography)`\n font-style: italic;\n`;\n\nexport function WorkflowAttributes({ canUpdate }) {\n const { formatMessage, locale } = useIntl();\n const dispatch = useDispatch();\n const { collectionTypes, singleTypes } = useSelector(selectContentTypes);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const workflows = useSelector(selectWorkflows);\n const [nameField, nameMeta, nameHelper] = useField('name');\n const [contentTypesField, contentTypesMeta, contentTypesHelper] = useField('contentTypes');\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n return (\n <Grid background=\"neutral0\" hasRadius gap={4} padding={6} shadow=\"tableShadow\">\n <GridItem col={6}>\n <TextInput\n {...nameField}\n id={nameField.name}\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.name.label',\n defaultMessage: 'Workflow Name',\n })}\n error={nameMeta.error ?? false}\n onChange={(event) => {\n dispatch(updateWorkflow({ name: event.target.value }));\n nameHelper.setValue(event.target.value);\n }}\n required\n />\n </GridItem>\n\n <GridItem col={6}>\n <MultiSelect\n {...contentTypesField}\n customizeContent={(value) =>\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.displayValue',\n defaultMessage:\n '{count} {count, plural, one {content type} other {content types}} selected',\n },\n { count: value.length }\n )\n }\n disabled={!canUpdate}\n error={contentTypesMeta.error ?? false}\n id={contentTypesField.name}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.label',\n defaultMessage: 'Associated to',\n })}\n onChange={(values) => {\n dispatch(updateWorkflow({ contentTypes: values }));\n contentTypesHelper.setValue(values);\n }}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.placeholder',\n defaultMessage: 'Select',\n })}\n >\n {[\n ...(collectionTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.collectionTypes.label',\n defaultMessage: 'Collection Types',\n }),\n children: [...collectionTypes]\n .sort((a, b) => formatter.compare(a.info.displayName, b.info.displayName))\n .map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n })),\n },\n ]\n : []),\n\n ...(singleTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.singleTypes.label',\n defaultMessage: 'Single Types',\n }),\n children: [...singleTypes].map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n })),\n },\n ]\n : []),\n ].map((opt) => {\n if ('children' in opt) {\n return (\n <MultiSelectGroup\n key={opt.label}\n label={opt.label}\n values={opt.children.map((child) => child.value.toString())}\n >\n {opt.children.map((child) => {\n const { name: assignedWorkflowName } =\n workflows.find(\n (workflow) =>\n ((currentWorkflow && workflow.id !== currentWorkflow.id) ||\n !currentWorkflow) &&\n workflow.contentTypes.includes(child.value)\n ) ?? {};\n\n return (\n <NestedOption key={child.value} value={child.value}>\n {formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.assigned.notice',\n defaultMessage:\n '{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}',\n },\n {\n label: child.label,\n name: assignedWorkflowName,\n em: (...children) => (\n <Typography as=\"em\" fontWeight=\"bold\">\n {children}\n </Typography>\n ),\n i: (...children) => (\n <ContentTypeTakeNotice>{children}</ContentTypeTakeNotice>\n ),\n }\n )}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n }\n\n return (\n <MultiSelectOption key={opt.value} value={opt.value}>\n {opt.label}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n </GridItem>\n </Grid>\n );\n}\n\nWorkflowAttributes.defaultProps = {\n canUpdate: true,\n};\n\nWorkflowAttributes.propTypes = {\n canUpdate: PropTypes.bool,\n};\n","import set from 'lodash/set';\nimport * as yup from 'yup';\n\nexport async function validateWorkflow({ values, formatMessage }) {\n const schema = yup.object({\n contentTypes: yup.array().of(yup.string()),\n name: yup\n .string()\n .max(\n 255,\n formatMessage({\n id: 'Settings.review-workflows.validation.name.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n )\n .required(),\n\n stages: yup\n .array()\n .of(\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.name',\n defaultMessage: 'Name is required',\n })\n )\n .max(\n 255,\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n )\n .test(\n 'unique-name',\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.duplicate',\n defaultMessage: 'Stage name must be unique',\n }),\n function (stageName) {\n const {\n options: { context },\n } = this;\n\n return context.stages.filter((stage) => stage.name === stageName).length === 1;\n }\n ),\n color: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.color',\n defaultMessage: 'Color is required',\n })\n )\n .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),\n\n permissions: yup\n .array(\n yup.object({\n role: yup\n .number()\n .strict()\n .typeError(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.permissions.role.number',\n defaultMessage: 'Role must be of type number',\n })\n ).required,\n action: yup.string().required({\n id: 'Settings.review-workflows.validation.stage.permissions.action.required',\n defaultMessage: 'Action is a required argument',\n }),\n })\n )\n .strict(),\n })\n )\n .min(1),\n });\n\n try {\n await schema.validate(values, { abortEarly: false, context: values });\n\n return true;\n } catch (error) {\n let errors = {};\n\n if (error instanceof yup.ValidationError) {\n error.inner.forEach((error) => {\n set(errors, error.path, error.message);\n });\n }\n\n return errors;\n }\n}\n"],"names":["reducer","NestedOption","index","themeColorName","role","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validateWorkflow-022b5005.mjs","sources":["../../admin/src/hooks/useInjectReducer.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions/index.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage/AddStage.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/Stage.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stages.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/WorkflowAttributes/WorkflowAttributes.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/validateWorkflow.js"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { Reducer } from '@reduxjs/toolkit';\n\nimport { useTypedStore } from '../core/store/hooks';\n\n/**\n * Inject a new reducer into the global redux-store.\n *\n * @export\n * @param {string} namespace - Store namespace of the injected reducer\n * @param {Function} reducer - Reducer function\n * @return void\n */\n\nexport function useInjectReducer(namespace: string, reducer: Reducer) {\n const store = useTypedStore();\n\n useEffect(() => {\n store.injectReducer(namespace, reducer);\n }, [store, namespace, reducer]);\n}\n","import {\n ACTION_ADD_STAGE,\n ACTION_CLONE_STAGE,\n ACTION_DELETE_STAGE,\n ACTION_RESET_WORKFLOW,\n ACTION_SET_CONTENT_TYPES,\n ACTION_SET_IS_LOADING,\n ACTION_SET_ROLES,\n ACTION_SET_WORKFLOW,\n ACTION_SET_WORKFLOWS,\n ACTION_UPDATE_STAGE,\n ACTION_UPDATE_STAGES,\n ACTION_UPDATE_STAGE_POSITION,\n ACTION_UPDATE_WORKFLOW,\n} from '../constants';\n\nexport function cloneStage(id) {\n return {\n type: ACTION_CLONE_STAGE,\n payload: { id },\n };\n}\n\nexport function setWorkflow({ workflow }) {\n return {\n type: ACTION_SET_WORKFLOW,\n payload: workflow,\n };\n}\n\nexport function setWorkflows({ workflows }) {\n return {\n type: ACTION_SET_WORKFLOWS,\n payload: workflows,\n };\n}\n\nexport function deleteStage(stageId) {\n return {\n type: ACTION_DELETE_STAGE,\n payload: {\n stageId,\n },\n };\n}\n\nexport function addStage(stage = {}) {\n return {\n type: ACTION_ADD_STAGE,\n payload: stage,\n };\n}\n\nexport function updateStage(stageId, payload) {\n return {\n type: ACTION_UPDATE_STAGE,\n payload: {\n stageId,\n ...payload,\n },\n };\n}\n\nexport function updateStages(payload) {\n return {\n type: ACTION_UPDATE_STAGES,\n payload,\n };\n}\n\nexport function updateStagePosition(oldIndex, newIndex) {\n return {\n type: ACTION_UPDATE_STAGE_POSITION,\n payload: {\n newIndex,\n oldIndex,\n },\n };\n}\n\nexport function updateWorkflow(payload) {\n return {\n type: ACTION_UPDATE_WORKFLOW,\n payload,\n };\n}\n\nexport function resetWorkflow() {\n return {\n type: ACTION_RESET_WORKFLOW,\n };\n}\n\nexport function setContentTypes(payload) {\n return {\n type: ACTION_SET_CONTENT_TYPES,\n payload,\n };\n}\n\nexport function setRoles(payload) {\n return {\n type: ACTION_SET_ROLES,\n payload,\n };\n}\n\nexport function setIsLoading(isLoading) {\n return {\n type: ACTION_SET_IS_LOADING,\n payload: isLoading,\n };\n}\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nconst StyledAddIcon = styled(PlusCircle)`\n > circle {\n fill: ${({ theme }) => theme.colors.neutral150};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst StyledButton = styled(Box)`\n border-radius: 26px;\n\n svg {\n height: ${({ theme }) => theme.spaces[6]};\n width: ${({ theme }) => theme.spaces[6]};\n\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary600} !important;\n ${Typography} {\n color: ${({ theme }) => theme.colors.primary600} !important;\n }\n\n ${StyledAddIcon} {\n > circle {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral100};\n }\n }\n }\n\n &:active {\n ${Typography} {\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n ${StyledAddIcon} {\n > circle {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral100};\n }\n }\n }\n`;\n\nexport function AddStage({ children, ...props }) {\n return (\n <StyledButton\n as=\"button\"\n background=\"neutral0\"\n border=\"neutral150\"\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={3}\n shadow=\"filterShadow\"\n {...props}\n >\n <Flex gap={2}>\n <StyledAddIcon aria-hidden />\n\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {children}\n </Typography>\n </Flex>\n </StyledButton>\n );\n}\n\nAddStage.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","import { produce } from 'immer';\n\nimport {\n ACTION_ADD_STAGE,\n ACTION_CLONE_STAGE,\n ACTION_DELETE_STAGE,\n ACTION_RESET_WORKFLOW,\n ACTION_SET_CONTENT_TYPES,\n ACTION_SET_IS_LOADING,\n ACTION_SET_ROLES,\n ACTION_SET_WORKFLOW,\n ACTION_SET_WORKFLOWS,\n ACTION_UPDATE_STAGE,\n ACTION_UPDATE_STAGES,\n ACTION_UPDATE_STAGE_POSITION,\n ACTION_UPDATE_WORKFLOW,\n STAGE_COLOR_DEFAULT,\n} from '../constants';\n\nexport const initialState = {\n serverState: {\n contentTypes: {\n collectionTypes: [],\n singleTypes: [],\n },\n roles: [],\n workflow: null,\n workflows: [],\n },\n clientState: {\n currentWorkflow: {\n data: {\n name: '',\n contentTypes: [],\n stages: [],\n permissions: undefined,\n },\n },\n isLoading: true,\n },\n};\n\nexport function reducer(state = initialState, action) {\n return produce(state, (draft) => {\n const { payload } = action;\n\n switch (action.type) {\n case ACTION_SET_CONTENT_TYPES: {\n draft.serverState.contentTypes = payload;\n break;\n }\n\n case ACTION_SET_IS_LOADING: {\n draft.clientState.isLoading = payload;\n break;\n }\n\n case ACTION_SET_ROLES: {\n draft.serverState.roles = payload;\n break;\n }\n\n case ACTION_SET_WORKFLOW: {\n const workflow = payload;\n\n if (workflow) {\n draft.serverState.workflow = workflow;\n draft.clientState.currentWorkflow.data = {\n ...workflow,\n stages: workflow.stages.map((stage) => ({\n ...stage,\n // A safety net in case a stage does not have a color assigned;\n // this should not happen\n color: stage?.color ?? STAGE_COLOR_DEFAULT,\n })),\n };\n }\n break;\n }\n\n case ACTION_SET_WORKFLOWS: {\n draft.serverState.workflows = payload;\n break;\n }\n\n case ACTION_RESET_WORKFLOW: {\n draft.clientState = initialState.clientState;\n draft.serverState = initialState.serverState;\n break;\n }\n\n case ACTION_DELETE_STAGE: {\n const { stageId } = payload;\n const { currentWorkflow } = state.clientState;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages.filter(\n (stage) => (stage?.id ?? stage.__temp_key__) !== stageId\n );\n\n break;\n }\n\n case ACTION_ADD_STAGE: {\n const { currentWorkflow } = state.clientState;\n\n if (!currentWorkflow.data) {\n draft.clientState.currentWorkflow.data = {\n stages: [],\n };\n }\n\n const newTempKey = getMaxTempKey(draft.clientState.currentWorkflow.data.stages);\n\n draft.clientState.currentWorkflow.data.stages.push({\n ...payload,\n color: payload?.color ?? STAGE_COLOR_DEFAULT,\n __temp_key__: newTempKey,\n });\n\n break;\n }\n\n case ACTION_CLONE_STAGE: {\n const { currentWorkflow } = state.clientState;\n const { id } = payload;\n\n const sourceStageIndex = currentWorkflow.data.stages.findIndex(\n (stage) => (stage?.id ?? stage?.__temp_key__) === id\n );\n const sourceStage = currentWorkflow.data.stages[sourceStageIndex];\n\n draft.clientState.currentWorkflow.data.stages.splice(sourceStageIndex + 1, 0, {\n ...sourceStage,\n id: undefined,\n __temp_key__: getMaxTempKey(draft.clientState.currentWorkflow.data.stages),\n });\n\n break;\n }\n\n case ACTION_UPDATE_STAGE: {\n const { currentWorkflow } = state.clientState;\n const { stageId, ...modified } = payload;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages.map((stage) =>\n (stage.id ?? stage.__temp_key__) === stageId\n ? {\n ...stage,\n ...modified,\n }\n : stage\n );\n\n break;\n }\n\n case ACTION_UPDATE_STAGES: {\n const { currentWorkflow } = state.clientState;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages.map(\n (stage) => ({\n ...stage,\n ...payload,\n })\n );\n\n break;\n }\n\n case ACTION_UPDATE_STAGE_POSITION: {\n const {\n currentWorkflow: {\n data: { stages },\n },\n } = state.clientState;\n const { newIndex, oldIndex } = payload;\n\n if (newIndex >= 0 && newIndex < stages.length) {\n const stage = stages[oldIndex];\n let newStages = [...stages];\n\n newStages.splice(oldIndex, 1);\n newStages.splice(newIndex, 0, stage);\n\n draft.clientState.currentWorkflow.data.stages = newStages;\n }\n\n break;\n }\n\n case ACTION_UPDATE_WORKFLOW: {\n draft.clientState.currentWorkflow.data = {\n ...draft.clientState.currentWorkflow.data,\n ...payload,\n };\n\n break;\n }\n\n default:\n break;\n }\n });\n}\n\n/**\n * @type {(stages: Array<{id?: number; __temp_key__: number}>) => number}\n */\nconst getMaxTempKey = (stages = []) => {\n /**\n * We check if there are ids or __temp_key__ because you may add a stage to a list of stages\n * already in the DB, alternatively you might add multiple new stages at once.\n */\n const ids = stages.map((stage) => stage.id ?? stage.__temp_key__);\n\n /**\n * If there are no ids it will return 0 as the max value\n * because the max value is -1.\n */\n return Math.max(...ids, -1) + 1;\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport isEqual from 'lodash/isEqual';\n\nimport { REDUX_NAMESPACE } from './constants';\nimport { initialState } from './reducer';\n\nexport const selectNamespace = (state) => state[REDUX_NAMESPACE] ?? initialState;\n\nexport const selectContentTypes = createSelector(\n selectNamespace,\n ({ serverState: { contentTypes } }) => contentTypes\n);\n\nexport const selectRoles = createSelector(selectNamespace, ({ serverState: { roles } }) => roles);\n\nexport const selectCurrentWorkflow = createSelector(\n selectNamespace,\n ({ clientState: { currentWorkflow } }) => currentWorkflow.data\n);\n\nexport const selectWorkflows = createSelector(\n selectNamespace,\n ({ serverState: { workflows } }) => workflows\n);\n\nexport const selectIsWorkflowDirty = createSelector(\n selectNamespace,\n ({ serverState, clientState: { currentWorkflow } }) =>\n !isEqual(serverState.workflow, currentWorkflow.data)\n);\n\nexport const selectHasDeletedServerStages = createSelector(\n selectNamespace,\n ({ serverState, clientState: { currentWorkflow } }) =>\n !(serverState.workflow?.stages ?? []).every(\n (stage) => !!currentWorkflow.data.stages.find(({ id }) => id === stage.id)\n )\n);\n\nexport const selectIsLoading = createSelector(\n selectNamespace,\n ({ clientState: { isLoading } }) => isLoading\n);\n\nexport const selectServerState = createSelector(selectNamespace, ({ serverState }) => serverState);\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Flex,\n Grid,\n GridItem,\n IconButton,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n SingleSelect,\n SingleSelectOption,\n TextInput,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Menu, MenuItem } from '@strapi/design-system/v2';\nimport {\n ConfirmDialog,\n useNotification,\n NotAllowedInput,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Drag, More } from '@strapi/icons';\nimport { useField } from 'formik';\nimport PropTypes from 'prop-types';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { useDragAndDrop } from '../../../../../../../../../../admin/src/content-manager/hooks';\nimport { composeRefs } from '../../../../../../../../../../admin/src/content-manager/utils';\nimport {\n cloneStage,\n deleteStage,\n updateStage,\n updateStagePosition,\n updateStages,\n} from '../../../actions';\nimport { DRAG_DROP_TYPES } from '../../../constants';\nimport { selectRoles } from '../../../selectors';\nimport { getAvailableStageColors, getStageColorByHex } from '../../../utils/colors';\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\n// Grow the size of the permission Select\nconst PermissionWrapper = styled(Flex)`\n > * {\n flex-grow: 1;\n }\n`;\n\nconst DeleteMenuItem = styled(MenuItem)`\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\n// Removing the font-size from the child-span aligns the\n// more icon vertically\nconst ContextMenuTrigger = styled(Menu.Trigger)`\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n > span {\n font-size: 0;\n }\n`;\n\n// As soon as either `as` or `forwardedAs` is set, the component\n// resets some styles and e.g. the `hasBorder` prop no longer works,\n// which is why this bit of CSS has been added manually ¯\\_(ツ)_/¯\nconst DragIconButton = styled(IconButton)`\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n display: flex;\n justify-content: center;\n\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n svg {\n height: auto;\n width: ${({ theme }) => theme.spaces[3]}};\n }\n`;\n\nconst AVAILABLE_COLORS = getAvailableStageColors();\n\nfunction StageDropPreview() {\n return (\n <Box\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n display=\"block\"\n hasRadius\n padding={6}\n shadow=\"tableShadow\"\n />\n );\n}\n\nexport function Stage({\n id,\n index,\n canDelete,\n canReorder,\n canUpdate,\n isOpen: isOpenDefault = false,\n stagesCount,\n}) {\n /**\n *\n * @param {number} index\n * @returns {string}\n */\n const getItemPos = (index) => `${index + 1} of ${stagesCount}`;\n\n /**\n *\n * @param {number} index\n * @returns {void}\n */\n const handleGrabStage = (index) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.grab-item',\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: nameField.value,\n position: getItemPos(index),\n }\n )\n );\n };\n\n /**\n *\n * @param {number} index\n * @returns {void}\n */\n const handleDropStage = (index) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.drop-item',\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: nameField.value,\n position: getItemPos(index),\n }\n )\n );\n };\n\n /**\n *\n * @param {number} index\n * @returns {void}\n */\n const handleCancelDragStage = () => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.cancel-item',\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: nameField.value,\n }\n )\n );\n };\n\n const handleMoveStage = (newIndex, oldIndex) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.reorder',\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: nameField.value,\n position: getItemPos(newIndex),\n }\n )\n );\n\n dispatch(updateStagePosition(oldIndex, newIndex));\n };\n\n const handleApplyPermissionsToAllStages = () => {\n setIsApplyAllConfirmationOpen(true);\n };\n\n const [liveText, setLiveText] = React.useState(null);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const dispatch = useDispatch();\n const toggleNotification = useNotification();\n const [isOpen, setIsOpen] = React.useState(isOpenDefault);\n const [isApplyAllConfirmationOpen, setIsApplyAllConfirmationOpen] = React.useState(false);\n const [nameField, nameMeta, nameHelper] = useField(`stages.${index}.name`);\n const [colorField, colorMeta, colorHelper] = useField(`stages.${index}.color`);\n const [permissionsField, permissionsMeta, permissionsHelper] = useField(\n `stages.${index}.permissions`\n );\n const roles = useSelector(selectRoles);\n const [{ handlerId, isDragging, handleKeyDown }, stageRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(canReorder, {\n index,\n item: {\n name: nameField.value,\n },\n onGrabItem: handleGrabStage,\n onDropItem: handleDropStage,\n onMoveItem: handleMoveStage,\n onCancel: handleCancelDragStage,\n type: DRAG_DROP_TYPES.STAGE,\n });\n\n const composedRef = composeRefs(stageRef, dropRef);\n\n const colorOptions = AVAILABLE_COLORS.map(({ hex, name }) => ({\n value: hex,\n label: formatMessage(\n {\n id: 'Settings.review-workflows.stage.color.name',\n defaultMessage: '{name}',\n },\n { name }\n ),\n color: hex,\n }));\n\n const { themeColorName } = getStageColorByHex(colorField.value) ?? {};\n\n const filteredRoles = roles\n // Super admins always have permissions to do everything and therefore\n // there is no point for this role to show up in the role combobox\n .filter((role) => role.code !== 'strapi-super-admin');\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n return (\n <Box ref={composedRef}>\n {liveText && <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>}\n\n {isDragging ? (\n <StageDropPreview />\n ) : (\n <Accordion\n size=\"S\"\n variant=\"primary\"\n onToggle={() => {\n setIsOpen(!isOpen);\n\n if (!isOpen) {\n trackUsage('willEditStage');\n }\n }}\n expanded={isOpen}\n shadow=\"tableShadow\"\n error={nameMeta.error ?? colorMeta?.error ?? permissionsMeta?.error ?? false}\n hasErrorMessage={false}\n >\n <AccordionToggle\n title={nameField.value}\n togglePosition=\"left\"\n action={\n (canDelete || canUpdate) && (\n <Flex>\n <Menu.Root>\n <ContextMenuTrigger size=\"S\" endIcon={null} paddingLeft={2} paddingRight={2}>\n <More aria-hidden focusable={false} />\n <VisuallyHidden as=\"span\">\n {formatMessage({\n id: '[tbdb].components.DynamicZone.more-actions',\n defaultMessage: 'More actions',\n })}\n </VisuallyHidden>\n </ContextMenuTrigger>\n {/* z-index needs to be as big as the one defined for the wrapper in Stages, otherwise the menu\n * disappears behind the accordion\n */}\n <Menu.Content popoverPlacement=\"bottom-end\" zIndex={2}>\n <Menu.SubRoot>\n {canUpdate && (\n <MenuItem onClick={() => dispatch(cloneStage(id))}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </MenuItem>\n )}\n\n {canDelete && (\n <DeleteMenuItem onClick={() => dispatch(deleteStage(id))}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </DeleteMenuItem>\n )}\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n\n {canUpdate && (\n <DragIconButton\n background=\"transparent\"\n forwardedAs=\"div\"\n hasRadius\n role=\"button\"\n noBorder\n tabIndex={0}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.drag',\n defaultMessage: 'Drag',\n })}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </DragIconButton>\n )}\n </Flex>\n )\n }\n />\n <AccordionContent padding={6} background=\"neutral0\" hasRadius>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n {...nameField}\n id={nameField.name}\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.name.label',\n defaultMessage: 'Stage name',\n })}\n error={nameMeta.error ?? false}\n onChange={(event) => {\n nameHelper.setValue(event.target.value);\n dispatch(updateStage(id, { name: event.target.value }));\n }}\n required\n />\n </GridItem>\n\n <GridItem col={6}>\n <SingleSelect\n disabled={!canUpdate}\n error={colorMeta?.error ?? false}\n id={colorField.name}\n required\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.color',\n defaultMessage: 'Color',\n })}\n onChange={(value) => {\n colorHelper.setValue(value);\n dispatch(updateStage(id, { color: value }));\n }}\n value={colorField.value.toUpperCase()}\n startIcon={\n <Flex\n as=\"span\"\n height={2}\n background={colorField.value}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {colorOptions.map(({ value, label, color }) => {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <SingleSelectOption\n value={value}\n key={value}\n startIcon={\n <Flex\n as=\"span\"\n height={2}\n background={color}\n borderColor={\n themeColorName === 'neutral0' ? 'neutral150' : 'transparent'\n }\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </GridItem>\n\n <GridItem col={6}>\n {filteredRoles.length === 0 ? (\n <NotAllowedInput\n description={{\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }}\n intlLabel={{\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n }}\n name={permissionsField.name}\n />\n ) : (\n <Flex alignItems=\"flex-end\" gap={3}>\n <PermissionWrapper grow={1}>\n <MultiSelect\n {...permissionsField}\n disabled={!canUpdate}\n error={permissionsMeta.error ?? false}\n id={permissionsField.name}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n onChange={(values) => {\n // Because the select components expects strings for values, but\n // the yup schema validates we are sending full permission objects to the API,\n // we must coerce the string value back to an object\n const permissions = values.map((value) => ({\n role: parseInt(value, 10),\n action: 'admin::review-workflows.stage.transition',\n }));\n\n permissionsHelper.setValue(permissions);\n dispatch(updateStage(id, { permissions }));\n }}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.placeholder',\n defaultMessage: 'Select a role',\n })}\n required\n // The Select component expects strings for values\n value={(permissionsField.value ?? []).map(\n (permission) => `${permission.role}`\n )}\n withTags\n >\n {[\n {\n label: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.allRoles.label',\n defaultMessage: 'All roles',\n }),\n\n children: filteredRoles.map((role) => ({\n value: `${role.id}`,\n label: role.name,\n })),\n },\n ].map((role) => {\n if ('children' in role) {\n return (\n <MultiSelectGroup\n key={role.label}\n label={role.label}\n values={role.children.map((child) => child.value)}\n >\n {role.children.map((role) => {\n return (\n <NestedOption key={role.value} value={role.value}>\n {role.label}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n }\n\n return (\n <MultiSelectOption key={role.value} value={role.value}>\n {role.label}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n </PermissionWrapper>\n\n <IconButton\n disabled={!canUpdate}\n icon={<Duplicate />}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.apply.label',\n defaultMessage: 'Apply to all stages',\n })}\n size=\"L\"\n variant=\"secondary\"\n onClick={() => handleApplyPermissionsToAllStages(permissionsField.value)}\n />\n </Flex>\n )}\n </GridItem>\n </Grid>\n </AccordionContent>\n </Accordion>\n )}\n\n <ConfirmDialog.Root\n iconRightButton={null}\n isOpen={isApplyAllConfirmationOpen}\n onToggleDialog={() => setIsApplyAllConfirmationOpen(false)}\n onConfirm={() => {\n dispatch(updateStages({ permissions: permissionsField.value }));\n setIsApplyAllConfirmationOpen(false);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success',\n defaultMessage: 'Applied roles to all other stages of the workflow',\n }),\n });\n }}\n variantRightButton=\"primary\"\n >\n <ConfirmDialog.Body>\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy',\n defaultMessage:\n 'Roles that can change that stage will be applied to all the other stages.',\n })}\n </Typography>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n </Box>\n );\n}\n\nStage.propTypes = PropTypes.shape({\n id: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n canDelete: PropTypes.bool.isRequired,\n canReorder: PropTypes.bool.isRequired,\n canUpdate: PropTypes.bool.isRequired,\n stagesCount: PropTypes.number.isRequired,\n}).isRequired;\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { useTracking } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { addStage } from '../../actions';\nimport { AddStage } from '../AddStage';\n\nimport { Stage } from './Stage';\n\nconst Background = styled(Box)`\n transform: translateX(-50%);\n`;\n\nexport function Stages({ canDelete, canUpdate, stages }) {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const { trackUsage } = useTracking();\n\n return (\n <Flex direction=\"column\" gap={6} width=\"100%\">\n <Box position=\"relative\" spacing={4} width=\"100%\">\n <Background\n background=\"neutral200\"\n height=\"100%\"\n left=\"50%\"\n position=\"absolute\"\n top=\"0\"\n width={2}\n zIndex={1}\n />\n\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={6}\n zIndex={2}\n position=\"relative\"\n as=\"ol\"\n >\n {stages.map((stage, index) => {\n const id = stage?.id ?? stage.__temp_key__;\n\n return (\n <Box key={`stage-${id}`} as=\"li\">\n <Stage\n id={id}\n index={index}\n isOpen={!stage.id}\n canDelete={stages.length > 1 && canDelete}\n canReorder={stages.length > 1}\n canUpdate={canUpdate}\n stagesCount={stages.length}\n />\n </Box>\n );\n })}\n </Flex>\n </Box>\n\n {canUpdate && (\n <AddStage\n type=\"button\"\n onClick={() => {\n dispatch(addStage({ name: '' }));\n trackUsage('willCreateStage');\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.add',\n defaultMessage: 'Add new stage',\n })}\n </AddStage>\n )}\n </Flex>\n );\n}\n\nStages.defaultProps = {\n canDelete: true,\n canUpdate: true,\n stages: [],\n};\n\nStages.propTypes = {\n canDelete: PropTypes.bool,\n canUpdate: PropTypes.bool,\n stages: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n __temp_key__: PropTypes.number,\n name: PropTypes.string.isRequired,\n })\n ),\n};\n","import * as React from 'react';\n\nimport {\n Grid,\n GridItem,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { useCollator } from '@strapi/helper-plugin';\nimport { useField } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { updateWorkflow } from '../../actions';\nimport { selectContentTypes, selectCurrentWorkflow, selectWorkflows } from '../../selectors';\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\nconst ContentTypeTakeNotice = styled(Typography)`\n font-style: italic;\n`;\n\nexport function WorkflowAttributes({ canUpdate }) {\n const { formatMessage, locale } = useIntl();\n const dispatch = useDispatch();\n const { collectionTypes, singleTypes } = useSelector(selectContentTypes);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const workflows = useSelector(selectWorkflows);\n const [nameField, nameMeta, nameHelper] = useField('name');\n const [contentTypesField, contentTypesMeta, contentTypesHelper] = useField('contentTypes');\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n return (\n <Grid background=\"neutral0\" hasRadius gap={4} padding={6} shadow=\"tableShadow\">\n <GridItem col={6}>\n <TextInput\n {...nameField}\n id={nameField.name}\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.name.label',\n defaultMessage: 'Workflow Name',\n })}\n error={nameMeta.error ?? false}\n onChange={(event) => {\n dispatch(updateWorkflow({ name: event.target.value }));\n nameHelper.setValue(event.target.value);\n }}\n required\n />\n </GridItem>\n\n <GridItem col={6}>\n <MultiSelect\n {...contentTypesField}\n customizeContent={(value) =>\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.displayValue',\n defaultMessage:\n '{count} {count, plural, one {content type} other {content types}} selected',\n },\n { count: value.length }\n )\n }\n disabled={!canUpdate}\n error={contentTypesMeta.error ?? false}\n id={contentTypesField.name}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.label',\n defaultMessage: 'Associated to',\n })}\n onChange={(values) => {\n dispatch(updateWorkflow({ contentTypes: values }));\n contentTypesHelper.setValue(values);\n }}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.placeholder',\n defaultMessage: 'Select',\n })}\n >\n {[\n ...(collectionTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.collectionTypes.label',\n defaultMessage: 'Collection Types',\n }),\n children: [...collectionTypes]\n .sort((a, b) => formatter.compare(a.info.displayName, b.info.displayName))\n .map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n })),\n },\n ]\n : []),\n\n ...(singleTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.singleTypes.label',\n defaultMessage: 'Single Types',\n }),\n children: [...singleTypes].map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n })),\n },\n ]\n : []),\n ].map((opt) => {\n if ('children' in opt) {\n return (\n <MultiSelectGroup\n key={opt.label}\n label={opt.label}\n values={opt.children.map((child) => child.value.toString())}\n >\n {opt.children.map((child) => {\n const { name: assignedWorkflowName } =\n workflows.find(\n (workflow) =>\n ((currentWorkflow && workflow.id !== currentWorkflow.id) ||\n !currentWorkflow) &&\n workflow.contentTypes.includes(child.value)\n ) ?? {};\n\n return (\n <NestedOption key={child.value} value={child.value}>\n {formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.assigned.notice',\n defaultMessage:\n '{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}',\n },\n {\n label: child.label,\n name: assignedWorkflowName,\n em: (...children) => (\n <Typography as=\"em\" fontWeight=\"bold\">\n {children}\n </Typography>\n ),\n i: (...children) => (\n <ContentTypeTakeNotice>{children}</ContentTypeTakeNotice>\n ),\n }\n )}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n }\n\n return (\n <MultiSelectOption key={opt.value} value={opt.value}>\n {opt.label}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n </GridItem>\n </Grid>\n );\n}\n\nWorkflowAttributes.defaultProps = {\n canUpdate: true,\n};\n\nWorkflowAttributes.propTypes = {\n canUpdate: PropTypes.bool,\n};\n","import set from 'lodash/set';\nimport * as yup from 'yup';\n\nexport async function validateWorkflow({ values, formatMessage }) {\n const schema = yup.object({\n contentTypes: yup.array().of(yup.string()),\n name: yup\n .string()\n .max(\n 255,\n formatMessage({\n id: 'Settings.review-workflows.validation.name.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n )\n .required(),\n\n stages: yup\n .array()\n .of(\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.name',\n defaultMessage: 'Name is required',\n })\n )\n .max(\n 255,\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n )\n .test(\n 'unique-name',\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.duplicate',\n defaultMessage: 'Stage name must be unique',\n }),\n function (stageName) {\n const {\n options: { context },\n } = this;\n\n return context.stages.filter((stage) => stage.name === stageName).length === 1;\n }\n ),\n color: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.color',\n defaultMessage: 'Color is required',\n })\n )\n .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),\n\n permissions: yup\n .array(\n yup.object({\n role: yup\n .number()\n .strict()\n .typeError(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.permissions.role.number',\n defaultMessage: 'Role must be of type number',\n })\n ).required,\n action: yup.string().required({\n id: 'Settings.review-workflows.validation.stage.permissions.action.required',\n defaultMessage: 'Action is a required argument',\n }),\n })\n )\n .strict(),\n })\n )\n .min(1),\n });\n\n try {\n await schema.validate(values, { abortEarly: false, context: values });\n\n return true;\n } catch (error) {\n let errors = {};\n\n if (error instanceof yup.ValidationError) {\n error.inner.forEach((error) => {\n set(errors, error.path, error.message);\n });\n }\n\n return errors;\n }\n}\n"],"names":["reducer","NestedOption","index","themeColorName","role","error"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const React = require("react");
|
|
3
|
-
const index = require("./index-
|
|
3
|
+
const index = require("./index-8f8eaed6.js");
|
|
4
4
|
const jsxRuntime = require("react/jsx-runtime");
|
|
5
5
|
const designSystem = require("@strapi/design-system");
|
|
6
6
|
const helperPlugin = require("@strapi/helper-plugin");
|
|
@@ -12,7 +12,7 @@ const Icons = require("@strapi/icons");
|
|
|
12
12
|
const v2 = require("@strapi/design-system/v2");
|
|
13
13
|
const formik = require("formik");
|
|
14
14
|
const reactDndHtml5Backend = require("react-dnd-html5-backend");
|
|
15
|
-
const schema = require("./schema-
|
|
15
|
+
const schema = require("./schema-336f4dd6.js");
|
|
16
16
|
require("axios");
|
|
17
17
|
const produce = require("immer");
|
|
18
18
|
require("lodash/cloneDeep");
|
|
@@ -1121,4 +1121,4 @@ exports.setWorkflow = setWorkflow;
|
|
|
1121
1121
|
exports.setWorkflows = setWorkflows;
|
|
1122
1122
|
exports.useInjectReducer = useInjectReducer;
|
|
1123
1123
|
exports.validateWorkflow = validateWorkflow;
|
|
1124
|
-
//# sourceMappingURL=validateWorkflow-
|
|
1124
|
+
//# sourceMappingURL=validateWorkflow-7f76e43f.js.map
|