@strapi/admin 4.15.5-alpha.4 → 4.15.5-alpha.6

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 (183) hide show
  1. package/dist/_chunks/{AuthenticatedApp-31e6418d.js → AuthenticatedApp-052b1f3f.js} +21 -21
  2. package/dist/_chunks/{AuthenticatedApp-31e6418d.js.map → AuthenticatedApp-052b1f3f.js.map} +1 -1
  3. package/dist/_chunks/{AuthenticatedApp-52d37e32.mjs → AuthenticatedApp-4cc69f67.mjs} +21 -21
  4. package/dist/_chunks/{AuthenticatedApp-52d37e32.mjs.map → AuthenticatedApp-4cc69f67.mjs.map} +1 -1
  5. package/dist/_chunks/{HomePage-0f953b49.js → HomePage-2e941916.js} +4 -4
  6. package/dist/_chunks/{HomePage-0f953b49.js.map → HomePage-2e941916.js.map} +1 -1
  7. package/dist/_chunks/{HomePage-1e7b2e66.mjs → HomePage-64aa34e8.mjs} +4 -4
  8. package/dist/_chunks/{HomePage-1e7b2e66.mjs.map → HomePage-64aa34e8.mjs.map} +1 -1
  9. package/dist/_chunks/{HomePage-a2c12504.mjs → HomePage-7a55e445.mjs} +4 -4
  10. package/dist/_chunks/{HomePage-a2c12504.mjs.map → HomePage-7a55e445.mjs.map} +1 -1
  11. package/dist/_chunks/{HomePage-d0f7fc69.js → HomePage-8cb64a1d.js} +4 -4
  12. package/dist/_chunks/{HomePage-d0f7fc69.js.map → HomePage-8cb64a1d.js.map} +1 -1
  13. package/dist/_chunks/{InstalledPluginsPage-46e14507.js → InstalledPluginsPage-5209e974.js} +3 -3
  14. package/dist/_chunks/{InstalledPluginsPage-46e14507.js.map → InstalledPluginsPage-5209e974.js.map} +1 -1
  15. package/dist/_chunks/{InstalledPluginsPage-3fc71003.mjs → InstalledPluginsPage-dff1be98.mjs} +3 -3
  16. package/dist/_chunks/{InstalledPluginsPage-3fc71003.mjs.map → InstalledPluginsPage-dff1be98.mjs.map} +1 -1
  17. package/dist/_chunks/{Login-550366a9.js → Login-e0373d0e.js} +2 -2
  18. package/dist/_chunks/{Login-550366a9.js.map → Login-e0373d0e.js.map} +1 -1
  19. package/dist/_chunks/{Login-57e0fd9c.mjs → Login-f60d0115.mjs} +2 -2
  20. package/dist/_chunks/{Login-57e0fd9c.mjs.map → Login-f60d0115.mjs.map} +1 -1
  21. package/dist/_chunks/{MarketplacePage-2505749a.mjs → MarketplacePage-602fc4ee.mjs} +3 -3
  22. package/dist/_chunks/{MarketplacePage-2505749a.mjs.map → MarketplacePage-602fc4ee.mjs.map} +1 -1
  23. package/dist/_chunks/{MarketplacePage-138e7b39.js → MarketplacePage-62570c61.js} +3 -3
  24. package/dist/_chunks/{MarketplacePage-138e7b39.js.map → MarketplacePage-62570c61.js.map} +1 -1
  25. package/dist/_chunks/{ProfilePage-bd50b4f3.mjs → ProfilePage-1d607e48.mjs} +3 -3
  26. package/dist/_chunks/{ProfilePage-bd50b4f3.mjs.map → ProfilePage-1d607e48.mjs.map} +1 -1
  27. package/dist/_chunks/{ProfilePage-23b8a29f.js → ProfilePage-e7c7f60a.js} +3 -3
  28. package/dist/_chunks/{ProfilePage-23b8a29f.js.map → ProfilePage-e7c7f60a.js.map} +1 -1
  29. package/dist/_chunks/{constants-362e760f.mjs → constants-0215e710.mjs} +6 -6
  30. package/dist/_chunks/{constants-362e760f.mjs.map → constants-0215e710.mjs.map} +1 -1
  31. package/dist/_chunks/{constants-88f9d2a0.js → constants-1aae728c.js} +3 -3
  32. package/dist/_chunks/{constants-88f9d2a0.js.map → constants-1aae728c.js.map} +1 -1
  33. package/dist/_chunks/{constants-6dcb43aa.mjs → constants-428b48c7.mjs} +2 -2
  34. package/dist/_chunks/{constants-6dcb43aa.mjs.map → constants-428b48c7.mjs.map} +1 -1
  35. package/dist/_chunks/{constants-e2c67ec8.mjs → constants-6128de70.mjs} +5 -5
  36. package/dist/_chunks/{constants-e2c67ec8.mjs.map → constants-6128de70.mjs.map} +1 -1
  37. package/dist/_chunks/{constants-59bcff2e.mjs → constants-6e912136.mjs} +3 -3
  38. package/dist/_chunks/{constants-59bcff2e.mjs.map → constants-6e912136.mjs.map} +1 -1
  39. package/dist/_chunks/{constants-ac7899ed.js → constants-873f0b02.js} +5 -5
  40. package/dist/_chunks/{constants-ac7899ed.js.map → constants-873f0b02.js.map} +1 -1
  41. package/dist/_chunks/{constants-4539f7ac.js → constants-c29c58fe.js} +6 -6
  42. package/dist/_chunks/{constants-4539f7ac.js.map → constants-c29c58fe.js.map} +1 -1
  43. package/dist/_chunks/{constants-06897e38.js → constants-dde6f1d0.js} +2 -2
  44. package/dist/_chunks/{constants-06897e38.js.map → constants-dde6f1d0.js.map} +1 -1
  45. package/dist/_chunks/{index-be02d51c.js → index-011c80df.js} +20 -20
  46. package/dist/_chunks/{index-be02d51c.js.map → index-011c80df.js.map} +1 -1
  47. package/dist/_chunks/{index-70189e76.mjs → index-098cfdc0.mjs} +3 -3
  48. package/dist/_chunks/{index-70189e76.mjs.map → index-098cfdc0.mjs.map} +1 -1
  49. package/dist/_chunks/{index-aceb13c1.mjs → index-09f50ad7.mjs} +4 -4
  50. package/dist/_chunks/{index-aceb13c1.mjs.map → index-09f50ad7.mjs.map} +1 -1
  51. package/dist/_chunks/{index-19b1984d.js → index-0dcf223b.js} +2 -2
  52. package/dist/_chunks/{index-19b1984d.js.map → index-0dcf223b.js.map} +1 -1
  53. package/dist/_chunks/{index-23925f10.mjs → index-0dd93c2e.mjs} +2 -2
  54. package/dist/_chunks/{index-23925f10.mjs.map → index-0dd93c2e.mjs.map} +1 -1
  55. package/dist/_chunks/{index-ce41b6f0.mjs → index-0e6b3168.mjs} +4 -4
  56. package/dist/_chunks/{index-ce41b6f0.mjs.map → index-0e6b3168.mjs.map} +1 -1
  57. package/dist/_chunks/{index-dc4938ad.mjs → index-18c52895.mjs} +5 -5
  58. package/dist/_chunks/{index-dc4938ad.mjs.map → index-18c52895.mjs.map} +1 -1
  59. package/dist/_chunks/{index-133699a3.js → index-19517b07.js} +4 -4
  60. package/dist/_chunks/{index-133699a3.js.map → index-19517b07.js.map} +1 -1
  61. package/dist/_chunks/{index-bb22dbbc.mjs → index-19bf0d84.mjs} +3 -3
  62. package/dist/_chunks/{index-bb22dbbc.mjs.map → index-19bf0d84.mjs.map} +1 -1
  63. package/dist/_chunks/{index-36a7c525.js → index-22d25b03.js} +3 -3
  64. package/dist/_chunks/{index-36a7c525.js.map → index-22d25b03.js.map} +1 -1
  65. package/dist/_chunks/{index-3a96c79f.mjs → index-25f64a5b.mjs} +3 -3
  66. package/dist/_chunks/{index-3a96c79f.mjs.map → index-25f64a5b.mjs.map} +1 -1
  67. package/dist/_chunks/{index-628c5937.js → index-2ee9157f.js} +8 -8
  68. package/dist/_chunks/{index-628c5937.js.map → index-2ee9157f.js.map} +1 -1
  69. package/dist/_chunks/{index-cd6b99a8.js → index-347f52cd.js} +5 -5
  70. package/dist/_chunks/{index-cd6b99a8.js.map → index-347f52cd.js.map} +1 -1
  71. package/dist/_chunks/{index-c36d6802.js → index-3890a641.js} +3 -3
  72. package/dist/_chunks/{index-c36d6802.js.map → index-3890a641.js.map} +1 -1
  73. package/dist/_chunks/{index-a0af8beb.js → index-3b7eba5f.js} +3 -3
  74. package/dist/_chunks/{index-a0af8beb.js.map → index-3b7eba5f.js.map} +1 -1
  75. package/dist/_chunks/{index-1a7cc203.mjs → index-3fdbcbff.mjs} +3 -3
  76. package/dist/_chunks/{index-1a7cc203.mjs.map → index-3fdbcbff.mjs.map} +1 -1
  77. package/dist/_chunks/{index-898ba1c6.js → index-3fe35214.js} +3 -3
  78. package/dist/_chunks/{index-898ba1c6.js.map → index-3fe35214.js.map} +1 -1
  79. package/dist/_chunks/{index-0b787ac1.js → index-423d7707.js} +5 -5
  80. package/dist/_chunks/{index-0b787ac1.js.map → index-423d7707.js.map} +1 -1
  81. package/dist/_chunks/{index-2c76e5e2.js → index-48824a39.js} +3 -3
  82. package/dist/_chunks/{index-2c76e5e2.js.map → index-48824a39.js.map} +1 -1
  83. package/dist/_chunks/{index-ff9d30ef.js → index-4c9d7545.js} +5 -5
  84. package/dist/_chunks/{index-ff9d30ef.js.map → index-4c9d7545.js.map} +1 -1
  85. package/dist/_chunks/{index-2b48526d.mjs → index-50a55783.mjs} +5 -5
  86. package/dist/_chunks/{index-2b48526d.mjs.map → index-50a55783.mjs.map} +1 -1
  87. package/dist/_chunks/{index-1a3e997a.mjs → index-55321986.mjs} +8 -8
  88. package/dist/_chunks/{index-1a3e997a.mjs.map → index-55321986.mjs.map} +1 -1
  89. package/dist/_chunks/{index-3be46ca9.mjs → index-56931941.mjs} +3 -3
  90. package/dist/_chunks/{index-3be46ca9.mjs.map → index-56931941.mjs.map} +1 -1
  91. package/dist/_chunks/{index-03e8b9e3.mjs → index-58bbc57f.mjs} +3 -3
  92. package/dist/_chunks/{index-03e8b9e3.mjs.map → index-58bbc57f.mjs.map} +1 -1
  93. package/dist/_chunks/{index-4b8c01d4.js → index-65f3f3b1.js} +2 -2
  94. package/dist/_chunks/{index-4b8c01d4.js.map → index-65f3f3b1.js.map} +1 -1
  95. package/dist/_chunks/{index-6db2b431.js → index-70a326dc.js} +5 -5
  96. package/dist/_chunks/{index-6db2b431.js.map → index-70a326dc.js.map} +1 -1
  97. package/dist/_chunks/{index-148939b0.js → index-72c7683c.js} +4 -4
  98. package/dist/_chunks/{index-148939b0.js.map → index-72c7683c.js.map} +1 -1
  99. package/dist/_chunks/{index-6e44aef9.js → index-753c6b59.js} +3 -3
  100. package/dist/_chunks/{index-6e44aef9.js.map → index-753c6b59.js.map} +1 -1
  101. package/dist/_chunks/{index-fae4b277.mjs → index-75a43800.mjs} +4 -4
  102. package/dist/_chunks/{index-fae4b277.mjs.map → index-75a43800.mjs.map} +1 -1
  103. package/dist/_chunks/{index-d63b0b91.js → index-77e6bb8d.js} +4 -4
  104. package/dist/_chunks/{index-d63b0b91.js.map → index-77e6bb8d.js.map} +1 -1
  105. package/dist/_chunks/{index-5113c6be.mjs → index-7f8a49c1.mjs} +2 -2
  106. package/dist/_chunks/{index-5113c6be.mjs.map → index-7f8a49c1.mjs.map} +1 -1
  107. package/dist/_chunks/{index-994d2c5d.mjs → index-84c3bfeb.mjs} +2 -2
  108. package/dist/_chunks/{index-994d2c5d.mjs.map → index-84c3bfeb.mjs.map} +1 -1
  109. package/dist/_chunks/{index-5c19f439.js → index-85026f16.js} +5 -5
  110. package/dist/_chunks/{index-5c19f439.js.map → index-85026f16.js.map} +1 -1
  111. package/dist/_chunks/{index-c9e68296.mjs → index-86db271c.mjs} +5 -5
  112. package/dist/_chunks/{index-c9e68296.mjs.map → index-86db271c.mjs.map} +1 -1
  113. package/dist/_chunks/{index-be8eb534.js → index-88a630d3.js} +3 -3
  114. package/dist/_chunks/{index-be8eb534.js.map → index-88a630d3.js.map} +1 -1
  115. package/dist/_chunks/{index-91ef29b3.mjs → index-8c49ec55.mjs} +3 -3
  116. package/dist/_chunks/{index-91ef29b3.mjs.map → index-8c49ec55.mjs.map} +1 -1
  117. package/dist/_chunks/{index-15c76f0b.mjs → index-8ddc40ed.mjs} +4 -4
  118. package/dist/_chunks/{index-15c76f0b.mjs.map → index-8ddc40ed.mjs.map} +1 -1
  119. package/dist/_chunks/{index-24b626a6.js → index-9214b657.js} +3 -3
  120. package/dist/_chunks/{index-24b626a6.js.map → index-9214b657.js.map} +1 -1
  121. package/dist/_chunks/{index-58ffc071.js → index-95aa46db.js} +3 -3
  122. package/dist/_chunks/{index-58ffc071.js.map → index-95aa46db.js.map} +1 -1
  123. package/dist/_chunks/{index-8bca9e4c.mjs → index-a9047c13.mjs} +4 -4
  124. package/dist/_chunks/{index-8bca9e4c.mjs.map → index-a9047c13.mjs.map} +1 -1
  125. package/dist/_chunks/{index-4fef292a.mjs → index-ab4e350f.mjs} +3 -3
  126. package/dist/_chunks/{index-4fef292a.mjs.map → index-ab4e350f.mjs.map} +1 -1
  127. package/dist/_chunks/{index-9195720c.js → index-ac37ca84.js} +5 -5
  128. package/dist/_chunks/{index-9195720c.js.map → index-ac37ca84.js.map} +1 -1
  129. package/dist/_chunks/{index-aee95cda.js → index-ae4b769d.js} +3 -3
  130. package/dist/_chunks/{index-aee95cda.js.map → index-ae4b769d.js.map} +1 -1
  131. package/dist/_chunks/{index-4544af4c.mjs → index-af4b6c84.mjs} +20 -20
  132. package/dist/_chunks/{index-4544af4c.mjs.map → index-af4b6c84.mjs.map} +1 -1
  133. package/dist/_chunks/{index-9f8605e5.mjs → index-b0989259.mjs} +3 -3
  134. package/dist/_chunks/{index-9f8605e5.mjs.map → index-b0989259.mjs.map} +1 -1
  135. package/dist/_chunks/{index-64a156de.js → index-b45bf5b8.js} +3 -3
  136. package/dist/_chunks/{index-64a156de.js.map → index-b45bf5b8.js.map} +1 -1
  137. package/dist/_chunks/{index-610889c4.mjs → index-b8295ba1.mjs} +4 -4
  138. package/dist/_chunks/{index-610889c4.mjs.map → index-b8295ba1.mjs.map} +1 -1
  139. package/dist/_chunks/{index-b17c7874.mjs → index-c3f0206f.mjs} +3 -3
  140. package/dist/_chunks/{index-b17c7874.mjs.map → index-c3f0206f.mjs.map} +1 -1
  141. package/dist/_chunks/{index-074a5de8.js → index-c4cdb3d2.js} +2 -2
  142. package/dist/_chunks/{index-074a5de8.js.map → index-c4cdb3d2.js.map} +1 -1
  143. package/dist/_chunks/{index-6b1148f6.js → index-cb321951.js} +4 -4
  144. package/dist/_chunks/{index-6b1148f6.js.map → index-cb321951.js.map} +1 -1
  145. package/dist/_chunks/{index-13ab14ec.mjs → index-cce3ffb3.mjs} +3 -3
  146. package/dist/_chunks/{index-13ab14ec.mjs.map → index-cce3ffb3.mjs.map} +1 -1
  147. package/dist/_chunks/{index-9deb8ccb.js → index-cdaa6174.js} +4 -4
  148. package/dist/_chunks/{index-9deb8ccb.js.map → index-cdaa6174.js.map} +1 -1
  149. package/dist/_chunks/{index-eb59cabf.js → index-d155c4c0.js} +3 -3
  150. package/dist/_chunks/{index-eb59cabf.js.map → index-d155c4c0.js.map} +1 -1
  151. package/dist/_chunks/{index-67a35378.mjs → index-d81aa061.mjs} +3 -3
  152. package/dist/_chunks/{index-67a35378.mjs.map → index-d81aa061.mjs.map} +1 -1
  153. package/dist/_chunks/{index-8cafda81.js → index-d95b6d21.js} +4 -4
  154. package/dist/_chunks/{index-8cafda81.js.map → index-d95b6d21.js.map} +1 -1
  155. package/dist/_chunks/{index-d3dea80c.js → index-dd0a8ff3.js} +6 -6
  156. package/dist/_chunks/{index-d3dea80c.js.map → index-dd0a8ff3.js.map} +1 -1
  157. package/dist/_chunks/{index-ea43b165.mjs → index-dddefc45.mjs} +5 -5
  158. package/dist/_chunks/{index-ea43b165.mjs.map → index-dddefc45.mjs.map} +1 -1
  159. package/dist/_chunks/{index-c59a117e.mjs → index-e1e11ca2.mjs} +3 -3
  160. package/dist/_chunks/{index-c59a117e.mjs.map → index-e1e11ca2.mjs.map} +1 -1
  161. package/dist/_chunks/{index-c45d5f19.mjs → index-e38dc1b2.mjs} +4 -4
  162. package/dist/_chunks/{index-c45d5f19.mjs.map → index-e38dc1b2.mjs.map} +1 -1
  163. package/dist/_chunks/{index-0778959c.mjs → index-e9697692.mjs} +6 -6
  164. package/dist/_chunks/{index-0778959c.mjs.map → index-e9697692.mjs.map} +1 -1
  165. package/dist/_chunks/{index-02064a74.js → index-eefc7852.js} +3 -3
  166. package/dist/_chunks/{index-02064a74.js.map → index-eefc7852.js.map} +1 -1
  167. package/dist/_chunks/{index-9eb4c34d.mjs → index-f4138f76.mjs} +5 -5
  168. package/dist/_chunks/{index-9eb4c34d.mjs.map → index-f4138f76.mjs.map} +1 -1
  169. package/dist/_chunks/{index-86172b2d.js → index-fc62e1c6.js} +4 -4
  170. package/dist/_chunks/{index-86172b2d.js.map → index-fc62e1c6.js.map} +1 -1
  171. package/dist/_chunks/{index-59880344.mjs → index-fd85d188.mjs} +5 -5
  172. package/dist/_chunks/{index-59880344.mjs.map → index-fd85d188.mjs.map} +1 -1
  173. package/dist/_chunks/{schema-e3080441.js → schema-93c4fc79.js} +2 -2
  174. package/dist/_chunks/{schema-e3080441.js.map → schema-93c4fc79.js.map} +1 -1
  175. package/dist/_chunks/{schema-549f8236.mjs → schema-db83441c.mjs} +2 -2
  176. package/dist/_chunks/{schema-549f8236.mjs.map → schema-db83441c.mjs.map} +1 -1
  177. package/dist/_chunks/{validateWorkflow-7bff41ac.mjs → validateWorkflow-1dc51587.mjs} +3 -3
  178. package/dist/_chunks/{validateWorkflow-7bff41ac.mjs.map → validateWorkflow-1dc51587.mjs.map} +1 -1
  179. package/dist/_chunks/{validateWorkflow-a7311af1.js → validateWorkflow-8581e095.js} +3 -3
  180. package/dist/_chunks/{validateWorkflow-a7311af1.js.map → validateWorkflow-8581e095.js.map} +1 -1
  181. package/dist/admin/index.js +1 -1
  182. package/dist/admin/index.mjs +1 -1
  183. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"index-70189e76.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\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 } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../hooks/useContentTypes';\n\nexport const formatValue = (value) =>\n value.reduce((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// 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\nconst getCEHeaders = (isDraftAndPublish) => {\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 getCEEvents = (isDraftAndPublish) => {\n const entryEvents = ['entry.create', 'entry.update', 'entry.delete'];\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\nconst WebhookEventContext = React.createContext();\n\nconst Root = ({ children }) => {\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 <WebhookEventContext.Provider value={{ 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 </WebhookEventContext.Provider>\n );\n};\n\nRoot.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst Headers = ({ getHeaders = getCEHeaders }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\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\nHeaders.defaultProps = {\n getHeaders: getCEHeaders,\n};\n\nHeaders.propTypes = {\n getHeaders: PropTypes.func,\n};\n\nconst Body = ({ providedEvents }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents = [];\n\n const formattedValue = formatValue(inputValue);\n\n const handleSelect = ({ target: { name, value } }) => {\n let 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 = ({ target: { name, value } }) => {\n let 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 <EventRow\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\nBody.defaultProps = {\n providedEvents: null,\n};\n\nBody.propTypes = {\n providedEvents: PropTypes.object,\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nconst removeHyphensAndTitleCase = (str) =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst EventRow = ({ disabledEvents, name, events, inputValue, handleSelect, handleSelectAll }) => {\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 = ({ 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\nEventRow.defaultProps = {\n disabledEvents: [],\n events: [],\n inputValue: [],\n handleSelect() {},\n handleSelectAll() {},\n};\n\nEventRow.propTypes = {\n disabledEvents: PropTypes.array,\n events: PropTypes.array,\n inputValue: PropTypes.array,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n name: PropTypes.string.isRequired,\n};\n\nexport default { Root, Headers, Body, EventRow };\n","import React from 'react';\n\nimport EventTable from '../Events';\n\n// This component is overwritten by the EE counterpart\nexport function EventTableCE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n </EventTable.Root>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { ComboboxOption, CreatableCombobox } from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\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];\n\nconst Combobox = ({ name, onChange, value, ...props }) => {\n const {\n values: { headers },\n } = useFormikContext();\n const [options, setOptions] = useState(HTTP_HEADERS);\n\n useEffect(() => {\n setOptions(\n HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n )\n );\n }, [headers, value]);\n\n const handleChange = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value) => {\n setOptions((prev) => [...prev, value]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...props}\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\nCombobox.defaultProps = {\n value: undefined,\n};\n\nCombobox.propTypes = {\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nexport default Combobox;\n","import React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport Combobox from './Combobox';\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext();\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 // eslint-disable-next-line\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={Combobox}\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={errors.headers?.[index]?.key && errors.headers[index].key}\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={errors.headers?.[index]?.value && errors.headers[index].value}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={errors.headers?.[index]?.value ? 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 <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\nexport default HeadersInput;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\n// Being discussed in Notion: create a <Icon /> component in Parts\nconst Icon = styled.svg(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n path {\n fill: ${theme.colors[color]};\n }\n`\n);\n\nconst Status = ({ isPending, statusCode }) => {\n const { formatMessage } = useIntl();\n\n if (isPending) {\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};\nStatus.propTypes = {\n isPending: PropTypes.bool.isRequired,\n statusCode: PropTypes.number,\n};\nStatus.defaultProps = {\n statusCode: undefined,\n};\n\nconst Message = ({ statusCode, message }) => {\n const { formatMessage } = useIntl();\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};\nMessage.propTypes = {\n statusCode: PropTypes.number,\n message: PropTypes.string,\n};\nMessage.defaultProps = {\n statusCode: undefined,\n message: undefined,\n};\n\nconst CancelButton = ({ onCancel }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({ id: 'Settings.webhooks.trigger.cancel', defaultMessage: 'cancel' })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n );\n};\n\nCancelButton.propTypes = { onCancel: PropTypes.func.isRequired };\n\nconst TriggerContainer = ({ isPending, onCancel, response }) => {\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 <CancelButton onCancel={onCancel} />\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nTriggerContainer.defaultProps = {\n isPending: false,\n onCancel() {},\n response: {},\n};\n\nTriggerContainer.propTypes = {\n isPending: PropTypes.bool,\n onCancel: PropTypes.func,\n response: PropTypes.object,\n};\n\nexport default TriggerContainer;\n","import * as yup from 'yup';\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nexport const makeWebhookValidationSchema = ({ 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 let 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","import React, { useState } 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 { Form, Link } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { useEnterprise } from '../../../../../../../hooks/useEnterprise';\nimport { EventTableCE } from '../EventTable';\nimport HeadersInput from '../HeadersInput';\nimport TriggerContainer from '../TriggerContainer';\n\nimport { makeWebhookValidationSchema } from './utils/makeWebhookValidationSchema';\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable'\n )\n ).EventTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n * @param {Object} headers\n * @returns {Array}\n */\n const mapHeaders = (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 onSubmit={formik.handleSubmit}>\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 <Link 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 && 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 && 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\nWebhookForm.propTypes = {\n data: PropTypes.object,\n handleSubmit: PropTypes.func.isRequired,\n triggerWebhook: PropTypes.func.isRequired,\n isCreating: PropTypes.bool.isRequired,\n isTriggering: PropTypes.bool.isRequired,\n triggerResponse: PropTypes.object,\n};\n\nWebhookForm.defaultProps = {\n data: undefined,\n triggerResponse: undefined,\n};\n\nexport default WebhookForm;\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\nimport WebhookForm from './components/WebhookForm';\n\nconst cleanData = (data) => ({\n ...data,\n headers: data.headers.reduce((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditView = () => {\n const {\n params: { id },\n } = useRouteMatch('/settings/webhooks/:id');\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const queryClient = useQueryClient();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n } = useQuery(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get(`/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 isIdle: isTriggerIdle,\n mutate,\n } = useMutation(() => post(`/admin/webhooks/${id}/trigger`));\n\n const triggerWebhook = () =>\n mutate(null, {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const createWebhookMutation = useMutation((body) => post('/admin/webhooks', body));\n\n const updateWebhookMutation = useMutation(({ id, body }) => put(`/admin/webhooks/${id}`, body));\n\n const handleSubmit = async (data) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data), {\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 return;\n }\n updateWebhookMutation.mutate(\n { id, body: cleanData(data) },\n {\n onSuccess() {\n queryClient.invalidateQueries(['webhooks', id]);\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 };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n {...{\n data: webhookData,\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n isTriggerIdle,\n triggerResponse: triggerResponse?.data.data,\n }}\n />\n </Main>\n );\n};\n\nexport default EditView;\n"],"names":["Table","Thead","Tr","Th","Tbody","name","Td","value","React","Loader","EventTable","Publish","id"],"mappings":"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"}
