@strapi/admin 4.17.0 → 4.17.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.
Files changed (169) hide show
  1. package/dist/_chunks/{AdminSeatInfo-a10d232f.js → AdminSeatInfo-390d8989.js} +3 -3
  2. package/dist/_chunks/{AdminSeatInfo-a10d232f.js.map → AdminSeatInfo-390d8989.js.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-6e7bbb97.mjs → AdminSeatInfo-bb59ad1f.mjs} +3 -3
  4. package/dist/_chunks/{AdminSeatInfo-6e7bbb97.mjs.map → AdminSeatInfo-bb59ad1f.mjs.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-47219c52.js → AuthenticatedApp-b186733c.js} +21 -21
  6. package/dist/_chunks/{AuthenticatedApp-47219c52.js.map → AuthenticatedApp-b186733c.js.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-7d1fdf0c.mjs → AuthenticatedApp-b723bf94.mjs} +21 -21
  8. package/dist/_chunks/{AuthenticatedApp-7d1fdf0c.mjs.map → AuthenticatedApp-b723bf94.mjs.map} +1 -1
  9. package/dist/_chunks/{CreatePage-d2a061b5.js → CreatePage-16d53bda.js} +4 -4
  10. package/dist/_chunks/{CreatePage-d2a061b5.js.map → CreatePage-16d53bda.js.map} +1 -1
  11. package/dist/_chunks/{CreatePage-32977ee7.mjs → CreatePage-34ad9bdd.mjs} +4 -4
  12. package/dist/_chunks/{CreatePage-32977ee7.mjs.map → CreatePage-34ad9bdd.mjs.map} +1 -1
  13. package/dist/_chunks/{CreatePage-eeb81776.js → CreatePage-92f708fa.js} +4 -4
  14. package/dist/_chunks/{CreatePage-eeb81776.js.map → CreatePage-92f708fa.js.map} +1 -1
  15. package/dist/_chunks/{CreatePage-17c8a6e4.mjs → CreatePage-e5d16f0e.mjs} +4 -4
  16. package/dist/_chunks/{CreatePage-17c8a6e4.mjs.map → CreatePage-e5d16f0e.mjs.map} +1 -1
  17. package/dist/_chunks/{CreatePage-4ba4bd0d.mjs → CreatePage-f321dfbc.mjs} +4 -4
  18. package/dist/_chunks/{CreatePage-4ba4bd0d.mjs.map → CreatePage-f321dfbc.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-3c0b9dd5.js → CreatePage-f63362cf.js} +4 -4
  20. package/dist/_chunks/{CreatePage-3c0b9dd5.js.map → CreatePage-f63362cf.js.map} +1 -1
  21. package/dist/_chunks/{CreateView-5a0b0eca.js → CreateView-0da060c0.js} +4 -4
  22. package/dist/_chunks/{CreateView-5a0b0eca.js.map → CreateView-0da060c0.js.map} +1 -1
  23. package/dist/_chunks/{CreateView-fc328787.js → CreateView-69c834ba.js} +4 -4
  24. package/dist/_chunks/{CreateView-fc328787.js.map → CreateView-69c834ba.js.map} +1 -1
  25. package/dist/_chunks/{CreateView-8b6412c9.mjs → CreateView-a5345794.mjs} +4 -4
  26. package/dist/_chunks/{CreateView-8b6412c9.mjs.map → CreateView-a5345794.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-2bc998f1.mjs → CreateView-df9f9bf0.mjs} +4 -4
  28. package/dist/_chunks/{CreateView-2bc998f1.mjs.map → CreateView-df9f9bf0.mjs.map} +1 -1
  29. package/dist/_chunks/{EditPage-0b1a48f7.js → EditPage-39a7cd2d.js} +5 -5
  30. package/dist/_chunks/{EditPage-0b1a48f7.js.map → EditPage-39a7cd2d.js.map} +1 -1
  31. package/dist/_chunks/{EditPage-89052393.js → EditPage-48cdd744.js} +4 -4
  32. package/dist/_chunks/{EditPage-89052393.js.map → EditPage-48cdd744.js.map} +1 -1
  33. package/dist/_chunks/{EditPage-efc987d7.js → EditPage-493ac83a.js} +5 -5
  34. package/dist/_chunks/{EditPage-efc987d7.js.map → EditPage-493ac83a.js.map} +1 -1
  35. package/dist/_chunks/{EditPage-6d3fe437.mjs → EditPage-a5a18e61.mjs} +4 -4
  36. package/dist/_chunks/{EditPage-6d3fe437.mjs.map → EditPage-a5a18e61.mjs.map} +1 -1
  37. package/dist/_chunks/{EditPage-2b051ea8.mjs → EditPage-a6578110.mjs} +5 -5
  38. package/dist/_chunks/{EditPage-2b051ea8.mjs.map → EditPage-a6578110.mjs.map} +1 -1
  39. package/dist/_chunks/{EditPage-7b9355e4.mjs → EditPage-e710a231.mjs} +4 -4
  40. package/dist/_chunks/{EditPage-7b9355e4.mjs.map → EditPage-e710a231.mjs.map} +1 -1
  41. package/dist/_chunks/{EditPage-faee9ac1.mjs → EditPage-f5caa375.mjs} +5 -5
  42. package/dist/_chunks/{EditPage-faee9ac1.mjs.map → EditPage-f5caa375.mjs.map} +1 -1
  43. package/dist/_chunks/{EditPage-de127112.js → EditPage-f75f04b9.js} +4 -4
  44. package/dist/_chunks/{EditPage-de127112.js.map → EditPage-f75f04b9.js.map} +1 -1
  45. package/dist/_chunks/{EditView-e480d09f.js → EditView-0c216c35.js} +3 -3
  46. package/dist/_chunks/{EditView-e480d09f.js.map → EditView-0c216c35.js.map} +1 -1
  47. package/dist/_chunks/{EditView-0e4d7c80.mjs → EditView-d3ccb532.mjs} +3 -3
  48. package/dist/_chunks/{EditView-0e4d7c80.mjs.map → EditView-d3ccb532.mjs.map} +1 -1
  49. package/dist/_chunks/{EditViewPage-ef0292a9.js → EditViewPage-57b6e71a.js} +3 -3
  50. package/dist/_chunks/{EditViewPage-ef0292a9.js.map → EditViewPage-57b6e71a.js.map} +1 -1
  51. package/dist/_chunks/{EditViewPage-3e638ea4.mjs → EditViewPage-77e95780.mjs} +3 -3
  52. package/dist/_chunks/{EditViewPage-3e638ea4.mjs.map → EditViewPage-77e95780.mjs.map} +1 -1
  53. package/dist/_chunks/{EventsTable-c8ea750e.js → EventsTable-8e2b0bd9.js} +4 -4
  54. package/dist/_chunks/{EventsTable-c8ea750e.js.map → EventsTable-8e2b0bd9.js.map} +1 -1
  55. package/dist/_chunks/{EventsTable-21c9c326.mjs → EventsTable-d472e89d.mjs} +4 -4
  56. package/dist/_chunks/{EventsTable-21c9c326.mjs.map → EventsTable-d472e89d.mjs.map} +1 -1
  57. package/dist/_chunks/{HomePage-28c2fc09.mjs → HomePage-22d90f51.mjs} +4 -4
  58. package/dist/_chunks/{HomePage-28c2fc09.mjs.map → HomePage-22d90f51.mjs.map} +1 -1
  59. package/dist/_chunks/{HomePage-ef17de6c.js → HomePage-7bd6070c.js} +4 -4
  60. package/dist/_chunks/{HomePage-ef17de6c.js.map → HomePage-7bd6070c.js.map} +1 -1
  61. package/dist/_chunks/{HomePage-d9e5bcf6.js → HomePage-bb29ced3.js} +4 -4
  62. package/dist/_chunks/{HomePage-d9e5bcf6.js.map → HomePage-bb29ced3.js.map} +1 -1
  63. package/dist/_chunks/{HomePage-bfeba10a.mjs → HomePage-e94a37b9.mjs} +4 -4
  64. package/dist/_chunks/{HomePage-bfeba10a.mjs.map → HomePage-e94a37b9.mjs.map} +1 -1
  65. package/dist/_chunks/{InformationBoxEE-bd1d2894.mjs → InformationBoxEE-302228b9.mjs} +2 -2
  66. package/dist/_chunks/{InformationBoxEE-bd1d2894.mjs.map → InformationBoxEE-302228b9.mjs.map} +1 -1
  67. package/dist/_chunks/{InformationBoxEE-2d2b6c4a.js → InformationBoxEE-7d383cec.js} +2 -2
  68. package/dist/_chunks/{InformationBoxEE-2d2b6c4a.js.map → InformationBoxEE-7d383cec.js.map} +1 -1
  69. package/dist/_chunks/{InstalledPluginsPage-39a094a5.js → InstalledPluginsPage-73eabc0b.js} +3 -3
  70. package/dist/_chunks/{InstalledPluginsPage-39a094a5.js.map → InstalledPluginsPage-73eabc0b.js.map} +1 -1
  71. package/dist/_chunks/{InstalledPluginsPage-8e9b0b64.mjs → InstalledPluginsPage-ff15831e.mjs} +3 -3
  72. package/dist/_chunks/{InstalledPluginsPage-8e9b0b64.mjs.map → InstalledPluginsPage-ff15831e.mjs.map} +1 -1
  73. package/dist/_chunks/{Layout-caf718bb.mjs → Layout-1dd77bbb.mjs} +2 -2
  74. package/dist/_chunks/{Layout-caf718bb.mjs.map → Layout-1dd77bbb.mjs.map} +1 -1
  75. package/dist/_chunks/{Layout-cc5413b2.js → Layout-ef2fc31f.js} +2 -2
  76. package/dist/_chunks/{Layout-cc5413b2.js.map → Layout-ef2fc31f.js.map} +1 -1
  77. package/dist/_chunks/{ListPage-cc823a6a.js → ListPage-10bf0ce5.js} +3 -3
  78. package/dist/_chunks/{ListPage-cc823a6a.js.map → ListPage-10bf0ce5.js.map} +1 -1
  79. package/dist/_chunks/{ListPage-5ed3e9d2.mjs → ListPage-1de5fb9e.mjs} +5 -5
  80. package/dist/_chunks/{ListPage-5ed3e9d2.mjs.map → ListPage-1de5fb9e.mjs.map} +1 -1
  81. package/dist/_chunks/{ListPage-db17e758.js → ListPage-354a539f.js} +5 -5
  82. package/dist/_chunks/{ListPage-db17e758.js.map → ListPage-354a539f.js.map} +1 -1
  83. package/dist/_chunks/{ListPage-800398cd.mjs → ListPage-57f5028e.mjs} +6 -6
  84. package/dist/_chunks/{ListPage-800398cd.mjs.map → ListPage-57f5028e.mjs.map} +1 -1
  85. package/dist/_chunks/{ListPage-338d8ca5.js → ListPage-7304822d.js} +6 -6
  86. package/dist/_chunks/{ListPage-338d8ca5.js.map → ListPage-7304822d.js.map} +1 -1
  87. package/dist/_chunks/{ListPage-f43782c4.mjs → ListPage-887f0f02.mjs} +3 -3
  88. package/dist/_chunks/{ListPage-f43782c4.mjs.map → ListPage-887f0f02.mjs.map} +1 -1
  89. package/dist/_chunks/{ListPage-05df9b86.mjs → ListPage-96026788.mjs} +3 -3
  90. package/dist/_chunks/{ListPage-05df9b86.mjs.map → ListPage-96026788.mjs.map} +1 -1
  91. package/dist/_chunks/{ListPage-17fb477a.js → ListPage-ac287db9.js} +3 -3
  92. package/dist/_chunks/{ListPage-17fb477a.js.map → ListPage-ac287db9.js.map} +1 -1
  93. package/dist/_chunks/{ListPage-5e5ad2aa.js → ListPage-ba1aec01.js} +3 -3
  94. package/dist/_chunks/{ListPage-5e5ad2aa.js.map → ListPage-ba1aec01.js.map} +1 -1
  95. package/dist/_chunks/{ListPage-7d5baee5.mjs → ListPage-c878fda8.mjs} +4 -4
  96. package/dist/_chunks/{ListPage-7d5baee5.mjs.map → ListPage-c878fda8.mjs.map} +1 -1
  97. package/dist/_chunks/{ListPage-de4b7131.mjs → ListPage-f256fcb7.mjs} +3 -3
  98. package/dist/_chunks/{ListPage-de4b7131.mjs.map → ListPage-f256fcb7.mjs.map} +1 -1
  99. package/dist/_chunks/{ListPage-56d94335.js → ListPage-f582ff65.js} +4 -4
  100. package/dist/_chunks/{ListPage-56d94335.js.map → ListPage-f582ff65.js.map} +1 -1
  101. package/dist/_chunks/{ListView-b91a8da7.mjs → ListView-1b370206.mjs} +3 -3
  102. package/dist/_chunks/{ListView-b91a8da7.mjs.map → ListView-1b370206.mjs.map} +1 -1
  103. package/dist/_chunks/{ListView-80855396.js → ListView-1fb891a4.js} +3 -3
  104. package/dist/_chunks/{ListView-80855396.js.map → ListView-1fb891a4.js.map} +1 -1
  105. package/dist/_chunks/{ListView-a33ebe77.js → ListView-96fe1016.js} +3 -3
  106. package/dist/_chunks/{ListView-a33ebe77.js.map → ListView-96fe1016.js.map} +1 -1
  107. package/dist/_chunks/{ListView-521e309f.mjs → ListView-bf4ccdba.mjs} +3 -3
  108. package/dist/_chunks/{ListView-521e309f.mjs.map → ListView-bf4ccdba.mjs.map} +1 -1
  109. package/dist/_chunks/{Login-906ebde5.js → Login-09040dec.js} +2 -2
  110. package/dist/_chunks/{Login-906ebde5.js.map → Login-09040dec.js.map} +1 -1
  111. package/dist/_chunks/{Login-4eb1fb78.mjs → Login-6670c9b9.mjs} +2 -2
  112. package/dist/_chunks/{Login-4eb1fb78.mjs.map → Login-6670c9b9.mjs.map} +1 -1
  113. package/dist/_chunks/{MagicLinkEE-03128309.mjs → MagicLinkEE-6d9ed1b1.mjs} +3 -3
  114. package/dist/_chunks/{MagicLinkEE-03128309.mjs.map → MagicLinkEE-6d9ed1b1.mjs.map} +1 -1
  115. package/dist/_chunks/{MagicLinkEE-ab36ee0f.js → MagicLinkEE-79ab8b22.js} +3 -3
  116. package/dist/_chunks/{MagicLinkEE-ab36ee0f.js.map → MagicLinkEE-79ab8b22.js.map} +1 -1
  117. package/dist/_chunks/{MarketplacePage-62e70483.mjs → MarketplacePage-54a925f9.mjs} +3 -3
  118. package/dist/_chunks/{MarketplacePage-62e70483.mjs.map → MarketplacePage-54a925f9.mjs.map} +1 -1
  119. package/dist/_chunks/{MarketplacePage-fe1f2c6e.js → MarketplacePage-ec91b073.js} +3 -3
  120. package/dist/_chunks/{MarketplacePage-fe1f2c6e.js.map → MarketplacePage-ec91b073.js.map} +1 -1
  121. package/dist/_chunks/{ProfilePage-5359ee40.mjs → ProfilePage-091a4db8.mjs} +3 -3
  122. package/dist/_chunks/{ProfilePage-5359ee40.mjs.map → ProfilePage-091a4db8.mjs.map} +1 -1
  123. package/dist/_chunks/{ProfilePage-5bf5e2ed.js → ProfilePage-a28fc7c8.js} +3 -3
  124. package/dist/_chunks/{ProfilePage-5bf5e2ed.js.map → ProfilePage-a28fc7c8.js.map} +1 -1
  125. package/dist/_chunks/{ReviewWorkflowsColumn-65518684.mjs → ReviewWorkflowsColumn-5a3ca279.mjs} +2 -2
  126. package/dist/_chunks/{ReviewWorkflowsColumn-65518684.mjs.map → ReviewWorkflowsColumn-5a3ca279.mjs.map} +1 -1
  127. package/dist/_chunks/{ReviewWorkflowsColumn-b36965fe.js → ReviewWorkflowsColumn-b2d53622.js} +2 -2
  128. package/dist/_chunks/{ReviewWorkflowsColumn-b36965fe.js.map → ReviewWorkflowsColumn-b2d53622.js.map} +1 -1
  129. package/dist/_chunks/{SelectRoles-e83f2dee.js → SelectRoles-b55e6376.js} +2 -2
  130. package/dist/_chunks/{SelectRoles-e83f2dee.js.map → SelectRoles-b55e6376.js.map} +1 -1
  131. package/dist/_chunks/{SelectRoles-3d810b00.mjs → SelectRoles-f0565968.mjs} +2 -2
  132. package/dist/_chunks/{SelectRoles-3d810b00.mjs.map → SelectRoles-f0565968.mjs.map} +1 -1
  133. package/dist/_chunks/{SettingsPage-571f777c.mjs → SettingsPage-7567e138.mjs} +20 -20
  134. package/dist/_chunks/{SettingsPage-571f777c.mjs.map → SettingsPage-7567e138.mjs.map} +1 -1
  135. package/dist/_chunks/{SettingsPage-a558ffda.js → SettingsPage-b5d5dd0b.js} +20 -20
  136. package/dist/_chunks/{SettingsPage-a558ffda.js.map → SettingsPage-b5d5dd0b.js.map} +1 -1
  137. package/dist/_chunks/{SingleSignOnPage-19f2e16f.mjs → SingleSignOnPage-4d1d2448.mjs} +3 -3
  138. package/dist/_chunks/{SingleSignOnPage-19f2e16f.mjs.map → SingleSignOnPage-4d1d2448.mjs.map} +1 -1
  139. package/dist/_chunks/{SingleSignOnPage-b63f4c0f.js → SingleSignOnPage-51dfde4b.js} +3 -3
  140. package/dist/_chunks/{SingleSignOnPage-b63f4c0f.js.map → SingleSignOnPage-51dfde4b.js.map} +1 -1
  141. package/dist/_chunks/{constants-b3c9cbbf.mjs → constants-2ccf2787.mjs} +2 -2
  142. package/dist/_chunks/{constants-b3c9cbbf.mjs.map → constants-2ccf2787.mjs.map} +1 -1
  143. package/dist/_chunks/{constants-5345058d.js → constants-54043280.js} +2 -2
  144. package/dist/_chunks/{constants-5345058d.js.map → constants-54043280.js.map} +1 -1
  145. package/dist/_chunks/{constants-73ebce66.js → constants-74ce2d53.js} +2 -2
  146. package/dist/_chunks/{constants-73ebce66.js.map → constants-74ce2d53.js.map} +1 -1
  147. package/dist/_chunks/{constants-71ebbb75.mjs → constants-81c376c5.mjs} +2 -2
  148. package/dist/_chunks/{constants-71ebbb75.mjs.map → constants-81c376c5.mjs.map} +1 -1
  149. package/dist/_chunks/{constants-d80f19f3.js → constants-a5b1e9d4.js} +6 -6
  150. package/dist/_chunks/{constants-d80f19f3.js.map → constants-a5b1e9d4.js.map} +1 -1
  151. package/dist/_chunks/{constants-7e57b453.mjs → constants-b156a1b6.mjs} +6 -6
  152. package/dist/_chunks/{constants-7e57b453.mjs.map → constants-b156a1b6.mjs.map} +1 -1
  153. package/dist/_chunks/{index-3f8cf4d5.js → index-3956d072.js} +36 -33
  154. package/dist/_chunks/index-3956d072.js.map +1 -0
  155. package/dist/_chunks/{index-95e8649d.mjs → index-3bbbb14c.mjs} +36 -33
  156. package/dist/_chunks/index-3bbbb14c.mjs.map +1 -0
  157. package/dist/_chunks/{useAdminRolePermissions-fccd0884.mjs → useAdminRolePermissions-9f9361e7.mjs} +2 -2
  158. package/dist/_chunks/{useAdminRolePermissions-fccd0884.mjs.map → useAdminRolePermissions-9f9361e7.mjs.map} +1 -1
  159. package/dist/_chunks/{useAdminRolePermissions-122fa43a.js → useAdminRolePermissions-c97323e2.js} +2 -2
  160. package/dist/_chunks/{useAdminRolePermissions-122fa43a.js.map → useAdminRolePermissions-c97323e2.js.map} +1 -1
  161. package/dist/_chunks/{validateWorkflow-8a63abd6.mjs → validateWorkflow-5208ca73.mjs} +2 -2
  162. package/dist/_chunks/{validateWorkflow-8a63abd6.mjs.map → validateWorkflow-5208ca73.mjs.map} +1 -1
  163. package/dist/_chunks/{validateWorkflow-1f89db67.js → validateWorkflow-f6947b4c.js} +2 -2
  164. package/dist/_chunks/{validateWorkflow-1f89db67.js.map → validateWorkflow-f6947b4c.js.map} +1 -1
  165. package/dist/admin/index.js +1 -1
  166. package/dist/admin/index.mjs +1 -1
  167. package/package.json +13 -13
  168. package/dist/_chunks/index-3f8cf4d5.js.map +0 -1
  169. package/dist/_chunks/index-95e8649d.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage-0b1a48f7.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n auth,\n Form,\n GenericInput,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useAppInfo,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminUsers } from '../../../../hooks/useAdminUsers';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { formatAPIErrors } from '../../../../utils/formatAPIErrors';\nimport { getFullName } from '../../../../utils/getFullName';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nimport type { FormLayout } from '../../../../types/form';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup.array().min(1, translatedErrors.required).required(translatedErrors.required),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { put } = useFetchClient();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const { push } = useHistory();\n const { setUserDisplayName } = useAppInfo();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const { formatAPIError } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n useFocusWhenNavigate();\n\n const {\n users: [user],\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n cacheTime: 0,\n onError(error) {\n const { status } = error.response ?? {};\n\n // Redirect the use to the homepage if is not allowed to read\n if (status === 403) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n\n push('/');\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Users\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage({\n id: 'app.containers.Users.EditPage.header.label-loading',\n defaultMessage: 'Edit user',\n })}\n navigationAction={\n <Link\n as={NavLink}\n startIcon={<ArrowLeft />}\n // @ts-expect-error – as component props are not inferred correctly.\n to=\"/settings/users?pageSize=10&page=1&sort=firstname\"\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n /**\n * TODO: Convert this to react-query.\n */\n const handleSubmit = async (body: InitialData, actions: FormikHelpers<InitialData>) => {\n lockApp?.();\n\n try {\n const {\n data: { data },\n } = await put<Update.Response>(`/admin/users/${id}`, omit(body, 'confirmPassword'));\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n const userInfos = auth.getUserInfo();\n\n // The user is updating himself\n if (id.toString() === userInfos?.id.toString()) {\n auth.setUserInfo(data);\n\n const userDisplayName =\n get(body, 'username') || getFullName(body?.firstname ?? '', body.lastname);\n\n setUserDisplayName(userDisplayName);\n }\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n } catch (err) {\n if (err instanceof AxiosError && err.response) {\n // FIXME when API errors are ready\n const errors = formatAPIErrors(err.response.data);\n const fieldsErrors = Object.keys(errors).reduce<FormikErrors<InitialData>>(\n (acc, current) => {\n acc[current as keyof InitialData] = errors[current].id;\n\n return acc;\n },\n {}\n );\n\n actions.setErrors(fieldsErrors);\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n\n unlockApp?.();\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Users\" />\n <Formik\n onSubmit={handleSubmit}\n initialValues={initialData}\n validateOnChange={false}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ errors, values, handleChange, isSubmitting, dirty }) => {\n return (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate ? true : !dirty}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n name:\n initialData.username ||\n getFullName(initialData?.firstname ?? '', initialData.lastname),\n }\n )}\n navigationAction={\n <Link\n as={NavLink}\n startIcon={<ArrowLeft />}\n // @ts-expect-error – as component props are not inferred correctly.\n to=\"/settings/users?pageSize=10&page=1&sort=firstname\"\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n {LAYOUT.map((row) =>\n row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={!canUpdate}\n // TODO: remove this coercion.\n error={errors[input.name as keyof typeof errors] as string}\n onChange={handleChange}\n value={values[input.name as keyof typeof values]}\n />\n </GridItem>\n );\n })\n )}\n </Grid>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles\n disabled={!canUpdate}\n error={errors.roles as string}\n onChange={handleChange}\n value={values.roles}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n intlLabel: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n {\n intlLabel: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'bool',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n] satisfies FormLayout[][];\n\nconst ProtectedEditPage = () => {\n const toggleNotification = useNotification();\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n const { state } = useLocation<{ from: string }>();\n const from = state?.from ?? '/';\n\n React.useEffect(() => {\n if (!isLoading) {\n if (!canRead && !canUpdate) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n }\n }\n }, [isLoading, canRead, canUpdate, toggleNotification]);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to={from} />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useFetchClient","useIntl","useRouteMatch","useHistory","useAppInfo","useNotification","useOverlayBlocker","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useFocusWhenNavigate","useAdminUsers","jsxs","Main","jsx","SettingsPageTitle","HeaderLayout","Button","Check","Link","NavLink","ArrowLeft","ContentLayout","LoadingIndicatorPage","pick","id","omit","auth","get","getFullName","AxiosError","formatAPIErrors","Formik","Form","Box","Flex","Typography","Grid","GridItem","GenericInput","SelectRoles","useLocation","React","Redirect"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage-39a7cd2d.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n auth,\n Form,\n GenericInput,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useAppInfo,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Redirect, useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useAdminUsers } from '../../../../hooks/useAdminUsers';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { formatAPIErrors } from '../../../../utils/formatAPIErrors';\nimport { getFullName } from '../../../../utils/getFullName';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nimport type { FormLayout } from '../../../../types/form';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup.array().min(1, translatedErrors.required).required(translatedErrors.required),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { put } = useFetchClient();\n const { formatMessage } = useIntl();\n const match = useRouteMatch<{ id: string }>('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const { push } = useHistory();\n const { setUserDisplayName } = useAppInfo();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const { formatAPIError } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n useFocusWhenNavigate();\n\n const {\n users: [user],\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n cacheTime: 0,\n onError(error) {\n const { status } = error.response ?? {};\n\n // Redirect the use to the homepage if is not allowed to read\n if (status === 403) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n\n push('/');\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Users\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage({\n id: 'app.containers.Users.EditPage.header.label-loading',\n defaultMessage: 'Edit user',\n })}\n navigationAction={\n <Link\n as={NavLink}\n startIcon={<ArrowLeft />}\n // @ts-expect-error – as component props are not inferred correctly.\n to=\"/settings/users?pageSize=10&page=1&sort=firstname\"\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n /**\n * TODO: Convert this to react-query.\n */\n const handleSubmit = async (body: InitialData, actions: FormikHelpers<InitialData>) => {\n lockApp?.();\n\n try {\n const {\n data: { data },\n } = await put<Update.Response>(`/admin/users/${id}`, omit(body, 'confirmPassword'));\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n const userInfos = auth.getUserInfo();\n\n // The user is updating himself\n if (id.toString() === userInfos?.id.toString()) {\n auth.setUserInfo(data);\n\n const userDisplayName =\n get(body, 'username') || getFullName(body?.firstname ?? '', body.lastname);\n\n setUserDisplayName(userDisplayName);\n }\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n } catch (err) {\n if (err instanceof AxiosError && err.response) {\n // FIXME when API errors are ready\n const errors = formatAPIErrors(err.response.data);\n const fieldsErrors = Object.keys(errors).reduce<FormikErrors<InitialData>>(\n (acc, current) => {\n acc[current as keyof InitialData] = errors[current].id;\n\n return acc;\n },\n {}\n );\n\n actions.setErrors(fieldsErrors);\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n\n unlockApp?.();\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Users\" />\n <Formik\n onSubmit={handleSubmit}\n initialValues={initialData}\n validateOnChange={false}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ errors, values, handleChange, isSubmitting, dirty }) => {\n return (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate ? true : !dirty}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n name:\n initialData.username ||\n getFullName(initialData?.firstname ?? '', initialData.lastname),\n }\n )}\n navigationAction={\n <Link\n as={NavLink}\n startIcon={<ArrowLeft />}\n // @ts-expect-error – as component props are not inferred correctly.\n to=\"/settings/users?pageSize=10&page=1&sort=firstname\"\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n {LAYOUT.map((row) =>\n row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={!canUpdate}\n // TODO: remove this coercion.\n error={errors[input.name as keyof typeof errors] as string}\n onChange={handleChange}\n value={values[input.name as keyof typeof values]}\n />\n </GridItem>\n );\n })\n )}\n </Grid>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles\n disabled={!canUpdate}\n error={errors.roles as string}\n onChange={handleChange}\n value={values.roles}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n intlLabel: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n {\n intlLabel: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'bool',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n] satisfies FormLayout[][];\n\nconst ProtectedEditPage = () => {\n const toggleNotification = useNotification();\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n const { state } = useLocation<{ from: string }>();\n const from = state?.from ?? '/';\n\n React.useEffect(() => {\n if (!isLoading) {\n if (!canRead && !canUpdate) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n }\n }\n }, [isLoading, canRead, canUpdate, toggleNotification]);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to={from} />;\n }\n\n return <EditPage />;\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useFetchClient","useIntl","useRouteMatch","useHistory","useAppInfo","useNotification","useOverlayBlocker","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useFocusWhenNavigate","useAdminUsers","jsxs","Main","jsx","SettingsPageTitle","HeaderLayout","Button","Check","Link","NavLink","ArrowLeft","ContentLayout","LoadingIndicatorPage","pick","id","omit","auth","get","getFullName","AxiosError","formatAPIErrors","Formik","Form","Box","Flex","Typography","Grid","GridItem","GenericInput","SelectRoles","useLocation","React","Redirect"],"mappings":"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"}
@@ -5,9 +5,9 @@ const designSystem = require("@strapi/design-system");
5
5
  const helperPlugin = require("@strapi/helper-plugin");
6
6
  const reactQuery = require("react-query");
7
7
  const reactRouterDom = require("react-router-dom");
8
- const index = require("./index-3f8cf4d5.js");
8
+ const index = require("./index-3956d072.js");
9
9
  const useContentTypes = require("./useContentTypes-7da293cc.js");
10
- const AuthenticatedApp = require("./AuthenticatedApp-47219c52.js");
10
+ const AuthenticatedApp = require("./AuthenticatedApp-b186733c.js");
11
11
  const v2 = require("@strapi/design-system/v2");
12
12
  const Icons = require("@strapi/icons");
13
13
  const formik = require("formik");
@@ -493,7 +493,7 @@ const WebhookForm = ({
493
493
  const [showTriggerResponse, setShowTriggerResponse] = React__namespace.useState(false);
494
494
  const EventTable = index.useEnterprise(
495
495
  EventTableCE,
496
- async () => (await Promise.resolve().then(() => require("./EventsTable-c8ea750e.js"))).EventsTableEE
496
+ async () => (await Promise.resolve().then(() => require("./EventsTable-8e2b0bd9.js"))).EventsTableEE
497
497
  );
498
498
  const mapHeaders = (headers) => {
499
499
  if (!Object.keys(headers).length) {
@@ -793,4 +793,4 @@ const EditPage$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
793
793
  exports.EditPage = EditPage;
794
794
  exports.EditPage$1 = EditPage$1;
795
795
  exports.Events = Events;
796
- //# sourceMappingURL=EditPage-89052393.js.map
796
+ //# sourceMappingURL=EditPage-48cdd744.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditPage-89052393.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/EventsTable.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx","../../admin/src/pages/Settings/pages/Webhooks/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n BaseCheckbox,\n Checkbox,\n FieldLabel,\n Flex,\n Loader,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useFormikContext, FieldInputProps } from 'formik';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WebhookEventContextValue {\n isDraftAndPublish: boolean;\n}\n\nconst [WebhookEventProvider, useWebhookEvent] =\n createContext<WebhookEventContextValue>('WebhookEvent');\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n const { collectionTypes, isLoading } = useContentTypes();\n\n const isDraftAndPublish = React.useMemo(\n () => collectionTypes.some((ct) => ct.options?.draftAndPublish === true),\n [collectionTypes]\n );\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <WebhookEventProvider isDraftAndPublish={isDraftAndPublish}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel aria-hidden>{label}</FieldLabel>\n {isLoading && (\n <Loader>\n {formatMessage({\n id: 'Settings.webhooks.events.isLoading',\n defaultMessage: 'Events loading',\n })}\n </Loader>\n )}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n </WebhookEventProvider>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 10%;\n vertical-align: middle;\n text-align: center;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (isDraftAndPublish: boolean): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n ];\n\n if (isDraftAndPublish) {\n headers.push({ id: 'app.utils.publish', defaultMessage: 'Publish' });\n headers.push({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' });\n }\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { isDraftAndPublish } = useWebhookEvent('Headers');\n\n const { formatMessage } = useIntl();\n const headers = getHeaders(isDraftAndPublish);\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const { isDraftAndPublish } = useWebhookEvent('Body');\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext<FormikContextValue>();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: React.ChangeEventHandler<HTMLInputElement> = ({\n target: { name, value },\n }) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n const handleSelectAll: React.ChangeEventHandler<HTMLInputElement> = ({\n target: { name, value },\n }) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (\n isDraftAndPublish: boolean\n): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n ];\n\n if (isDraftAndPublish) {\n entryEvents.push('entry.publish', 'entry.unpublish');\n }\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: FieldInputProps<string>['onChange'];\n handleSelectAll: FieldInputProps<string>['onChange'];\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: React.ChangeEventHandler<HTMLInputElement> = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll({\n target: { name, value: valueToSet },\n });\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event}>\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect({ target: { name: event, value } })}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n","import { Events } from './Events';\n\nconst EventTableCE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n </Events.Root>\n );\n};\n\nexport { EventTableCE };\n","import * as React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n ComboboxOption,\n CreatableCombobox,\n ComboboxProps,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, FieldInputProps, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormikContext {\n headers: Array<{ key: HTTPHeaders; value: string }>;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext<FormikContext>();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </FieldLabel>\n <Box padding={8} background=\"neutral100\" hasRadius>\n <FieldArray\n validateOnChange={false}\n name=\"headers\"\n render={({ push, remove }) => (\n <Grid gap={4}>\n {values.headers.map((header, index) => {\n const formikError = errors.headers?.[index];\n\n const comboboxError = typeof formikError === 'object' ? formikError.key : undefined;\n const textInputError =\n typeof formikError === 'object' ? formikError.value : undefined;\n\n return (\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={HeaderCombobox}\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n error={comboboxError}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\">\n <Box style={{ flex: 1 }}>\n <Field\n as={TextInput}\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n error={textInputError}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={textInputError ? 0 : 5}\n >\n <RemoveRoundedButton\n disabled={values.headers.length === 1}\n onClick={() => remove(index)}\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n />\n </Flex>\n </Flex>\n </GridItem>\n </React.Fragment>\n );\n })}\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n push({ key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n )}\n />\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps\n extends FieldInputProps<string>,\n Required<Pick<ComboboxProps, 'label' | 'error'>> {}\n\nconst HeaderCombobox = ({ name, onChange, value, ...restProps }: HeaderComboboxProps) => {\n const {\n values: { headers },\n } = useFormikContext<FormikContext>();\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n value={value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </CreatableCombobox>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n","import { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme, css } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * TriggerContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TriggerContainerProps extends Pick<StatusProps, 'isPending'> {\n onCancel: () => void;\n response?: {\n statusCode: number;\n message?: string;\n };\n}\n\nconst TriggerContainer = ({ isPending, onCancel, response }: TriggerContainerProps) => {\n const { statusCode, message } = response ?? {};\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({\n id: 'Settings.webhooks.trigger.cancel',\n defaultMessage: 'cancel',\n })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nconst Icon = styled.svg<{ color?: keyof DefaultTheme['colors'] }>(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n\n ${\n color\n ? css`\n path {\n fill: ${theme.colors[color]};\n }\n `\n : ''\n }\n`\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StatusProps {\n isPending: boolean;\n statusCode?: number;\n}\n\nconst Status = ({ isPending, statusCode }: StatusProps) => {\n const { formatMessage } = useIntl();\n\n if (isPending || !statusCode) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Loader} />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Check} color=\"success700\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Cross} color=\"danger700\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Message\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MessageProps {\n statusCode?: number;\n message?: string;\n}\n\nconst Message = ({ statusCode, message }: MessageProps) => {\n const { formatMessage } = useIntl();\n\n if (!statusCode) {\n return null;\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={pxToRem(250)} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\n\nexport { TriggerContainer };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n TextInput,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Webhook } from '@strapi/types';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport { IntlShape, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\ninterface WebhookFormValues {\n name: Webhook['name'];\n url: Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Webhook;\n handleSubmit: (values: WebhookFormValues) => void;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n const formik = useFormik({\n initialValues: {\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n },\n onSubmit(values, { resetForm, setSubmitting }) {\n handleSubmit(values);\n\n resetForm({ values });\n setSubmitting(false);\n },\n validationSchema: makeWebhookValidationSchema({ formatMessage }),\n validateOnChange: false,\n validateOnBlur: false,\n });\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <FormikProvider value={formik}>\n <Form>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!formik.dirty}\n loading={formik.isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n // @ts-expect-error – as components props are not inferred correctly.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/webhooks\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid gap={6}>\n <GridItem col={6}>\n <Field\n as={TextInput}\n name=\"name\"\n error={formik.errors.name}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n required\n />\n </GridItem>\n <GridItem col={12}>\n <Field\n as={TextInput}\n name=\"url\"\n error={formik.errors.url}\n label={formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n })}\n required\n />\n </GridItem>\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n </FormikProvider>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { Webhook } from '@strapi/types';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { useMutation, useQuery } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport {\n CreateWebhook,\n GetWebhook,\n TriggerWebhook,\n UpdateWebhook,\n} from '../../../../../../shared/contracts/webhooks';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useContentTypes } from '../../../../hooks/useContentTypes';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { WebhookForm, WebhookFormValues } from './components/WebhookForm';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst cleanData = (\n data: WebhookFormValues\n): Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'> => ({\n ...data,\n headers: data.headers.reduce<Webhook['headers']>((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditPage = () => {\n const match = useRouteMatch<{ id: string }>('/settings/webhooks/:id');\n const id = match?.params.id;\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n refetch: refetchWebhook,\n } = useQuery<\n GetWebhook.Response['data'],\n AxiosError<Required<Pick<GetWebhook.Response, 'error'>>>\n >(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get<GetWebhook.Response>(`/admin/webhooks/${id}`);\n\n return data;\n },\n {\n enabled: !isCreating,\n }\n );\n\n React.useEffect(() => {\n if (webhookError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhookError),\n });\n }\n }, [webhookError, toggleNotification, formatAPIError]);\n\n const {\n isLoading: isTriggering,\n data: triggerResponse,\n mutate,\n } = useMutation<\n TriggerWebhook.Response['data'],\n AxiosError<Required<Pick<TriggerWebhook.Response, 'error'>>>\n >(\n () =>\n post<TriggerWebhook.Response>(`/admin/webhooks/${id}/trigger`).then((res) => res.data.data),\n {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n\n const createWebhookMutation = useMutation<\n AxiosResponse<CreateWebhook.Response>,\n AxiosError<Required<Pick<CreateWebhook.Response, 'error'>>>,\n Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'>\n >((body) => post('/admin/webhooks', body), {\n onSuccess({ data: result }) {\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.webhooks.created' },\n });\n replace(`/settings/webhooks/${result.data.id}`);\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const updateWebhookMutation = useMutation<\n AxiosResponse<UpdateWebhook.Response>,\n AxiosError<Required<Pick<UpdateWebhook.Response, 'error'>>>,\n { id: UpdateWebhook.Request['body']['id']; body: Omit<UpdateWebhook.Request['body'], 'id'> }\n >(({ id, body }) => put(`/admin/webhooks/${id}`, body), {\n onSuccess() {\n refetchWebhook();\n toggleNotification({\n type: 'success',\n message: { id: 'notification.form.success.fields' },\n });\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const handleSubmit = async (data: WebhookFormValues) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data));\n return;\n }\n updateWebhookMutation.mutate({ id, body: cleanData(data) });\n };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n data={webhookData}\n handleSubmit={handleSubmit}\n triggerWebhook={mutate}\n isCreating={isCreating}\n isTriggering={isTriggering}\n triggerResponse={triggerResponse}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.webhooks.update}>\n <EditPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedEditPage, EditPage };\n"],"names":["createContext","useIntl","useContentTypes","React","jsx","jsxs","Flex","FieldLabel","Loader","styled","Table","Thead","Tr","Th","VisuallyHidden","Typography","useFormikContext","Tbody","name","Td","Checkbox","BaseCheckbox","Box","FieldArray","Grid","index","GridItem","Field","TextInput","RemoveRoundedButton","TextButton","Plus","value","CreatableCombobox","ComboboxOption","Cross","css","Check","pxToRem","useEnterprise","formik","useFormik","FormikProvider","Form","HeaderLayout","Button","Publish","Link","NavLink","ArrowLeft","ContentLayout","yup","useRouteMatch","useHistory","useNotification","useAPIErrorHandler","useFetchClient","useQuery","useMutation","id","LoadingIndicatorPage","Main","SettingsPageTitle","useTypedSelector","selectAdminPermissions","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"EditPage-48cdd744.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/EventsTable.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx","../../admin/src/pages/Settings/pages/Webhooks/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n BaseCheckbox,\n Checkbox,\n FieldLabel,\n Flex,\n Loader,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useFormikContext, FieldInputProps } from 'formik';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface WebhookEventContextValue {\n isDraftAndPublish: boolean;\n}\n\nconst [WebhookEventProvider, useWebhookEvent] =\n createContext<WebhookEventContextValue>('WebhookEvent');\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n const { collectionTypes, isLoading } = useContentTypes();\n\n const isDraftAndPublish = React.useMemo(\n () => collectionTypes.some((ct) => ct.options?.draftAndPublish === true),\n [collectionTypes]\n );\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <WebhookEventProvider isDraftAndPublish={isDraftAndPublish}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel aria-hidden>{label}</FieldLabel>\n {isLoading && (\n <Loader>\n {formatMessage({\n id: 'Settings.webhooks.events.isLoading',\n defaultMessage: 'Events loading',\n })}\n </Loader>\n )}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n </WebhookEventProvider>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 10%;\n vertical-align: middle;\n text-align: center;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (isDraftAndPublish: boolean): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n ];\n\n if (isDraftAndPublish) {\n headers.push({ id: 'app.utils.publish', defaultMessage: 'Publish' });\n headers.push({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' });\n }\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { isDraftAndPublish } = useWebhookEvent('Headers');\n\n const { formatMessage } = useIntl();\n const headers = getHeaders(isDraftAndPublish);\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const { isDraftAndPublish } = useWebhookEvent('Body');\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext<FormikContextValue>();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: React.ChangeEventHandler<HTMLInputElement> = ({\n target: { name, value },\n }) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n const handleSelectAll: React.ChangeEventHandler<HTMLInputElement> = ({\n target: { name, value },\n }) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (\n isDraftAndPublish: boolean\n): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n ];\n\n if (isDraftAndPublish) {\n entryEvents.push('entry.publish', 'entry.unpublish');\n }\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: FieldInputProps<string>['onChange'];\n handleSelectAll: FieldInputProps<string>['onChange'];\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: React.ChangeEventHandler<HTMLInputElement> = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll({\n target: { name, value: valueToSet },\n });\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event}>\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect({ target: { name: event, value } })}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n","import { Events } from './Events';\n\nconst EventTableCE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n </Events.Root>\n );\n};\n\nexport { EventTableCE };\n","import * as React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n ComboboxOption,\n CreatableCombobox,\n ComboboxProps,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, FieldInputProps, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormikContext {\n headers: Array<{ key: HTTPHeaders; value: string }>;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext<FormikContext>();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </FieldLabel>\n <Box padding={8} background=\"neutral100\" hasRadius>\n <FieldArray\n validateOnChange={false}\n name=\"headers\"\n render={({ push, remove }) => (\n <Grid gap={4}>\n {values.headers.map((header, index) => {\n const formikError = errors.headers?.[index];\n\n const comboboxError = typeof formikError === 'object' ? formikError.key : undefined;\n const textInputError =\n typeof formikError === 'object' ? formikError.value : undefined;\n\n return (\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={HeaderCombobox}\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n error={comboboxError}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\">\n <Box style={{ flex: 1 }}>\n <Field\n as={TextInput}\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n error={textInputError}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={textInputError ? 0 : 5}\n >\n <RemoveRoundedButton\n disabled={values.headers.length === 1}\n onClick={() => remove(index)}\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n />\n </Flex>\n </Flex>\n </GridItem>\n </React.Fragment>\n );\n })}\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n push({ key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n )}\n />\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps\n extends FieldInputProps<string>,\n Required<Pick<ComboboxProps, 'label' | 'error'>> {}\n\nconst HeaderCombobox = ({ name, onChange, value, ...restProps }: HeaderComboboxProps) => {\n const {\n values: { headers },\n } = useFormikContext<FormikContext>();\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n value={value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </CreatableCombobox>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n","import { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme, css } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * TriggerContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TriggerContainerProps extends Pick<StatusProps, 'isPending'> {\n onCancel: () => void;\n response?: {\n statusCode: number;\n message?: string;\n };\n}\n\nconst TriggerContainer = ({ isPending, onCancel, response }: TriggerContainerProps) => {\n const { statusCode, message } = response ?? {};\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({\n id: 'Settings.webhooks.trigger.cancel',\n defaultMessage: 'cancel',\n })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nconst Icon = styled.svg<{ color?: keyof DefaultTheme['colors'] }>(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n\n ${\n color\n ? css`\n path {\n fill: ${theme.colors[color]};\n }\n `\n : ''\n }\n`\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StatusProps {\n isPending: boolean;\n statusCode?: number;\n}\n\nconst Status = ({ isPending, statusCode }: StatusProps) => {\n const { formatMessage } = useIntl();\n\n if (isPending || !statusCode) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Loader} />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Check} color=\"success700\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Cross} color=\"danger700\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Message\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MessageProps {\n statusCode?: number;\n message?: string;\n}\n\nconst Message = ({ statusCode, message }: MessageProps) => {\n const { formatMessage } = useIntl();\n\n if (!statusCode) {\n return null;\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={pxToRem(250)} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\n\nexport { TriggerContainer };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n TextInput,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Webhook } from '@strapi/types';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport { IntlShape, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\ninterface WebhookFormValues {\n name: Webhook['name'];\n url: Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Webhook;\n handleSubmit: (values: WebhookFormValues) => void;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n const formik = useFormik({\n initialValues: {\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n },\n onSubmit(values, { resetForm, setSubmitting }) {\n handleSubmit(values);\n\n resetForm({ values });\n setSubmitting(false);\n },\n validationSchema: makeWebhookValidationSchema({ formatMessage }),\n validateOnChange: false,\n validateOnBlur: false,\n });\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <FormikProvider value={formik}>\n <Form>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!formik.dirty}\n loading={formik.isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n // @ts-expect-error – as components props are not inferred correctly.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/webhooks\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid gap={6}>\n <GridItem col={6}>\n <Field\n as={TextInput}\n name=\"name\"\n error={formik.errors.name}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n required\n />\n </GridItem>\n <GridItem col={12}>\n <Field\n as={TextInput}\n name=\"url\"\n error={formik.errors.url}\n label={formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n })}\n required\n />\n </GridItem>\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n </FormikProvider>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { Webhook } from '@strapi/types';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { useMutation, useQuery } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport {\n CreateWebhook,\n GetWebhook,\n TriggerWebhook,\n UpdateWebhook,\n} from '../../../../../../shared/contracts/webhooks';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useContentTypes } from '../../../../hooks/useContentTypes';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { WebhookForm, WebhookFormValues } from './components/WebhookForm';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst cleanData = (\n data: WebhookFormValues\n): Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'> => ({\n ...data,\n headers: data.headers.reduce<Webhook['headers']>((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditPage = () => {\n const match = useRouteMatch<{ id: string }>('/settings/webhooks/:id');\n const id = match?.params.id;\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n refetch: refetchWebhook,\n } = useQuery<\n GetWebhook.Response['data'],\n AxiosError<Required<Pick<GetWebhook.Response, 'error'>>>\n >(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get<GetWebhook.Response>(`/admin/webhooks/${id}`);\n\n return data;\n },\n {\n enabled: !isCreating,\n }\n );\n\n React.useEffect(() => {\n if (webhookError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhookError),\n });\n }\n }, [webhookError, toggleNotification, formatAPIError]);\n\n const {\n isLoading: isTriggering,\n data: triggerResponse,\n mutate,\n } = useMutation<\n TriggerWebhook.Response['data'],\n AxiosError<Required<Pick<TriggerWebhook.Response, 'error'>>>\n >(\n () =>\n post<TriggerWebhook.Response>(`/admin/webhooks/${id}/trigger`).then((res) => res.data.data),\n {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n\n const createWebhookMutation = useMutation<\n AxiosResponse<CreateWebhook.Response>,\n AxiosError<Required<Pick<CreateWebhook.Response, 'error'>>>,\n Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'>\n >((body) => post('/admin/webhooks', body), {\n onSuccess({ data: result }) {\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.webhooks.created' },\n });\n replace(`/settings/webhooks/${result.data.id}`);\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const updateWebhookMutation = useMutation<\n AxiosResponse<UpdateWebhook.Response>,\n AxiosError<Required<Pick<UpdateWebhook.Response, 'error'>>>,\n { id: UpdateWebhook.Request['body']['id']; body: Omit<UpdateWebhook.Request['body'], 'id'> }\n >(({ id, body }) => put(`/admin/webhooks/${id}`, body), {\n onSuccess() {\n refetchWebhook();\n toggleNotification({\n type: 'success',\n message: { id: 'notification.form.success.fields' },\n });\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const handleSubmit = async (data: WebhookFormValues) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data));\n return;\n }\n updateWebhookMutation.mutate({ id, body: cleanData(data) });\n };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n data={webhookData}\n handleSubmit={handleSubmit}\n triggerWebhook={mutate}\n isCreating={isCreating}\n isTriggering={isTriggering}\n triggerResponse={triggerResponse}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.webhooks.update}>\n <EditPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedEditPage, EditPage };\n"],"names":["createContext","useIntl","useContentTypes","React","jsx","jsxs","Flex","FieldLabel","Loader","styled","Table","Thead","Tr","Th","VisuallyHidden","Typography","useFormikContext","Tbody","name","Td","Checkbox","BaseCheckbox","Box","FieldArray","Grid","index","GridItem","Field","TextInput","RemoveRoundedButton","TextButton","Plus","value","CreatableCombobox","ComboboxOption","Cross","css","Check","pxToRem","useEnterprise","formik","useFormik","FormikProvider","Form","HeaderLayout","Button","Publish","Link","NavLink","ArrowLeft","ContentLayout","yup","useRouteMatch","useHistory","useNotification","useAPIErrorHandler","useFetchClient","useQuery","useMutation","id","LoadingIndicatorPage","Main","SettingsPageTitle","useTypedSelector","selectAdminPermissions","CheckPagePermissions"],"mappings":"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"}
@@ -14,14 +14,14 @@ const reactRedux = require("react-redux");
14
14
  const reactRouterDom = require("react-router-dom");
15
15
  const useAdminRoles = require("./useAdminRoles-485a39e5.js");
16
16
  const useContentTypes = require("./useContentTypes-7da293cc.js");
17
- const validateWorkflow = require("./validateWorkflow-1f89db67.js");
18
- const AuthenticatedApp = require("./AuthenticatedApp-47219c52.js");
17
+ const validateWorkflow = require("./validateWorkflow-f6947b4c.js");
18
+ const AuthenticatedApp = require("./AuthenticatedApp-b186733c.js");
19
19
  const useLicenseLimits = require("./useLicenseLimits-e60a01b1.js");
20
- const Layout = require("./Layout-cc5413b2.js");
20
+ const Layout = require("./Layout-ef2fc31f.js");
21
21
  const LimitsModal = require("./LimitsModal-3327be54.js");
22
22
  const constants = require("./constants-85da8cc4.js");
23
23
  const useReviewWorkflows = require("./useReviewWorkflows-26f7e558.js");
24
- require("./index-3f8cf4d5.js");
24
+ require("./index-3956d072.js");
25
25
  require("react-dom/client");
26
26
  require("invariant");
27
27
  require("lodash/isFunction");
@@ -401,4 +401,4 @@ const ReviewWorkflowsEditPage = () => {
401
401
  ] });
402
402
  };
403
403
  exports.ReviewWorkflowsEditPage = ReviewWorkflowsEditPage;
404
- //# sourceMappingURL=EditPage-efc987d7.js.map
404
+ //# sourceMappingURL=EditPage-493ac83a.js.map