@strapi/admin 5.48.1 → 5.49.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 (317) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +33 -20
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +6 -1
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/Filters.js +3 -2
  12. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +9 -5
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  19. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  20. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  21. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  22. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  24. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  26. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  28. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  30. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  31. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  32. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  33. package/dist/admin/admin/src/components/LeftMenu.js +3 -2
  34. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  35. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  36. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  37. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  38. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  39. package/dist/admin/admin/src/components/Pagination.js +3 -2
  40. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  41. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  42. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  43. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  44. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  45. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  46. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  47. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  48. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  49. package/dist/admin/admin/src/components/Table.js +3 -2
  50. package/dist/admin/admin/src/components/Table.js.map +1 -1
  51. package/dist/admin/admin/src/components/Theme.js +3 -2
  52. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  53. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  54. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  55. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  56. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  57. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  58. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  59. package/dist/admin/admin/src/core/apis/router.js +20 -16
  60. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  61. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  62. package/dist/admin/admin/src/features/Auth.js +78 -6
  63. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  64. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  65. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  66. package/dist/admin/admin/src/features/BackButton.js +3 -2
  67. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  68. package/dist/admin/admin/src/features/Configuration.js +3 -2
  69. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  70. package/dist/admin/admin/src/features/Notifications.js +3 -2
  71. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  72. package/dist/admin/admin/src/features/Tracking.js +7 -3
  73. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  74. package/dist/admin/admin/src/features/Widgets.js +3 -2
  75. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  76. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  77. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  78. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  79. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  80. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  81. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  82. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  83. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  84. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  85. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  87. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  89. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  90. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  91. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  92. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  93. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  94. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  95. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  96. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  97. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  98. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  99. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  100. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  101. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  102. package/dist/admin/admin/src/hooks/useMenu.js +7 -3
  103. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  104. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  105. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  106. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  107. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  108. package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
  109. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  110. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  111. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  112. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +11 -5
  113. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  114. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  115. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  116. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  117. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  118. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  119. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  120. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  121. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  122. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  123. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
  125. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  127. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
  129. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  130. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  131. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  132. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  133. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  135. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  137. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  138. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  139. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  141. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  143. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  144. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  145. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  146. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  147. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  149. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  151. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  155. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  157. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +3 -2
  159. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  161. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  163. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +4 -3
  165. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +4 -3
  167. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  169. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -6
  171. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  173. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  175. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  176. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  177. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  179. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +33 -25
  181. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  183. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  185. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  187. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +8 -3
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  193. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  195. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  197. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  199. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  200. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  201. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  202. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  203. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  204. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  205. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  207. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  209. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  211. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  212. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  213. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  214. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  215. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  216. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  217. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  218. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  219. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  220. package/dist/admin/admin/src/utils/locales.js +3 -2
  221. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  222. package/dist/admin/admin/src/utils/objects.js +9 -4
  223. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  224. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  225. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  226. package/dist/admin/admin/src/utils/urls.js +5 -1
  227. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  228. package/dist/admin/admin/tests/utils.js +3 -2
  229. package/dist/admin/admin/tests/utils.js.map +1 -1
  230. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  231. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  232. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  233. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  234. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  235. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  236. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  237. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  238. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  239. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  240. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  241. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  242. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  243. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  244. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  245. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  246. package/dist/admin/src/StrapiApp.d.ts +7 -1
  247. package/dist/admin/src/core/apis/router.d.ts +1 -2
  248. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  249. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  250. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  251. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  252. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  253. package/dist/server/ee/server/src/controllers/user.js +6 -2
  254. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  255. package/dist/server/ee/server/src/services/auth.js +5 -1
  256. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  257. package/dist/server/ee/server/src/services/user.js +8 -4
  258. package/dist/server/ee/server/src/services/user.js.map +1 -1
  259. package/dist/server/index.js +6 -2
  260. package/dist/server/index.js.map +1 -1
  261. package/dist/server/server/src/ai/services/ai.js +10 -4
  262. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  263. package/dist/server/server/src/controllers/admin.js +9 -4
  264. package/dist/server/server/src/controllers/admin.js.map +1 -1
  265. package/dist/server/server/src/controllers/authentication.js +7 -2
  266. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  267. package/dist/server/server/src/controllers/user.js +3 -2
  268. package/dist/server/server/src/controllers/user.js.map +1 -1
  269. package/dist/server/server/src/controllers/webhooks.js +7 -2
  270. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  271. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  272. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  273. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  274. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  275. package/dist/server/server/src/routes/serve-admin-panel.js +8 -3
  276. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  277. package/dist/server/server/src/services/api-token.js +7 -3
  278. package/dist/server/server/src/services/api-token.js.map +1 -1
  279. package/dist/server/server/src/services/auth.js +8 -3
  280. package/dist/server/server/src/services/auth.js.map +1 -1
  281. package/dist/server/server/src/services/content-type.js +6 -2
  282. package/dist/server/server/src/services/content-type.js.map +1 -1
  283. package/dist/server/server/src/services/encryption.js +8 -4
  284. package/dist/server/server/src/services/encryption.js.map +1 -1
  285. package/dist/server/server/src/services/passport.js +6 -2
  286. package/dist/server/server/src/services/passport.js.map +1 -1
  287. package/dist/server/server/src/services/permission/engine.js +5 -1
  288. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  289. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  290. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  291. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  292. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  293. package/dist/server/server/src/services/permission/queries.js +5 -1
  294. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  295. package/dist/server/server/src/services/project-settings.js +6 -2
  296. package/dist/server/server/src/services/project-settings.js.map +1 -1
  297. package/dist/server/server/src/services/role.js +8 -4
  298. package/dist/server/server/src/services/role.js.map +1 -1
  299. package/dist/server/server/src/services/token.js +7 -2
  300. package/dist/server/server/src/services/token.js.map +1 -1
  301. package/dist/server/server/src/services/transfer/permission.js +5 -1
  302. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  303. package/dist/server/server/src/services/transfer/token.js +10 -5
  304. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  305. package/dist/server/server/src/services/user.js +10 -6
  306. package/dist/server/server/src/services/user.js.map +1 -1
  307. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  308. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  309. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  310. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  311. package/dist/server/server/src/validation/common-validators.js +6 -2
  312. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  313. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  314. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  315. package/dist/server/shared/utils/session-auth.js +5 -1
  316. package/dist/server/shared/utils/session-auth.js.map +1 -1
  317. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Step.js","sources":["../../../../../../../admin/src/components/GuidedTour/Steps/Step.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Popover,\n Box,\n Flex,\n Button,\n Typography,\n LinkButton,\n FlexProps,\n} from '@strapi/design-system';\nimport { FormattedMessage, useIntl, type MessageDescriptor } from 'react-intl';\nimport { To, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { useGuidedTour, type ValidTourName } from '../Context';\nimport { tours } from '../Tours';\n\n/* -------------------------------------------------------------------------------------------------\n * Common Step Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst StepCount = ({\n tourName,\n displayedCurrentStep,\n displayedTourLength,\n}: {\n tourName: ValidTourName;\n displayedCurrentStep?: number;\n displayedTourLength?: number;\n}) => {\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n const currentStep = displayedCurrentStep ?? state.tours[tourName].currentStep + 1;\n const displayedStepCount = displayedTourLength ?? tours[tourName]._meta.displayedStepCount;\n\n return (\n <Typography variant=\"omega\" fontSize=\"12px\">\n <FormattedMessage\n id=\"tours.stepCount\"\n defaultMessage=\"Step {currentStep} of {tourLength}\"\n values={{ currentStep, tourLength: displayedStepCount }}\n />\n </Typography>\n );\n};\n\nconst GotItAction = ({ onClick }: { onClick: () => void }) => {\n return (\n <Button onClick={onClick}>\n <FormattedMessage id=\"tours.gotIt\" defaultMessage=\"Got it\" />\n </Button>\n );\n};\n\nexport type DefaultActionsProps = {\n showSkip?: boolean;\n showPrevious?: boolean;\n to?: To;\n onNextStep?: () => void;\n onPreviousStep?: () => void;\n tourName: ValidTourName;\n};\nconst DefaultActions = ({\n showSkip,\n showPrevious,\n to,\n tourName,\n onNextStep,\n onPreviousStep,\n}: DefaultActionsProps) => {\n const { trackUsage } = useTracking();\n const dispatch = useGuidedTour('GuidedTourPopover', (s) => s.dispatch);\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n\n // Safety check: if tours state is missing, return null\n if (!state.tours || !state.tours[tourName]) {\n return null;\n }\n\n const currentStep = state.tours[tourName].currentStep + 1;\n const actualTourLength = tours[tourName]._meta.totalStepCount;\n\n const handleSkip = () => {\n trackUsage('didSkipGuidedTour', { name: tourName });\n dispatch({ type: 'skip_tour', payload: tourName });\n };\n\n const handleNextStep = () => {\n if (currentStep === actualTourLength) {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n }\n\n if (onNextStep) {\n onNextStep();\n } else {\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n const handlePreviousStep = () => {\n if (onPreviousStep) {\n onPreviousStep();\n } else {\n dispatch({ type: 'previous_step', payload: tourName });\n }\n };\n\n return (\n <Flex gap={2}>\n {showSkip && (\n <Button variant=\"tertiary\" onClick={handleSkip}>\n <FormattedMessage id=\"tours.skip\" defaultMessage=\"Skip\" />\n </Button>\n )}\n {!showSkip && showPrevious && (\n <Button variant=\"tertiary\" onClick={handlePreviousStep}>\n <FormattedMessage id=\"tours.previous\" defaultMessage=\"Previous\" />\n </Button>\n )}\n {to ? (\n <LinkButton tag={NavLink} to={to} onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </LinkButton>\n ) : (\n <Button onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </Button>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype WithChildren = {\n children: React.ReactNode;\n id?: never;\n defaultMessage?: never;\n};\n\ntype WithIntl = {\n children?: undefined;\n id: MessageDescriptor['id'];\n defaultMessage: MessageDescriptor['defaultMessage'];\n withArrow?: boolean;\n};\n\ntype WithActionsChildren = {\n children: React.ReactNode;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype WithActionsProps = {\n children?: undefined;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype StepProps = WithChildren | WithIntl;\ntype ActionsProps = WithActionsChildren | WithActionsProps;\n\ntype Step = {\n Root: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof Popover.Content> & { withArrow?: boolean }\n >;\n Title: (props: StepProps) => React.ReactNode;\n Content: (\n props: StepProps & {\n values?: Record<string, React.ReactNode | ((chunks: React.ReactNode) => React.ReactNode)>;\n }\n ) => React.ReactNode;\n Actions: (props: ActionsProps & { to?: string } & FlexProps) => React.ReactNode;\n};\n\nconst ActionsContainer = styled(Flex)`\n border-top: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n`;\n\nconst ContentContainer = styled(Box)`\n p {\n margin-top: ${({ theme }) => theme.spaces[5]};\n }\n ul {\n list-style-type: disc;\n padding-left: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/**\n * TODO:\n * We should probably move all arrow styles + svg to the DS\n */\nconst PopoverArrow = styled(Popover.Arrow)`\n fill: ${({ theme }) => theme.colors.neutral0};\n transform: translateY(-16px) rotate(-90deg);\n`;\n\nconst createStepComponents = (tourName: ValidTourName): Step => ({\n Root: React.forwardRef(({ withArrow = true, ...props }, ref) => {\n return (\n <Popover.Content\n ref={ref}\n aria-labelledby=\"guided-tour-title\"\n side=\"top\"\n align=\"center\"\n style={{ border: 'none' }}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {withArrow && (\n <PopoverArrow asChild>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"23\"\n height=\"25\"\n viewBox=\"0 0 23 25\"\n fill=\"none\"\n >\n <path d=\"M11 24.5L1.82843 15.3284C0.266332 13.7663 0.26633 11.2337 1.82843 9.67157L11 0.5L23 12.5L11 24.5Z\" />\n </svg>\n </PopoverArrow>\n )}\n <Flex width=\"360px\" direction=\"column\" alignItems=\"start\">\n {props.children}\n </Flex>\n </Popover.Content>\n );\n }),\n\n Title: (props) => {\n return (\n <Box paddingTop={5} paddingLeft={5} paddingRight={5} paddingBottom={1} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <Typography tag=\"h1\" id=\"guided-tour-title\" variant=\"omega\" fontWeight=\"bold\">\n <FormattedMessage id={props.id} defaultMessage={props.defaultMessage} />\n </Typography>\n )}\n </Box>\n );\n },\n\n Content: (props) => {\n const { formatMessage } = useIntl();\n let content = '';\n if (!('children' in props)) {\n content = formatMessage({\n id: props.id,\n defaultMessage: props.defaultMessage,\n });\n }\n return (\n <Box paddingBottom={5} paddingLeft={5} paddingRight={5} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <ContentContainer>\n <Typography tag=\"div\" variant=\"omega\" dangerouslySetInnerHTML={{ __html: content }} />\n </ContentContainer>\n )}\n </Box>\n );\n },\n\n Actions: ({\n showStepCount = true,\n showPrevious = true,\n showSkip = false,\n to,\n children,\n ...flexProps\n }) => {\n return (\n <ActionsContainer\n width=\"100%\"\n padding={3}\n paddingLeft={5}\n justifyContent={showStepCount ? 'space-between' : 'flex-end'}\n {...flexProps}\n >\n {children ? (\n children\n ) : (\n <>\n {showStepCount && <StepCount tourName={tourName} />}\n <DefaultActions\n tourName={tourName}\n showSkip={showSkip}\n showPrevious={!showSkip && showPrevious}\n to={to}\n />\n </>\n )}\n </ActionsContainer>\n );\n },\n});\n\nexport type { Step };\nexport { createStepComponents, GotItAction, StepCount, DefaultActions };\n"],"names":["StepCount","tourName","displayedCurrentStep","displayedTourLength","state","useGuidedTour","s","currentStep","tours","displayedStepCount","_meta","_jsx","Typography","variant","fontSize","FormattedMessage","id","defaultMessage","values","tourLength","GotItAction","onClick","Button","DefaultActions","showSkip","showPrevious","to","onNextStep","onPreviousStep","trackUsage","useTracking","dispatch","actualTourLength","totalStepCount","handleSkip","name","type","payload","handleNextStep","handlePreviousStep","_jsxs","Flex","gap","LinkButton","tag","NavLink","ActionsContainer","styled","theme","colors","neutral150","ContentContainer","Box","spaces","PopoverArrow","Popover","Arrow","neutral0","createStepComponents","Root","React","forwardRef","withArrow","props","ref","Content","aria-labelledby","side","align","style","border","e","stopPropagation","asChild","svg","xmlns","width","height","viewBox","fill","path","d","direction","alignItems","children","Title","paddingTop","paddingLeft","paddingRight","paddingBottom","fontWeight","formatMessage","useIntl","content","dangerouslySetInnerHTML","__html","Actions","showStepCount","flexProps","padding","justifyContent","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA;;qGAIA,MAAMA,YAAY,CAAC,EACjBC,QAAQ,EACRC,oBAAoB,EACpBC,mBAAmB,EAKpB,GAAA;AACC,IAAA,MAAMC,QAAQC,qBAAAA,CAAc,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;IAC/D,MAAMG,WAAAA,GAAcL,wBAAwBE,KAAAA,CAAMI,KAAK,CAACP,QAAAA,CAAS,CAACM,WAAW,GAAG,CAAA;IAChF,MAAME,kBAAAA,GAAqBN,uBAAuBK,WAAK,CAACP,SAAS,CAACS,KAAK,CAACD,kBAAkB;AAE1F,IAAA,qBACEE,cAAA,CAACC,uBAAAA,EAAAA;QAAWC,OAAAA,EAAQ,OAAA;QAAQC,QAAAA,EAAS,MAAA;AACnC,QAAA,QAAA,gBAAAH,cAAA,CAACI,0BAAAA,EAAAA;YACCC,EAAAA,EAAG,iBAAA;YACHC,cAAAA,EAAe,oCAAA;YACfC,MAAAA,EAAQ;AAAEX,gBAAAA,WAAAA;gBAAaY,UAAAA,EAAYV;AAAmB;;;AAI9D;AAEA,MAAMW,WAAAA,GAAc,CAAC,EAAEC,OAAO,EAA2B,GAAA;AACvD,IAAA,qBACEV,cAAA,CAACW,mBAAAA,EAAAA;QAAOD,OAAAA,EAASA,OAAAA;AACf,QAAA,QAAA,gBAAAV,cAAA,CAACI,0BAAAA,EAAAA;YAAiBC,EAAAA,EAAG,aAAA;YAAcC,cAAAA,EAAe;;;AAGxD;AAUA,MAAMM,cAAAA,GAAiB,CAAC,EACtBC,QAAQ,EACRC,YAAY,EACZC,EAAE,EACFzB,QAAQ,EACR0B,UAAU,EACVC,cAAc,EACM,GAAA;IACpB,MAAM,EAAEC,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AACvB,IAAA,MAAMC,WAAW1B,qBAAAA,CAAc,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEyB,QAAQ,CAAA;AACrE,IAAA,MAAM3B,QAAQC,qBAAAA,CAAc,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;;IAG/D,IAAI,CAACA,MAAMI,KAAK,IAAI,CAACJ,KAAAA,CAAMI,KAAK,CAACP,QAAAA,CAAS,EAAE;QAC1C,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMM,cAAcH,KAAAA,CAAMI,KAAK,CAACP,QAAAA,CAAS,CAACM,WAAW,GAAG,CAAA;AACxD,IAAA,MAAMyB,mBAAmBxB,WAAK,CAACP,SAAS,CAACS,KAAK,CAACuB,cAAc;AAE7D,IAAA,MAAMC,UAAAA,GAAa,IAAA;AACjBL,QAAAA,UAAAA,CAAW,mBAAA,EAAqB;YAAEM,IAAAA,EAAMlC;AAAS,SAAA,CAAA;QACjD8B,QAAAA,CAAS;YAAEK,IAAAA,EAAM,WAAA;YAAaC,OAAAA,EAASpC;AAAS,SAAA,CAAA;AAClD,IAAA,CAAA;AAEA,IAAA,MAAMqC,cAAAA,GAAiB,IAAA;AACrB,QAAA,IAAI/B,gBAAgByB,gBAAAA,EAAkB;AACpCH,YAAAA,UAAAA,CAAW,uBAAA,EAAyB;gBAAEM,IAAAA,EAAMlC;AAAS,aAAA,CAAA;AACvD,QAAA;AAEA,QAAA,IAAI0B,UAAAA,EAAY;AACdA,YAAAA,UAAAA,EAAAA;QACF,CAAA,MAAO;YACLI,QAAAA,CAAS;gBAAEK,IAAAA,EAAM,WAAA;gBAAaC,OAAAA,EAASpC;AAAS,aAAA,CAAA;AAClD,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMsC,kBAAAA,GAAqB,IAAA;AACzB,QAAA,IAAIX,cAAAA,EAAgB;AAClBA,YAAAA,cAAAA,EAAAA;QACF,CAAA,MAAO;YACLG,QAAAA,CAAS;gBAAEK,IAAAA,EAAM,eAAA;gBAAiBC,OAAAA,EAASpC;AAAS,aAAA,CAAA;AACtD,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACEuC,eAAA,CAACC,iBAAAA,EAAAA;QAAKC,GAAAA,EAAK,CAAA;;AACRlB,YAAAA,QAAAA,kBACCb,cAAA,CAACW,mBAAAA,EAAAA;gBAAOT,OAAAA,EAAQ,UAAA;gBAAWQ,OAAAA,EAASa,UAAAA;AAClC,gBAAA,QAAA,gBAAAvB,cAAA,CAACI,0BAAAA,EAAAA;oBAAiBC,EAAAA,EAAG,YAAA;oBAAaC,cAAAA,EAAe;;;YAGpD,CAACO,QAAAA,IAAYC,8BACZd,cAAA,CAACW,mBAAAA,EAAAA;gBAAOT,OAAAA,EAAQ,UAAA;gBAAWQ,OAAAA,EAASkB,kBAAAA;AAClC,gBAAA,QAAA,gBAAA5B,cAAA,CAACI,0BAAAA,EAAAA;oBAAiBC,EAAAA,EAAG,gBAAA;oBAAiBC,cAAAA,EAAe;;;AAGxDS,YAAAA,EAAAA,iBACCf,cAAA,CAACgC,uBAAAA,EAAAA;gBAAWC,GAAAA,EAAKC,sBAAAA;gBAASnB,EAAAA,EAAIA,EAAAA;gBAAIL,OAAAA,EAASiB,cAAAA;AACzC,gBAAA,QAAA,gBAAA3B,cAAA,CAACI,0BAAAA,EAAAA;oBAAiBC,EAAAA,EAAG,YAAA;oBAAaC,cAAAA,EAAe;;+BAGnDN,cAAA,CAACW,mBAAAA,EAAAA;gBAAOD,OAAAA,EAASiB,cAAAA;AACf,gBAAA,QAAA,gBAAA3B,cAAA,CAACI,0BAAAA,EAAAA;oBAAiBC,EAAAA,EAAG,YAAA;oBAAaC,cAAAA,EAAe;;;;;AAK3D;AAiDA,MAAM6B,gBAAAA,GAAmBC,aAAAA,CAAON,iBAAAA,CAAK;AACvB,cAAA,EAAE,CAAC,EAAEO,KAAK,EAAE,GAAK,CAAC,UAAU,EAAEA,KAAAA,CAAMC,MAAM,CAACC,UAAU,EAAE,CAAC;AACtE,CAAC;AAED,MAAMC,gBAAAA,GAAmBJ,aAAAA,CAAOK,gBAAAA,CAAI;;gBAEpB,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMK,MAAM,CAAC,CAAA,CAAE,CAAC;;;;kBAI/B,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAAA,CAAMK,MAAM,CAAC,CAAA,CAAE,CAAC;;AAEnD,CAAC;AAED;;;AAGC,IACD,MAAMC,YAAAA,GAAeP,aAAAA,CAAOQ,oBAAAA,CAAQC,KAAK,CAAC;QAClC,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACQ,QAAQ,CAAC;;AAE/C,CAAC;AAED,MAAMC,oBAAAA,GAAuB,CAACzD,QAAAA,IAAmC;QAC/D0D,IAAAA,gBAAMC,gBAAAA,CAAMC,UAAU,CAAC,CAAC,EAAEC,YAAY,IAAI,EAAE,GAAGC,KAAAA,EAAO,EAAEC,GAAAA,GAAAA;YACtD,qBACExB,eAAA,CAACe,qBAAQU,OAAO,EAAA;gBACdD,GAAAA,EAAKA,GAAAA;gBACLE,iBAAAA,EAAgB,mBAAA;gBAChBC,IAAAA,EAAK,KAAA;gBACLC,KAAAA,EAAM,QAAA;gBACNC,KAAAA,EAAO;oBAAEC,MAAAA,EAAQ;AAAO,iBAAA;gBACxBjD,OAAAA,EAAS,CAACkD,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;AAChC,gBAAA,GAAGT,KAAK;;AAERD,oBAAAA,SAAAA,kBACCnD,cAAA,CAAC2C,YAAAA,EAAAA;wBAAamB,OAAO,EAAA,IAAA;AACnB,wBAAA,QAAA,gBAAA9D,cAAA,CAAC+D,KAAAA,EAAAA;4BACCC,KAAAA,EAAM,4BAAA;4BACNC,KAAAA,EAAM,IAAA;4BACNC,MAAAA,EAAO,IAAA;4BACPC,OAAAA,EAAQ,WAAA;4BACRC,IAAAA,EAAK,MAAA;AAEL,4BAAA,QAAA,gBAAApE,cAAA,CAACqE,MAAAA,EAAAA;gCAAKC,CAAAA,EAAE;;;;kCAIdtE,cAAA,CAAC8B,iBAAAA,EAAAA;wBAAKmC,KAAAA,EAAM,OAAA;wBAAQM,SAAAA,EAAU,QAAA;wBAASC,UAAAA,EAAW,OAAA;AAC/CpB,wBAAAA,QAAAA,EAAAA,KAAAA,CAAMqB;;;;AAIf,QAAA,CAAA,CAAA;AAEAC,QAAAA,KAAAA,EAAO,CAACtB,KAAAA,GAAAA;AACN,YAAA,qBACEpD,cAAA,CAACyC,gBAAAA,EAAAA;gBAAIkC,UAAAA,EAAY,CAAA;gBAAGC,WAAAA,EAAa,CAAA;gBAAGC,YAAAA,EAAc,CAAA;gBAAGC,aAAAA,EAAe,CAAA;gBAAGb,KAAAA,EAAM,MAAA;AAC1E,gBAAA,QAAA,EAAA,UAAA,IAAcb,KAAAA,GACbA,KAAAA,CAAMqB,QAAQ,iBAEdzE,cAAA,CAACC,uBAAAA,EAAAA;oBAAWgC,GAAAA,EAAI,IAAA;oBAAK5B,EAAAA,EAAG,mBAAA;oBAAoBH,OAAAA,EAAQ,OAAA;oBAAQ6E,UAAAA,EAAW,MAAA;AACrE,oBAAA,QAAA,gBAAA/E,cAAA,CAACI,0BAAAA,EAAAA;AAAiBC,wBAAAA,EAAAA,EAAI+C,MAAM/C,EAAE;AAAEC,wBAAAA,cAAAA,EAAgB8C,MAAM9C;;;;AAKhE,QAAA,CAAA;AAEAgD,QAAAA,OAAAA,EAAS,CAACF,KAAAA,GAAAA;YACR,MAAM,EAAE4B,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,YAAA,IAAIC,OAAAA,GAAU,EAAA;AACd,YAAA,IAAI,EAAE,UAAA,IAAc9B,KAAI,CAAA,EAAI;AAC1B8B,gBAAAA,OAAAA,GAAUF,aAAAA,CAAc;AACtB3E,oBAAAA,EAAAA,EAAI+C,MAAM/C,EAAE;AACZC,oBAAAA,cAAAA,EAAgB8C,MAAM9C;AACxB,iBAAA,CAAA;AACF,YAAA;AACA,YAAA,qBACEN,cAAA,CAACyC,gBAAAA,EAAAA;gBAAIqC,aAAAA,EAAe,CAAA;gBAAGF,WAAAA,EAAa,CAAA;gBAAGC,YAAAA,EAAc,CAAA;gBAAGZ,KAAAA,EAAM,MAAA;AAC3D,gBAAA,QAAA,EAAA,UAAA,IAAcb,KAAAA,GACbA,KAAAA,CAAMqB,QAAQ,iBAEdzE,cAAA,CAACwC,gBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAxC,cAAA,CAACC,uBAAAA,EAAAA;wBAAWgC,GAAAA,EAAI,KAAA;wBAAM/B,OAAAA,EAAQ,OAAA;wBAAQiF,uBAAAA,EAAyB;4BAAEC,MAAAA,EAAQF;AAAQ;;;;AAK3F,QAAA,CAAA;AAEAG,QAAAA,OAAAA,EAAS,CAAC,EACRC,aAAAA,GAAgB,IAAI,EACpBxE,eAAe,IAAI,EACnBD,QAAAA,GAAW,KAAK,EAChBE,EAAE,EACF0D,QAAQ,EACR,GAAGc,SAAAA,EACJ,GAAA;AACC,YAAA,qBACEvF,cAAA,CAACmC,gBAAAA,EAAAA;gBACC8B,KAAAA,EAAM,MAAA;gBACNuB,OAAAA,EAAS,CAAA;gBACTZ,WAAAA,EAAa,CAAA;AACba,gBAAAA,cAAAA,EAAgBH,gBAAgB,eAAA,GAAkB,UAAA;AACjD,gBAAA,GAAGC,SAAS;AAEZd,gBAAAA,QAAAA,EAAAA,QAAAA,GACCA,QAAAA,iBAEA5C,eAAA,CAAA6D,mBAAA,EAAA;;AACGJ,wBAAAA,aAAAA,kBAAiBtF,cAAA,CAACX,SAAAA,EAAAA;4BAAUC,QAAAA,EAAUA;;sCACvCU,cAAA,CAACY,cAAAA,EAAAA;4BACCtB,QAAAA,EAAUA,QAAAA;4BACVuB,QAAAA,EAAUA,QAAAA;AACVC,4BAAAA,YAAAA,EAAc,CAACD,QAAAA,IAAYC,YAAAA;4BAC3BC,EAAAA,EAAIA;;;;;AAMhB,QAAA;KACF;;;;;;;"}
1
+ {"version":3,"file":"Step.js","sources":["../../../../../../../admin/src/components/GuidedTour/Steps/Step.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Popover,\n Box,\n Flex,\n Button,\n Typography,\n LinkButton,\n FlexProps,\n} from '@strapi/design-system';\nimport { FormattedMessage, useIntl, type MessageDescriptor } from 'react-intl';\nimport { To, NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../../features/Tracking';\nimport { useGuidedTour, type ValidTourName } from '../Context';\nimport { tours } from '../Tours';\n\n/* -------------------------------------------------------------------------------------------------\n * Common Step Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst StepCount = ({\n tourName,\n displayedCurrentStep,\n displayedTourLength,\n}: {\n tourName: ValidTourName;\n displayedCurrentStep?: number;\n displayedTourLength?: number;\n}) => {\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n const currentStep = displayedCurrentStep ?? state.tours[tourName].currentStep + 1;\n const displayedStepCount = displayedTourLength ?? tours[tourName]._meta.displayedStepCount;\n\n return (\n <Typography variant=\"omega\" fontSize=\"12px\">\n <FormattedMessage\n id=\"tours.stepCount\"\n defaultMessage=\"Step {currentStep} of {tourLength}\"\n values={{ currentStep, tourLength: displayedStepCount }}\n />\n </Typography>\n );\n};\n\nconst GotItAction = ({ onClick }: { onClick: () => void }) => {\n return (\n <Button onClick={onClick}>\n <FormattedMessage id=\"tours.gotIt\" defaultMessage=\"Got it\" />\n </Button>\n );\n};\n\nexport type DefaultActionsProps = {\n showSkip?: boolean;\n showPrevious?: boolean;\n to?: To;\n onNextStep?: () => void;\n onPreviousStep?: () => void;\n tourName: ValidTourName;\n};\nconst DefaultActions = ({\n showSkip,\n showPrevious,\n to,\n tourName,\n onNextStep,\n onPreviousStep,\n}: DefaultActionsProps) => {\n const { trackUsage } = useTracking();\n const dispatch = useGuidedTour('GuidedTourPopover', (s) => s.dispatch);\n const state = useGuidedTour('GuidedTourPopover', (s) => s.state);\n\n // Safety check: if tours state is missing, return null\n if (!state.tours || !state.tours[tourName]) {\n return null;\n }\n\n const currentStep = state.tours[tourName].currentStep + 1;\n const actualTourLength = tours[tourName]._meta.totalStepCount;\n\n const handleSkip = () => {\n trackUsage('didSkipGuidedTour', { name: tourName });\n dispatch({ type: 'skip_tour', payload: tourName });\n };\n\n const handleNextStep = () => {\n if (currentStep === actualTourLength) {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n }\n\n if (onNextStep) {\n onNextStep();\n } else {\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n const handlePreviousStep = () => {\n if (onPreviousStep) {\n onPreviousStep();\n } else {\n dispatch({ type: 'previous_step', payload: tourName });\n }\n };\n\n return (\n <Flex gap={2}>\n {showSkip && (\n <Button variant=\"tertiary\" onClick={handleSkip}>\n <FormattedMessage id=\"tours.skip\" defaultMessage=\"Skip\" />\n </Button>\n )}\n {!showSkip && showPrevious && (\n <Button variant=\"tertiary\" onClick={handlePreviousStep}>\n <FormattedMessage id=\"tours.previous\" defaultMessage=\"Previous\" />\n </Button>\n )}\n {to ? (\n <LinkButton tag={NavLink} to={to} onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </LinkButton>\n ) : (\n <Button onClick={handleNextStep}>\n <FormattedMessage id=\"tours.next\" defaultMessage=\"Next\" />\n </Button>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Step factory\n * -----------------------------------------------------------------------------------------------*/\n\ntype WithChildren = {\n children: React.ReactNode;\n id?: never;\n defaultMessage?: never;\n};\n\ntype WithIntl = {\n children?: undefined;\n id: MessageDescriptor['id'];\n defaultMessage: MessageDescriptor['defaultMessage'];\n withArrow?: boolean;\n};\n\ntype WithActionsChildren = {\n children: React.ReactNode;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype WithActionsProps = {\n children?: undefined;\n showStepCount?: boolean;\n showSkip?: boolean;\n showPrevious?: boolean;\n};\n\ntype StepProps = WithChildren | WithIntl;\ntype ActionsProps = WithActionsChildren | WithActionsProps;\n\ntype Step = {\n Root: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof Popover.Content> & { withArrow?: boolean }\n >;\n Title: (props: StepProps) => React.ReactNode;\n Content: (\n props: StepProps & {\n values?: Record<string, React.ReactNode | ((chunks: React.ReactNode) => React.ReactNode)>;\n }\n ) => React.ReactNode;\n Actions: (props: ActionsProps & { to?: string } & FlexProps) => React.ReactNode;\n};\n\nconst ActionsContainer = styled(Flex)`\n border-top: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n`;\n\nconst ContentContainer = styled(Box)`\n p {\n margin-top: ${({ theme }) => theme.spaces[5]};\n }\n ul {\n list-style-type: disc;\n padding-left: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/**\n * TODO:\n * We should probably move all arrow styles + svg to the DS\n */\nconst PopoverArrow = styled(Popover.Arrow)`\n fill: ${({ theme }) => theme.colors.neutral0};\n transform: translateY(-16px) rotate(-90deg);\n`;\n\nconst createStepComponents = (tourName: ValidTourName): Step => ({\n Root: React.forwardRef(({ withArrow = true, ...props }, ref) => {\n return (\n <Popover.Content\n ref={ref}\n aria-labelledby=\"guided-tour-title\"\n side=\"top\"\n align=\"center\"\n style={{ border: 'none' }}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {withArrow && (\n <PopoverArrow asChild>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"23\"\n height=\"25\"\n viewBox=\"0 0 23 25\"\n fill=\"none\"\n >\n <path d=\"M11 24.5L1.82843 15.3284C0.266332 13.7663 0.26633 11.2337 1.82843 9.67157L11 0.5L23 12.5L11 24.5Z\" />\n </svg>\n </PopoverArrow>\n )}\n <Flex width=\"360px\" direction=\"column\" alignItems=\"start\">\n {props.children}\n </Flex>\n </Popover.Content>\n );\n }),\n\n Title: (props) => {\n return (\n <Box paddingTop={5} paddingLeft={5} paddingRight={5} paddingBottom={1} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <Typography tag=\"h1\" id=\"guided-tour-title\" variant=\"omega\" fontWeight=\"bold\">\n <FormattedMessage id={props.id} defaultMessage={props.defaultMessage} />\n </Typography>\n )}\n </Box>\n );\n },\n\n Content: (props) => {\n const { formatMessage } = useIntl();\n let content = '';\n if (!('children' in props)) {\n content = formatMessage({\n id: props.id,\n defaultMessage: props.defaultMessage,\n });\n }\n return (\n <Box paddingBottom={5} paddingLeft={5} paddingRight={5} width=\"100%\">\n {'children' in props ? (\n props.children\n ) : (\n <ContentContainer>\n <Typography tag=\"div\" variant=\"omega\" dangerouslySetInnerHTML={{ __html: content }} />\n </ContentContainer>\n )}\n </Box>\n );\n },\n\n Actions: ({\n showStepCount = true,\n showPrevious = true,\n showSkip = false,\n to,\n children,\n ...flexProps\n }) => {\n return (\n <ActionsContainer\n width=\"100%\"\n padding={3}\n paddingLeft={5}\n justifyContent={showStepCount ? 'space-between' : 'flex-end'}\n {...flexProps}\n >\n {children ? (\n children\n ) : (\n <>\n {showStepCount && <StepCount tourName={tourName} />}\n <DefaultActions\n tourName={tourName}\n showSkip={showSkip}\n showPrevious={!showSkip && showPrevious}\n to={to}\n />\n </>\n )}\n </ActionsContainer>\n );\n },\n});\n\nexport type { Step };\nexport { createStepComponents, GotItAction, StepCount, DefaultActions };\n"],"names":["StepCount","tourName","displayedCurrentStep","displayedTourLength","state","useGuidedTour","s","currentStep","tours","displayedStepCount","_meta","_jsx","Typography","variant","fontSize","FormattedMessage","id","defaultMessage","values","tourLength","GotItAction","onClick","Button","DefaultActions","showSkip","showPrevious","to","onNextStep","onPreviousStep","trackUsage","useTracking","dispatch","actualTourLength","totalStepCount","handleSkip","name","type","payload","handleNextStep","handlePreviousStep","_jsxs","Flex","gap","LinkButton","tag","NavLink","ActionsContainer","styled","theme","colors","neutral150","ContentContainer","Box","spaces","PopoverArrow","Popover","Arrow","neutral0","createStepComponents","Root","React","forwardRef","withArrow","props","ref","Content","aria-labelledby","side","align","style","border","e","stopPropagation","asChild","svg","xmlns","width","height","viewBox","fill","path","d","direction","alignItems","children","Title","paddingTop","paddingLeft","paddingRight","paddingBottom","fontWeight","formatMessage","useIntl","content","dangerouslySetInnerHTML","__html","Actions","showStepCount","flexProps","padding","justifyContent","_Fragment"],"mappings":"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"}
@@ -12,7 +12,8 @@ var ContentTypeBuilderSteps = require('./Steps/ContentTypeBuilderSteps.js');
12
12
  var Step = require('./Steps/Step.js');
13
13
  var constants = require('./utils/constants.js');
14
14
 
15
- function _interopNamespaceDefault(e) {
15
+ function _interopNamespace(e) {
16
+ if (e && e.__esModule) return e;
16
17
  var n = Object.create(null);
17
18
  if (e) {
18
19
  Object.keys(e).forEach(function (k) {
@@ -29,7 +30,7 @@ function _interopNamespaceDefault(e) {
29
30
  return Object.freeze(n);
30
31
  }
31
32
 
32
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
33
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
34
 
34
35
  /* -------------------------------------------------------------------------------------------------
35
36
  * Tours
@@ -66,9 +67,13 @@ const GuidedTourTooltipImpl = ({ children, content, tourName, step, when })=>{
66
67
  const isCurrentStep = tourState?.currentStep === step;
67
68
  const isStepConditionMet = when ? when(state.completedActions) : true;
68
69
  const isPopoverOpen = guidedTourMeta?.data?.isFirstSuperAdminUser && !tourState?.isCompleted && isCurrentStep && isStepConditionMet;
69
- // Lock the scroll
70
+ const anchorRef = React__namespace.useRef(null);
70
71
  React__namespace.useEffect(()=>{
71
72
  if (!isPopoverOpen) return;
73
+ anchorRef.current?.scrollIntoView({
74
+ behavior: 'instant',
75
+ block: 'center'
76
+ });
72
77
  const originalStyle = window.getComputedStyle(document.body).overflow;
73
78
  document.body.style.overflow = 'hidden';
74
79
  return ()=>{
@@ -118,6 +123,7 @@ const GuidedTourTooltipImpl = ({ children, content, tourName, step, when })=>{
118
123
  open: isPopoverOpen,
119
124
  children: [
120
125
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Anchor, {
126
+ ref: anchorRef,
121
127
  children: children
122
128
  }),
123
129
  content({
@@ -1 +1 @@
1
- {"version":3,"file":"Tours.js","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal, setOpacity } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${({ theme }) => setOpacity(theme.colors.neutral800, 0.2)};\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const tourState = state.tours?.[tourName];\n const isCurrentStep = tourState?.currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !tourState?.isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n // Safety check: if tours state is corrupted or missing, render without tooltip (after all hooks)\n if (!state.tours || !state.tours[tourName]) {\n return <>{children}</>;\n }\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","process","env","NODE_ENV","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","theme","setOpacity","colors","neutral800","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","tourState","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_Fragment","_jsxs","Portal","Popover","Root","open","Anchor","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA;;AAEkG,2GAE5FA,KAAAA,GAAQ;AACZC,IAAAA,kBAAAA,EAAoBC,WAAW,oBAAA,EAAsBC,+CAAAA,CAAAA;AACrDC,IAAAA,cAAAA,EAAgBF,WAAW,gBAAA,EAAkBG,uCAAAA,CAAAA;AAC7CC,IAAAA,SAAAA,EAAWJ,WAAW,WAAA,EAAaK,6BAAAA,CAAAA;IACnCC,WAAAA,EAAaN,UAAAA,CAAW,eAAe,EAAE;AAC3C;AAuBA,MAAMO,oBAAoB,CAAC,EAAEC,QAAQ,EAAE,GAAGC,KAAAA,EAA+B,GAAA;AACvE,IAAA,MAAMC,QAAQC,qBAAAA,CAAc,gBAAA,EAAkB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;AAE5D,IAAA,IAAI,CAACA,KAAAA,CAAMG,OAAO,IAAIH,KAAAA,CAAMI,MAAM,IAAIC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aAAA,EAAe;QAC5E,OAAOT,QAAAA;AACT,IAAA;AAEA,IAAA,qBAAOU,cAAA,CAACC,qBAAAA,EAAAA;AAAuB,QAAA,GAAGV,KAAK;AAAGD,QAAAA,QAAAA,EAAAA;;AAC5C,CAAA;AAEA,MAAMY,iBAAAA,GAAoBC,aAAAA,CAAOC,gBAAAA,CAAI;;;;;;oBAMjB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKC,uBAAAA,CAAWD,KAAAA,CAAME,MAAM,CAACC,UAAU,EAAE,GAAA,CAAA,CAAK;;AAE9E,CAAC;AAED,MAAMP,qBAAAA,GAAwB,CAAC,EAC7BX,QAAQ,EACRmB,OAAO,EACPC,QAAQ,EACRC,IAAI,EACJC,IAAI,EACmB,GAAA;AACvB,IAAA,MAAM,EAAEC,IAAAA,EAAMC,cAAc,EAAE,GAAGC,+BAAAA,EAAAA;AACjC,IAAA,MAAMvB,QAAQC,qBAAAA,CAAc,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;AAC/D,IAAA,MAAMwB,WAAWvB,qBAAAA,CAAc,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEsB,QAAQ,CAAA;AAErE,IAAA,MAAMC,SAAAA,GAAYzB,KAAAA,CAAMZ,KAAK,GAAG8B,QAAAA,CAAS;IACzC,MAAMQ,aAAAA,GAAgBD,WAAWE,WAAAA,KAAgBR,IAAAA;AACjD,IAAA,MAAMS,kBAAAA,GAAqBR,IAAAA,GAAOA,IAAAA,CAAKpB,KAAAA,CAAM6B,gBAAgB,CAAA,GAAI,IAAA;AACjE,IAAA,MAAMC,gBACJR,cAAAA,EAAgBD,IAAAA,EAAMU,yBACtB,CAACN,SAAAA,EAAWO,eACZN,aAAAA,IACAE,kBAAAA;;AAGFK,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACJ,aAAAA,EAAe;AAEpB,QAAA,MAAMK,gBAAgBC,MAAAA,CAAOC,gBAAgB,CAACC,QAAAA,CAASC,IAAI,EAAEC,QAAQ;AACrEF,QAAAA,QAAAA,CAASC,IAAI,CAACE,KAAK,CAACD,QAAQ,GAAG,QAAA;QAE/B,OAAO,IAAA;AACLF,YAAAA,QAAAA,CAASC,IAAI,CAACE,KAAK,CAACD,QAAQ,GAAGL,aAAAA;AACjC,QAAA,CAAA;IACF,CAAA,EAAG;AAACL,QAAAA;AAAc,KAAA,CAAA;AAElB,IAAA,MAAMY,SAAOT,gBAAAA,CAAMU,OAAO,CAAC,IAAMC,0BAAqB1B,QAAAA,CAAAA,EAAW;AAACA,QAAAA;AAAS,KAAA,CAAA;AAE3E,IAAA,MAAM2B,eACJC,MAAAA,CAAOC,IAAI,CAACzB,cAAAA,EAAgBD,IAAAA,EAAM2B,WAAW,EAAC,CAAA,CAAGC,MAAM,CAAC,CAACC,GAAAA,GAAQA,GAAAA,CAAIC,UAAU,CAAC,OAAA,CAAA,CAAA,CAC7EC,MAAM,GAAG,CAAA;AAEdnB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIW,YAAAA,EAAc;AAChB;;;;;;;AAOC,UACDrB,QAAAA,CAAS;gBACP6B,IAAAA,EAAM,uBAAA;gBACNC,OAAAA,EAAS;oBAACC,sCAAAA,CAA6BlE,kBAAkB,CAACmE;AAAa;AACzE,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAAChC,QAAAA,QAAAA;AAAUqB,QAAAA,YAAAA;AAAc1B,QAAAA,IAAAA;AAAMD,QAAAA;AAAS,KAAA,CAAA;;IAG3C,IAAI,CAAClB,MAAMZ,KAAK,IAAI,CAACY,KAAAA,CAAMZ,KAAK,CAAC8B,QAAAA,CAAS,EAAE;QAC1C,qBAAOV,cAAA,CAAAiD,mBAAA,EAAA;AAAG3D,YAAAA,QAAAA,EAAAA;;AACZ,IAAA;IAEA,qBACE4D,eAAA,CAAAD,mBAAA,EAAA;;AACG3B,YAAAA,aAAAA,kBACCtB,cAAA,CAACmD,mBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAnD,cAAA,CAACE,iBAAAA,EAAAA,EAAAA;;AAGL,0BAAAgD,eAAA,CAACE,qBAAQC,IAAI,EAAA;gBAACC,IAAAA,EAAMhC,aAAAA;;AAClB,kCAAAtB,cAAA,CAACoD,qBAAQG,MAAM,EAAA;AAAEjE,wBAAAA,QAAAA,EAAAA;;oBAChBmB,OAAAA,CAAQ;AAAEyB,8BAAAA,MAAAA;AAAM1C,wBAAAA,KAAAA;AAAOwB,wBAAAA;AAAS,qBAAA;;;;;AAIzC,CAAA;AAaO,SAASlC,UAAAA,CACd4B,QAAgB,EAChB8C,KAAQ,EAAA;AAMR,IAAA,MAAMC,OAAOD,KAAAA,CAAME,MAAM,CACvB,CAACC,KAAKhD,IAAAA,EAAMiD,KAAAA,GAAAA;QACV,MAAMC,IAAAA,GAAOlD,KAAKkD,IAAI;AAEtB,QAAA,IAAIA,QAAQF,GAAAA,EAAK;YACf,MAAMG,KAAAA,CAAM,CAAC,UAAU,EAAEpD,QAAAA,CAAS,YAAY,EAAEC,IAAAA,CAAKkD,IAAI,CAAC,4BAA4B,CAAC,CAAA;AACzF,QAAA;AAECF,QAAAA,GAAkB,CAACE,IAAAA,CAAK,GAAG,CAAC,EAAEvE,QAAQ,EAAiC,GAAA;AACtE,YAAA,qBACEU,cAAA,CAACX,iBAAAA,EAAAA;gBACCqB,QAAAA,EAAUA,QAAAA;gBACVC,IAAAA,EAAMiD,KAAAA;AACNnD,gBAAAA,OAAAA,EAASE,KAAKF,OAAO;AACrBG,gBAAAA,IAAAA,EAAMD,KAAKC,IAAI;AAEdtB,gBAAAA,QAAAA,EAAAA;;AAGP,QAAA,CAAA;QAEA,IAAIqB,IAAAA,CAAKoD,oBAAoB,EAAE;;YAE7BJ,GAAAA,CAAIK,KAAK,CAACC,kBAAkB,EAAA;AAC9B,QAAA;QAEA,OAAON,GAAAA;IACT,CAAA,EACA;QAAEK,KAAAA,EAAO;AAAEE,YAAAA,cAAAA,EAAgBV,MAAMZ,MAAM;AAAEqB,YAAAA,kBAAAA,EAAoBT,MAAMZ;AAAO;AAAE,KAAA,CAAA;IAK9E,OAAOa,IAAAA;AACT;;;;;"}
1
+ {"version":3,"file":"Tours.js","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal, setOpacity } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${({ theme }) => setOpacity(theme.colors.neutral800, 0.2)};\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const tourState = state.tours?.[tourName];\n const isCurrentStep = tourState?.currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !tourState?.isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n const anchorRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n anchorRef.current?.scrollIntoView({ behavior: 'instant', block: 'center' });\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n // Safety check: if tours state is corrupted or missing, render without tooltip (after all hooks)\n if (!state.tours || !state.tours[tourName]) {\n return <>{children}</>;\n }\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor ref={anchorRef}>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","process","env","NODE_ENV","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","theme","setOpacity","colors","neutral800","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","tourState","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","anchorRef","React","useRef","useEffect","current","scrollIntoView","behavior","block","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_Fragment","_jsxs","Portal","Popover","Root","open","Anchor","ref","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":"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"}
@@ -45,9 +45,13 @@ const GuidedTourTooltipImpl = ({ children, content, tourName, step, when })=>{
45
45
  const isCurrentStep = tourState?.currentStep === step;
46
46
  const isStepConditionMet = when ? when(state.completedActions) : true;
47
47
  const isPopoverOpen = guidedTourMeta?.data?.isFirstSuperAdminUser && !tourState?.isCompleted && isCurrentStep && isStepConditionMet;
48
- // Lock the scroll
48
+ const anchorRef = React.useRef(null);
49
49
  React.useEffect(()=>{
50
50
  if (!isPopoverOpen) return;
51
+ anchorRef.current?.scrollIntoView({
52
+ behavior: 'instant',
53
+ block: 'center'
54
+ });
51
55
  const originalStyle = window.getComputedStyle(document.body).overflow;
52
56
  document.body.style.overflow = 'hidden';
53
57
  return ()=>{
@@ -97,6 +101,7 @@ const GuidedTourTooltipImpl = ({ children, content, tourName, step, when })=>{
97
101
  open: isPopoverOpen,
98
102
  children: [
99
103
  /*#__PURE__*/ jsx(Popover.Anchor, {
104
+ ref: anchorRef,
100
105
  children: children
101
106
  }),
102
107
  content({
@@ -1 +1 @@
1
- {"version":3,"file":"Tours.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal, setOpacity } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${({ theme }) => setOpacity(theme.colors.neutral800, 0.2)};\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const tourState = state.tours?.[tourName];\n const isCurrentStep = tourState?.currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !tourState?.isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n // Safety check: if tours state is corrupted or missing, render without tooltip (after all hooks)\n if (!state.tours || !state.tours[tourName]) {\n return <>{children}</>;\n }\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","process","env","NODE_ENV","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","theme","setOpacity","colors","neutral800","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","tourState","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_Fragment","_jsxs","Portal","Popover","Root","open","Anchor","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":"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"}
1
+ {"version":3,"file":"Tours.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal, setOpacity } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${({ theme }) => setOpacity(theme.colors.neutral800, 0.2)};\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const tourState = state.tours?.[tourName];\n const isCurrentStep = tourState?.currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !tourState?.isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n const anchorRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n anchorRef.current?.scrollIntoView({ behavior: 'instant', block: 'center' });\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n // Safety check: if tours state is corrupted or missing, render without tooltip (after all hooks)\n if (!state.tours || !state.tours[tourName]) {\n return <>{children}</>;\n }\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor ref={anchorRef}>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","process","env","NODE_ENV","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","theme","setOpacity","colors","neutral800","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","tourState","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","anchorRef","React","useRef","useEffect","current","scrollIntoView","behavior","block","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_Fragment","_jsxs","Portal","Popover","Root","open","Anchor","ref","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":"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"}
@@ -6,9 +6,13 @@ var defaultsDeep = require('lodash/defaultsDeep');
6
6
  var reactIntl = require('react-intl');
7
7
  var hooks = require('../core/store/hooks.js');
8
8
 
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var defaultsDeep__default = /*#__PURE__*/_interopDefault(defaultsDeep);
12
+
9
13
  const LanguageProvider = ({ children, messages })=>{
10
14
  const locale = hooks.useTypedSelector((state)=>state.admin_app.language.locale);
11
- const appMessages = defaultsDeep(messages[locale], messages.en);
15
+ const appMessages = defaultsDeep__default.default(messages[locale], messages.en);
12
16
  return /*#__PURE__*/ jsxRuntime.jsx(reactIntl.IntlProvider, {
13
17
  locale: locale,
14
18
  defaultLocale: "en",
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageProvider.js","sources":["../../../../../admin/src/components/LanguageProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\n {children}\n </IntlProvider>\n );\n};\n\nexport { LanguageProvider };\nexport type { LanguageProviderProps };\n"],"names":["LanguageProvider","children","messages","locale","useTypedSelector","state","admin_app","language","appMessages","defaultsDeep","en","_jsx","IntlProvider","defaultLocale","textComponent"],"mappings":";;;;;;;;AAgBA,MAAMA,mBAAmB,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAyB,GAAA;IACrE,MAAMC,MAAAA,GAASC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,MAAM,CAAA;AAC1E,IAAA,MAAMK,cAAcC,YAAAA,CAAaP,QAAQ,CAACC,MAAAA,CAAO,EAAED,SAASQ,EAAE,CAAA;AAE9D,IAAA,qBACEC,cAAA,CAACC,sBAAAA,EAAAA;QAAaT,MAAAA,EAAQA,MAAAA;QAAQU,aAAAA,EAAc,IAAA;QAAKX,QAAAA,EAAUM,WAAAA;QAAaM,aAAAA,EAAc,MAAA;AACnFb,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"LanguageProvider.js","sources":["../../../../../admin/src/components/LanguageProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\n {children}\n </IntlProvider>\n );\n};\n\nexport { LanguageProvider };\nexport type { LanguageProviderProps };\n"],"names":["LanguageProvider","children","messages","locale","useTypedSelector","state","admin_app","language","appMessages","defaultsDeep","en","_jsx","IntlProvider","defaultLocale","textComponent"],"mappings":";;;;;;;;;;;;AAgBA,MAAMA,mBAAmB,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAyB,GAAA;IACrE,MAAMC,MAAAA,GAASC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,MAAM,CAAA;AAC1E,IAAA,MAAMK,cAAcC,6BAAAA,CAAaP,QAAQ,CAACC,MAAAA,CAAO,EAAED,SAASQ,EAAE,CAAA;AAE9D,IAAA,qBACEC,cAAA,CAACC,sBAAAA,EAAAA;QAAaT,MAAAA,EAAQA,MAAAA;QAAQU,aAAAA,EAAc,IAAA;QAAKX,QAAAA,EAAUM,WAAAA;QAAaM,aAAAA,EAAc,MAAA;AACnFb,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
@@ -13,7 +13,8 @@ var useElementOnScreen = require('../../hooks/useElementOnScreen.js');
13
13
  var useMediaQuery = require('../../hooks/useMediaQuery.js');
14
14
  var getMatchingDocLink = require('./utils/getMatchingDocLink.js');
15
15
 
16
- function _interopNamespaceDefault(e) {
16
+ function _interopNamespace(e) {
17
+ if (e && e.__esModule) return e;
17
18
  var n = Object.create(null);
18
19
  if (e) {
19
20
  Object.keys(e).forEach(function (k) {
@@ -30,7 +31,7 @@ function _interopNamespaceDefault(e) {
30
31
  return Object.freeze(n);
31
32
  }
32
33
 
33
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
34
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
35
 
35
36
  const BaseHeaderLayout = /*#__PURE__*/ React__namespace.forwardRef(({ navigationAction, primaryAction, secondaryAction, subtitle, title, sticky, width, docLink, ...props }, ref)=>{
36
37
  const isMobile = useMediaQuery.useIsMobile();
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderLayout.js","sources":["../../../../../../admin/src/components/Layouts/HeaderLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Typography,\n TypographyProps,\n useCallbackRef,\n IconButton,\n} from '@strapi/design-system';\nimport { Question } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, Link } from 'react-router-dom';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n RESPONSIVE_DEFAULT_SPACING,\n} from '../../constants/theme';\nimport { useTracking } from '../../features/Tracking';\nimport { useDeviceType } from '../../hooks/useDeviceType';\nimport { useElementOnScreen } from '../../hooks/useElementOnScreen';\nimport { useIsMobile } from '../../hooks/useMediaQuery';\n\nimport { getMatchingDocLink, type DocLink } from './utils/getMatchingDocLink';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n docLink?: DocLink | null;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n {\n navigationAction,\n primaryAction,\n secondaryAction,\n subtitle,\n title,\n sticky,\n width,\n docLink,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile();\n const isSubtitleString = typeof subtitle === 'string';\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const docLinkButton = docLink ? (\n <IconButton\n onClick={() => trackUsage('didClickOnDocLink', { from: docLink.path, to: docLink.link })}\n size=\"S\"\n label={formatMessage({\n id: 'app.HeaderLayout.docLink.label',\n defaultMessage: 'Learn more on our documentation',\n })}\n to={docLink.link}\n tag={Link}\n target=\"_blank\"\n >\n <Question />\n </IconButton>\n ) : null;\n\n if (sticky) {\n return (\n <Box\n display=\"flex\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={2}\n paddingBottom={2}\n position=\"fixed\"\n top={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={2}\n minHeight={{\n initial: HEIGHT_TOP_NAVIGATION,\n medium: HEIGHT_TOP_NAVIGATION_MEDIUM,\n }}\n data-strapi-header-sticky\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" wrap=\"wrap\" width=\"100%\" gap={2}>\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>\n {primaryAction ? (\n <Flex gap={2}>\n {docLinkButton}\n {primaryAction}\n </Flex>\n ) : undefined}\n </Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={{\n initial: 4,\n large: 8,\n }}\n paddingTop={{\n initial: 4,\n large: navigationAction ? 6 : 8,\n }}\n background=\"neutral100\"\n data-strapi-header\n >\n <Flex direction=\"column\" alignItems=\"initial\" gap={3}>\n {navigationAction}\n {!isMobile ? (\n <>\n <Flex justifyContent=\"space-between\" wrap=\"wrap\" gap={4}>\n <Flex minWidth={0}>\n <Typography\n tag=\"h1\"\n variant=\"alpha\"\n {...props}\n style={{\n wordBreak: 'break-word',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n }}\n >\n {title}\n </Typography>\n {secondaryAction && <Box paddingLeft={4}>{secondaryAction}</Box>}\n </Flex>\n <Box paddingLeft={4} marginLeft=\"auto\">\n <Flex gap={2}>\n {docLinkButton}\n {primaryAction}\n </Flex>\n </Box>\n </Flex>\n {isSubtitleString ? (\n <Typography variant=\"epsilon\" textColor=\"neutral600\" tag=\"p\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </>\n ) : (\n <>\n <Typography\n tag=\"h1\"\n variant=\"alpha\"\n {...props}\n style={{\n wordBreak: 'break-word',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n }}\n >\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"epsilon\" textColor=\"neutral600\" tag=\"p\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n {(primaryAction || secondaryAction) && (\n <Flex gap={3}>\n {secondaryAction}\n {docLinkButton}\n {primaryAction}\n </Flex>\n )}\n </>\n )}\n </Flex>\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n const [isVisible, setIsVisible] = React.useState(true);\n const deviceType = useDeviceType();\n const location = useLocation();\n const docLink = React.useMemo(() => {\n if (window.strapi.flags.docLinks === false) return null;\n return getMatchingDocLink(location.pathname);\n }, [location]);\n\n const containerRef = useElementOnScreen<HTMLDivElement>(setIsVisible, {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver([containerRef, baseHeaderLayoutRef], () => {\n const headerContainer = baseHeaderLayoutRef.current ?? containerRef.current;\n\n if (headerContainer) {\n const newSize = headerContainer.getBoundingClientRect();\n\n setHeaderSize((prevSize) => {\n // Only update if size actually changed\n if (!prevSize || prevSize.height !== newSize.height || prevSize.width !== newSize.width) {\n return newSize;\n }\n return prevSize;\n });\n }\n });\n\n React.useEffect(() => {\n if (baseHeaderLayoutRef.current || containerRef.current) {\n const headerContainer = baseHeaderLayoutRef.current ?? containerRef.current;\n setHeaderSize(headerContainer?.getBoundingClientRect() ?? null);\n }\n }, [containerRef]);\n\n if (deviceType === 'mobile') {\n return <BaseHeaderLayout {...props} docLink={docLink} />;\n }\n\n return (\n <div ref={containerRef}>\n <div style={{ height: headerSize?.height }}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} docLink={docLink} />}\n </div>\n\n {!isVisible && (\n <BaseHeaderLayout {...props} sticky width={headerSize?.width} docLink={docLink} />\n )}\n </div>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n"],"names":["BaseHeaderLayout","React","forwardRef","navigationAction","primaryAction","secondaryAction","subtitle","title","sticky","width","docLink","props","ref","isMobile","useIsMobile","isSubtitleString","formatMessage","useIntl","trackUsage","useTracking","docLinkButton","_jsx","IconButton","onClick","from","path","to","link","size","label","id","defaultMessage","tag","Link","target","Question","Box","display","paddingLeft","paddingRight","paddingTop","paddingBottom","position","top","background","shadow","zIndex","minHeight","initial","HEIGHT_TOP_NAVIGATION","medium","HEIGHT_TOP_NAVIGATION_MEDIUM","data-strapi-header-sticky","_jsxs","Flex","alignItems","justifyContent","wrap","gap","Typography","variant","textColor","undefined","RESPONSIVE_DEFAULT_SPACING","large","data-strapi-header","direction","_Fragment","minWidth","style","wordBreak","overflowWrap","maxWidth","marginLeft","HeaderLayout","baseHeaderLayoutRef","useRef","headerSize","setHeaderSize","useState","isVisible","setIsVisible","deviceType","useDeviceType","location","useLocation","useMemo","window","strapi","flags","docLinks","getMatchingDocLink","pathname","containerRef","useElementOnScreen","root","rootMargin","threshold","useResizeObserver","headerContainer","current","newSize","getBoundingClientRect","prevSize","height","useEffect","div","displayName","sources","onResize","handleResize","useCallbackRef","useLayoutEffect","resizeObs","ResizeObserver","Array","isArray","forEach","source","observe","disconnect"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderLayout.js","sources":["../../../../../../admin/src/components/Layouts/HeaderLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Typography,\n TypographyProps,\n useCallbackRef,\n IconButton,\n} from '@strapi/design-system';\nimport { Question } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, Link } from 'react-router-dom';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n RESPONSIVE_DEFAULT_SPACING,\n} from '../../constants/theme';\nimport { useTracking } from '../../features/Tracking';\nimport { useDeviceType } from '../../hooks/useDeviceType';\nimport { useElementOnScreen } from '../../hooks/useElementOnScreen';\nimport { useIsMobile } from '../../hooks/useMediaQuery';\n\nimport { getMatchingDocLink, type DocLink } from './utils/getMatchingDocLink';\n\n/* -------------------------------------------------------------------------------------------------\n * BaseHeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseHeaderLayoutProps extends Omit<TypographyProps<'div'>, 'tag'> {\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n sticky?: boolean;\n width?: number;\n docLink?: DocLink | null;\n}\n\nconst BaseHeaderLayout = React.forwardRef<HTMLDivElement, BaseHeaderLayoutProps>(\n (\n {\n navigationAction,\n primaryAction,\n secondaryAction,\n subtitle,\n title,\n sticky,\n width,\n docLink,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile();\n const isSubtitleString = typeof subtitle === 'string';\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const docLinkButton = docLink ? (\n <IconButton\n onClick={() => trackUsage('didClickOnDocLink', { from: docLink.path, to: docLink.link })}\n size=\"S\"\n label={formatMessage({\n id: 'app.HeaderLayout.docLink.label',\n defaultMessage: 'Learn more on our documentation',\n })}\n to={docLink.link}\n tag={Link}\n target=\"_blank\"\n >\n <Question />\n </IconButton>\n ) : null;\n\n if (sticky) {\n return (\n <Box\n display=\"flex\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={2}\n paddingBottom={2}\n position=\"fixed\"\n top={0}\n background=\"neutral0\"\n shadow=\"tableShadow\"\n width={`${width}px`}\n zIndex={2}\n minHeight={{\n initial: HEIGHT_TOP_NAVIGATION,\n medium: HEIGHT_TOP_NAVIGATION_MEDIUM,\n }}\n data-strapi-header-sticky\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" wrap=\"wrap\" width=\"100%\" gap={2}>\n <Flex>\n {navigationAction && <Box paddingRight={3}>{navigationAction}</Box>}\n <Box>\n <Typography variant=\"beta\" tag=\"h1\" {...props}>\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </Box>\n {secondaryAction ? <Box paddingLeft={4}>{secondaryAction}</Box> : null}\n </Flex>\n <Flex>\n {primaryAction ? (\n <Flex gap={2}>\n {docLinkButton}\n {primaryAction}\n </Flex>\n ) : undefined}\n </Flex>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box\n ref={ref}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={{\n initial: 4,\n large: 8,\n }}\n paddingTop={{\n initial: 4,\n large: navigationAction ? 6 : 8,\n }}\n background=\"neutral100\"\n data-strapi-header\n >\n <Flex direction=\"column\" alignItems=\"initial\" gap={3}>\n {navigationAction}\n {!isMobile ? (\n <>\n <Flex justifyContent=\"space-between\" wrap=\"wrap\" gap={4}>\n <Flex minWidth={0}>\n <Typography\n tag=\"h1\"\n variant=\"alpha\"\n {...props}\n style={{\n wordBreak: 'break-word',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n }}\n >\n {title}\n </Typography>\n {secondaryAction && <Box paddingLeft={4}>{secondaryAction}</Box>}\n </Flex>\n <Box paddingLeft={4} marginLeft=\"auto\">\n <Flex gap={2}>\n {docLinkButton}\n {primaryAction}\n </Flex>\n </Box>\n </Flex>\n {isSubtitleString ? (\n <Typography variant=\"epsilon\" textColor=\"neutral600\" tag=\"p\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n </>\n ) : (\n <>\n <Typography\n tag=\"h1\"\n variant=\"alpha\"\n {...props}\n style={{\n wordBreak: 'break-word',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n }}\n >\n {title}\n </Typography>\n {isSubtitleString ? (\n <Typography variant=\"epsilon\" textColor=\"neutral600\" tag=\"p\">\n {subtitle}\n </Typography>\n ) : (\n subtitle\n )}\n {(primaryAction || secondaryAction) && (\n <Flex gap={3}>\n {secondaryAction}\n {docLinkButton}\n {primaryAction}\n </Flex>\n )}\n </>\n )}\n </Flex>\n </Box>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderLayoutProps extends BaseHeaderLayoutProps {}\n\nconst HeaderLayout = (props: HeaderLayoutProps) => {\n const baseHeaderLayoutRef = React.useRef<HTMLDivElement>(null);\n const [headerSize, setHeaderSize] = React.useState<DOMRect | null>(null);\n const [isVisible, setIsVisible] = React.useState(true);\n const deviceType = useDeviceType();\n const location = useLocation();\n const docLink = React.useMemo(() => {\n if (window.strapi.flags.docLinks === false) return null;\n return getMatchingDocLink(location.pathname);\n }, [location]);\n\n const containerRef = useElementOnScreen<HTMLDivElement>(setIsVisible, {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n });\n\n useResizeObserver([containerRef, baseHeaderLayoutRef], () => {\n const headerContainer = baseHeaderLayoutRef.current ?? containerRef.current;\n\n if (headerContainer) {\n const newSize = headerContainer.getBoundingClientRect();\n\n setHeaderSize((prevSize) => {\n // Only update if size actually changed\n if (!prevSize || prevSize.height !== newSize.height || prevSize.width !== newSize.width) {\n return newSize;\n }\n return prevSize;\n });\n }\n });\n\n React.useEffect(() => {\n if (baseHeaderLayoutRef.current || containerRef.current) {\n const headerContainer = baseHeaderLayoutRef.current ?? containerRef.current;\n setHeaderSize(headerContainer?.getBoundingClientRect() ?? null);\n }\n }, [containerRef]);\n\n if (deviceType === 'mobile') {\n return <BaseHeaderLayout {...props} docLink={docLink} />;\n }\n\n return (\n <div ref={containerRef}>\n <div style={{ height: headerSize?.height }}>\n {isVisible && <BaseHeaderLayout ref={baseHeaderLayoutRef} {...props} docLink={docLink} />}\n </div>\n\n {!isVisible && (\n <BaseHeaderLayout {...props} sticky width={headerSize?.width} docLink={docLink} />\n )}\n </div>\n );\n};\n\nHeaderLayout.displayName = 'HeaderLayout';\n\n/**\n * useResizeObserver: hook that observes the size of an element and calls a callback when it changes.\n */\nconst useResizeObserver = (\n sources: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n onResize: ResizeObserverCallback\n) => {\n const handleResize = useCallbackRef(onResize);\n\n React.useLayoutEffect(() => {\n const resizeObs = new ResizeObserver(handleResize);\n\n if (Array.isArray(sources)) {\n sources.forEach((source) => {\n if (source.current) {\n resizeObs.observe(source.current);\n }\n });\n } else if (sources.current) {\n resizeObs.observe(sources.current);\n }\n\n return () => {\n resizeObs.disconnect();\n };\n }, [sources, handleResize]);\n};\n\nexport type { HeaderLayoutProps, BaseHeaderLayoutProps };\nexport { HeaderLayout, BaseHeaderLayout };\n"],"names":["BaseHeaderLayout","React","forwardRef","navigationAction","primaryAction","secondaryAction","subtitle","title","sticky","width","docLink","props","ref","isMobile","useIsMobile","isSubtitleString","formatMessage","useIntl","trackUsage","useTracking","docLinkButton","_jsx","IconButton","onClick","from","path","to","link","size","label","id","defaultMessage","tag","Link","target","Question","Box","display","paddingLeft","paddingRight","paddingTop","paddingBottom","position","top","background","shadow","zIndex","minHeight","initial","HEIGHT_TOP_NAVIGATION","medium","HEIGHT_TOP_NAVIGATION_MEDIUM","data-strapi-header-sticky","_jsxs","Flex","alignItems","justifyContent","wrap","gap","Typography","variant","textColor","undefined","RESPONSIVE_DEFAULT_SPACING","large","data-strapi-header","direction","_Fragment","minWidth","style","wordBreak","overflowWrap","maxWidth","marginLeft","HeaderLayout","baseHeaderLayoutRef","useRef","headerSize","setHeaderSize","useState","isVisible","setIsVisible","deviceType","useDeviceType","location","useLocation","useMemo","window","strapi","flags","docLinks","getMatchingDocLink","pathname","containerRef","useElementOnScreen","root","rootMargin","threshold","useResizeObserver","headerContainer","current","newSize","getBoundingClientRect","prevSize","height","useEffect","div","displayName","sources","onResize","handleResize","useCallbackRef","useLayoutEffect","resizeObs","ResizeObserver","Array","isArray","forEach","source","observe","disconnect"],"mappings":"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"}
@@ -16,7 +16,8 @@ var NavBurgerMenu = require('./MainNav/NavBurgerMenu.js');
16
16
  var NavUser = require('./MainNav/NavUser.js');
17
17
  var TrialCountdown = require('./MainNav/TrialCountdown.js');
18
18
 
19
- function _interopNamespaceDefault(e) {
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
20
21
  var n = Object.create(null);
21
22
  if (e) {
22
23
  Object.keys(e).forEach(function (k) {
@@ -33,7 +34,7 @@ function _interopNamespaceDefault(e) {
33
34
  return Object.freeze(n);
34
35
  }
35
36
 
36
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
37
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
38
 
38
39
  const sortLinks = (links)=>{
39
40
  return links.sort((a, b)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"LeftMenu.js","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Divider, Flex, FlexComponent, IconButton, useCollator } from '@strapi/design-system';\nimport { Cross, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { Menu, MenuItem, MobileMenuItem } from '../hooks/useMenu';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { MainNavIcons } from './MainNav/MainNavLinks';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavBurgerMenu } from './MainNav/NavBurgerMenu';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n width: 100%;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\ninterface LeftMenuProps\n extends Pick<\n Menu,\n 'generalSectionLinks' | 'pluginsSectionLinks' | 'topMobileNavigation' | 'burgerMobileNavigation'\n > {}\n\nconst MenuDetails = styled(Flex)`\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n overflow-x: auto;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n }\n`;\n\nconst LeftMenu = ({\n generalSectionLinks = [],\n pluginsSectionLinks = [],\n topMobileNavigation = [],\n burgerMobileNavigation = [],\n}: LeftMenuProps) => {\n const [isBurgerMenuShown, setIsBurgerMenuShown] = React.useState(false);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const isDesktop = useIsDesktop();\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n // Close burger menu when route changes\n React.useEffect(() => {\n setIsBurgerMenuShown(false);\n }, [pathname]);\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n /**\n * Return filtered mobile navigation links (used for both top and burger menu)\n */\n const mapMobileNavigationLinks = (mobileNavLinks: MobileMenuItem[]): MenuItem[] =>\n mobileNavLinks.reduce<MenuItem[]>((acc, mobileLink) => {\n const linkFound = listLinks.find((link) => link.to === mobileLink.to);\n if (linkFound) {\n acc.push(mobileLink.link ? { ...linkFound, navigationLink: mobileLink.link } : linkFound);\n }\n return acc;\n }, []);\n\n /**\n * Mobile top navigation\n */\n const topMobileNavigationLinks = mapMobileNavigationLinks(topMobileNavigation);\n\n /**\n * Mobile burger menu\n */\n const excludedPluginsFromBurgerMenu = [\n 'content-manager',\n 'content-type-builder',\n 'upload',\n 'content-releases',\n ];\n const burgerMenuPluginsLinks = pluginsSectionLinks.filter(\n (plugin) => !excludedPluginsFromBurgerMenu.some((link) => plugin.to.includes(link))\n );\n const burgerMobileNavigationLinks = [\n ...burgerMenuPluginsLinks,\n ...mapMobileNavigationLinks(burgerMobileNavigation),\n ];\n\n return (\n <>\n <MainNav>\n <NavBrand />\n\n {isDesktop && <Divider />}\n\n <MenuDetails>\n <NavListWrapper\n tag=\"ul\"\n gap={3}\n direction={{\n initial: 'row',\n large: 'column',\n }}\n alignItems=\"center\"\n justifyContent={{\n initial: 'center',\n large: 'flex-start',\n }}\n flex={1}\n paddingLeft={{\n initial: 3,\n large: 0,\n }}\n paddingRight={{\n initial: 3,\n large: 0,\n }}\n paddingTop={3}\n paddingBottom={3}\n >\n <MainNavIcons\n listLinks={listLinks}\n mobileLinks={topMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n />\n </NavListWrapper>\n <TrialCountdown />\n <Box\n display={{\n initial: 'none',\n large: 'flex',\n }}\n borderStyle=\"solid\"\n borderWidth={{\n initial: 0,\n large: '1px 0 0 0',\n }}\n borderColor=\"neutral150\"\n padding={3}\n >\n <NavUser />\n </Box>\n </MenuDetails>\n\n <Box\n padding={3}\n display={{\n initial: 'flex',\n large: 'none',\n }}\n >\n <IconButton\n onClick={() => setIsBurgerMenuShown((prev) => !prev)}\n style={{ border: 'none' }}\n label=\"Menu\"\n type=\"button\"\n aria-expanded={isBurgerMenuShown}\n aria-controls=\"burger-menu\"\n >\n {!isBurgerMenuShown ? <List fill=\"neutral1000\" /> : <Cross fill=\"neutral1000\" />}\n </IconButton>\n </Box>\n </MainNav>\n <NavBurgerMenu\n isShown={isBurgerMenuShown}\n listLinks={burgerMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n onClose={() => setIsBurgerMenuShown(false)}\n />\n </>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavListWrapper","styled","Flex","MenuDetails","theme","breakpoints","large","LeftMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isBurgerMenuShown","setIsBurgerMenuShown","React","useState","trackUsage","useTracking","pathname","useLocation","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","isDesktop","useIsDesktop","handleClickOnLink","destination","from","to","useEffect","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","mapMobileNavigationLinks","mobileNavLinks","reduce","acc","mobileLink","linkFound","find","link","push","navigationLink","topMobileNavigationLinks","excludedPluginsFromBurgerMenu","burgerMenuPluginsLinks","filter","plugin","some","includes","burgerMobileNavigationLinks","_jsxs","_Fragment","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","initial","alignItems","justifyContent","flex","paddingLeft","paddingRight","paddingTop","paddingBottom","MainNavIcons","mobileLinks","TrialCountdown","Box","display","borderStyle","borderWidth","borderColor","padding","NavUser","IconButton","onClick","prev","style","border","label","type","aria-expanded","aria-controls","List","fill","Cross","NavBurgerMenu","isShown","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"LeftMenu.js","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Divider, Flex, FlexComponent, IconButton, useCollator } from '@strapi/design-system';\nimport { Cross, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { Menu, MenuItem, MobileMenuItem } from '../hooks/useMenu';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { MainNavIcons } from './MainNav/MainNavLinks';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavBurgerMenu } from './MainNav/NavBurgerMenu';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n width: 100%;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\ninterface LeftMenuProps\n extends Pick<\n Menu,\n 'generalSectionLinks' | 'pluginsSectionLinks' | 'topMobileNavigation' | 'burgerMobileNavigation'\n > {}\n\nconst MenuDetails = styled(Flex)`\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n overflow-x: auto;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n }\n`;\n\nconst LeftMenu = ({\n generalSectionLinks = [],\n pluginsSectionLinks = [],\n topMobileNavigation = [],\n burgerMobileNavigation = [],\n}: LeftMenuProps) => {\n const [isBurgerMenuShown, setIsBurgerMenuShown] = React.useState(false);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const isDesktop = useIsDesktop();\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n // Close burger menu when route changes\n React.useEffect(() => {\n setIsBurgerMenuShown(false);\n }, [pathname]);\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n /**\n * Return filtered mobile navigation links (used for both top and burger menu)\n */\n const mapMobileNavigationLinks = (mobileNavLinks: MobileMenuItem[]): MenuItem[] =>\n mobileNavLinks.reduce<MenuItem[]>((acc, mobileLink) => {\n const linkFound = listLinks.find((link) => link.to === mobileLink.to);\n if (linkFound) {\n acc.push(mobileLink.link ? { ...linkFound, navigationLink: mobileLink.link } : linkFound);\n }\n return acc;\n }, []);\n\n /**\n * Mobile top navigation\n */\n const topMobileNavigationLinks = mapMobileNavigationLinks(topMobileNavigation);\n\n /**\n * Mobile burger menu\n */\n const excludedPluginsFromBurgerMenu = [\n 'content-manager',\n 'content-type-builder',\n 'upload',\n 'content-releases',\n ];\n const burgerMenuPluginsLinks = pluginsSectionLinks.filter(\n (plugin) => !excludedPluginsFromBurgerMenu.some((link) => plugin.to.includes(link))\n );\n const burgerMobileNavigationLinks = [\n ...burgerMenuPluginsLinks,\n ...mapMobileNavigationLinks(burgerMobileNavigation),\n ];\n\n return (\n <>\n <MainNav>\n <NavBrand />\n\n {isDesktop && <Divider />}\n\n <MenuDetails>\n <NavListWrapper\n tag=\"ul\"\n gap={3}\n direction={{\n initial: 'row',\n large: 'column',\n }}\n alignItems=\"center\"\n justifyContent={{\n initial: 'center',\n large: 'flex-start',\n }}\n flex={1}\n paddingLeft={{\n initial: 3,\n large: 0,\n }}\n paddingRight={{\n initial: 3,\n large: 0,\n }}\n paddingTop={3}\n paddingBottom={3}\n >\n <MainNavIcons\n listLinks={listLinks}\n mobileLinks={topMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n />\n </NavListWrapper>\n <TrialCountdown />\n <Box\n display={{\n initial: 'none',\n large: 'flex',\n }}\n borderStyle=\"solid\"\n borderWidth={{\n initial: 0,\n large: '1px 0 0 0',\n }}\n borderColor=\"neutral150\"\n padding={3}\n >\n <NavUser />\n </Box>\n </MenuDetails>\n\n <Box\n padding={3}\n display={{\n initial: 'flex',\n large: 'none',\n }}\n >\n <IconButton\n onClick={() => setIsBurgerMenuShown((prev) => !prev)}\n style={{ border: 'none' }}\n label=\"Menu\"\n type=\"button\"\n aria-expanded={isBurgerMenuShown}\n aria-controls=\"burger-menu\"\n >\n {!isBurgerMenuShown ? <List fill=\"neutral1000\" /> : <Cross fill=\"neutral1000\" />}\n </IconButton>\n </Box>\n </MainNav>\n <NavBurgerMenu\n isShown={isBurgerMenuShown}\n listLinks={burgerMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n onClose={() => setIsBurgerMenuShown(false)}\n />\n </>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavListWrapper","styled","Flex","MenuDetails","theme","breakpoints","large","LeftMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isBurgerMenuShown","setIsBurgerMenuShown","React","useState","trackUsage","useTracking","pathname","useLocation","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","isDesktop","useIsDesktop","handleClickOnLink","destination","from","to","useEffect","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","mapMobileNavigationLinks","mobileNavLinks","reduce","acc","mobileLink","linkFound","find","link","push","navigationLink","topMobileNavigationLinks","excludedPluginsFromBurgerMenu","burgerMenuPluginsLinks","filter","plugin","some","includes","burgerMobileNavigationLinks","_jsxs","_Fragment","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","initial","alignItems","justifyContent","flex","paddingLeft","paddingRight","paddingTop","paddingBottom","MainNavIcons","mobileLinks","TrialCountdown","Box","display","borderStyle","borderWidth","borderColor","padding","NavUser","IconButton","onClick","prev","style","border","label","type","aria-expanded","aria-controls","List","fill","Cross","NavBurgerMenu","isShown","onClose"],"mappings":"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"}
@@ -14,7 +14,8 @@ var Notifications = require('../features/Notifications.js');
14
14
  var useMediaQuery = require('../hooks/useMediaQuery.js');
15
15
  var usePersistentState = require('../hooks/usePersistentState.js');
16
16
 
17
- function _interopNamespaceDefault(e) {
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule) return e;
18
19
  var n = Object.create(null);
19
20
  if (e) {
20
21
  Object.keys(e).forEach(function (k) {
@@ -31,8 +32,8 @@ function _interopNamespaceDefault(e) {
31
32
  return Object.freeze(n);
32
33
  }
33
34
 
34
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
- var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
35
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
36
37
 
37
38
  const FieldWrapper = styled.styled(designSystem.Field.Root)`
38
39
  height: 3.2rem;