@strapi/admin 4.17.0 → 4.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/_chunks/{AdminSeatInfo-a10d232f.js → AdminSeatInfo-390d8989.js} +3 -3
  2. package/dist/_chunks/{AdminSeatInfo-a10d232f.js.map → AdminSeatInfo-390d8989.js.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-6e7bbb97.mjs → AdminSeatInfo-bb59ad1f.mjs} +3 -3
  4. package/dist/_chunks/{AdminSeatInfo-6e7bbb97.mjs.map → AdminSeatInfo-bb59ad1f.mjs.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-47219c52.js → AuthenticatedApp-b186733c.js} +21 -21
  6. package/dist/_chunks/{AuthenticatedApp-47219c52.js.map → AuthenticatedApp-b186733c.js.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-7d1fdf0c.mjs → AuthenticatedApp-b723bf94.mjs} +21 -21
  8. package/dist/_chunks/{AuthenticatedApp-7d1fdf0c.mjs.map → AuthenticatedApp-b723bf94.mjs.map} +1 -1
  9. package/dist/_chunks/{CreatePage-d2a061b5.js → CreatePage-16d53bda.js} +4 -4
  10. package/dist/_chunks/{CreatePage-d2a061b5.js.map → CreatePage-16d53bda.js.map} +1 -1
  11. package/dist/_chunks/{CreatePage-32977ee7.mjs → CreatePage-34ad9bdd.mjs} +4 -4
  12. package/dist/_chunks/{CreatePage-32977ee7.mjs.map → CreatePage-34ad9bdd.mjs.map} +1 -1
  13. package/dist/_chunks/{CreatePage-eeb81776.js → CreatePage-92f708fa.js} +4 -4
  14. package/dist/_chunks/{CreatePage-eeb81776.js.map → CreatePage-92f708fa.js.map} +1 -1
  15. package/dist/_chunks/{CreatePage-17c8a6e4.mjs → CreatePage-e5d16f0e.mjs} +4 -4
  16. package/dist/_chunks/{CreatePage-17c8a6e4.mjs.map → CreatePage-e5d16f0e.mjs.map} +1 -1
  17. package/dist/_chunks/{CreatePage-4ba4bd0d.mjs → CreatePage-f321dfbc.mjs} +4 -4
  18. package/dist/_chunks/{CreatePage-4ba4bd0d.mjs.map → CreatePage-f321dfbc.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-3c0b9dd5.js → CreatePage-f63362cf.js} +4 -4
  20. package/dist/_chunks/{CreatePage-3c0b9dd5.js.map → CreatePage-f63362cf.js.map} +1 -1
  21. package/dist/_chunks/{CreateView-5a0b0eca.js → CreateView-0da060c0.js} +4 -4
  22. package/dist/_chunks/{CreateView-5a0b0eca.js.map → CreateView-0da060c0.js.map} +1 -1
  23. package/dist/_chunks/{CreateView-fc328787.js → CreateView-69c834ba.js} +4 -4
  24. package/dist/_chunks/{CreateView-fc328787.js.map → CreateView-69c834ba.js.map} +1 -1
  25. package/dist/_chunks/{CreateView-8b6412c9.mjs → CreateView-a5345794.mjs} +4 -4
  26. package/dist/_chunks/{CreateView-8b6412c9.mjs.map → CreateView-a5345794.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-2bc998f1.mjs → CreateView-df9f9bf0.mjs} +4 -4
  28. package/dist/_chunks/{CreateView-2bc998f1.mjs.map → CreateView-df9f9bf0.mjs.map} +1 -1
  29. package/dist/_chunks/{EditPage-0b1a48f7.js → EditPage-39a7cd2d.js} +5 -5
  30. package/dist/_chunks/{EditPage-0b1a48f7.js.map → EditPage-39a7cd2d.js.map} +1 -1
  31. package/dist/_chunks/{EditPage-89052393.js → EditPage-48cdd744.js} +4 -4
  32. package/dist/_chunks/{EditPage-89052393.js.map → EditPage-48cdd744.js.map} +1 -1
  33. package/dist/_chunks/{EditPage-efc987d7.js → EditPage-493ac83a.js} +5 -5
  34. package/dist/_chunks/{EditPage-efc987d7.js.map → EditPage-493ac83a.js.map} +1 -1
  35. package/dist/_chunks/{EditPage-6d3fe437.mjs → EditPage-a5a18e61.mjs} +4 -4
  36. package/dist/_chunks/{EditPage-6d3fe437.mjs.map → EditPage-a5a18e61.mjs.map} +1 -1
  37. package/dist/_chunks/{EditPage-2b051ea8.mjs → EditPage-a6578110.mjs} +5 -5
  38. package/dist/_chunks/{EditPage-2b051ea8.mjs.map → EditPage-a6578110.mjs.map} +1 -1
  39. package/dist/_chunks/{EditPage-7b9355e4.mjs → EditPage-e710a231.mjs} +4 -4
  40. package/dist/_chunks/{EditPage-7b9355e4.mjs.map → EditPage-e710a231.mjs.map} +1 -1
  41. package/dist/_chunks/{EditPage-faee9ac1.mjs → EditPage-f5caa375.mjs} +5 -5
  42. package/dist/_chunks/{EditPage-faee9ac1.mjs.map → EditPage-f5caa375.mjs.map} +1 -1
  43. package/dist/_chunks/{EditPage-de127112.js → EditPage-f75f04b9.js} +4 -4
  44. package/dist/_chunks/{EditPage-de127112.js.map → EditPage-f75f04b9.js.map} +1 -1
  45. package/dist/_chunks/{EditView-e480d09f.js → EditView-0c216c35.js} +3 -3
  46. package/dist/_chunks/{EditView-e480d09f.js.map → EditView-0c216c35.js.map} +1 -1
  47. package/dist/_chunks/{EditView-0e4d7c80.mjs → EditView-d3ccb532.mjs} +3 -3
  48. package/dist/_chunks/{EditView-0e4d7c80.mjs.map → EditView-d3ccb532.mjs.map} +1 -1
  49. package/dist/_chunks/{EditViewPage-ef0292a9.js → EditViewPage-57b6e71a.js} +3 -3
  50. package/dist/_chunks/{EditViewPage-ef0292a9.js.map → EditViewPage-57b6e71a.js.map} +1 -1
  51. package/dist/_chunks/{EditViewPage-3e638ea4.mjs → EditViewPage-77e95780.mjs} +3 -3
  52. package/dist/_chunks/{EditViewPage-3e638ea4.mjs.map → EditViewPage-77e95780.mjs.map} +1 -1
  53. package/dist/_chunks/{EventsTable-c8ea750e.js → EventsTable-8e2b0bd9.js} +4 -4
  54. package/dist/_chunks/{EventsTable-c8ea750e.js.map → EventsTable-8e2b0bd9.js.map} +1 -1
  55. package/dist/_chunks/{EventsTable-21c9c326.mjs → EventsTable-d472e89d.mjs} +4 -4
  56. package/dist/_chunks/{EventsTable-21c9c326.mjs.map → EventsTable-d472e89d.mjs.map} +1 -1
  57. package/dist/_chunks/{HomePage-28c2fc09.mjs → HomePage-22d90f51.mjs} +4 -4
  58. package/dist/_chunks/{HomePage-28c2fc09.mjs.map → HomePage-22d90f51.mjs.map} +1 -1
  59. package/dist/_chunks/{HomePage-ef17de6c.js → HomePage-7bd6070c.js} +4 -4
  60. package/dist/_chunks/{HomePage-ef17de6c.js.map → HomePage-7bd6070c.js.map} +1 -1
  61. package/dist/_chunks/{HomePage-d9e5bcf6.js → HomePage-bb29ced3.js} +4 -4
  62. package/dist/_chunks/{HomePage-d9e5bcf6.js.map → HomePage-bb29ced3.js.map} +1 -1
  63. package/dist/_chunks/{HomePage-bfeba10a.mjs → HomePage-e94a37b9.mjs} +4 -4
  64. package/dist/_chunks/{HomePage-bfeba10a.mjs.map → HomePage-e94a37b9.mjs.map} +1 -1
  65. package/dist/_chunks/{InformationBoxEE-bd1d2894.mjs → InformationBoxEE-302228b9.mjs} +2 -2
  66. package/dist/_chunks/{InformationBoxEE-bd1d2894.mjs.map → InformationBoxEE-302228b9.mjs.map} +1 -1
  67. package/dist/_chunks/{InformationBoxEE-2d2b6c4a.js → InformationBoxEE-7d383cec.js} +2 -2
  68. package/dist/_chunks/{InformationBoxEE-2d2b6c4a.js.map → InformationBoxEE-7d383cec.js.map} +1 -1
  69. package/dist/_chunks/{InstalledPluginsPage-39a094a5.js → InstalledPluginsPage-73eabc0b.js} +3 -3
  70. package/dist/_chunks/{InstalledPluginsPage-39a094a5.js.map → InstalledPluginsPage-73eabc0b.js.map} +1 -1
  71. package/dist/_chunks/{InstalledPluginsPage-8e9b0b64.mjs → InstalledPluginsPage-ff15831e.mjs} +3 -3
  72. package/dist/_chunks/{InstalledPluginsPage-8e9b0b64.mjs.map → InstalledPluginsPage-ff15831e.mjs.map} +1 -1
  73. package/dist/_chunks/{Layout-caf718bb.mjs → Layout-1dd77bbb.mjs} +2 -2
  74. package/dist/_chunks/{Layout-caf718bb.mjs.map → Layout-1dd77bbb.mjs.map} +1 -1
  75. package/dist/_chunks/{Layout-cc5413b2.js → Layout-ef2fc31f.js} +2 -2
  76. package/dist/_chunks/{Layout-cc5413b2.js.map → Layout-ef2fc31f.js.map} +1 -1
  77. package/dist/_chunks/{ListPage-cc823a6a.js → ListPage-10bf0ce5.js} +3 -3
  78. package/dist/_chunks/{ListPage-cc823a6a.js.map → ListPage-10bf0ce5.js.map} +1 -1
  79. package/dist/_chunks/{ListPage-5ed3e9d2.mjs → ListPage-1de5fb9e.mjs} +5 -5
  80. package/dist/_chunks/{ListPage-5ed3e9d2.mjs.map → ListPage-1de5fb9e.mjs.map} +1 -1
  81. package/dist/_chunks/{ListPage-db17e758.js → ListPage-354a539f.js} +5 -5
  82. package/dist/_chunks/{ListPage-db17e758.js.map → ListPage-354a539f.js.map} +1 -1
  83. package/dist/_chunks/{ListPage-800398cd.mjs → ListPage-57f5028e.mjs} +6 -6
  84. package/dist/_chunks/{ListPage-800398cd.mjs.map → ListPage-57f5028e.mjs.map} +1 -1
  85. package/dist/_chunks/{ListPage-338d8ca5.js → ListPage-7304822d.js} +6 -6
  86. package/dist/_chunks/{ListPage-338d8ca5.js.map → ListPage-7304822d.js.map} +1 -1
  87. package/dist/_chunks/{ListPage-f43782c4.mjs → ListPage-887f0f02.mjs} +3 -3
  88. package/dist/_chunks/{ListPage-f43782c4.mjs.map → ListPage-887f0f02.mjs.map} +1 -1
  89. package/dist/_chunks/{ListPage-05df9b86.mjs → ListPage-96026788.mjs} +3 -3
  90. package/dist/_chunks/{ListPage-05df9b86.mjs.map → ListPage-96026788.mjs.map} +1 -1
  91. package/dist/_chunks/{ListPage-17fb477a.js → ListPage-ac287db9.js} +3 -3
  92. package/dist/_chunks/{ListPage-17fb477a.js.map → ListPage-ac287db9.js.map} +1 -1
  93. package/dist/_chunks/{ListPage-5e5ad2aa.js → ListPage-ba1aec01.js} +3 -3
  94. package/dist/_chunks/{ListPage-5e5ad2aa.js.map → ListPage-ba1aec01.js.map} +1 -1
  95. package/dist/_chunks/{ListPage-7d5baee5.mjs → ListPage-c878fda8.mjs} +4 -4
  96. package/dist/_chunks/{ListPage-7d5baee5.mjs.map → ListPage-c878fda8.mjs.map} +1 -1
  97. package/dist/_chunks/{ListPage-de4b7131.mjs → ListPage-f256fcb7.mjs} +3 -3
  98. package/dist/_chunks/{ListPage-de4b7131.mjs.map → ListPage-f256fcb7.mjs.map} +1 -1
  99. package/dist/_chunks/{ListPage-56d94335.js → ListPage-f582ff65.js} +4 -4
  100. package/dist/_chunks/{ListPage-56d94335.js.map → ListPage-f582ff65.js.map} +1 -1
  101. package/dist/_chunks/{ListView-b91a8da7.mjs → ListView-1b370206.mjs} +3 -3
  102. package/dist/_chunks/{ListView-b91a8da7.mjs.map → ListView-1b370206.mjs.map} +1 -1
  103. package/dist/_chunks/{ListView-80855396.js → ListView-1fb891a4.js} +3 -3
  104. package/dist/_chunks/{ListView-80855396.js.map → ListView-1fb891a4.js.map} +1 -1
  105. package/dist/_chunks/{ListView-a33ebe77.js → ListView-96fe1016.js} +3 -3
  106. package/dist/_chunks/{ListView-a33ebe77.js.map → ListView-96fe1016.js.map} +1 -1
  107. package/dist/_chunks/{ListView-521e309f.mjs → ListView-bf4ccdba.mjs} +3 -3
  108. package/dist/_chunks/{ListView-521e309f.mjs.map → ListView-bf4ccdba.mjs.map} +1 -1
  109. package/dist/_chunks/{Login-906ebde5.js → Login-09040dec.js} +2 -2
  110. package/dist/_chunks/{Login-906ebde5.js.map → Login-09040dec.js.map} +1 -1
  111. package/dist/_chunks/{Login-4eb1fb78.mjs → Login-6670c9b9.mjs} +2 -2
  112. package/dist/_chunks/{Login-4eb1fb78.mjs.map → Login-6670c9b9.mjs.map} +1 -1
  113. package/dist/_chunks/{MagicLinkEE-03128309.mjs → MagicLinkEE-6d9ed1b1.mjs} +3 -3
  114. package/dist/_chunks/{MagicLinkEE-03128309.mjs.map → MagicLinkEE-6d9ed1b1.mjs.map} +1 -1
  115. package/dist/_chunks/{MagicLinkEE-ab36ee0f.js → MagicLinkEE-79ab8b22.js} +3 -3
  116. package/dist/_chunks/{MagicLinkEE-ab36ee0f.js.map → MagicLinkEE-79ab8b22.js.map} +1 -1
  117. package/dist/_chunks/{MarketplacePage-62e70483.mjs → MarketplacePage-54a925f9.mjs} +3 -3
  118. package/dist/_chunks/{MarketplacePage-62e70483.mjs.map → MarketplacePage-54a925f9.mjs.map} +1 -1
  119. package/dist/_chunks/{MarketplacePage-fe1f2c6e.js → MarketplacePage-ec91b073.js} +3 -3
  120. package/dist/_chunks/{MarketplacePage-fe1f2c6e.js.map → MarketplacePage-ec91b073.js.map} +1 -1
  121. package/dist/_chunks/{ProfilePage-5359ee40.mjs → ProfilePage-091a4db8.mjs} +3 -3
  122. package/dist/_chunks/{ProfilePage-5359ee40.mjs.map → ProfilePage-091a4db8.mjs.map} +1 -1
  123. package/dist/_chunks/{ProfilePage-5bf5e2ed.js → ProfilePage-a28fc7c8.js} +3 -3
  124. package/dist/_chunks/{ProfilePage-5bf5e2ed.js.map → ProfilePage-a28fc7c8.js.map} +1 -1
  125. package/dist/_chunks/{ReviewWorkflowsColumn-65518684.mjs → ReviewWorkflowsColumn-5a3ca279.mjs} +2 -2
  126. package/dist/_chunks/{ReviewWorkflowsColumn-65518684.mjs.map → ReviewWorkflowsColumn-5a3ca279.mjs.map} +1 -1
  127. package/dist/_chunks/{ReviewWorkflowsColumn-b36965fe.js → ReviewWorkflowsColumn-b2d53622.js} +2 -2
  128. package/dist/_chunks/{ReviewWorkflowsColumn-b36965fe.js.map → ReviewWorkflowsColumn-b2d53622.js.map} +1 -1
  129. package/dist/_chunks/{SelectRoles-e83f2dee.js → SelectRoles-b55e6376.js} +2 -2
  130. package/dist/_chunks/{SelectRoles-e83f2dee.js.map → SelectRoles-b55e6376.js.map} +1 -1
  131. package/dist/_chunks/{SelectRoles-3d810b00.mjs → SelectRoles-f0565968.mjs} +2 -2
  132. package/dist/_chunks/{SelectRoles-3d810b00.mjs.map → SelectRoles-f0565968.mjs.map} +1 -1
  133. package/dist/_chunks/{SettingsPage-571f777c.mjs → SettingsPage-7567e138.mjs} +20 -20
  134. package/dist/_chunks/{SettingsPage-571f777c.mjs.map → SettingsPage-7567e138.mjs.map} +1 -1
  135. package/dist/_chunks/{SettingsPage-a558ffda.js → SettingsPage-b5d5dd0b.js} +20 -20
  136. package/dist/_chunks/{SettingsPage-a558ffda.js.map → SettingsPage-b5d5dd0b.js.map} +1 -1
  137. package/dist/_chunks/{SingleSignOnPage-19f2e16f.mjs → SingleSignOnPage-4d1d2448.mjs} +3 -3
  138. package/dist/_chunks/{SingleSignOnPage-19f2e16f.mjs.map → SingleSignOnPage-4d1d2448.mjs.map} +1 -1
  139. package/dist/_chunks/{SingleSignOnPage-b63f4c0f.js → SingleSignOnPage-51dfde4b.js} +3 -3
  140. package/dist/_chunks/{SingleSignOnPage-b63f4c0f.js.map → SingleSignOnPage-51dfde4b.js.map} +1 -1
  141. package/dist/_chunks/{constants-b3c9cbbf.mjs → constants-2ccf2787.mjs} +2 -2
  142. package/dist/_chunks/{constants-b3c9cbbf.mjs.map → constants-2ccf2787.mjs.map} +1 -1
  143. package/dist/_chunks/{constants-5345058d.js → constants-54043280.js} +2 -2
  144. package/dist/_chunks/{constants-5345058d.js.map → constants-54043280.js.map} +1 -1
  145. package/dist/_chunks/{constants-73ebce66.js → constants-74ce2d53.js} +2 -2
  146. package/dist/_chunks/{constants-73ebce66.js.map → constants-74ce2d53.js.map} +1 -1
  147. package/dist/_chunks/{constants-71ebbb75.mjs → constants-81c376c5.mjs} +2 -2
  148. package/dist/_chunks/{constants-71ebbb75.mjs.map → constants-81c376c5.mjs.map} +1 -1
  149. package/dist/_chunks/{constants-d80f19f3.js → constants-a5b1e9d4.js} +6 -6
  150. package/dist/_chunks/{constants-d80f19f3.js.map → constants-a5b1e9d4.js.map} +1 -1
  151. package/dist/_chunks/{constants-7e57b453.mjs → constants-b156a1b6.mjs} +6 -6
  152. package/dist/_chunks/{constants-7e57b453.mjs.map → constants-b156a1b6.mjs.map} +1 -1
  153. package/dist/_chunks/{index-3f8cf4d5.js → index-3956d072.js} +36 -33
  154. package/dist/_chunks/index-3956d072.js.map +1 -0
  155. package/dist/_chunks/{index-95e8649d.mjs → index-3bbbb14c.mjs} +36 -33
  156. package/dist/_chunks/index-3bbbb14c.mjs.map +1 -0
  157. package/dist/_chunks/{useAdminRolePermissions-fccd0884.mjs → useAdminRolePermissions-9f9361e7.mjs} +2 -2
  158. package/dist/_chunks/{useAdminRolePermissions-fccd0884.mjs.map → useAdminRolePermissions-9f9361e7.mjs.map} +1 -1
  159. package/dist/_chunks/{useAdminRolePermissions-122fa43a.js → useAdminRolePermissions-c97323e2.js} +2 -2
  160. package/dist/_chunks/{useAdminRolePermissions-122fa43a.js.map → useAdminRolePermissions-c97323e2.js.map} +1 -1
  161. package/dist/_chunks/{validateWorkflow-8a63abd6.mjs → validateWorkflow-5208ca73.mjs} +2 -2
  162. package/dist/_chunks/{validateWorkflow-8a63abd6.mjs.map → validateWorkflow-5208ca73.mjs.map} +1 -1
  163. package/dist/_chunks/{validateWorkflow-1f89db67.js → validateWorkflow-f6947b4c.js} +2 -2
  164. package/dist/_chunks/{validateWorkflow-1f89db67.js.map → validateWorkflow-f6947b4c.js.map} +1 -1
  165. package/dist/admin/index.js +1 -1
  166. package/dist/admin/index.mjs +1 -1
  167. package/package.json +13 -13
  168. package/dist/_chunks/index-3f8cf4d5.js.map +0 -1
  169. package/dist/_chunks/index-95e8649d.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EditView-e480d09f.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { formatAPIErrors } from '../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TokenCreate,\n TokenGetById,\n TransferToken,\n TokenUpdate,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n // @ts-expect-error this is fine\n } = useRBAC(permissions.settings['transfer-tokens']);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get<TokenGetById.Response>(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n },\n }\n );\n\n const handleSubmit = async (body: FormValues, actions: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n let response: TransferToken | SanitizedTransferToken;\n\n if (isCreating) {\n const { data } = await post<\n TokenCreate.Response,\n AxiosResponse<TokenCreate.Response>,\n TokenCreate.Request['body']\n >(`/admin/transfer/tokens`, {\n ...body,\n permissions,\n });\n\n response = data.data;\n } else {\n const { data } = await put<\n TokenUpdate.Response,\n AxiosResponse<TokenUpdate.Response>,\n TokenUpdate.Request['body']\n >(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n response = data.data;\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\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 if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n }\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n const handleErrorRegenerate = (err: unknown) => {\n if (err instanceof AxiosError) {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan ?? null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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 error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useOverlayBlocker","useNotification","useHistory","useLocation","React","useTracking","useGuidedTour","useSelector","selectAdminPermissions","useRBAC","useRouteMatch","useFetchClient","useAPIErrorHandler","TRANSFER_TOKEN_TYPE","useQuery","AxiosError","permissions","formatAPIErrors","Main","jsx","SettingsPageTitle","Formik","Form","FormHead","ContentLayout","jsxs","Flex","TokenBox","CheckPagePermissions","Box","Typography","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","HeaderLayout","Button","Check","LoadingIndicatorPage"],"mappings":"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"}
