@strapi/admin 5.19.0 → 5.21.0

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 (244) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +20 -4
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +21 -5
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/Filters.js +10 -1
  6. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.mjs +10 -1
  8. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.js +18 -43
  10. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -0
  11. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.mjs +17 -42
  12. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.js +10 -6
  14. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -0
  15. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.mjs +11 -7
  16. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -0
  17. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.js +6 -6
  18. package/dist/admin/admin/src/components/GuidedTour/Step.js.map +1 -0
  19. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.mjs +7 -7
  20. package/dist/admin/admin/src/components/GuidedTour/Step.mjs.map +1 -0
  21. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.js +10 -16
  22. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -0
  23. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.mjs +11 -17
  24. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -0
  25. package/dist/admin/admin/src/components/LeftMenu.js +1 -1
  26. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  27. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  28. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/Providers.js +9 -10
  30. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  31. package/dist/admin/admin/src/components/Providers.mjs +9 -10
  32. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/SubNav.js +1 -1
  34. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  35. package/dist/admin/admin/src/components/SubNav.mjs +1 -1
  36. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/Widgets.js +185 -0
  38. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  39. package/dist/admin/admin/src/components/Widgets.mjs +186 -2
  40. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  41. package/dist/admin/admin/src/core/apis/Widgets.js +34 -16
  42. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  43. package/dist/admin/admin/src/core/apis/Widgets.mjs +34 -16
  44. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  45. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  46. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  47. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -18
  48. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  49. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -18
  50. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  51. package/dist/admin/admin/src/pages/Auth/components/Register.js +0 -11
  52. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  53. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +0 -11
  54. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  55. package/dist/admin/admin/src/pages/Home/HomePage.js +7 -4
  56. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  57. package/dist/admin/admin/src/pages/Home/HomePage.mjs +7 -4
  58. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  59. package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
  60. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  61. package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
  62. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +6 -6
  64. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +6 -6
  66. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +1 -7
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +2 -8
  70. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +1 -8
  72. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +1 -8
  74. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +0 -2
  76. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +0 -2
  78. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
  80. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
  82. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  83. package/dist/admin/admin/src/services/admin.js +1 -2
  84. package/dist/admin/admin/src/services/admin.js.map +1 -1
  85. package/dist/admin/admin/src/services/admin.mjs +1 -2
  86. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  87. package/dist/admin/admin/src/services/api.js +4 -1
  88. package/dist/admin/admin/src/services/api.js.map +1 -1
  89. package/dist/admin/admin/src/services/api.mjs +4 -1
  90. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  91. package/dist/admin/admin/src/services/apiTokens.js +5 -4
  92. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  93. package/dist/admin/admin/src/services/apiTokens.mjs +5 -4
  94. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  95. package/dist/admin/admin/src/services/homepage.js +31 -0
  96. package/dist/admin/admin/src/services/homepage.js.map +1 -0
  97. package/dist/admin/admin/src/services/homepage.mjs +28 -0
  98. package/dist/admin/admin/src/services/homepage.mjs.map +1 -0
  99. package/dist/admin/admin/src/services/users.js +4 -2
  100. package/dist/admin/admin/src/services/users.js.map +1 -1
  101. package/dist/admin/admin/src/services/users.mjs +4 -2
  102. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  103. package/dist/admin/admin/src/services/webhooks.js +9 -5
  104. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  105. package/dist/admin/admin/src/services/webhooks.mjs +9 -5
  106. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  107. package/dist/admin/admin/src/translations/en.json.js +16 -3
  108. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  109. package/dist/admin/admin/src/translations/en.json.mjs +16 -3
  110. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  111. package/dist/admin/admin/src/translations/es.json.js +9 -0
  112. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  113. package/dist/admin/admin/src/translations/es.json.mjs +9 -0
  114. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  115. package/dist/admin/admin/src/translations/fr.json.js +9 -0
  116. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  117. package/dist/admin/admin/src/translations/fr.json.mjs +9 -0
  118. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  119. package/dist/admin/admin/tests/utils.js +25 -28
  120. package/dist/admin/admin/tests/utils.js.map +1 -1
  121. package/dist/admin/admin/tests/utils.mjs +25 -28
  122. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  123. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -1
  124. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  125. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -1
  126. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  127. package/dist/admin/index.js +4 -4
  128. package/dist/admin/index.mjs +2 -2
  129. package/dist/admin/src/components/Filters.d.ts +3 -1
  130. package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.d.ts +3 -3
  131. package/dist/admin/src/components/GuidedTour/Overview.d.ts +1 -0
  132. package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.d.ts +1 -1
  133. package/dist/admin/src/components/Widgets.d.ts +2 -1
  134. package/dist/admin/src/core/apis/Widgets.d.ts +9 -5
  135. package/dist/admin/src/core/store/configure.d.ts +2 -2
  136. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  137. package/dist/admin/src/features/Tracking.d.ts +2 -2
  138. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  139. package/dist/admin/src/index.d.ts +3 -3
  140. package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +1 -1
  141. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  142. package/dist/admin/src/selectors.d.ts +2 -2
  143. package/dist/admin/src/services/admin.d.ts +6 -6
  144. package/dist/admin/src/services/api.d.ts +1 -1
  145. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  146. package/dist/admin/src/services/auth.d.ts +10 -10
  147. package/dist/admin/src/services/contentApi.d.ts +1 -1
  148. package/dist/admin/src/services/contentManager.d.ts +1 -1
  149. package/dist/admin/src/services/homepage.d.ts +14 -0
  150. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  151. package/dist/admin/src/services/users.d.ts +8 -8
  152. package/dist/admin/src/services/webhooks.d.ts +2 -2
  153. package/dist/admin/tests/utils.d.ts +1 -1
  154. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  155. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  156. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +10 -9
  157. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  158. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +10 -9
  159. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  160. package/dist/server/server/src/controllers/homepage.js +15 -0
  161. package/dist/server/server/src/controllers/homepage.js.map +1 -0
  162. package/dist/server/server/src/controllers/homepage.mjs +13 -0
  163. package/dist/server/server/src/controllers/homepage.mjs.map +1 -0
  164. package/dist/server/server/src/controllers/index.js +3 -1
  165. package/dist/server/server/src/controllers/index.js.map +1 -1
  166. package/dist/server/server/src/controllers/index.mjs +3 -1
  167. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  168. package/dist/server/server/src/domain/user.js +3 -1
  169. package/dist/server/server/src/domain/user.js.map +1 -1
  170. package/dist/server/server/src/domain/user.mjs +3 -1
  171. package/dist/server/server/src/domain/user.mjs.map +1 -1
  172. package/dist/server/server/src/routes/homepage.js +17 -0
  173. package/dist/server/server/src/routes/homepage.js.map +1 -0
  174. package/dist/server/server/src/routes/homepage.mjs +15 -0
  175. package/dist/server/server/src/routes/homepage.mjs.map +1 -0
  176. package/dist/server/server/src/routes/index.js +3 -1
  177. package/dist/server/server/src/routes/index.js.map +1 -1
  178. package/dist/server/server/src/routes/index.mjs +3 -1
  179. package/dist/server/server/src/routes/index.mjs.map +1 -1
  180. package/dist/server/server/src/services/homepage.js +34 -0
  181. package/dist/server/server/src/services/homepage.js.map +1 -0
  182. package/dist/server/server/src/services/homepage.mjs +32 -0
  183. package/dist/server/server/src/services/homepage.mjs.map +1 -0
  184. package/dist/server/server/src/services/index.js +3 -1
  185. package/dist/server/server/src/services/index.js.map +1 -1
  186. package/dist/server/server/src/services/index.mjs +3 -1
  187. package/dist/server/server/src/services/index.mjs.map +1 -1
  188. package/dist/server/src/controllers/homepage.d.ts +15 -0
  189. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  190. package/dist/server/src/controllers/index.d.ts +13 -0
  191. package/dist/server/src/controllers/index.d.ts.map +1 -1
  192. package/dist/server/src/domain/user.d.ts.map +1 -1
  193. package/dist/server/src/index.d.ts +26 -0
  194. package/dist/server/src/index.d.ts.map +1 -1
  195. package/dist/server/src/routes/homepage.d.ts +10 -0
  196. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  197. package/dist/server/src/routes/index.d.ts.map +1 -1
  198. package/dist/server/src/services/homepage.d.ts +15 -0
  199. package/dist/server/src/services/homepage.d.ts.map +1 -0
  200. package/dist/server/src/services/index.d.ts +13 -0
  201. package/dist/server/src/services/index.d.ts.map +1 -1
  202. package/dist/shared/contracts/homepage.d.ts +30 -0
  203. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  204. package/package.json +8 -9
  205. package/dist/admin/admin/src/components/GuidedTour/Homepage.js +0 -132
  206. package/dist/admin/admin/src/components/GuidedTour/Homepage.js.map +0 -1
  207. package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs +0 -130
  208. package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs.map +0 -1
  209. package/dist/admin/admin/src/components/GuidedTour/Modal.js +0 -278
  210. package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +0 -1
  211. package/dist/admin/admin/src/components/GuidedTour/Modal.mjs +0 -276
  212. package/dist/admin/admin/src/components/GuidedTour/Modal.mjs.map +0 -1
  213. package/dist/admin/admin/src/components/GuidedTour/Ornaments.js +0 -54
  214. package/dist/admin/admin/src/components/GuidedTour/Ornaments.js.map +0 -1
  215. package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs +0 -51
  216. package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs.map +0 -1
  217. package/dist/admin/admin/src/components/GuidedTour/Provider.js +0 -206
  218. package/dist/admin/admin/src/components/GuidedTour/Provider.js.map +0 -1
  219. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs +0 -184
  220. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs.map +0 -1
  221. package/dist/admin/admin/src/components/GuidedTour/constants.js +0 -167
  222. package/dist/admin/admin/src/components/GuidedTour/constants.js.map +0 -1
  223. package/dist/admin/admin/src/components/GuidedTour/constants.mjs +0 -164
  224. package/dist/admin/admin/src/components/GuidedTour/constants.mjs.map +0 -1
  225. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +0 -1
  226. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +0 -1
  227. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +0 -1
  228. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +0 -1
  229. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +0 -1
  230. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +0 -1
  231. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +0 -1
  232. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +0 -1
  233. package/dist/admin/admin/src/pages/Home/components/GuidedTour.js +0 -19
  234. package/dist/admin/admin/src/pages/Home/components/GuidedTour.js.map +0 -1
  235. package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs +0 -17
  236. package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs.map +0 -1
  237. package/dist/admin/src/components/GuidedTour/Homepage.d.ts +0 -2
  238. package/dist/admin/src/components/GuidedTour/Modal.d.ts +0 -2
  239. package/dist/admin/src/components/GuidedTour/Ornaments.d.ts +0 -13
  240. package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -39
  241. package/dist/admin/src/components/GuidedTour/constants.d.ts +0 -165
  242. package/dist/admin/src/components/UnstableGuidedTour/Overview.d.ts +0 -1
  243. package/dist/admin/src/pages/Home/components/GuidedTour.d.ts +0 -1
  244. /package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Tracking.mjs","sources":["../../../../../admin/src/features/Tracking.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport axios, { AxiosResponse } from 'axios';\n\nimport { Tours } from '../components/UnstableGuidedTour/Tours';\nimport { useInitQuery, useTelemetryPropertiesQuery } from '../services/admin';\n\nimport { useAppInfo } from './AppInfo';\nimport { useAuth } from './Auth';\nimport { useStrapiApp } from './StrapiApp';\n\nexport interface TelemetryProperties {\n useTypescriptOnServer?: boolean;\n useTypescriptOnAdmin?: boolean;\n isHostedOnStrapiCloud?: boolean;\n numberOfAllContentTypes?: number;\n numberOfComponents?: number;\n numberOfDynamicZones?: number;\n}\n\nexport interface TrackingContextValue {\n uuid?: string | boolean;\n telemetryProperties?: TelemetryProperties;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nconst TrackingContext = React.createContext<TrackingContextValue>({\n uuid: false,\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface TrackingProviderProps {\n children: React.ReactNode;\n}\n\nconst TrackingProvider = ({ children }: TrackingProviderProps) => {\n const token = useAuth('App', (state) => state.token);\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n\n const { data } = useTelemetryPropertiesQuery(undefined, {\n skip: !initData?.uuid || !token,\n });\n React.useEffect(() => {\n if (uuid && data) {\n const event = 'didInitializeAdministration';\n try {\n fetch(`${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n // This event is anonymous\n event,\n userId: '',\n eventPropeties: {},\n groupProperties: {\n ...data,\n projectId: uuid,\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n },\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n });\n } catch {\n // silence is golden\n }\n }\n }, [data, uuid, getAllWidgets]);\n const value = React.useMemo(\n () => ({\n uuid,\n telemetryProperties: data,\n }),\n [uuid, data]\n );\n\n return <TrackingContext.Provider value={value}>{children}</TrackingContext.Provider>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * We can group these events together because none have properties so there's no benefit\n * to having them as separate types.\n *\n * Meanwhile those with properties have different property shapes corresponding to the specific\n * event so understanding which properties go with which event is very helpful.\n */\nexport interface EventWithoutProperties {\n name:\n | 'changeComponentsOrder'\n | 'didAddComponentToDynamicZone'\n | 'didBulkDeleteEntries'\n | 'didNotBulkDeleteEntries'\n | 'didChangeDisplayedFields'\n | 'didCheckDraftRelations'\n | 'didClickGuidedTourHomepageApiTokens'\n | 'didClickGuidedTourHomepageContentManager'\n | 'didClickGuidedTourHomepageContentTypeBuilder'\n | 'didClickGuidedTourStep1CollectionType'\n | 'didClickGuidedTourStep2ContentManager'\n | 'didClickGuidedTourStep3ApiTokens'\n | 'didClickonBlogSection'\n | 'didClickonCodeExampleSection'\n | 'didClickonReadTheDocumentationSection'\n | 'didClickOnTryStrapiCloudSection'\n | 'didClickonTutorialSection'\n | 'didCreateGuidedTourCollectionType'\n | 'didCreateGuidedTourEntry'\n | 'didCreateNewRole'\n | 'didCreateRole'\n | 'didDeleteToken'\n | 'didDuplicateRole'\n | 'didEditEditSettings'\n | 'didEditEmailTemplates'\n | 'didEditFieldNameOnContentType'\n | 'didEditListSettings'\n | 'didEditMediaLibraryConfig'\n | 'didEditNameOfContentType'\n | 'didGenerateGuidedTourApiTokens'\n | 'didGoToMarketplace'\n | 'didLaunchGuidedtour'\n | 'didMissMarketplacePlugin'\n | 'didNotCreateFirstAdmin'\n | 'didNotSaveComponent'\n | 'didPluginLearnMore'\n | 'didBulkPublishEntries'\n | 'didNotBulkPublishEntries'\n | 'didUnpublishEntry'\n | 'didBulkUnpublishEntries'\n | 'didNotBulkUnpublishEntries'\n | 'didSaveComponent'\n | 'didSaveContentType'\n | 'didSearch'\n | 'didSkipGuidedtour'\n | 'didSubmitPlugin'\n | 'didSubmitProvider'\n | 'didUpdateConditions'\n | 'didSelectAllMediaLibraryElements'\n | 'didSelectContentTypeFieldSettings'\n | 'didSelectContentTypeSettings'\n | 'didEditAuthenticationProvider'\n | 'didRestoreHistoryVersion'\n | 'hasClickedCTBAddFieldBanner'\n | 'removeComponentFromDynamicZone'\n | 'willAddMoreFieldToContentType'\n | 'willBulkDeleteEntries'\n | 'willBulkPublishEntries'\n | 'willBulkUnpublishEntries'\n | 'willChangeNumberOfEntriesPerPage'\n | 'willCheckDraftRelations'\n | 'willCreateComponent'\n | 'willCreateComponentFromAttributesModal'\n | 'willCreateContentType'\n | 'willCreateFirstAdmin'\n | 'willCreateNewRole'\n | 'willCreateRole'\n | 'willCreateSingleType'\n | 'willCreateStage'\n | 'willCreateWorkflow'\n | 'willDeleteEntryFromList'\n | 'willDeleteFieldOfContentType'\n | 'willDuplicateRole'\n | 'willEditEditLayout'\n | 'willEditEmailTemplates'\n | 'willEditEntryFromButton'\n | 'willEditEntryFromHome'\n | 'willEditEntryFromList'\n | 'willEditFieldOfContentType'\n | 'willEditMediaLibraryConfig'\n | 'willEditNameOfContentType'\n | 'willEditNameOfSingleType'\n | 'willEditAuthenticationProvider'\n | 'willEditFieldNameOnContentType'\n | 'willEditStage'\n | 'willFilterEntries'\n | 'willInstallPlugin'\n | 'willUnpublishEntry'\n | 'willSaveComponent'\n | 'willSaveContentType'\n | 'willSaveContentTypeLayout'\n | 'didEditFieldNameOnContentType'\n | 'didCreateRelease'\n | 'didLaunchGuidedtour';\n properties?: never;\n}\n\ninterface DidAccessAuthenticatedAdministrationEvent {\n name: 'didAccessAuthenticatedAdministration';\n properties: {\n registeredWidgets: string[];\n projectId: string;\n };\n}\n\ninterface DidFilterMediaLibraryElementsEvent {\n name: 'didFilterMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n filter: string;\n };\n}\n\ninterface DidSortMediaLibraryElementsEvent {\n name: 'didSortMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n sort: string;\n };\n}\n\ninterface DidCropFileEvent {\n name: 'didCropFile';\n properties: MediaEvents['properties'] & {\n duplicatedFile: null | boolean;\n };\n}\n\ninterface DidSelectFile {\n name: 'didSelectFile';\n properties: MediaEvents['properties'] & {\n source: 'url' | 'computer';\n };\n}\n\ninterface DidEditMediaLibraryElementsEvent {\n name: 'didEditMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n type: string;\n changeLocation: string | boolean;\n };\n}\n\ninterface MediaEvents {\n name:\n | 'didSearchMediaLibraryElements'\n | 'didReplaceMedia'\n | 'didAddMediaLibraryFolders'\n | 'willAddMediaLibraryAssets';\n properties: {\n location: string;\n };\n}\n\ninterface DidSelectContentTypeFieldTypeEvent {\n name: 'didSelectContentTypeFieldType';\n properties: {\n type?: string;\n };\n}\n\ninterface DidChangeModeEvent {\n name: 'didChangeMode';\n properties: {\n newMode: string;\n };\n}\ninterface DidSubmitWithErrorsFirstAdminEvent {\n name: 'didSubmitWithErrorsFirstAdmin';\n properties: {\n count: string;\n };\n}\n\ninterface WillNavigateEvent {\n name: 'willNavigate';\n properties: {\n from: string;\n to: string;\n };\n}\n\ninterface DidAccessTokenListEvent {\n name: 'didAccessTokenList';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n number: number;\n };\n}\ninterface LogoEvent {\n name: 'didChangeLogo' | 'didClickResetLogo';\n properties: {\n logo: 'menu' | 'auth';\n };\n}\n\ninterface TokenEvents {\n name:\n | 'didCopyTokenKey'\n | 'didAddTokenFromList'\n | 'didEditTokenFromList'\n | 'willAccessTokenList'\n | 'willAddTokenFromList'\n | 'willCreateToken'\n | 'willDeleteToken'\n | 'willEditToken'\n | 'willEditTokenFromList';\n properties: {\n tokenType: 'api-token' | 'transfer-token';\n };\n}\n\ninterface WillModifyTokenEvent {\n name: 'didCreateToken' | 'didEditToken';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n type: 'custom' | 'full-access' | 'read-only' | Array<'push' | 'pull' | 'push-pull'>;\n };\n}\n\ninterface DeleteEntryEvents {\n name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface CreateEntryEvents {\n name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry';\n properties: {\n documentId?: string;\n status?: string;\n error?: unknown;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n };\n}\n\ninterface PublishEntryEvents {\n name: 'willPublishEntry' | 'didPublishEntry';\n properties: {\n documentId?: string;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n };\n}\n\ninterface UpdateEntryEvents {\n name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry';\n properties: {\n documentId?: string;\n status?: string;\n error?: unknown;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n };\n}\n\ninterface DidFilterEntriesEvent {\n name: 'didFilterEntries';\n properties: {\n useRelation: boolean;\n };\n}\n\ninterface DidPublishRelease {\n name: 'didPublishRelease';\n properties: {\n totalEntries: number;\n totalPublishedEntries: number;\n totalUnpublishedEntries: number;\n };\n}\n\ninterface DidUpdateCTBSchema {\n name: 'didUpdateCTBSchema';\n properties: {\n success: boolean;\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n };\n}\n\ninterface DidSkipGuidedTour {\n name: 'didSkipGuidedTour';\n properties: {\n name: keyof Tours | 'all';\n };\n}\n\ninterface DidCompleteGuidedTour {\n name: 'didCompleteGuidedTour';\n properties: {\n name: keyof Tours;\n };\n}\n\ninterface DidStartGuidedTour {\n name: 'didStartGuidedTourFromHomepage';\n properties: {\n name: keyof Tours;\n };\n}\n\ntype EventsWithProperties =\n | CreateEntryEvents\n | PublishEntryEvents\n | DidAccessAuthenticatedAdministrationEvent\n | DidAccessTokenListEvent\n | DidChangeModeEvent\n | DidCropFileEvent\n | DeleteEntryEvents\n | DidEditMediaLibraryElementsEvent\n | DidFilterMediaLibraryElementsEvent\n | DidFilterEntriesEvent\n | DidSelectContentTypeFieldTypeEvent\n | DidSelectFile\n | DidSortMediaLibraryElementsEvent\n | DidSubmitWithErrorsFirstAdminEvent\n | LogoEvent\n | TokenEvents\n | UpdateEntryEvents\n | WillModifyTokenEvent\n | WillNavigateEvent\n | DidPublishRelease\n | MediaEvents\n | DidUpdateCTBSchema\n | DidSkipGuidedTour\n | DidCompleteGuidedTour\n | DidStartGuidedTour;\n\nexport type TrackingEvent = EventWithoutProperties | EventsWithProperties;\nexport interface UseTrackingReturn {\n /**\n * This type helps show all the available event names before you start typing,\n * however autocomplete isn't great.\n */\n trackUsage<TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n trackUsage<TEvent extends Extract<TrackingEvent, { properties?: never }>>(\n event: TEvent['name'],\n properties?: never\n ): Promise<null | AxiosResponse<string>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackUsage<TEvent extends Extract<TrackingEvent, { properties: object }>>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n}\n\n/**\n * @description Used to send amplitude events to the Strapi Tracking hub.\n *\n * @example\n * ```tsx\n * import { useTracking } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { trackUsage } = useTracking();\n *\n * const handleClick = () => {\n * trackUsage('my-event', { myProperty: 'myValue' });\n * }\n *\n * return <button onClick={handleClick}>Send Event</button>\n * }\n * ```\n */\nconst useTracking = (): UseTrackingReturn => {\n const { uuid, telemetryProperties } = React.useContext(TrackingContext);\n const userId = useAppInfo('useTracking', (state) => state.userId);\n const trackUsage = React.useCallback(\n async <TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties?: TEvent['properties']\n ) => {\n try {\n if (uuid && !window.strapi.telemetryDisabled) {\n const res = await axios.post<string>(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/api/v2/track`,\n {\n event,\n userId,\n eventProperties: { ...properties },\n userProperties: {},\n groupProperties: {\n ...telemetryProperties,\n projectId: uuid,\n projectType: window.strapi.projectType,\n },\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }\n );\n\n return res;\n }\n } catch (err) {\n // Silence is golden\n }\n\n return null;\n },\n [telemetryProperties, userId, uuid]\n );\n\n return { trackUsage };\n};\n\nexport { TrackingProvider, useTracking };\n"],"names":["TrackingContext","React","createContext","uuid","TrackingProvider","children","token","useAuth","state","data","initData","useInitQuery","getAllWidgets","useStrapiApp","widgets","getAll","useTelemetryPropertiesQuery","undefined","skip","useEffect","event","fetch","process","env","STRAPI_ANALYTICS_URL","method","body","JSON","stringify","userId","eventPropeties","groupProperties","projectId","registeredWidgets","map","widget","uid","headers","value","useMemo","telemetryProperties","_jsx","Provider","useTracking","useContext","useAppInfo","trackUsage","useCallback","properties","window","strapi","telemetryDisabled","res","axios","post","eventProperties","userProperties","projectType","err"],"mappings":"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"}
1
+ {"version":3,"file":"Tracking.mjs","sources":["../../../../../admin/src/features/Tracking.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport axios, { AxiosResponse } from 'axios';\n\nimport { Tours } from '../components/GuidedTour/Tours';\nimport { useInitQuery, useTelemetryPropertiesQuery } from '../services/admin';\n\nimport { useAppInfo } from './AppInfo';\nimport { useAuth } from './Auth';\nimport { useStrapiApp } from './StrapiApp';\n\nexport interface TelemetryProperties {\n useTypescriptOnServer?: boolean;\n useTypescriptOnAdmin?: boolean;\n isHostedOnStrapiCloud?: boolean;\n numberOfAllContentTypes?: number;\n numberOfComponents?: number;\n numberOfDynamicZones?: number;\n}\n\nexport interface TrackingContextValue {\n uuid?: string | boolean;\n telemetryProperties?: TelemetryProperties;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nconst TrackingContext = React.createContext<TrackingContextValue>({\n uuid: false,\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface TrackingProviderProps {\n children: React.ReactNode;\n}\n\nconst TrackingProvider = ({ children }: TrackingProviderProps) => {\n const token = useAuth('App', (state) => state.token);\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n\n const { data } = useTelemetryPropertiesQuery(undefined, {\n skip: !initData?.uuid || !token,\n });\n React.useEffect(() => {\n if (uuid && data) {\n const event = 'didInitializeAdministration';\n try {\n fetch(`${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n // This event is anonymous\n event,\n userId: '',\n eventPropeties: {},\n groupProperties: {\n ...data,\n projectId: uuid,\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n },\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n });\n } catch {\n // silence is golden\n }\n }\n }, [data, uuid, getAllWidgets]);\n const value = React.useMemo(\n () => ({\n uuid,\n telemetryProperties: data,\n }),\n [uuid, data]\n );\n\n return <TrackingContext.Provider value={value}>{children}</TrackingContext.Provider>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * We can group these events together because none have properties so there's no benefit\n * to having them as separate types.\n *\n * Meanwhile those with properties have different property shapes corresponding to the specific\n * event so understanding which properties go with which event is very helpful.\n */\nexport interface EventWithoutProperties {\n name:\n | 'changeComponentsOrder'\n | 'didAddComponentToDynamicZone'\n | 'didBulkDeleteEntries'\n | 'didNotBulkDeleteEntries'\n | 'didChangeDisplayedFields'\n | 'didCheckDraftRelations'\n | 'didClickGuidedTourHomepageApiTokens'\n | 'didClickGuidedTourHomepageContentManager'\n | 'didClickGuidedTourHomepageContentTypeBuilder'\n | 'didClickGuidedTourStep1CollectionType'\n | 'didClickGuidedTourStep2ContentManager'\n | 'didClickGuidedTourStep3ApiTokens'\n | 'didClickonBlogSection'\n | 'didClickonCodeExampleSection'\n | 'didClickonReadTheDocumentationSection'\n | 'didClickOnTryStrapiCloudSection'\n | 'didClickonTutorialSection'\n | 'didCreateGuidedTourCollectionType'\n | 'didCreateGuidedTourEntry'\n | 'didCreateNewRole'\n | 'didCreateRole'\n | 'didDeleteToken'\n | 'didDuplicateRole'\n | 'didEditEditSettings'\n | 'didEditEmailTemplates'\n | 'didEditFieldNameOnContentType'\n | 'didEditListSettings'\n | 'didEditMediaLibraryConfig'\n | 'didEditNameOfContentType'\n | 'didGenerateGuidedTourApiTokens'\n | 'didGoToMarketplace'\n | 'didLaunchGuidedtour'\n | 'didMissMarketplacePlugin'\n | 'didNotCreateFirstAdmin'\n | 'didNotSaveComponent'\n | 'didPluginLearnMore'\n | 'didBulkPublishEntries'\n | 'didNotBulkPublishEntries'\n | 'didUnpublishEntry'\n | 'didBulkUnpublishEntries'\n | 'didNotBulkUnpublishEntries'\n | 'didSaveComponent'\n | 'didSaveContentType'\n | 'didSearch'\n | 'didSkipGuidedtour'\n | 'didSubmitPlugin'\n | 'didSubmitProvider'\n | 'didUpdateConditions'\n | 'didSelectAllMediaLibraryElements'\n | 'didSelectContentTypeFieldSettings'\n | 'didSelectContentTypeSettings'\n | 'didEditAuthenticationProvider'\n | 'didRestoreHistoryVersion'\n | 'hasClickedCTBAddFieldBanner'\n | 'removeComponentFromDynamicZone'\n | 'willAddMoreFieldToContentType'\n | 'willBulkDeleteEntries'\n | 'willBulkPublishEntries'\n | 'willBulkUnpublishEntries'\n | 'willChangeNumberOfEntriesPerPage'\n | 'willCheckDraftRelations'\n | 'willCreateComponent'\n | 'willCreateComponentFromAttributesModal'\n | 'willCreateContentType'\n | 'willCreateFirstAdmin'\n | 'willCreateNewRole'\n | 'willCreateRole'\n | 'willCreateSingleType'\n | 'willCreateStage'\n | 'willCreateWorkflow'\n | 'willDeleteEntryFromList'\n | 'willDeleteFieldOfContentType'\n | 'willDuplicateRole'\n | 'willEditEditLayout'\n | 'willEditEmailTemplates'\n | 'willEditEntryFromButton'\n | 'willEditEntryFromHome'\n | 'willEditEntryFromList'\n | 'willEditReleaseFromHome'\n | 'willEditFieldOfContentType'\n | 'willEditMediaLibraryConfig'\n | 'willEditNameOfContentType'\n | 'willEditNameOfSingleType'\n | 'willEditAuthenticationProvider'\n | 'willEditFieldNameOnContentType'\n | 'willEditStage'\n | 'willFilterEntries'\n | 'willInstallPlugin'\n | 'willUnpublishEntry'\n | 'willSaveComponent'\n | 'willSaveContentType'\n | 'willSaveContentTypeLayout'\n | 'didEditFieldNameOnContentType'\n | 'didCreateRelease'\n | 'didLaunchGuidedtour';\n properties?: never;\n}\n\ninterface DidAccessAuthenticatedAdministrationEvent {\n name: 'didAccessAuthenticatedAdministration';\n properties: {\n registeredWidgets: string[];\n projectId: string;\n };\n}\n\ninterface DidFilterMediaLibraryElementsEvent {\n name: 'didFilterMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n filter: string;\n };\n}\n\ninterface DidSortMediaLibraryElementsEvent {\n name: 'didSortMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n sort: string;\n };\n}\n\ninterface DidCropFileEvent {\n name: 'didCropFile';\n properties: MediaEvents['properties'] & {\n duplicatedFile: null | boolean;\n };\n}\n\ninterface DidSelectFile {\n name: 'didSelectFile';\n properties: MediaEvents['properties'] & {\n source: 'url' | 'computer';\n };\n}\n\ninterface DidEditMediaLibraryElementsEvent {\n name: 'didEditMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n type: string;\n changeLocation: string | boolean;\n };\n}\n\ninterface MediaEvents {\n name:\n | 'didSearchMediaLibraryElements'\n | 'didReplaceMedia'\n | 'didAddMediaLibraryFolders'\n | 'willAddMediaLibraryAssets';\n properties: {\n location: string;\n };\n}\n\ninterface DidSelectContentTypeFieldTypeEvent {\n name: 'didSelectContentTypeFieldType';\n properties: {\n type?: string;\n };\n}\n\ninterface DidChangeModeEvent {\n name: 'didChangeMode';\n properties: {\n newMode: string;\n };\n}\ninterface DidSubmitWithErrorsFirstAdminEvent {\n name: 'didSubmitWithErrorsFirstAdmin';\n properties: {\n count: string;\n };\n}\n\ninterface WillNavigateEvent {\n name: 'willNavigate';\n properties: {\n from: string;\n to: string;\n };\n}\n\ninterface DidAccessTokenListEvent {\n name: 'didAccessTokenList';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n number: number;\n };\n}\ninterface LogoEvent {\n name: 'didChangeLogo' | 'didClickResetLogo';\n properties: {\n logo: 'menu' | 'auth';\n };\n}\n\ninterface TokenEvents {\n name:\n | 'didCopyTokenKey'\n | 'didAddTokenFromList'\n | 'didEditTokenFromList'\n | 'willAccessTokenList'\n | 'willAddTokenFromList'\n | 'willCreateToken'\n | 'willDeleteToken'\n | 'willEditToken'\n | 'willEditTokenFromList';\n properties: {\n tokenType: 'api-token' | 'transfer-token';\n };\n}\n\ninterface WillModifyTokenEvent {\n name: 'didCreateToken' | 'didEditToken';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n type: 'custom' | 'full-access' | 'read-only' | Array<'push' | 'pull' | 'push-pull'>;\n };\n}\n\ninterface DeleteEntryEvents {\n name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface CreateEntryEvents {\n name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry';\n properties: {\n documentId?: string;\n status?: string;\n error?: unknown;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n };\n}\n\ninterface PublishEntryEvents {\n name: 'willPublishEntry' | 'didPublishEntry';\n properties: {\n documentId?: string;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n };\n}\n\ninterface UpdateEntryEvents {\n name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry';\n properties: {\n documentId?: string;\n status?: string;\n error?: unknown;\n fromPreview?: boolean;\n fromRelationModal?: boolean;\n };\n}\n\ninterface DidFilterEntriesEvent {\n name: 'didFilterEntries';\n properties: {\n useRelation: boolean;\n };\n}\n\ninterface DidPublishRelease {\n name: 'didPublishRelease';\n properties: {\n totalEntries: number;\n totalPublishedEntries: number;\n totalUnpublishedEntries: number;\n };\n}\n\ninterface DidUpdateCTBSchema {\n name: 'didUpdateCTBSchema';\n properties: {\n success: boolean;\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n };\n}\n\ninterface DidSkipGuidedTour {\n name: 'didSkipGuidedTour';\n properties: {\n name: keyof Tours | 'all';\n };\n}\n\ninterface DidCompleteGuidedTour {\n name: 'didCompleteGuidedTour';\n properties: {\n name: keyof Tours;\n };\n}\n\ninterface DidStartGuidedTour {\n name: 'didStartGuidedTourFromHomepage';\n properties: {\n name: keyof Tours;\n };\n}\n\ntype EventsWithProperties =\n | CreateEntryEvents\n | PublishEntryEvents\n | DidAccessAuthenticatedAdministrationEvent\n | DidAccessTokenListEvent\n | DidChangeModeEvent\n | DidCropFileEvent\n | DeleteEntryEvents\n | DidEditMediaLibraryElementsEvent\n | DidFilterMediaLibraryElementsEvent\n | DidFilterEntriesEvent\n | DidSelectContentTypeFieldTypeEvent\n | DidSelectFile\n | DidSortMediaLibraryElementsEvent\n | DidSubmitWithErrorsFirstAdminEvent\n | LogoEvent\n | TokenEvents\n | UpdateEntryEvents\n | WillModifyTokenEvent\n | WillNavigateEvent\n | DidPublishRelease\n | MediaEvents\n | DidUpdateCTBSchema\n | DidSkipGuidedTour\n | DidCompleteGuidedTour\n | DidStartGuidedTour;\n\nexport type TrackingEvent = EventWithoutProperties | EventsWithProperties;\nexport interface UseTrackingReturn {\n /**\n * This type helps show all the available event names before you start typing,\n * however autocomplete isn't great.\n */\n trackUsage<TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n trackUsage<TEvent extends Extract<TrackingEvent, { properties?: never }>>(\n event: TEvent['name'],\n properties?: never\n ): Promise<null | AxiosResponse<string>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackUsage<TEvent extends Extract<TrackingEvent, { properties: object }>>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n}\n\n/**\n * @description Used to send amplitude events to the Strapi Tracking hub.\n *\n * @example\n * ```tsx\n * import { useTracking } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { trackUsage } = useTracking();\n *\n * const handleClick = () => {\n * trackUsage('my-event', { myProperty: 'myValue' });\n * }\n *\n * return <button onClick={handleClick}>Send Event</button>\n * }\n * ```\n */\nconst useTracking = (): UseTrackingReturn => {\n const { uuid, telemetryProperties } = React.useContext(TrackingContext);\n const userId = useAppInfo('useTracking', (state) => state.userId);\n const trackUsage = React.useCallback(\n async <TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties?: TEvent['properties']\n ) => {\n try {\n if (uuid && !window.strapi.telemetryDisabled) {\n const res = await axios.post<string>(\n `${process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io'}/api/v2/track`,\n {\n event,\n userId,\n eventProperties: { ...properties },\n userProperties: {},\n groupProperties: {\n ...telemetryProperties,\n projectId: uuid,\n projectType: window.strapi.projectType,\n },\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }\n );\n\n return res;\n }\n } catch (err) {\n // Silence is golden\n }\n\n return null;\n },\n [telemetryProperties, userId, uuid]\n );\n\n return { trackUsage };\n};\n\nexport { TrackingProvider, useTracking };\n"],"names":["TrackingContext","React","createContext","uuid","TrackingProvider","children","token","useAuth","state","data","initData","useInitQuery","getAllWidgets","useStrapiApp","widgets","getAll","useTelemetryPropertiesQuery","undefined","skip","useEffect","event","fetch","process","env","STRAPI_ANALYTICS_URL","method","body","JSON","stringify","userId","eventPropeties","groupProperties","projectId","registeredWidgets","map","widget","uid","headers","value","useMemo","telemetryProperties","_jsx","Provider","useTracking","useContext","useAppInfo","trackUsage","useCallback","properties","window","strapi","telemetryDisabled","res","axios","post","eventProperties","userProperties","projectType","err"],"mappings":";;;;;;;;AAyBA;;AAEkG,qGAElG,MAAMA,eAAAA,iBAAkBC,KAAMC,CAAAA,aAAa,CAAuB;IAChEC,IAAM,EAAA;AACR,CAAA,CAAA;AAUA,MAAMC,gBAAmB,GAAA,CAAC,EAAEC,QAAQ,EAAyB,GAAA;AAC3D,IAAA,MAAMC,QAAQC,OAAQ,CAAA,KAAA,EAAO,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AACnD,IAAA,MAAM,EAAEG,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,YAAAA,EAAAA;AAC3B,IAAA,MAAM,EAAER,IAAI,EAAE,GAAGO,YAAY,EAAC;IAC9B,MAAME,aAAAA,GAAgBC,aAAa,kBAAoB,EAAA,CAACL,QAAUA,KAAMM,CAAAA,OAAO,CAACC,MAAM,CAAA;AAEtF,IAAA,MAAM,EAAEN,IAAI,EAAE,GAAGO,4BAA4BC,SAAW,EAAA;QACtDC,IAAM,EAAA,CAACR,QAAUP,EAAAA,IAAAA,IAAQ,CAACG;AAC5B,KAAA,CAAA;AACAL,IAAAA,KAAAA,CAAMkB,SAAS,CAAC,IAAA;AACd,QAAA,IAAIhB,QAAQM,IAAM,EAAA;AAChB,YAAA,MAAMW,KAAQ,GAAA,6BAAA;YACd,IAAI;gBACFC,KAAM,CAAA,CAAC,EAAEC,OAAAA,CAAQC,GAAG,CAACC,oBAAoB,IAAI,6BAAA,CAA8B,aAAa,CAAC,EAAE;oBACzFC,MAAQ,EAAA,MAAA;oBACRC,IAAMC,EAAAA,IAAAA,CAAKC,SAAS,CAAC;;AAEnBR,wBAAAA,KAAAA;wBACAS,MAAQ,EAAA,EAAA;AACRC,wBAAAA,cAAAA,EAAgB,EAAC;wBACjBC,eAAiB,EAAA;AACf,4BAAA,GAAGtB,IAAI;4BACPuB,SAAW7B,EAAAA,IAAAA;AACX8B,4BAAAA,iBAAAA,EAAmBrB,gBAAgBsB,GAAG,CAAC,CAACC,MAAAA,GAAWA,OAAOC,GAAG;AAC/D;AACF,qBAAA,CAAA;oBACAC,OAAS,EAAA;wBACP,cAAgB,EAAA,kBAAA;wBAChB,gBAAkBjB,EAAAA;AACpB;AACF,iBAAA,CAAA;AACF,aAAA,CAAE,OAAM;;AAER;AACF;KACC,EAAA;AAACX,QAAAA,IAAAA;AAAMN,QAAAA,IAAAA;AAAMS,QAAAA;AAAc,KAAA,CAAA;AAC9B,IAAA,MAAM0B,KAAQrC,GAAAA,KAAAA,CAAMsC,OAAO,CACzB,KAAO;AACLpC,YAAAA,IAAAA;YACAqC,mBAAqB/B,EAAAA;AACvB,SAAA,CACA,EAAA;AAACN,QAAAA,IAAAA;AAAMM,QAAAA;AAAK,KAAA,CAAA;IAGd,qBAAOgC,GAAA,CAACzC,gBAAgB0C,QAAQ,EAAA;QAACJ,KAAOA,EAAAA,KAAAA;AAAQjC,QAAAA,QAAAA,EAAAA;;AAClD;AAsXA;;;;;;;;;;;;;;;;;AAiBC,UACKsC,WAAc,GAAA,IAAA;IAClB,MAAM,EAAExC,IAAI,EAAEqC,mBAAmB,EAAE,GAAGvC,KAAAA,CAAM2C,UAAU,CAAC5C,eAAAA,CAAAA;AACvD,IAAA,MAAM6B,SAASgB,UAAW,CAAA,aAAA,EAAe,CAACrC,KAAAA,GAAUA,MAAMqB,MAAM,CAAA;AAChE,IAAA,MAAMiB,UAAa7C,GAAAA,KAAAA,CAAM8C,WAAW,CAClC,OACE3B,KACA4B,EAAAA,UAAAA,GAAAA;QAEA,IAAI;AACF,YAAA,IAAI7C,QAAQ,CAAC8C,MAAAA,CAAOC,MAAM,CAACC,iBAAiB,EAAE;AAC5C,gBAAA,MAAMC,GAAM,GAAA,MAAMC,KAAMC,CAAAA,IAAI,CAC1B,CAAC,EAAEhC,OAAQC,CAAAA,GAAG,CAACC,oBAAoB,IAAI,6BAA8B,CAAA,aAAa,CAAC,EACnF;AACEJ,oBAAAA,KAAAA;AACAS,oBAAAA,MAAAA;oBACA0B,eAAiB,EAAA;AAAE,wBAAA,GAAGP;AAAW,qBAAA;AACjCQ,oBAAAA,cAAAA,EAAgB,EAAC;oBACjBzB,eAAiB,EAAA;AACf,wBAAA,GAAGS,mBAAmB;wBACtBR,SAAW7B,EAAAA,IAAAA;wBACXsD,WAAaR,EAAAA,MAAAA,CAAOC,MAAM,CAACO;AAC7B;iBAEF,EAAA;oBACEpB,OAAS,EAAA;wBACP,cAAgB,EAAA,kBAAA;wBAChB,gBAAkBjB,EAAAA;AACpB;AACF,iBAAA,CAAA;gBAGF,OAAOgC,GAAAA;AACT;AACF,SAAA,CAAE,OAAOM,GAAK,EAAA;;AAEd;QAEA,OAAO,IAAA;KAET,EAAA;AAAClB,QAAAA,mBAAAA;AAAqBX,QAAAA,MAAAA;AAAQ1B,QAAAA;AAAK,KAAA,CAAA;IAGrC,OAAO;AAAE2C,QAAAA;AAAW,KAAA;AACtB;;;;"}
@@ -10,8 +10,6 @@ var reactIntl = require('react-intl');
10
10
  var reactRouterDom = require('react-router-dom');
11
11
  var lt = require('semver/functions/lt');
12
12
  var valid = require('semver/functions/valid');
13
- var Modal = require('../components/GuidedTour/Modal.js');
14
- var Provider = require('../components/GuidedTour/Provider.js');
15
13
  var LeftMenu = require('../components/LeftMenu.js');
16
14
  var NpsSurvey = require('../components/NpsSurvey.js');
17
15
  var PageHelpers = require('../components/PageHelpers.js');
@@ -48,7 +46,6 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
48
46
 
49
47
  const { version: strapiVersion } = packageInfo;
50
48
  const AdminLayout = ()=>{
51
- const setGuidedTourVisibility = Provider.useGuidedTour('AdminLayout', (state)=>state.setGuidedTourVisibility);
52
49
  const { formatMessage } = reactIntl.useIntl();
53
50
  const userInfo = Auth.useAuth('AuthenticatedApp', (state)=>state.user);
54
51
  const [userId, setUserId] = React__namespace.useState();
@@ -74,19 +71,6 @@ const AdminLayout = ()=>{
74
71
  }, [
75
72
  showReleaseNotification
76
73
  ]);
77
- const userRoles = Auth.useAuth('AuthenticatedApp', (state)=>state.user?.roles);
78
- React__namespace.useEffect(()=>{
79
- if (userRoles) {
80
- const isUserSuperAdmin = userRoles.find(({ code })=>code === 'strapi-super-admin');
81
- if (isUserSuperAdmin && appInfo?.autoReload) {
82
- setGuidedTourVisibility(true);
83
- }
84
- }
85
- }, [
86
- userRoles,
87
- appInfo?.autoReload,
88
- setGuidedTourVisibility
89
- ]);
90
74
  React__namespace.useEffect(()=>{
91
75
  users.hashAdminUserEmail(userInfo).then((id)=>{
92
76
  if (id) {
@@ -147,8 +131,7 @@ const AdminLayout = ()=>{
147
131
  flex: 1,
148
132
  children: [
149
133
  /*#__PURE__*/ jsxRuntime.jsx(UpsellBanner.UpsellBanner, {}),
150
- /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Outlet, {}),
151
- /*#__PURE__*/ jsxRuntime.jsx(Modal.GuidedTourModal, {})
134
+ /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Outlet, {})
152
135
  ]
153
136
  })
154
137
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -8,8 +8,6 @@ import { useIntl } from 'react-intl';
8
8
  import { Outlet } from 'react-router-dom';
9
9
  import lt from 'semver/functions/lt';
10
10
  import valid from 'semver/functions/valid';
11
- import { GuidedTourModal } from '../components/GuidedTour/Modal.mjs';
12
- import { useGuidedTour } from '../components/GuidedTour/Provider.mjs';
13
11
  import { LeftMenu } from '../components/LeftMenu.mjs';
14
12
  import { NpsSurvey } from '../components/NpsSurvey.mjs';
15
13
  import { Page } from '../components/PageHelpers.mjs';
@@ -27,7 +25,6 @@ import { hashAdminUserEmail } from '../utils/users.mjs';
27
25
 
28
26
  const { version: strapiVersion } = packageInfo;
29
27
  const AdminLayout = ()=>{
30
- const setGuidedTourVisibility = useGuidedTour('AdminLayout', (state)=>state.setGuidedTourVisibility);
31
28
  const { formatMessage } = useIntl();
32
29
  const userInfo = useAuth('AuthenticatedApp', (state)=>state.user);
33
30
  const [userId, setUserId] = React.useState();
@@ -53,19 +50,6 @@ const AdminLayout = ()=>{
53
50
  }, [
54
51
  showReleaseNotification
55
52
  ]);
56
- const userRoles = useAuth('AuthenticatedApp', (state)=>state.user?.roles);
57
- React.useEffect(()=>{
58
- if (userRoles) {
59
- const isUserSuperAdmin = userRoles.find(({ code })=>code === 'strapi-super-admin');
60
- if (isUserSuperAdmin && appInfo?.autoReload) {
61
- setGuidedTourVisibility(true);
62
- }
63
- }
64
- }, [
65
- userRoles,
66
- appInfo?.autoReload,
67
- setGuidedTourVisibility
68
- ]);
69
53
  React.useEffect(()=>{
70
54
  hashAdminUserEmail(userInfo).then((id)=>{
71
55
  if (id) {
@@ -126,8 +110,7 @@ const AdminLayout = ()=>{
126
110
  flex: 1,
127
111
  children: [
128
112
  /*#__PURE__*/ jsx(UpsellBanner, {}),
129
- /*#__PURE__*/ jsx(Outlet, {}),
130
- /*#__PURE__*/ jsx(GuidedTourModal, {})
113
+ /*#__PURE__*/ jsx(Outlet, {})
131
114
  ]
132
115
  })
133
116
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","useGuidedTour","state","formatMessage","useIntl","userInfo","useAuth","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","GuidedTourModal","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <UpsellBanner />\n <Outlet />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","alignItems","LeftMenu","flex","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -10,7 +10,6 @@ var styled = require('styled-components');
10
10
  var yup = require('yup');
11
11
  var Form = require('../../../components/Form.js');
12
12
  var Renderer = require('../../../components/FormInputs/Renderer.js');
13
- var Provider = require('../../../components/GuidedTour/Provider.js');
14
13
  var NpsSurvey = require('../../../components/NpsSurvey.js');
15
14
  var UnauthenticatedLogo = require('../../../components/UnauthenticatedLogo.js');
16
15
  var hooks = require('../../../core/store/hooks.js');
@@ -159,7 +158,6 @@ const Register = ({ hasAdmin })=>{
159
158
  const [apiError, setApiError] = React__namespace.useState();
160
159
  const { trackUsage } = Tracking.useTracking();
161
160
  const { formatMessage } = reactIntl.useIntl();
162
- const setSkipped = Provider.useGuidedTour('Register', (state)=>state.setSkipped);
163
161
  const { search: searchString } = reactRouterDom.useLocation();
164
162
  const query = React__namespace.useMemo(()=>new URLSearchParams(searchString), [
165
163
  searchString
@@ -195,15 +193,6 @@ const Register = ({ hasAdmin })=>{
195
193
  dispatch(reducer.login({
196
194
  token: res.data.token
197
195
  }));
198
- const { roles } = res.data.user;
199
- if (roles) {
200
- const isUserSuperAdmin = roles.find(({ code })=>code === 'strapi-super-admin');
201
- if (isUserSuperAdmin) {
202
- localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));
203
- setSkipped(false);
204
- trackUsage('didLaunchGuidedtour');
205
- }
206
- }
207
196
  if (news) {
208
197
  // Only enable EE survey if user accepted the newsletter
209
198
  setNpsSurveySettings((s)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","setSkipped","useGuidedTour","state","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","roles","user","isUserSuperAdmin","find","code","localStorage","setItem","JSON","stringify","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
1
+ {"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","matches","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","login","token","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","col","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":"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"}
@@ -9,7 +9,6 @@ import * as yup from 'yup';
9
9
  import { ValidationError } from 'yup';
10
10
  import { Form } from '../../../components/Form.mjs';
11
11
  import { InputRenderer as MemoizedInputRenderer } from '../../../components/FormInputs/Renderer.mjs';
12
- import { useGuidedTour } from '../../../components/GuidedTour/Provider.mjs';
13
12
  import { useNpsSurveySettings } from '../../../components/NpsSurvey.mjs';
14
13
  import { Logo } from '../../../components/UnauthenticatedLogo.mjs';
15
14
  import { useTypedDispatch } from '../../../core/store/hooks.mjs';
@@ -138,7 +137,6 @@ const Register = ({ hasAdmin })=>{
138
137
  const [apiError, setApiError] = React.useState();
139
138
  const { trackUsage } = useTracking();
140
139
  const { formatMessage } = useIntl();
141
- const setSkipped = useGuidedTour('Register', (state)=>state.setSkipped);
142
140
  const { search: searchString } = useLocation();
143
141
  const query = React.useMemo(()=>new URLSearchParams(searchString), [
144
142
  searchString
@@ -174,15 +172,6 @@ const Register = ({ hasAdmin })=>{
174
172
  dispatch(login({
175
173
  token: res.data.token
176
174
  }));
177
- const { roles } = res.data.user;
178
- if (roles) {
179
- const isUserSuperAdmin = roles.find(({ code })=>code === 'strapi-super-admin');
180
- if (isUserSuperAdmin) {
181
- localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));
182
- setSkipped(false);
183
- trackUsage('didLaunchGuidedtour');
184
- }
185
- }
186
175
  if (news) {
187
176
  // Only enable EE survey if user accepted the newsletter
188
177
  setNpsSurveySettings((s)=>({