1
+ {"version":3,"file":"index-098cfdc0.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\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 } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../hooks/useContentTypes';\n\nexport const formatValue = (value) =>\n value.reduce((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// 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\nconst getCEHeaders = (isDraftAndPublish) => {\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 getCEEvents = (isDraftAndPublish) => {\n const entryEvents = ['entry.create', 'entry.update', 'entry.delete'];\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\nconst WebhookEventContext = React.createContext();\n\nconst Root = ({ children }) => {\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 <WebhookEventContext.Provider value={{ 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 </WebhookEventContext.Provider>\n );\n};\n\nRoot.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst Headers = ({ getHeaders = getCEHeaders }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\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\nHeaders.defaultProps = {\n getHeaders: getCEHeaders,\n};\n\nHeaders.propTypes = {\n getHeaders: PropTypes.func,\n};\n\nconst Body = ({ providedEvents }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents = [];\n\n const formattedValue = formatValue(inputValue);\n\n const handleSelect = ({ target: { name, value } }) => {\n let 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 = ({ target: { name, value } }) => {\n let 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 <EventRow\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\nBody.defaultProps = {\n providedEvents: null,\n};\n\nBody.propTypes = {\n providedEvents: PropTypes.object,\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nconst removeHyphensAndTitleCase = (str) =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst EventRow = ({ disabledEvents, name, events, inputValue, handleSelect, handleSelectAll }) => {\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 = ({ 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\nEventRow.defaultProps = {\n disabledEvents: [],\n events: [],\n inputValue: [],\n handleSelect() {},\n handleSelectAll() {},\n};\n\nEventRow.propTypes = {\n disabledEvents: PropTypes.array,\n events: PropTypes.array,\n inputValue: PropTypes.array,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n name: PropTypes.string.isRequired,\n};\n\nexport default { Root, Headers, Body, EventRow };\n","import React from 'react';\n\nimport EventTable from '../Events';\n\n// This component is overwritten by the EE counterpart\nexport function EventTableCE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n </EventTable.Root>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { ComboboxOption, CreatableCombobox } from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\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];\n\nconst Combobox = ({ name, onChange, value, ...props }) => {\n const {\n values: { headers },\n } = useFormikContext();\n const [options, setOptions] = useState(HTTP_HEADERS);\n\n useEffect(() => {\n setOptions(\n HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n )\n );\n }, [headers, value]);\n\n const handleChange = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value) => {\n setOptions((prev) => [...prev, value]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...props}\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\nCombobox.defaultProps = {\n value: undefined,\n};\n\nCombobox.propTypes = {\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nexport default Combobox;\n","import React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport Combobox from './Combobox';\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext();\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 // eslint-disable-next-line\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={Combobox}\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={errors.headers?.[index]?.key && errors.headers[index].key}\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={errors.headers?.[index]?.value && errors.headers[index].value}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={errors.headers?.[index]?.value ? 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 <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\nexport default HeadersInput;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\n// Being discussed in Notion: create a <Icon /> component in Parts\nconst Icon = styled.svg(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n path {\n fill: ${theme.colors[color]};\n }\n`\n);\n\nconst Status = ({ isPending, statusCode }) => {\n const { formatMessage } = useIntl();\n\n if (isPending) {\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};\nStatus.propTypes = {\n isPending: PropTypes.bool.isRequired,\n statusCode: PropTypes.number,\n};\nStatus.defaultProps = {\n statusCode: undefined,\n};\n\nconst Message = ({ statusCode, message }) => {\n const { formatMessage } = useIntl();\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};\nMessage.propTypes = {\n statusCode: PropTypes.number,\n message: PropTypes.string,\n};\nMessage.defaultProps = {\n statusCode: undefined,\n message: undefined,\n};\n\nconst CancelButton = ({ onCancel }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({ id: 'Settings.webhooks.trigger.cancel', defaultMessage: 'cancel' })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n );\n};\n\nCancelButton.propTypes = { onCancel: PropTypes.func.isRequired };\n\nconst TriggerContainer = ({ isPending, onCancel, response }) => {\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 <CancelButton onCancel={onCancel} />\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nTriggerContainer.defaultProps = {\n isPending: false,\n onCancel() {},\n response: {},\n};\n\nTriggerContainer.propTypes = {\n isPending: PropTypes.bool,\n onCancel: PropTypes.func,\n response: PropTypes.object,\n};\n\nexport default TriggerContainer;\n","import * as yup from 'yup';\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nexport const makeWebhookValidationSchema = ({ 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 let 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","import React, { useState } 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 { Form, Link } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { useEnterprise } from '../../../../../../../hooks/useEnterprise';\nimport { EventTableCE } from '../EventTable';\nimport HeadersInput from '../HeadersInput';\nimport TriggerContainer from '../TriggerContainer';\n\nimport { makeWebhookValidationSchema } from './utils/makeWebhookValidationSchema';\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable'\n )\n ).EventTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n * @param {Object} headers\n * @returns {Array}\n */\n const mapHeaders = (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 onSubmit={formik.handleSubmit}>\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 <Link 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 && 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 && 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\nWebhookForm.propTypes = {\n data: PropTypes.object,\n handleSubmit: PropTypes.func.isRequired,\n triggerWebhook: PropTypes.func.isRequired,\n isCreating: PropTypes.bool.isRequired,\n isTriggering: PropTypes.bool.isRequired,\n triggerResponse: PropTypes.object,\n};\n\nWebhookForm.defaultProps = {\n data: undefined,\n triggerResponse: undefined,\n};\n\nexport default WebhookForm;\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\nimport WebhookForm from './components/WebhookForm';\n\nconst cleanData = (data) => ({\n ...data,\n headers: data.headers.reduce((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditView = () => {\n const {\n params: { id },\n } = useRouteMatch('/settings/webhooks/:id');\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const queryClient = useQueryClient();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n } = useQuery(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get(`/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 isIdle: isTriggerIdle,\n mutate,\n } = useMutation(() => post(`/admin/webhooks/${id}/trigger`));\n\n const triggerWebhook = () =>\n mutate(null, {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const createWebhookMutation = useMutation((body) => post('/admin/webhooks', body));\n\n const updateWebhookMutation = useMutation(({ id, body }) => put(`/admin/webhooks/${id}`, body));\n\n const handleSubmit = async (data) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data), {\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 return;\n }\n updateWebhookMutation.mutate(\n { id, body: cleanData(data) },\n {\n onSuccess() {\n queryClient.invalidateQueries(['webhooks', id]);\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 };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n {...{\n data: webhookData,\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n isTriggerIdle,\n triggerResponse: triggerResponse?.data.data,\n }}\n />\n </Main>\n );\n};\n\nexport default EditView;\n"],"names":["Table","Thead","Tr","Th","Tbody","name","Td","value","React","Loader","EventTable","Publish","id"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { CheckPagePermissions } from "@strapi/helper-plugin";
3
3
  import { useSelector } from "react-redux";
4
- import { s as selectAdminPermissions } from "./AuthenticatedApp-52d37e32.mjs";
5
- import { A as ApiTokenCreateView } from "./index-23925f10.mjs";
4
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-4cc69f67.mjs";
5
+ import { A as ApiTokenCreateView } from "./index-0dd93c2e.mjs";
6
6
  import "react";
7
7
  import "react-query";
8
8
  import "semver/functions/lt";
9
9
  import "semver/functions/valid";
10
- import "./index-ce41b6f0.mjs";
10
+ import "./index-0e6b3168.mjs";
11
11
  import "react-dom/client";
12
12
  import "@strapi/design-system";
13
13
  import "invariant";
@@ -52,4 +52,4 @@ const ProtectedApiTokenCreateView = () => {
52
52
  export {
53
53
  ProtectedApiTokenCreateView as default
54
54
  };
55
- //# sourceMappingURL=index-aceb13c1.mjs.map
55
+ //# sourceMappingURL=index-09f50ad7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-aceb13c1.mjs","sources":["../../admin/src/pages/SettingsPage/pages/ApiTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedApiTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['api-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedApiTokenCreateView;\n"],"names":["EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,8BAA8B,MAAM;AAClC,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,sBAAqB,EAAA,aAAa,YAAY,SAAS,YAAY,EAAE,MACpE,UAAC,oBAAAA,oBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
1
+ {"version":3,"file":"index-09f50ad7.mjs","sources":["../../admin/src/pages/SettingsPage/pages/ApiTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedApiTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['api-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedApiTokenCreateView;\n"],"names":["EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,8BAA8B,MAAM;AAClC,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,sBAAqB,EAAA,aAAa,YAAY,SAAS,YAAY,EAAE,MACpE,UAAC,oBAAAA,oBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
@@ -9,7 +9,7 @@ const reactQuery = require("react-query");
9
9
  const reactRedux = require("react-redux");
10
10
  const reactRouterDom = require("react-router-dom");
11
11
  const reactContext = require("@radix-ui/react-context");
12
- const AuthenticatedApp = require("./AuthenticatedApp-31e6418d.js");
12
+ const AuthenticatedApp = require("./AuthenticatedApp-052b1f3f.js");
13
13
  const formatAPIErrors = require("./formatAPIErrors-b599cf27.js");
14
14
  const constants = require("./constants-da2542a3.js");
15
15
  const index = require("./index-d3e1fd86.js");
@@ -870,4 +870,4 @@ const ApiTokenCreateView = () => {
870
870
  ] }) });