1
+ {"version":3,"file":"EditView-0c216c35.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { formatAPIErrors } from '../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TokenCreate,\n TokenGetById,\n TransferToken,\n TokenUpdate,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n // @ts-expect-error this is fine\n } = useRBAC(permissions.settings['transfer-tokens']);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get<TokenGetById.Response>(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n },\n }\n );\n\n const handleSubmit = async (body: FormValues, actions: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n let response: TransferToken | SanitizedTransferToken;\n\n if (isCreating) {\n const { data } = await post<\n TokenCreate.Response,\n AxiosResponse<TokenCreate.Response>,\n TokenCreate.Request['body']\n >(`/admin/transfer/tokens`, {\n ...body,\n permissions,\n });\n\n response = data.data;\n } else {\n const { data } = await put<\n TokenUpdate.Response,\n AxiosResponse<TokenUpdate.Response>,\n TokenUpdate.Request['body']\n >(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n response = data.data;\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\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 if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n }\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n const handleErrorRegenerate = (err: unknown) => {\n if (err instanceof AxiosError) {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan ?? null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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 error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useOverlayBlocker","useNotification","useHistory","useLocation","React","useTracking","useGuidedTour","useSelector","selectAdminPermissions","useRBAC","useRouteMatch","useFetchClient","useAPIErrorHandler","TRANSFER_TOKEN_TYPE","useQuery","AxiosError","permissions","formatAPIErrors","Main","jsx","SettingsPageTitle","Formik","Form","FormHead","ContentLayout","jsxs","Flex","TokenBox","CheckPagePermissions","Box","Typography","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","HeaderLayout","Button","Check","LoadingIndicatorPage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,MAAM,SAASA,eAAI,OAAO,EAAE,MAAM;AAAA,EAChC,MAAMA,eAAI,SAAS,IAAI,GAAG,EAAE,SAASC,aAAA,iBAAiB,QAAQ;AAAA,EAC9D,aAAaD,eAAI,OAAO,EAAE,SAAS;AAAA,EACnC,UAAUA,eAAI,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAW,EAAA,QAAQC,aAAAA,iBAAiB,QAAQ;AAAA,EACpF,aAAaD,eAAI,OAAA,EAAS,SAASC,aAAAA,iBAAiB,QAAQ;AAC9D,CAAC;AAED,MAAM,uBAAuB;AAM7B,MAAM,WAAW,MAAM;AACAC,eAAAA;AACf,QAAA,EAAE,kBAAkBC,UAAAA;AAC1B,QAAM,EAAE,SAAS,UAAU,IAAIC,aAAkB,kBAAA;AACjD,QAAM,qBAAqBC,aAAAA;AAC3B,QAAM,UAAUC,eAAAA;AAChB,QAAM,EAAE,OAAO,cAAc,IAAIC,eAA8C,YAAA;AAC/E,QAAM,CAAC,eAAe,gBAAgB,IAAIC,iBAAM;AAAA,IAG9C,iBAAiB,eAAe,cAAc,gBAC1C;AAAA,MACE,GAAG,cAAc;AAAA,IAAA,IAEnB;AAAA,EAAA;AAEA,QAAA,EAAE,eAAeC,aAAAA;AACjB,QAAA,EAAE,mBAAmBC,aAAAA;AACrB,QAAA,cAAcC,uBAAYC,iBAAAA,sBAAsB;AAChD,QAAA;AAAA,IACJ,gBAAgB,EAAE,WAAW,WAAW,cAAc;AAAA;AAAA,EAEpD,IAAAC,aAAA,QAAQ,YAAY,SAAS,iBAAiB,CAAC;AAC7C,QAAA,QAAQC,6BAA8B,+BAA+B;AAC3E,QAAM,EAAE,KAAK,MAAM,QAAQC,aAAe,eAAA;AAEpC,QAAA,KAAK,OAAO,QAAQ;AAC1B,QAAM,aAAa,OAAO;AAEpB,QAAA,EAAE,mBAAmBC,aAAAA;AAE3BR,mBAAM,UAAU,MAAM;AACT,eAAA,aAAa,wBAAwB,wBAAwB;AAAA,MACtE,WAAWS,UAAA;AAAA,IAAA,CACZ;AAAA,EAAA,GACA,CAAC,YAAY,UAAU,CAAC;AAE3BC,aAAA;AAAA,IACE,CAAC,kBAAkB,EAAE;AAAA,IACrB,YAAY;AACJ,YAAA;AAAA,QACJ,MAAM,EAAE,KAAK;AAAA,MACX,IAAA,MAAM,IAA2B,0BAA0B,EAAE,EAAE;AAElD,uBAAA;AAAA,QACf,GAAG;AAAA,MAAA,CACJ;AAEM,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,SAAS,CAAC,cAAc,CAAC;AAAA,MACzB,QAAQ,KAAK;AACX,YAAI,eAAeC,MAAAA,YAAY;AAE7B,cAAI,IAAI,SAAS,KAAK,MAAM,SAAS,SAAS,sBAAsB;AAC/C,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS;AAAA,gBACP,IAAI;AAAA,gBACJ,gBACE;AAAA,cACJ;AAAA,YAAA,CACD;AAAA,UAAA,OACI;AACc,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS,eAAe,GAAG;AAAA,YAAA,CAC5B;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EAAA;AAGI,QAAA,eAAe,OAAO,MAAkB,YAAuC;AACxE,eAAA,aAAa,oBAAoB,iBAAiB;AAAA,MAC3D,WAAWF,UAAA;AAAA,IAAA,CACZ;AAEO;AAER,UAAMG,eAAc,KAAK,YAAY,MAAM,GAAG;AAExC,UAAA,kCAAkC,CACtC,eACyC;AACrC,UAAA,WAAW,WAAW,GAAG;AAC3B,eAAO,WAAW,CAAC,MAAM,UAAU,WAAW,CAAC,MAAM;AAAA,MACvD;AAEA,aAAO,WAAW,CAAC,MAAM,UAAU,WAAW,CAAC,MAAM;AAAA,IAAA;AAKnD,QAAA,gCAAgCA,YAAW,GAAG;AAC5C,UAAA;AACE,YAAA;AAEJ,YAAI,YAAY;AACd,gBAAM,EAAE,KAAS,IAAA,MAAM,KAIrB,0BAA0B;AAAA,YAC1B,GAAG;AAAA,YACH,aAAAA;AAAAA,UAAA,CACD;AAED,qBAAW,KAAK;AAAA,QAAA,OACX;AACL,gBAAM,EAAE,KAAK,IAAI,MAAM,IAIrB,0BAA0B,EAAE,IAAI;AAAA,YAChC,MAAM,KAAK;AAAA,YACX,aAAa,KAAK;AAAA,YAClB,aAAAA;AAAAA,UAAA,CACD;AAED,qBAAW,KAAK;AAAA,QAClB;AAGU;AAEV,YAAI,YAAY;AACN,kBAAA,QAAQ,6BAA6B,SAAS,EAAE,IAAI,EAAE,eAAe,UAAU;AACvF,yBAAe,wBAAwB;AAAA,QACzC;AAEiB,yBAAA;AAAA,UACf,GAAG;AAAA,QAAA,CACJ;AAEkB,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,aACL,cAAc;AAAA,YACZ,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,IACD,cAAc;AAAA,YACZ,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,QAAA,CACN;AAEU,mBAAA,aAAa,mBAAmB,gBAAgB;AAAA,UACzD,MAAM,eAAe;AAAA,UACrB,WAAWH,UAAA;AAAA,QAAA,CACZ;AAAA,eACM,KAAK;AACZ,YAAI,eAAeE,MAAAA,YAAY;AAE7B,gBAAM,SAASE,gBAAA,gBAAgB,IAAI,SAAS,IAAI;AAChD,kBAAQ,UAAU,MAAM;AAExB,cAAI,KAAK,UAAU,MAAM,OAAO,YAAY,sBAAsB;AAC7C,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS,IAAI,SAAS,KAAK,WAAW;AAAA,YAAA,CACvC;AAAA,UAAA,WACQ,KAAK,UAAU,MAAM,OAAO,SAAS,SAAS,sBAAsB;AAC1D,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS;AAAA,gBACP,IAAI;AAAA,gBACJ,gBACE;AAAA,cACJ;AAAA,YAAA,CACD;AAAA,UAAA,OACI;AACc,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS,KAAK,UAAU,MAAM,WAAW;AAAA,YAAA,CAC1C;AAAA,UACH;AAAA,QACF;AAGU;MACZ;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,gBAAiB,aAAa,CAAC,cAAgB,aAAa;AAC5D,QAAA,YAAY,CAAC,cAAc,CAAC;AAElC,MAAI,WAAW;AACb,0CAAQ,aAAY,CAAA,CAAA;AAAA,EACtB;AAEM,QAAA,wBAAwB,CAAC,QAAiB;AAC9C,QAAI,eAAeF,MAAAA,YAAY;AAC7B,UAAI,KAAK,UAAU,MAAM,OAAO,SAAS,SAAS,sBAAsB;AACnD,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS;AAAA,YACP,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACc,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,GAAG;AAAA,QAAA,CAC5B;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAGF,yCACGG,mBACC,EAAA,UAAA;AAAA,IAACC,2BAAAA,IAAAC,aAAA,mBAAA,EAAkB,MAAK,kBAAkB,CAAA;AAAA,IAC1CD,2BAAA;AAAA,MAACE,OAAA;AAAA,MAAA;AAAA,QACC,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,eACE;AAAA,UACE,MAAM,eAAe,QAAQ;AAAA,UAC7B,aAAa,eAAe,eAAe;AAAA,UAC3C,UAAU,eAAe,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMrC,aAAc,eAAe,YAAY,KAAK,GAAG,KAAK;AAAA,QACxD;AAAA,QAEF,oBAAkB;AAAA,QAClB,UAAU,CAAC,MAAM,YAAY,aAAa,MAAM,OAAO;AAAA,QAEtD,WAAC,EAAE,QAAQ,cAAc,cAAc,aAAa;AACnD,iDACGC,mBACC,EAAA,UAAA;AAAA,YAAAH,2BAAA;AAAA,cAACI,gBAAA;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,gBAAgB;AAAA,gBAClB;AAAA,gBACA,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,eAAc;AAAA,gBACd,mBAAmB;AAAA,cAAA;AAAA,YACrB;AAAA,YACAJ,2BAAAA,IAACK,aAAAA,iBACC,UAACC,2BAAAA,KAAAC,aAAAA,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GAChD,UAAA;AAAA,cAAA,iBACC,QAAQ,eAAe,IAAI,KAC3B,eAAe,iBACZP,2BAAAA,IAAAQ,gBAAAA,UAAA,EAAS,OAAO,cAAc,WAAW,WAAWd,UAAqB,oBAAA,CAAA;AAAA,cAE9EM,2BAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC;AAAA,kBACA,UAAU;AAAA,kBACV;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA,EAAA,CACF,EACF,CAAA;AAAA,UACF,EAAA,CAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;AAMA,MAAM,oBAAoB,MAAM;AACxB,QAAA,cAAcZ,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAW,2BAAA,IAACS,aAAqB,sBAAA,EAAA,aAAa,YAAY,WAAW,iBAAiB,EAAE,MAC3E,UAACT,2BAAA,IAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;AAmBA,MAAM,6BAA6B,CAAC;AAAA,EAClC,SAAS,CAAC;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,CAAC;AACnB,MAAuC;AAC/B,QAAA,EAAE,kBAAkBpB,UAAAA;AAE1B,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EAAA;AAIA,SAAAoB,2BAAA;AAAA,IAACU,aAAA;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAS;AAAA,MACT,QAAO;AAAA,MACP,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MAEd,0CAACH,mBAAK,EAAA,WAAU,UAAS,YAAW,WAAU,KAAK,GACjD,UAAA;AAAA,QAAAP,+BAACW,aAAAA,YAAW,EAAA,SAAQ,SAAQ,IAAG,MAC5B,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,GACH;AAAA,QACAL,2BAAAA,KAACM,aAAAA,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,UAAAZ,2BAAA,IAACa,aAAoB,UAAA,EAAA,KAAK,GAAG,IAAI,IAC/B,UAAAb,2BAAA;AAAA,YAACc,gBAAA;AAAA,YAAA;AAAA,cACC,OAAO,OAAO,MAAM;AAAA,cACpB,OAAO,OAAO,MAAM;AAAA,cACpB;AAAA,cACA;AAAA,YAAA;AAAA,eALU,MAOd;AAAA,UACCd,2BAAA,IAAAa,aAAA,UAAA,EAA2B,KAAK,GAAG,IAAI,IACtC,UAAAb,2BAAA;AAAA,YAACe,gBAAA;AAAA,YAAA;AAAA,cACC,OAAO,OAAO,aAAa;AAAA,cAC3B,OAAO,OAAO,aAAa;AAAA,cAC3B;AAAA,cACA;AAAA,YAAA;AAAA,eALU,aAOd;AAAA,UACCf,2BAAA,IAAAa,aAAA,UAAA,EAAwB,KAAK,GAAG,IAAI,IACnC,UAAAb,2BAAA;AAAA,YAACgB,gBAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA,OAAO,OAAO,UAAU;AAAA,cACxB,OAAO,OAAO,UAAU;AAAA,cACxB;AAAA,cACA,OAAO;AAAA,YAAA;AAAA,eANG,UAQd;AAAA,UACChB,2BAAA,IAAAa,aAAA,UAAA,EAA2B,KAAK,GAAG,IAAI,IACtC,UAAAb,2BAAA;AAAA,YAACiB,gBAAA;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO,OAAO,aAAa;AAAA,cAC3B,OAAO,OAAO,aAAa;AAAA,cAC3B,OAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAClB;AAAA,cAEA,UAAU,CAAC,UAAkB;AAC3B,yBAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,SAAS;AAAA,cACrD;AAAA,cACA,SAAS;AAAA,cACT;AAAA,YAAA;AAAA,eAdU,aAgBd;AAAA,QAAA,GACF;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;AASO,MAAM,cAAc,CAAC,EAAE,wBAA0C;AAChE,QAAA,EAAE,kBAAkBrC,UAAAA;AACLD,eAAAA;AAGnB,SAAA2B,2BAAA,KAACP,aAAK,MAAA,EAAA,aAAU,QACd,UAAA;AAAA,IAACC,2BAAAA,IAAAC,aAAA,mBAAA,EAAkB,MAAK,kBAAkB,CAAA;AAAA,IAC1CD,2BAAA;AAAA,MAACkB,aAAA;AAAA,MAAA;AAAA,QACC,8CACGC,aAAO,QAAA,EAAA,UAAQ,MAAC,WAAWnB,2BAAA,IAACoB,eAAM,GAAI,MAAK,UAAS,MAAK,KACvD,wBAAc,EAAE,IAAI,eAAe,gBAAgB,OAAQ,CAAA,GAC9D;AAAA,QAEF,OACE,qBACA,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IAEL;AAAA,IACCpB,2BAAA,IAAAK,aAAA,eAAA,EACC,UAACL,2BAAA,IAAAqB,aAAA,sBAAA,CAAqB,CAAA,GACxB;AAAA,EACF,EAAA,CAAA;AAEJ;;;;"}
@@ -10,13 +10,13 @@ import { useQuery } from "react-query";
10
10
  import { useSelector } from "react-redux";