871
871
  };
872
872
  exports.ApiTokenCreateView = ApiTokenCreateView;
873
- //# sourceMappingURL=index-19b1984d.js.map
873
+ //# sourceMappingURL=index-0dcf223b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-19b1984d.js","sources":["../../admin/src/contexts/apiTokenPermissions.tsx","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/transformPermissionsData.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/LoadingView/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/getMethodColor.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/CheckBoxWrapper.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ContenTypesSection/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/init.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/reducer.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport { Entity } from '@strapi/types';\n\ninterface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n selectedAction: string[] | null;\n routes: string[];\n selectedActions: string[];\n data: {\n allActionsIds: Entity.ID[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { actionId: string; action: string } }[];\n }[];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({ target: { value } }: PseudoEvent) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","const transformPermissionsData = (data) => {\n const layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.keys(data).map((apiId) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(data[apiId].controllers)\n .map((controller) => ({\n controller,\n actions: data[apiId].controllers[controller]\n .map((action) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat(),\n }))\n .flat(),\n }));\n\n return layout;\n};\n\nexport default transformPermissionsData;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport LifeSpanInput from '../../../../../components/Tokens/LifeSpanInput';\nimport TokenDescription from '../../../../../components/Tokens/TokenDescription';\nimport TokenName from '../../../../../components/Tokens/TokenName';\nimport TokenTypeSelect from '../../../../../components/Tokens/TokenTypeSelect';\n\nconst FormApiTokenContainer = ({\n errors,\n onChange,\n canEditInputs,\n isCreating,\n values,\n apiToken,\n onDispatch,\n setHasChangedPermissions,\n}) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\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.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n errors={errors}\n values={values}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n values={values}\n errors={errors}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value } });\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nFormApiTokenContainer.propTypes = {\n errors: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.string,\n type: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n canEditInputs: PropTypes.bool.isRequired,\n values: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n }).isRequired,\n isCreating: PropTypes.bool.isRequired,\n apiToken: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n lifespan: PropTypes.string,\n name: PropTypes.string,\n accessKey: PropTypes.string,\n permissions: PropTypes.array,\n description: PropTypes.string,\n createdAt: PropTypes.string,\n }),\n onDispatch: PropTypes.func.isRequired,\n setHasChangedPermissions: PropTypes.func.isRequired,\n};\n\nFormApiTokenContainer.defaultProps = {\n errors: {},\n apiToken: {},\n};\n\nexport default FormApiTokenContainer;\n","import React from 'react';\n\nimport { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst LoadingView = ({ apiTokenName }) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\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={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nLoadingView.defaultProps = {\n apiTokenName: null,\n};\n\nLoadingView.propTypes = {\n apiTokenName: PropTypes.string,\n};\n\nexport default LoadingView;\n","const getMethodColor = (verb) => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nexport default getMethodColor;\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport getMethodColor from './getMethodColor';\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\nfunction BoundRoute({ route }) {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n}\n\nBoundRoute.defaultProps = {\n route: {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n};\n\nBoundRoute.propTypes = {\n route: PropTypes.shape({\n handler: PropTypes.string,\n method: PropTypes.string,\n path: PropTypes.string,\n }),\n};\n\nexport default BoundRoute;\n","import React from 'react';\n\nimport { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../../../../../../../contexts/apiTokenPermissions';\nimport BoundRoute from '../BoundRoute';\n\nconst ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {routes[actionSection]?.map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n\nexport default ActionBoundRoutes;\n","import { Box } from '@strapi/design-system';\nimport styled, { css } from 'styled-components';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nexport default CheckboxWrapper;\n","import React, { useEffect, useState } from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useApiTokenPermissions } from '../../../../../../../contexts/apiTokenPermissions';\n\nimport CheckboxWrapper from './CheckBoxWrapper';\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CollapsableContentType = ({\n controllers,\n label,\n orderNumber,\n disabled,\n onExpanded,\n indexExpandendCollapsedContent,\n}) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n\nCollapsableContentType.defaultProps = {\n controllers: [],\n orderNumber: 0,\n disabled: false,\n onExpanded: () => null,\n indexExpandendCollapsedContent: null,\n};\n\nCollapsableContentType.propTypes = {\n controllers: PropTypes.array,\n orderNumber: PropTypes.number,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n onExpanded: PropTypes.func,\n indexExpandendCollapsedContent: PropTypes.number,\n};\n\nexport default CollapsableContentType;\n","import React, { useState } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nimport CollapsableContentType from '../CollapsableContentType';\n\nconst ContentTypesSection = ({ section, ...props }) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = useState(null);\n const handleExpandedCollpsedContentIndex = (index) => setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n name={api.apiId}\n {...props}\n />\n ))}\n </Box>\n );\n};\n\nContentTypesSection.defaultProps = {\n section: null,\n};\n\nContentTypesSection.propTypes = {\n section: PropTypes.arrayOf(PropTypes.object),\n};\n\nexport default ContentTypesSection;\n","import React, { memo } from 'react';\n\nimport { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../../../../../../../contexts/apiTokenPermissions';\nimport ActionBoundRoutes from '../ActionBoundRoutes';\nimport ContentTypesSection from '../ContenTypesSection';\n\nconst Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n\nexport default memo(Permissions);\n","import { transformPermissionsData } from './utils';\n\nconst init = (state, permissions = []) => {\n return {\n ...state,\n selectedAction: null,\n routes: [],\n selectedActions: [],\n data: transformPermissionsData(permissions),\n };\n};\n\nexport default init;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { transformPermissionsData } from './utils';\n\nexport const initialState = {\n data: {},\n selectedActions: [],\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n Form,\n SettingsPageTitle,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { ApiTokenPermissionsProvider } from '../../../../../contexts/apiTokenPermissions';\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport FormHead from '../../../components/Tokens/FormHead';\nimport TokenBox from '../../../components/Tokens/TokenBox';\n\nimport FormApiTokenContainer from './components/FormApiTokenContainer';\nimport LoadingView from './components/LoadingView';\nimport Permissions from './components/Permissions';\nimport init from './init';\nimport reducer, { initialState } from './reducer';\nimport { schema } from './utils';\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\nconst ApiTokenCreateView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const permissions = useSelector(selectAdminPermissions);\n const [apiToken, setApiToken] = useState(\n history.location.state?.apiToken.accessKey\n ? {\n ...history.location.state.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const trackUsageRef = useRef(trackUsage);\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings['api-tokens']);\n const [state, dispatch] = useReducer(reducer, initialState, (state) => init(state, {}));\n const {\n params: { id },\n } = useRouteMatch('/settings/api-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const isCreating = id === 'create';\n\n useQuery(\n 'content-api-permissions',\n async () => {\n const [permissions, routes] = await Promise.all(\n ['/admin/content-api/permissions', '/admin/content-api/routes'].map(async (url) => {\n const { data } = await get(url);\n\n return data.data;\n })\n );\n\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: permissions,\n });\n\n dispatch({\n type: 'UPDATE_ROUTES',\n value: routes,\n });\n\n if (apiToken) {\n if (apiToken?.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken?.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken?.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n },\n {\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n },\n }\n );\n\n useEffect(() => {\n trackUsageRef.current(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating]);\n\n const { status } = useQuery(\n ['api-token', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/api-tokens/${id}`);\n\n setApiToken({\n ...data,\n });\n\n if (data?.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data?.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data?.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n\n return data;\n },\n {\n enabled: !isCreating && !apiToken,\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n trackUsageRef.current(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n lockApp();\n const lifespanVal =\n body.lifespan && parseInt(body.lifespan, 10) && body.lifespan !== '0'\n ? parseInt(body.lifespan, 10)\n : null;\n\n try {\n const {\n data: { data: response },\n } = isCreating\n ? await post(`/admin/api-tokens`, {\n ...body,\n lifespan: lifespanVal,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n })\n : await put(`/admin/api-tokens/${id}`, {\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if (isCreating) {\n history.replace(`/settings/api-tokens/${response.id}`, { apiToken: response });\n setCurrentStep('apiTokens.success');\n }\n unlockApp();\n setApiToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: apiToken.type,\n tokenType: API_TOKEN_TYPE,\n });\n } catch (err) {\n const errors = formatAPIErrors(err.response.data);\n actions.setErrors(errors);\n\n if (err?.response?.data?.error?.message === MSG_ERROR_NAME_TAKEN) {\n toggleNotification({\n type: 'warning',\n message: err.response.data.message || 'notification.error.tokennamenotunique',\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = useState(false);\n\n const handleChangeCheckbox = ({ target: { value } }) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({ target: { value } }) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({ target: { value } }) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !apiToken && status !== 'success';\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan ? apiToken.lifespan.toString() : apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport default ApiTokenCreateView;\n"],"names":["createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","PropTypes","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","styled","tail","css","useState","useEffect","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","index","memo","produce","pull","useOverlayBlocker","useNotification","useHistory","useSelector","selectAdminPermissions","useTracking","useRef","useGuidedTour","useRBAC","useReducer","state","useRouteMatch","useFetchClient","useQuery","permissions","API_TOKEN_TYPE","formatAPIErrors","Formik","schema","Form","FormHead","TokenBox","Permissions"],"mappings":"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"}
1
+ {"version":3,"file":"index-0dcf223b.js","sources":["../../admin/src/contexts/apiTokenPermissions.tsx","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/transformPermissionsData.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/LoadingView/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/getMethodColor.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/CheckBoxWrapper.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ContenTypesSection/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/init.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/reducer.js","../../admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport { Entity } from '@strapi/types';\n\ninterface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n selectedAction: string[] | null;\n routes: string[];\n selectedActions: string[];\n data: {\n allActionsIds: Entity.ID[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { actionId: string; action: string } }[];\n }[];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({ target: { value } }: PseudoEvent) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","const transformPermissionsData = (data) => {\n const layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.keys(data).map((apiId) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(data[apiId].controllers)\n .map((controller) => ({\n controller,\n actions: data[apiId].controllers[controller]\n .map((action) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat(),\n }))\n .flat(),\n }));\n\n return layout;\n};\n\nexport default transformPermissionsData;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport LifeSpanInput from '../../../../../components/Tokens/LifeSpanInput';\nimport TokenDescription from '../../../../../components/Tokens/TokenDescription';\nimport TokenName from '../../../../../components/Tokens/TokenName';\nimport TokenTypeSelect from '../../../../../components/Tokens/TokenTypeSelect';\n\nconst FormApiTokenContainer = ({\n errors,\n onChange,\n canEditInputs,\n isCreating,\n values,\n apiToken,\n onDispatch,\n setHasChangedPermissions,\n}) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\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.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n errors={errors}\n values={values}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n errors={errors}\n values={values}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n values={values}\n errors={errors}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value } });\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\nFormApiTokenContainer.propTypes = {\n errors: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.string,\n type: PropTypes.string,\n }),\n onChange: PropTypes.func.isRequired,\n canEditInputs: PropTypes.bool.isRequired,\n values: PropTypes.shape({\n name: PropTypes.string,\n description: PropTypes.string,\n lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n }).isRequired,\n isCreating: PropTypes.bool.isRequired,\n apiToken: PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n type: PropTypes.string,\n lifespan: PropTypes.string,\n name: PropTypes.string,\n accessKey: PropTypes.string,\n permissions: PropTypes.array,\n description: PropTypes.string,\n createdAt: PropTypes.string,\n }),\n onDispatch: PropTypes.func.isRequired,\n setHasChangedPermissions: PropTypes.func.isRequired,\n};\n\nFormApiTokenContainer.defaultProps = {\n errors: {},\n apiToken: {},\n};\n\nexport default FormApiTokenContainer;\n","import React from 'react';\n\nimport { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst LoadingView = ({ apiTokenName }) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\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={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nLoadingView.defaultProps = {\n apiTokenName: null,\n};\n\nLoadingView.propTypes = {\n apiTokenName: PropTypes.string,\n};\n\nexport default LoadingView;\n","const getMethodColor = (verb) => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nexport default getMethodColor;\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport getMethodColor from './getMethodColor';\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\nfunction BoundRoute({ route }) {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n}\n\nBoundRoute.defaultProps = {\n route: {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n};\n\nBoundRoute.propTypes = {\n route: PropTypes.shape({\n handler: PropTypes.string,\n method: PropTypes.string,\n path: PropTypes.string,\n }),\n};\n\nexport default BoundRoute;\n","import React from 'react';\n\nimport { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../../../../../../../contexts/apiTokenPermissions';\nimport BoundRoute from '../BoundRoute';\n\nconst ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {routes[actionSection]?.map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n\nexport default ActionBoundRoutes;\n","import { Box } from '@strapi/design-system';\nimport styled, { css } from 'styled-components';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nexport default CheckboxWrapper;\n","import React, { useEffect, useState } from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useApiTokenPermissions } from '../../../../../../../contexts/apiTokenPermissions';\n\nimport CheckboxWrapper from './CheckBoxWrapper';\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CollapsableContentType = ({\n controllers,\n label,\n orderNumber,\n disabled,\n onExpanded,\n indexExpandendCollapsedContent,\n}) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n\nCollapsableContentType.defaultProps = {\n controllers: [],\n orderNumber: 0,\n disabled: false,\n onExpanded: () => null,\n indexExpandendCollapsedContent: null,\n};\n\nCollapsableContentType.propTypes = {\n controllers: PropTypes.array,\n orderNumber: PropTypes.number,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n onExpanded: PropTypes.func,\n indexExpandendCollapsedContent: PropTypes.number,\n};\n\nexport default CollapsableContentType;\n","import React, { useState } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nimport CollapsableContentType from '../CollapsableContentType';\n\nconst ContentTypesSection = ({ section, ...props }) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = useState(null);\n const handleExpandedCollpsedContentIndex = (index) => setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n name={api.apiId}\n {...props}\n />\n ))}\n </Box>\n );\n};\n\nContentTypesSection.defaultProps = {\n section: null,\n};\n\nContentTypesSection.propTypes = {\n section: PropTypes.arrayOf(PropTypes.object),\n};\n\nexport default ContentTypesSection;\n","import React, { memo } from 'react';\n\nimport { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../../../../../../../contexts/apiTokenPermissions';\nimport ActionBoundRoutes from '../ActionBoundRoutes';\nimport ContentTypesSection from '../ContenTypesSection';\n\nconst Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n\nexport default memo(Permissions);\n","import { transformPermissionsData } from './utils';\n\nconst init = (state, permissions = []) => {\n return {\n ...state,\n selectedAction: null,\n routes: [],\n selectedActions: [],\n data: transformPermissionsData(permissions),\n };\n};\n\nexport default init;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { transformPermissionsData } from './utils';\n\nexport const initialState = {\n data: {},\n selectedActions: [],\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n Form,\n SettingsPageTitle,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { ApiTokenPermissionsProvider } from '../../../../../contexts/apiTokenPermissions';\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport FormHead from '../../../components/Tokens/FormHead';\nimport TokenBox from '../../../components/Tokens/TokenBox';\n\nimport FormApiTokenContainer from './components/FormApiTokenContainer';\nimport LoadingView from './components/LoadingView';\nimport Permissions from './components/Permissions';\nimport init from './init';\nimport reducer, { initialState } from './reducer';\nimport { schema } from './utils';\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\nconst ApiTokenCreateView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const permissions = useSelector(selectAdminPermissions);\n const [apiToken, setApiToken] = useState(\n history.location.state?.apiToken.accessKey\n ? {\n ...history.location.state.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const trackUsageRef = useRef(trackUsage);\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings['api-tokens']);\n const [state, dispatch] = useReducer(reducer, initialState, (state) => init(state, {}));\n const {\n params: { id },\n } = useRouteMatch('/settings/api-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const isCreating = id === 'create';\n\n useQuery(\n 'content-api-permissions',\n async () => {\n const [permissions, routes] = await Promise.all(\n ['/admin/content-api/permissions', '/admin/content-api/routes'].map(async (url) => {\n const { data } = await get(url);\n\n return data.data;\n })\n );\n\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: permissions,\n });\n\n dispatch({\n type: 'UPDATE_ROUTES',\n value: routes,\n });\n\n if (apiToken) {\n if (apiToken?.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken?.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken?.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n },\n {\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n },\n }\n );\n\n useEffect(() => {\n trackUsageRef.current(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating]);\n\n const { status } = useQuery(\n ['api-token', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/api-tokens/${id}`);\n\n setApiToken({\n ...data,\n });\n\n if (data?.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data?.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data?.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n\n return data;\n },\n {\n enabled: !isCreating && !apiToken,\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n trackUsageRef.current(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n lockApp();\n const lifespanVal =\n body.lifespan && parseInt(body.lifespan, 10) && body.lifespan !== '0'\n ? parseInt(body.lifespan, 10)\n : null;\n\n try {\n const {\n data: { data: response },\n } = isCreating\n ? await post(`/admin/api-tokens`, {\n ...body,\n lifespan: lifespanVal,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n })\n : await put(`/admin/api-tokens/${id}`, {\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if (isCreating) {\n history.replace(`/settings/api-tokens/${response.id}`, { apiToken: response });\n setCurrentStep('apiTokens.success');\n }\n unlockApp();\n setApiToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsageRef.current(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: apiToken.type,\n tokenType: API_TOKEN_TYPE,\n });\n } catch (err) {\n const errors = formatAPIErrors(err.response.data);\n actions.setErrors(errors);\n\n if (err?.response?.data?.error?.message === MSG_ERROR_NAME_TAKEN) {\n toggleNotification({\n type: 'warning',\n message: err.response.data.message || 'notification.error.tokennamenotunique',\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = useState(false);\n\n const handleChangeCheckbox = ({ target: { value } }) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({ target: { value } }) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({ target: { value } }) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !apiToken && status !== 'success';\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan ? apiToken.lifespan.toString() : apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport default ApiTokenCreateView;\n"],"names":["createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","PropTypes","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","styled","tail","css","useState","useEffect","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","index","memo","produce","pull","useOverlayBlocker","useNotification","useHistory","useSelector","selectAdminPermissions","useTracking","useRef","useGuidedTour","useRBAC","useReducer","state","useRouteMatch","useFetchClient","useQuery","permissions","API_TOKEN_TYPE","formatAPIErrors","Formik","schema","Form","FormHead","TokenBox","Permissions"],"mappings":"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"}