11
11
  import { useHistory, useLocation, useRouteMatch } from "react-router-dom";
12
12
  import * as yup from "yup";
13
- import { s as selectAdminPermissions } from "./AuthenticatedApp-7d1fdf0c.mjs";
13
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-b723bf94.mjs";
14
14
  import { f as formatAPIErrors } from "./formatAPIErrors-db6ed675.mjs";
15
15
  import { T as TRANSFER_TOKEN_TYPE } from "./constants-d3dd8ed6.mjs";
16
16
  import { F as FormHead, c as TokenBox, T as TokenName, a as TokenDescription, L as LifeSpanInput, b as TokenTypeSelect } from "./TokenTypeSelect-3e46ae6e.mjs";
17
17
  import "semver/functions/lt";
18
18
  import "semver/functions/valid";
19
- import "./index-95e8649d.mjs";
19
+ import "./index-3bbbb14c.mjs";
20
20
  import "react-dom/client";
21
21
  import "invariant";
22
22
  import "lodash/isFunction";
@@ -429,4 +429,4 @@ export {
429
429
  LoadingView,
430
430
  ProtectedEditView
431
431
  };
432
- //# sourceMappingURL=EditView-0e4d7c80.mjs.map
432
+ //# sourceMappingURL=EditView-d3ccb532.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditView-0e4d7c80.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { formatAPIErrors } from '../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TokenCreate,\n TokenGetById,\n TransferToken,\n TokenUpdate,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n // @ts-expect-error this is fine\n } = useRBAC(permissions.settings['transfer-tokens']);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get<TokenGetById.Response>(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n },\n }\n );\n\n const handleSubmit = async (body: FormValues, actions: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n let response: TransferToken | SanitizedTransferToken;\n\n if (isCreating) {\n const { data } = await post<\n TokenCreate.Response,\n AxiosResponse<TokenCreate.Response>,\n TokenCreate.Request['body']\n >(`/admin/transfer/tokens`, {\n ...body,\n permissions,\n });\n\n response = data.data;\n } else {\n const { data } = await put<\n TokenUpdate.Response,\n AxiosResponse<TokenUpdate.Response>,\n TokenUpdate.Request['body']\n >(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n response = data.data;\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\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 if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n }\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n const handleErrorRegenerate = (err: unknown) => {\n if (err instanceof AxiosError) {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan ?? null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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 error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["permissions"],"mappings":"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"}
1
+ {"version":3,"file":"EditView-d3ccb532.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n translatedErrors,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { Formik, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useLocation, useRouteMatch } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { formatAPIErrors } from '../../../../utils/formatAPIErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TokenCreate,\n TokenGetById,\n TransferToken,\n TokenUpdate,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n permissions: yup.string().required(translatedErrors.required),\n});\n\nconst MSG_ERROR_NAME_TAKEN = 'Name already taken';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const history = useHistory();\n const { state: locationState } = useLocation<{ transferToken: TransferToken }>();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const permissions = useSelector(selectAdminPermissions);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n // @ts-expect-error this is fine\n } = useRBAC(permissions.settings['transfer-tokens']);\n const match = useRouteMatch<{ id: string }>('/settings/transfer-tokens/:id');\n const { get, post, put } = useFetchClient();\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const { formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n useQuery(\n ['transfer-token', id],\n async () => {\n const {\n data: { data },\n } = await get<TokenGetById.Response>(`/admin/transfer/tokens/${id}`);\n\n setTransferToken({\n ...data,\n });\n\n return data;\n },\n {\n enabled: !isCreating && !transferToken,\n onError(err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\n if (err.response.data.error.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n },\n }\n );\n\n const handleSubmit = async (body: FormValues, actions: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n // @ts-expect-error context assertation\n lockApp();\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n let response: TransferToken | SanitizedTransferToken;\n\n if (isCreating) {\n const { data } = await post<\n TokenCreate.Response,\n AxiosResponse<TokenCreate.Response>,\n TokenCreate.Request['body']\n >(`/admin/transfer/tokens`, {\n ...body,\n permissions,\n });\n\n response = data.data;\n } else {\n const { data } = await put<\n TokenUpdate.Response,\n AxiosResponse<TokenUpdate.Response>,\n TokenUpdate.Request['body']\n >(`/admin/transfer/tokens/${id}`, {\n name: body.name,\n description: body.description,\n permissions,\n });\n\n response = data.data;\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n\n if (isCreating) {\n history.replace(`/settings/transfer-tokens/${response.id}`, { transferToken: response });\n setCurrentStep('transferTokens.success');\n }\n\n setTransferToken({\n ...response,\n });\n\n toggleNotification({\n type: 'success',\n message: isCreating\n ? formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n })\n : formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage(isCreating ? 'didCreateToken' : 'didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n } catch (err) {\n if (err instanceof AxiosError) {\n // @ts-expect-error this is fine\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 if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: err?.response?.data?.message || 'notification.error',\n });\n }\n }\n\n // @ts-expect-error context assertation\n unlockApp();\n }\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <LoadingView />;\n }\n\n const handleErrorRegenerate = (err: unknown) => {\n if (err instanceof AxiosError) {\n if (err?.response?.data?.error?.details?.code === 'INVALID_TOKEN_SALT') {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error.invalid.configuration',\n defaultMessage:\n 'You have an invalid configuration, check your server log for more information.',\n },\n });\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(err),\n });\n }\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Transfer Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan ?? null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/transfer-tokens\"\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n onErrorRegenerate={handleErrorRegenerate}\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\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 error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </GridItem>\n <GridItem key=\"permissions\" col={6} xs={12}>\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingView\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingViewProps {\n transferTokenName?: string;\n}\n\nexport const LoadingView = ({ transferTokenName }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"Transfer 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 transferTokenName ||\n formatMessage({\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'Create Transfer Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["permissions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,MAAM,SAAS,IAAI,OAAO,EAAE,MAAM;AAAA,EAChC,MAAM,IAAI,SAAS,IAAI,GAAG,EAAE,SAAS,iBAAiB,QAAQ;AAAA,EAC9D,aAAa,IAAI,OAAO,EAAE,SAAS;AAAA,EACnC,UAAU,IAAI,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAW,EAAA,QAAQ,iBAAiB,QAAQ;AAAA,EACpF,aAAa,IAAI,OAAA,EAAS,SAAS,iBAAiB,QAAQ;AAC9D,CAAC;AAED,MAAM,uBAAuB;AAM7B,MAAM,WAAW,MAAM;AACA;AACf,QAAA,EAAE,kBAAkB;AAC1B,QAAM,EAAE,SAAS,UAAU,IAAI,kBAAkB;AACjD,QAAM,qBAAqB;AAC3B,QAAM,UAAU;AAChB,QAAM,EAAE,OAAO,cAAc,IAAI,YAA8C;AAC/E,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM;AAAA,IAG9C,iBAAiB,eAAe,cAAc,gBAC1C;AAAA,MACE,GAAG,cAAc;AAAA,IAAA,IAEnB;AAAA,EAAA;AAEA,QAAA,EAAE,eAAe;AACjB,QAAA,EAAE,mBAAmB;AACrB,QAAA,cAAc,YAAY,sBAAsB;AAChD,QAAA;AAAA,IACJ,gBAAgB,EAAE,WAAW,WAAW,cAAc;AAAA;AAAA,EAEpD,IAAA,QAAQ,YAAY,SAAS,iBAAiB,CAAC;AAC7C,QAAA,QAAQ,cAA8B,+BAA+B;AAC3E,QAAM,EAAE,KAAK,MAAM,QAAQ,eAAe;AAEpC,QAAA,KAAK,OAAO,QAAQ;AAC1B,QAAM,aAAa,OAAO;AAEpB,QAAA,EAAE,mBAAmB;AAE3B,QAAM,UAAU,MAAM;AACT,eAAA,aAAa,wBAAwB,wBAAwB;AAAA,MACtE,WAAW;AAAA,IAAA,CACZ;AAAA,EAAA,GACA,CAAC,YAAY,UAAU,CAAC;AAE3B;AAAA,IACE,CAAC,kBAAkB,EAAE;AAAA,IACrB,YAAY;AACJ,YAAA;AAAA,QACJ,MAAM,EAAE,KAAK;AAAA,MACX,IAAA,MAAM,IAA2B,0BAA0B,EAAE,EAAE;AAElD,uBAAA;AAAA,QACf,GAAG;AAAA,MAAA,CACJ;AAEM,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,SAAS,CAAC,cAAc,CAAC;AAAA,MACzB,QAAQ,KAAK;AACX,YAAI,eAAe,YAAY;AAE7B,cAAI,IAAI,SAAS,KAAK,MAAM,SAAS,SAAS,sBAAsB;AAC/C,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS;AAAA,gBACP,IAAI;AAAA,gBACJ,gBACE;AAAA,cACJ;AAAA,YAAA,CACD;AAAA,UAAA,OACI;AACc,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS,eAAe,GAAG;AAAA,YAAA,CAC5B;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EAAA;AAGI,QAAA,eAAe,OAAO,MAAkB,YAAuC;AACxE,eAAA,aAAa,oBAAoB,iBAAiB;AAAA,MAC3D,WAAW;AAAA,IAAA,CACZ;AAEO;AAER,UAAMA,eAAc,KAAK,YAAY,MAAM,GAAG;AAExC,UAAA,kCAAkC,CACtC,eACyC;AACrC,UAAA,WAAW,WAAW,GAAG;AAC3B,eAAO,WAAW,CAAC,MAAM,UAAU,WAAW,CAAC,MAAM;AAAA,MACvD;AAEA,aAAO,WAAW,CAAC,MAAM,UAAU,WAAW,CAAC,MAAM;AAAA,IAAA;AAKnD,QAAA,gCAAgCA,YAAW,GAAG;AAC5C,UAAA;AACE,YAAA;AAEJ,YAAI,YAAY;AACd,gBAAM,EAAE,KAAS,IAAA,MAAM,KAIrB,0BAA0B;AAAA,YAC1B,GAAG;AAAA,YACH,aAAAA;AAAAA,UAAA,CACD;AAED,qBAAW,KAAK;AAAA,QAAA,OACX;AACL,gBAAM,EAAE,KAAK,IAAI,MAAM,IAIrB,0BAA0B,EAAE,IAAI;AAAA,YAChC,MAAM,KAAK;AAAA,YACX,aAAa,KAAK;AAAA,YAClB,aAAAA;AAAAA,UAAA,CACD;AAED,qBAAW,KAAK;AAAA,QAClB;AAGU;AAEV,YAAI,YAAY;AACN,kBAAA,QAAQ,6BAA6B,SAAS,EAAE,IAAI,EAAE,eAAe,UAAU;AACvF,yBAAe,wBAAwB;AAAA,QACzC;AAEiB,yBAAA;AAAA,UACf,GAAG;AAAA,QAAA,CACJ;AAEkB,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,aACL,cAAc;AAAA,YACZ,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,IACD,cAAc;AAAA,YACZ,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,QAAA,CACN;AAEU,mBAAA,aAAa,mBAAmB,gBAAgB;AAAA,UACzD,MAAM,eAAe;AAAA,UACrB,WAAW;AAAA,QAAA,CACZ;AAAA,eACM,KAAK;AACZ,YAAI,eAAe,YAAY;AAE7B,gBAAM,SAAS,gBAAgB,IAAI,SAAS,IAAI;AAChD,kBAAQ,UAAU,MAAM;AAExB,cAAI,KAAK,UAAU,MAAM,OAAO,YAAY,sBAAsB;AAC7C,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS,IAAI,SAAS,KAAK,WAAW;AAAA,YAAA,CACvC;AAAA,UAAA,WACQ,KAAK,UAAU,MAAM,OAAO,SAAS,SAAS,sBAAsB;AAC1D,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS;AAAA,gBACP,IAAI;AAAA,gBACJ,gBACE;AAAA,cACJ;AAAA,YAAA,CACD;AAAA,UAAA,OACI;AACc,+BAAA;AAAA,cACjB,MAAM;AAAA,cACN,SAAS,KAAK,UAAU,MAAM,WAAW;AAAA,YAAA,CAC1C;AAAA,UACH;AAAA,QACF;AAGU;MACZ;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,gBAAiB,aAAa,CAAC,cAAgB,aAAa;AAC5D,QAAA,YAAY,CAAC,cAAc,CAAC;AAElC,MAAI,WAAW;AACb,+BAAQ,aAAY,CAAA,CAAA;AAAA,EACtB;AAEM,QAAA,wBAAwB,CAAC,QAAiB;AAC9C,QAAI,eAAe,YAAY;AAC7B,UAAI,KAAK,UAAU,MAAM,OAAO,SAAS,SAAS,sBAAsB;AACnD,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS;AAAA,YACP,IAAI;AAAA,YACJ,gBACE;AAAA,UACJ;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACc,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,GAAG;AAAA,QAAA,CAC5B;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAGF,8BACG,MACC,EAAA,UAAA;AAAA,IAAC,oBAAA,mBAAA,EAAkB,MAAK,kBAAkB,CAAA;AAAA,IAC1C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,eACE;AAAA,UACE,MAAM,eAAe,QAAQ;AAAA,UAC7B,aAAa,eAAe,eAAe;AAAA,UAC3C,UAAU,eAAe,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMrC,aAAc,eAAe,YAAY,KAAK,GAAG,KAAK;AAAA,QACxD;AAAA,QAEF,oBAAkB;AAAA,QAClB,UAAU,CAAC,MAAM,YAAY,aAAa,MAAM,OAAO;AAAA,QAEtD,WAAC,EAAE,QAAQ,cAAc,cAAc,aAAa;AACnD,sCACG,MACC,EAAA,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,OAAO;AAAA,kBACL,IAAI;AAAA,kBACJ,gBAAgB;AAAA,gBAClB;AAAA,gBACA,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,eAAc;AAAA,gBACd,mBAAmB;AAAA,cAAA;AAAA,YACrB;AAAA,YACA,oBAAC,iBACC,UAAC,qBAAA,MAAA,EAAK,WAAU,UAAS,YAAW,WAAU,KAAK,GAChD,UAAA;AAAA,cAAA,iBACC,QAAQ,eAAe,IAAI,KAC3B,eAAe,iBACZ,oBAAA,UAAA,EAAS,OAAO,cAAc,WAAW,WAAW,oBAAqB,CAAA;AAAA,cAE9E;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC;AAAA,kBACA,UAAU;AAAA,kBACV;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA,EAAA,CACF,EACF,CAAA;AAAA,UACF,EAAA,CAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAEJ;AAMA,MAAM,oBAAoB,MAAM;AACxB,QAAA,cAAc,YAAY,sBAAsB;AAGpD,SAAA,oBAAC,sBAAqB,EAAA,aAAa,YAAY,WAAW,iBAAiB,EAAE,MAC3E,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;AAmBA,MAAM,6BAA6B,CAAC;AAAA,EAClC,SAAS,CAAC;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,CAAC;AACnB,MAAuC;AAC/B,QAAA,EAAE,kBAAkB;AAE1B,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EAAA;AAIA,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAS;AAAA,MACT,QAAO;AAAA,MACP,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,cAAc;AAAA,MAEd,+BAAC,MAAK,EAAA,WAAU,UAAS,YAAW,WAAU,KAAK,GACjD,UAAA;AAAA,QAAA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,IAAG,MAC5B,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,GACH;AAAA,QACA,qBAAC,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,UAAA,oBAAC,UAAoB,EAAA,KAAK,GAAG,IAAI,IAC/B,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,OAAO,MAAM;AAAA,cACpB,OAAO,OAAO,MAAM;AAAA,cACpB;AAAA,cACA;AAAA,YAAA;AAAA,eALU,MAOd;AAAA,UACC,oBAAA,UAAA,EAA2B,KAAK,GAAG,IAAI,IACtC,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,OAAO,aAAa;AAAA,cAC3B,OAAO,OAAO,aAAa;AAAA,cAC3B;AAAA,cACA;AAAA,YAAA;AAAA,eALU,aAOd;AAAA,UACC,oBAAA,UAAA,EAAwB,KAAK,GAAG,IAAI,IACnC,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,OAAO,OAAO,UAAU;AAAA,cACxB,OAAO,OAAO,UAAU;AAAA,cACxB;AAAA,cACA,OAAO;AAAA,YAAA;AAAA,eANG,UAQd;AAAA,UACC,oBAAA,UAAA,EAA2B,KAAK,GAAG,IAAI,IACtC,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO,OAAO,aAAa;AAAA,cAC3B,OAAO,OAAO,aAAa;AAAA,cAC3B,OAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAClB;AAAA,cAEA,UAAU,CAAC,UAAkB;AAC3B,yBAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,SAAS;AAAA,cACrD;AAAA,cACA,SAAS;AAAA,cACT;AAAA,YAAA;AAAA,eAdU,aAgBd;AAAA,QAAA,GACF;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN;AASO,MAAM,cAAc,CAAC,EAAE,wBAA0C;AAChE,QAAA,EAAE,kBAAkB;AACL;AAGnB,SAAA,qBAAC,MAAK,EAAA,aAAU,QACd,UAAA;AAAA,IAAC,oBAAA,mBAAA,EAAkB,MAAK,kBAAkB,CAAA;AAAA,IAC1C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,mCACG,QAAO,EAAA,UAAQ,MAAC,WAAW,oBAAC,SAAM,GAAI,MAAK,UAAS,MAAK,KACvD,wBAAc,EAAE,IAAI,eAAe,gBAAgB,OAAQ,CAAA,GAC9D;AAAA,QAEF,OACE,qBACA,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IAEL;AAAA,IACC,oBAAA,eAAA,EACC,UAAC,oBAAA,sBAAA,CAAqB,CAAA,GACxB;AAAA,EACF,EAAA,CAAA;AAEJ;"}
@@ -10,7 +10,7 @@ const reactIntl = require("react-intl");
10
10
  const reactQuery = require("react-query");
11
11
  const reactRedux = require("react-redux");
12
12
  const reactRouterDom = require("react-router-dom");
13
- const AuthenticatedApp = require("./AuthenticatedApp-47219c52.js");
13
+ const AuthenticatedApp = require("./AuthenticatedApp-b186733c.js");
14
14
  const formatAPIErrors = require("./formatAPIErrors-b599cf27.js");
15
15
  const constants = require("./constants-da2542a3.js");
16
16
  const TokenTypeSelect = require("./TokenTypeSelect-c75581af.js");
@@ -25,7 +25,7 @@ const produce = require("immer");
25
25
  const pull = require("lodash/pull");
26
26
  require("semver/functions/lt");
27
27
  require("semver/functions/valid");
28
- require("./index-3f8cf4d5.js");
28
+ require("./index-3956d072.js");
29
29
  require("react-dom/client");
30
30
  require("invariant");
31
31
  require("lodash/isFunction");
@@ -907,4 +907,4 @@ const ProtectedEditView = () => {
907
907
  };
908
908
  exports.EditView = EditView;
909
909
  exports.ProtectedEditView = ProtectedEditView;
910
- //# sourceMappingURL=EditViewPage-ef0292a9.js.map
910
+ //# sourceMappingURL=EditViewPage-57b6e71a.js.map