@strapi/admin 5.37.1 → 5.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (992) hide show
  1. package/dist/admin/admin/src/App.js +1 -1
  2. package/dist/admin/admin/src/App.js.map +1 -1
  3. package/dist/admin/admin/src/App.mjs +1 -1
  4. package/dist/admin/admin/src/App.mjs.map +1 -1
  5. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  6. package/dist/admin/admin/src/StrapiApp.mjs +2 -2
  7. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  8. package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -1
  9. package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -1
  10. package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.js.map +1 -1
  11. package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.mjs.map +1 -1
  12. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  13. package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
  14. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  15. package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
  16. package/dist/admin/admin/src/components/Context.js.map +1 -1
  17. package/dist/admin/admin/src/components/Context.mjs.map +1 -1
  18. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  19. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  20. package/dist/admin/admin/src/components/DragLayer.js.map +1 -1
  21. package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -1
  22. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  23. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  24. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  25. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  26. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/Form.js +14 -0
  28. package/dist/admin/admin/src/components/Form.js.map +1 -1
  29. package/dist/admin/admin/src/components/Form.mjs +15 -1
  30. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  32. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/FormInputs/Checkbox.js.map +1 -1
  34. package/dist/admin/admin/src/components/FormInputs/Checkbox.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  36. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
  38. package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
  40. package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  42. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  44. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
  46. package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
  47. package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
  48. package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  50. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  52. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
  54. package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
  55. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  56. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  58. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
  59. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  60. package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -1
  61. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  62. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  63. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -1
  64. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -1
  65. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  66. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +1 -1
  67. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  68. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js.map +1 -1
  69. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs +1 -1
  70. package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs.map +1 -1
  71. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js.map +1 -1
  72. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs.map +1 -1
  73. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  74. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  75. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  76. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs +2 -2
  77. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  78. package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
  79. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  80. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +2 -2
  81. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  82. package/dist/admin/admin/src/components/GuidedTour/utils/constants.js.map +1 -1
  83. package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs.map +1 -1
  84. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -1
  85. package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -1
  86. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  87. package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
  88. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  89. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
  90. package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
  91. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
  92. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  93. package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
  94. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  95. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +1 -1
  96. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  97. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  98. package/dist/admin/admin/src/components/Layouts/Layout.mjs +1 -1
  99. package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
  100. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  101. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  102. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  103. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  104. package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
  105. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  106. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +1 -1
  107. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -1
  108. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  109. package/dist/admin/admin/src/components/MainNav/NavBrand.mjs.map +1 -1
  110. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
  111. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +2 -2
  112. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -1
  113. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  114. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -2
  115. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  116. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  117. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +2 -2
  118. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  119. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  120. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +1 -1
  121. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
  122. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  123. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  124. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  125. package/dist/admin/admin/src/components/PageHelpers.mjs +2 -2
  126. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  127. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  128. package/dist/admin/admin/src/components/Pagination.mjs +1 -1
  129. package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
  130. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  131. package/dist/admin/admin/src/components/PluginsInitializer.mjs.map +1 -1
  132. package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
  133. package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
  134. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  135. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  136. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  137. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  138. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  139. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
  140. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  141. package/dist/admin/admin/src/components/SearchInput.mjs.map +1 -1
  142. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  143. package/dist/admin/admin/src/components/SubNav.mjs +3 -3
  144. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  145. package/dist/admin/admin/src/components/Table.js.map +1 -1
  146. package/dist/admin/admin/src/components/Table.mjs +1 -1
  147. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  148. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  149. package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
  150. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  151. package/dist/admin/admin/src/components/UnauthenticatedLogo.mjs.map +1 -1
  152. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  153. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  154. package/dist/admin/admin/src/components/WidgetHelpers.js.map +1 -1
  155. package/dist/admin/admin/src/components/WidgetHelpers.mjs +3 -3
  156. package/dist/admin/admin/src/components/WidgetHelpers.mjs.map +1 -1
  157. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  158. package/dist/admin/admin/src/components/WidgetRoot.mjs +2 -2
  159. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  160. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  161. package/dist/admin/admin/src/components/Widgets.mjs +3 -3
  162. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  163. package/dist/admin/admin/src/constants/filters.js.map +1 -1
  164. package/dist/admin/admin/src/constants/filters.mjs.map +1 -1
  165. package/dist/admin/admin/src/constants/theme.js.map +1 -1
  166. package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
  167. package/dist/admin/admin/src/constants.js.map +1 -1
  168. package/dist/admin/admin/src/constants.mjs.map +1 -1
  169. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  170. package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
  171. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  172. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  173. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  174. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  175. package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
  176. package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
  177. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  178. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  179. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  180. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  181. package/dist/admin/admin/src/core/store/hooks.js.map +1 -1
  182. package/dist/admin/admin/src/core/store/hooks.mjs.map +1 -1
  183. package/dist/admin/admin/src/core/utils/basename.js.map +1 -1
  184. package/dist/admin/admin/src/core/utils/basename.mjs.map +1 -1
  185. package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
  186. package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
  187. package/dist/admin/admin/src/features/AppInfo.js.map +1 -1
  188. package/dist/admin/admin/src/features/AppInfo.mjs.map +1 -1
  189. package/dist/admin/admin/src/features/Auth.js +0 -1
  190. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  191. package/dist/admin/admin/src/features/Auth.mjs +1 -2
  192. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  193. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  194. package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
  195. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  196. package/dist/admin/admin/src/features/Configuration.mjs.map +1 -1
  197. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  198. package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
  199. package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
  200. package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
  201. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  202. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  203. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  204. package/dist/admin/admin/src/features/Widgets.mjs +1 -1
  205. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  206. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  207. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
  208. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  209. package/dist/admin/admin/src/hooks/useAdminRoles.mjs.map +1 -1
  210. package/dist/admin/admin/src/hooks/useClipboard.js.map +1 -1
  211. package/dist/admin/admin/src/hooks/useClipboard.mjs.map +1 -1
  212. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  213. package/dist/admin/admin/src/hooks/useControllableState.mjs.map +1 -1
  214. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  215. package/dist/admin/admin/src/hooks/useDebounce.mjs.map +1 -1
  216. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  217. package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -1
  218. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  219. package/dist/admin/admin/src/hooks/useElementOnScreen.mjs.map +1 -1
  220. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  221. package/dist/admin/admin/src/hooks/useEnterprise.mjs.map +1 -1
  222. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  223. package/dist/admin/admin/src/hooks/useFetchClient.mjs.map +1 -1
  224. package/dist/admin/admin/src/hooks/useFocusInputField.js.map +1 -1
  225. package/dist/admin/admin/src/hooks/useFocusInputField.mjs.map +1 -1
  226. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  227. package/dist/admin/admin/src/hooks/useForceUpdate.mjs.map +1 -1
  228. package/dist/admin/admin/src/hooks/useInjectReducer.js.map +1 -1
  229. package/dist/admin/admin/src/hooks/useInjectReducer.mjs.map +1 -1
  230. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  231. package/dist/admin/admin/src/hooks/useIsMounted.mjs.map +1 -1
  232. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  233. package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -1
  234. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  235. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  236. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  237. package/dist/admin/admin/src/hooks/useOnce.mjs.map +1 -1
  238. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  239. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  240. package/dist/admin/admin/src/hooks/usePrev.js.map +1 -1
  241. package/dist/admin/admin/src/hooks/usePrev.mjs.map +1 -1
  242. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  243. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  244. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  245. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  246. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  247. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
  248. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  249. package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
  250. package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.js.map +1 -1
  251. package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.mjs.map +1 -1
  252. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  253. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  254. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  255. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +1 -1
  256. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
  257. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  258. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  259. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  260. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.mjs.map +1 -1
  261. package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.js.map +1 -1
  262. package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.mjs.map +1 -1
  263. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  264. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  265. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  266. package/dist/admin/admin/src/pages/Auth/components/Oops.mjs.map +1 -1
  267. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  268. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  269. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  270. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  271. package/dist/admin/admin/src/pages/Auth/constants.js.map +1 -1
  272. package/dist/admin/admin/src/pages/Auth/constants.mjs.map +1 -1
  273. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  274. package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -1
  275. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  276. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  277. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
  278. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
  279. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  280. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  281. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  282. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  283. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
  284. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  285. package/dist/admin/admin/src/pages/NotFoundPage.js.map +1 -1
  286. package/dist/admin/admin/src/pages/NotFoundPage.mjs.map +1 -1
  287. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  288. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  289. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  290. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  291. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.js.map +1 -1
  292. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.mjs.map +1 -1
  293. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.js.map +1 -1
  294. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.mjs.map +1 -1
  295. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.js.map +1 -1
  296. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.mjs.map +1 -1
  297. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.js.map +1 -1
  298. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.mjs.map +1 -1
  299. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.js.map +1 -1
  300. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.mjs.map +1 -1
  301. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.js.map +1 -1
  302. package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.mjs.map +1 -1
  303. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  304. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
  305. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  306. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  307. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
  308. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  309. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  310. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  311. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  312. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +2 -2
  313. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  314. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  315. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
  316. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  317. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.js.map +1 -1
  318. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.mjs.map +1 -1
  319. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
  320. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
  321. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
  322. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
  323. package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
  324. package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
  325. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.js.map +1 -1
  326. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.mjs.map +1 -1
  327. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  328. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  329. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.js.map +1 -1
  330. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.mjs.map +1 -1
  331. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js.map +1 -1
  332. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.mjs.map +1 -1
  333. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  334. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +1 -1
  335. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
  336. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  337. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -2
  338. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  339. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.js.map +1 -1
  340. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.mjs.map +1 -1
  341. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +1 -1
  342. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +1 -1
  343. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.js.map +1 -1
  344. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.mjs.map +1 -1
  345. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +1 -1
  346. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +1 -1
  347. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  348. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
  349. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +1 -1
  350. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +1 -1
  351. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  352. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  353. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  354. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  355. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
  356. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  357. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -2
  358. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  359. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  360. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +2 -2
  361. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  362. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.js.map +1 -1
  363. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.mjs.map +1 -1
  364. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
  365. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
  366. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  367. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  368. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
  369. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
  370. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
  371. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
  372. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
  373. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
  374. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  375. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +1 -1
  376. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  377. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  378. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +1 -1
  379. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  380. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  381. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs +1 -1
  382. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  383. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  384. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.mjs.map +1 -1
  385. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  386. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +1 -1
  387. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  388. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  389. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs +1 -1
  390. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs.map +1 -1
  391. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  392. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  393. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  394. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +1 -1
  395. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  396. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.js.map +1 -1
  397. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.mjs.map +1 -1
  398. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  399. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  400. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  401. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.mjs.map +1 -1
  402. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  403. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +1 -1
  404. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  405. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  406. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  407. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.js.map +1 -1
  408. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.mjs.map +1 -1
  409. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
  410. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
  411. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.js.map +1 -1
  412. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.mjs.map +1 -1
  413. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.js.map +1 -1
  414. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.mjs.map +1 -1
  415. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  416. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  417. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.js.map +1 -1
  418. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.mjs.map +1 -1
  419. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
  420. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
  421. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  422. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.mjs.map +1 -1
  423. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  424. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  425. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.js.map +1 -1
  426. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.mjs.map +1 -1
  427. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  428. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.mjs.map +1 -1
  429. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
  430. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
  431. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.js.map +1 -1
  432. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.mjs.map +1 -1
  433. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  434. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.mjs.map +1 -1
  435. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
  436. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
  437. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.js.map +1 -1
  438. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.mjs.map +1 -1
  439. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  440. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  441. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  442. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  443. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  444. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +1 -1
  445. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  446. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  447. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  448. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  449. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.mjs.map +1 -1
  450. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
  451. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
  452. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.js.map +1 -1
  453. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.mjs.map +1 -1
  454. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  455. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
  456. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  457. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs +1 -1
  458. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
  459. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  460. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs.map +1 -1
  461. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.js.map +1 -1
  462. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.mjs.map +1 -1
  463. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  464. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
  465. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  466. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
  467. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  468. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +1 -3
  469. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  470. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +2 -4
  471. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
  472. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.js.map +1 -1
  473. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.mjs.map +1 -1
  474. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  475. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +1 -1
  476. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  477. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.js.map +1 -1
  478. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.mjs.map +1 -1
  479. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  480. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +1 -1
  481. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  482. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.js.map +1 -1
  483. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.mjs.map +1 -1
  484. package/dist/admin/admin/src/pages/Settings/utils/forms.js.map +1 -1
  485. package/dist/admin/admin/src/pages/Settings/utils/forms.mjs.map +1 -1
  486. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  487. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  488. package/dist/admin/admin/src/reducer.js.map +1 -1
  489. package/dist/admin/admin/src/reducer.mjs +1 -1
  490. package/dist/admin/admin/src/reducer.mjs.map +1 -1
  491. package/dist/admin/admin/src/render.js.map +1 -1
  492. package/dist/admin/admin/src/render.mjs.map +1 -1
  493. package/dist/admin/admin/src/router.js +4 -4
  494. package/dist/admin/admin/src/router.js.map +1 -1
  495. package/dist/admin/admin/src/router.mjs.map +1 -1
  496. package/dist/admin/admin/src/selectors.js.map +1 -1
  497. package/dist/admin/admin/src/selectors.mjs.map +1 -1
  498. package/dist/admin/admin/src/services/admin.js.map +1 -1
  499. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  500. package/dist/admin/admin/src/services/api.js.map +1 -1
  501. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  502. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  503. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  504. package/dist/admin/admin/src/services/auth.js.map +1 -1
  505. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  506. package/dist/admin/admin/src/services/contentApi.js.map +1 -1
  507. package/dist/admin/admin/src/services/contentApi.mjs.map +1 -1
  508. package/dist/admin/admin/src/services/homepage.js.map +1 -1
  509. package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
  510. package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
  511. package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
  512. package/dist/admin/admin/src/services/users.js.map +1 -1
  513. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  514. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  515. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  516. package/dist/admin/admin/src/translations/es.json.js +356 -120
  517. package/dist/admin/admin/src/translations/es.json.js.map +1 -1
  518. package/dist/admin/admin/src/translations/es.json.mjs +355 -121
  519. package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
  520. package/dist/admin/admin/src/translations/fr.json.js +126 -1
  521. package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
  522. package/dist/admin/admin/src/translations/fr.json.mjs +126 -1
  523. package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
  524. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  525. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  526. package/dist/admin/admin/src/utils/arrays.js.map +1 -1
  527. package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
  528. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  529. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  530. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  531. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  532. package/dist/admin/admin/src/utils/deviceId.js.map +1 -1
  533. package/dist/admin/admin/src/utils/deviceId.mjs.map +1 -1
  534. package/dist/admin/admin/src/utils/getFetchClient.js +1 -3
  535. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  536. package/dist/admin/admin/src/utils/getFetchClient.mjs +1 -3
  537. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  538. package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
  539. package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
  540. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  541. package/dist/admin/admin/src/utils/locales.mjs.map +1 -1
  542. package/dist/admin/admin/src/utils/normalizeAPIError.js.map +1 -1
  543. package/dist/admin/admin/src/utils/normalizeAPIError.mjs.map +1 -1
  544. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  545. package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
  546. package/dist/admin/admin/src/utils/once.js.map +1 -1
  547. package/dist/admin/admin/src/utils/once.mjs.map +1 -1
  548. package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -1
  549. package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -1
  550. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  551. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  552. package/dist/admin/admin/src/utils/shims.js.map +1 -1
  553. package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
  554. package/dist/admin/admin/src/utils/strings.js.map +1 -1
  555. package/dist/admin/admin/src/utils/strings.mjs.map +1 -1
  556. package/dist/admin/admin/src/utils/translatedErrors.js.map +1 -1
  557. package/dist/admin/admin/src/utils/translatedErrors.mjs.map +1 -1
  558. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  559. package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
  560. package/dist/admin/admin/src/utils/users.js.map +1 -1
  561. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  562. package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -1
  563. package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -1
  564. package/dist/admin/admin/tests/mockData.js.map +1 -1
  565. package/dist/admin/admin/tests/mockData.mjs.map +1 -1
  566. package/dist/admin/admin/tests/server.js.map +1 -1
  567. package/dist/admin/admin/tests/server.mjs.map +1 -1
  568. package/dist/admin/admin/tests/store.js.map +1 -1
  569. package/dist/admin/admin/tests/store.mjs.map +1 -1
  570. package/dist/admin/admin/tests/utils.js.map +1 -1
  571. package/dist/admin/admin/tests/utils.mjs +1 -1
  572. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  573. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  574. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  575. package/dist/admin/ee/admin/src/components/GlobalNotifications.js.map +1 -1
  576. package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs.map +1 -1
  577. package/dist/admin/ee/admin/src/constants.js.map +1 -1
  578. package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
  579. package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
  580. package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
  581. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -1
  582. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -1
  583. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  584. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  585. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  586. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
  587. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  588. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs +1 -1
  589. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs.map +1 -1
  590. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  591. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs +1 -1
  592. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs.map +1 -1
  593. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  594. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs +1 -1
  595. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
  596. package/dist/admin/ee/admin/src/pages/AuthPage/constants.js.map +1 -1
  597. package/dist/admin/ee/admin/src/pages/AuthPage/constants.mjs.map +1 -1
  598. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  599. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  600. package/dist/admin/ee/admin/src/pages/HomePage.js.map +1 -1
  601. package/dist/admin/ee/admin/src/pages/HomePage.mjs.map +1 -1
  602. package/dist/admin/ee/admin/src/pages/SettingsPage/constants.js.map +1 -1
  603. package/dist/admin/ee/admin/src/pages/SettingsPage/constants.mjs.map +1 -1
  604. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  605. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +1 -1
  606. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  607. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  608. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  609. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  610. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  611. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
  612. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
  613. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  614. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs +1 -1
  615. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
  616. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  617. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs.map +1 -1
  618. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  619. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
  620. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  621. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  622. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  623. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  624. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  625. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  626. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.js.map +1 -1
  627. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.mjs.map +1 -1
  628. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  629. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs.map +1 -1
  630. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
  631. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
  632. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js.map +1 -1
  633. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs.map +1 -1
  634. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.js.map +1 -1
  635. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.mjs.map +1 -1
  636. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  637. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  638. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  639. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  640. package/dist/admin/index.js +10 -6
  641. package/dist/admin/index.js.map +1 -1
  642. package/dist/admin/index.mjs +1 -0
  643. package/dist/admin/index.mjs.map +1 -1
  644. package/dist/admin/src/components/DefaultDocument.js.map +1 -1
  645. package/dist/admin/src/components/DefaultDocument.mjs.map +1 -1
  646. package/dist/admin/src/components/Form.d.ts +1 -0
  647. package/dist/admin/src/components/NoJavascript.js.map +1 -1
  648. package/dist/admin/src/components/NoJavascript.mjs.map +1 -1
  649. package/dist/admin/src/index.d.ts +1 -0
  650. package/dist/server/ee/server/src/ai/containers/ai.js +0 -4
  651. package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -1
  652. package/dist/server/ee/server/src/ai/containers/ai.mjs +0 -4
  653. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -1
  654. package/dist/server/ee/server/src/ai/controllers/ai.js +0 -4
  655. package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
  656. package/dist/server/ee/server/src/ai/controllers/ai.mjs +0 -4
  657. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
  658. package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
  659. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
  660. package/dist/server/ee/server/src/audit-logs/content-types/audit-log.js.map +1 -1
  661. package/dist/server/ee/server/src/audit-logs/content-types/audit-log.mjs.map +1 -1
  662. package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
  663. package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
  664. package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
  665. package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
  666. package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
  667. package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
  668. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  669. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  670. package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
  671. package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
  672. package/dist/server/ee/server/src/bootstrap.js.map +1 -1
  673. package/dist/server/ee/server/src/bootstrap.mjs.map +1 -1
  674. package/dist/server/ee/server/src/config/admin-actions.js.map +1 -1
  675. package/dist/server/ee/server/src/config/admin-actions.mjs.map +1 -1
  676. package/dist/server/ee/server/src/content-types/index.js.map +1 -1
  677. package/dist/server/ee/server/src/content-types/index.mjs.map +1 -1
  678. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  679. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  680. package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
  681. package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
  682. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  683. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  684. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  685. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +1 -1
  686. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  687. package/dist/server/ee/server/src/controllers/authentication.js +5 -5
  688. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  689. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  690. package/dist/server/ee/server/src/controllers/index.js.map +1 -1
  691. package/dist/server/ee/server/src/controllers/index.mjs.map +1 -1
  692. package/dist/server/ee/server/src/controllers/role.js.map +1 -1
  693. package/dist/server/ee/server/src/controllers/role.mjs +1 -1
  694. package/dist/server/ee/server/src/controllers/role.mjs.map +1 -1
  695. package/dist/server/ee/server/src/controllers/user.js +4 -4
  696. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  697. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  698. package/dist/server/ee/server/src/index.js +16 -16
  699. package/dist/server/ee/server/src/index.js.map +1 -1
  700. package/dist/server/ee/server/src/index.mjs.map +1 -1
  701. package/dist/server/ee/server/src/register.js.map +1 -1
  702. package/dist/server/ee/server/src/register.mjs.map +1 -1
  703. package/dist/server/ee/server/src/routes/index.js.map +1 -1
  704. package/dist/server/ee/server/src/routes/index.mjs.map +1 -1
  705. package/dist/server/ee/server/src/routes/license-limit.js.map +1 -1
  706. package/dist/server/ee/server/src/routes/license-limit.mjs.map +1 -1
  707. package/dist/server/ee/server/src/routes/sso.js.map +1 -1
  708. package/dist/server/ee/server/src/routes/sso.mjs.map +1 -1
  709. package/dist/server/ee/server/src/routes/utils.js.map +1 -1
  710. package/dist/server/ee/server/src/routes/utils.mjs.map +1 -1
  711. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  712. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  713. package/dist/server/ee/server/src/services/index.js.map +1 -1
  714. package/dist/server/ee/server/src/services/index.mjs.map +1 -1
  715. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  716. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  717. package/dist/server/ee/server/src/services/passport/provider-registry.js.map +1 -1
  718. package/dist/server/ee/server/src/services/passport/provider-registry.mjs.map +1 -1
  719. package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
  720. package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
  721. package/dist/server/ee/server/src/services/passport.js.map +1 -1
  722. package/dist/server/ee/server/src/services/passport.mjs.map +1 -1
  723. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  724. package/dist/server/ee/server/src/services/persist-tables.mjs +4 -4
  725. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  726. package/dist/server/ee/server/src/services/role.js.map +1 -1
  727. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  728. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  729. package/dist/server/ee/server/src/services/seat-enforcement.mjs +1 -1
  730. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  731. package/dist/server/ee/server/src/services/user.js.map +1 -1
  732. package/dist/server/ee/server/src/services/user.mjs +1 -1
  733. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  734. package/dist/server/ee/server/src/utils/index.js.map +1 -1
  735. package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
  736. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  737. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  738. package/dist/server/ee/server/src/validation/authentication.js.map +1 -1
  739. package/dist/server/ee/server/src/validation/authentication.mjs.map +1 -1
  740. package/dist/server/ee/server/src/validation/role.js.map +1 -1
  741. package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
  742. package/dist/server/ee/server/src/validation/user.js.map +1 -1
  743. package/dist/server/ee/server/src/validation/user.mjs.map +1 -1
  744. package/dist/server/index.js +18 -18
  745. package/dist/server/index.js.map +1 -1
  746. package/dist/server/index.mjs +2 -2
  747. package/dist/server/index.mjs.map +1 -1
  748. package/dist/server/server/src/bootstrap.js.map +1 -1
  749. package/dist/server/server/src/bootstrap.mjs +1 -1
  750. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  751. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  752. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  753. package/dist/server/server/src/config/admin-conditions.js.map +1 -1
  754. package/dist/server/server/src/config/admin-conditions.mjs.map +1 -1
  755. package/dist/server/server/src/config/email-templates/forgot-password.js.map +1 -1
  756. package/dist/server/server/src/config/email-templates/forgot-password.mjs.map +1 -1
  757. package/dist/server/server/src/config/index.js.map +1 -1
  758. package/dist/server/server/src/config/index.mjs.map +1 -1
  759. package/dist/server/server/src/content-types/Permission.js.map +1 -1
  760. package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
  761. package/dist/server/server/src/content-types/Role.js.map +1 -1
  762. package/dist/server/server/src/content-types/Role.mjs.map +1 -1
  763. package/dist/server/server/src/content-types/User.js.map +1 -1
  764. package/dist/server/server/src/content-types/User.mjs.map +1 -1
  765. package/dist/server/server/src/content-types/api-token-permission.js.map +1 -1
  766. package/dist/server/server/src/content-types/api-token-permission.mjs.map +1 -1
  767. package/dist/server/server/src/content-types/api-token.js.map +1 -1
  768. package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
  769. package/dist/server/server/src/content-types/index.js.map +1 -1
  770. package/dist/server/server/src/content-types/index.mjs.map +1 -1
  771. package/dist/server/server/src/content-types/session.js.map +1 -1
  772. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  773. package/dist/server/server/src/content-types/transfer-token-permission.js.map +1 -1
  774. package/dist/server/server/src/content-types/transfer-token-permission.mjs.map +1 -1
  775. package/dist/server/server/src/content-types/transfer-token.js.map +1 -1
  776. package/dist/server/server/src/content-types/transfer-token.mjs.map +1 -1
  777. package/dist/server/server/src/controllers/admin.js.map +1 -1
  778. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  779. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  780. package/dist/server/server/src/controllers/api-token.mjs +3 -3
  781. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  782. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  783. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  784. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  785. package/dist/server/server/src/controllers/authentication.mjs +2 -2
  786. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  787. package/dist/server/server/src/controllers/content-api.js.map +1 -1
  788. package/dist/server/server/src/controllers/content-api.mjs.map +1 -1
  789. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  790. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  791. package/dist/server/server/src/controllers/homepage.js.map +1 -1
  792. package/dist/server/server/src/controllers/homepage.mjs.map +1 -1
  793. package/dist/server/server/src/controllers/index.js.map +1 -1
  794. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  795. package/dist/server/server/src/controllers/permission.js.map +1 -1
  796. package/dist/server/server/src/controllers/permission.mjs.map +1 -1
  797. package/dist/server/server/src/controllers/role.js.map +1 -1
  798. package/dist/server/server/src/controllers/role.mjs +1 -1
  799. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  800. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  801. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  802. package/dist/server/server/src/controllers/transfer/runner.js.map +1 -1
  803. package/dist/server/server/src/controllers/transfer/runner.mjs.map +1 -1
  804. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  805. package/dist/server/server/src/controllers/transfer/token.mjs +2 -2
  806. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  807. package/dist/server/server/src/controllers/user.js.map +1 -1
  808. package/dist/server/server/src/controllers/user.mjs +1 -1
  809. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  810. package/dist/server/server/src/controllers/validation/schema.js.map +1 -1
  811. package/dist/server/server/src/controllers/validation/schema.mjs.map +1 -1
  812. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  813. package/dist/server/server/src/controllers/webhooks.mjs.map +1 -1
  814. package/dist/server/server/src/destroy.js.map +1 -1
  815. package/dist/server/server/src/destroy.mjs.map +1 -1
  816. package/dist/server/server/src/domain/action/index.js.map +1 -1
  817. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  818. package/dist/server/server/src/domain/action/provider.js.map +1 -1
  819. package/dist/server/server/src/domain/action/provider.mjs +1 -1
  820. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  821. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  822. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  823. package/dist/server/server/src/domain/condition/provider.js.map +1 -1
  824. package/dist/server/server/src/domain/condition/provider.mjs.map +1 -1
  825. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  826. package/dist/server/server/src/domain/permission/index.mjs +1 -1
  827. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  828. package/dist/server/server/src/domain/user.js.map +1 -1
  829. package/dist/server/server/src/domain/user.mjs.map +1 -1
  830. package/dist/server/server/src/middlewares/data-transfer.js.map +1 -1
  831. package/dist/server/server/src/middlewares/data-transfer.mjs.map +1 -1
  832. package/dist/server/server/src/middlewares/index.js.map +1 -1
  833. package/dist/server/server/src/middlewares/index.mjs.map +1 -1
  834. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  835. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  836. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  837. package/dist/server/server/src/policies/hasPermissions.mjs.map +1 -1
  838. package/dist/server/server/src/policies/index.js.map +1 -1
  839. package/dist/server/server/src/policies/index.mjs.map +1 -1
  840. package/dist/server/server/src/policies/isAuthenticatedAdmin.js.map +1 -1
  841. package/dist/server/server/src/policies/isAuthenticatedAdmin.mjs.map +1 -1
  842. package/dist/server/server/src/policies/isTelemetryEnabled.js.map +1 -1
  843. package/dist/server/server/src/policies/isTelemetryEnabled.mjs.map +1 -1
  844. package/dist/server/server/src/register.js.map +1 -1
  845. package/dist/server/server/src/register.mjs.map +1 -1
  846. package/dist/server/server/src/routes/admin.js.map +1 -1
  847. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  848. package/dist/server/server/src/routes/api-tokens.js.map +1 -1
  849. package/dist/server/server/src/routes/api-tokens.mjs.map +1 -1
  850. package/dist/server/server/src/routes/authentication.js.map +1 -1
  851. package/dist/server/server/src/routes/authentication.mjs.map +1 -1
  852. package/dist/server/server/src/routes/content-api.js.map +1 -1
  853. package/dist/server/server/src/routes/content-api.mjs.map +1 -1
  854. package/dist/server/server/src/routes/homepage.js.map +1 -1
  855. package/dist/server/server/src/routes/homepage.mjs.map +1 -1
  856. package/dist/server/server/src/routes/index.js.map +1 -1
  857. package/dist/server/server/src/routes/index.mjs.map +1 -1
  858. package/dist/server/server/src/routes/permissions.js.map +1 -1
  859. package/dist/server/server/src/routes/permissions.mjs.map +1 -1
  860. package/dist/server/server/src/routes/roles.js.map +1 -1
  861. package/dist/server/server/src/routes/roles.mjs.map +1 -1
  862. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  863. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  864. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  865. package/dist/server/server/src/routes/transfer.js.map +1 -1
  866. package/dist/server/server/src/routes/transfer.mjs.map +1 -1
  867. package/dist/server/server/src/routes/users.js.map +1 -1
  868. package/dist/server/server/src/routes/users.mjs.map +1 -1
  869. package/dist/server/server/src/routes/webhooks.js.map +1 -1
  870. package/dist/server/server/src/routes/webhooks.mjs.map +1 -1
  871. package/dist/server/server/src/services/action.js.map +1 -1
  872. package/dist/server/server/src/services/action.mjs.map +1 -1
  873. package/dist/server/server/src/services/api-token.js.map +1 -1
  874. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  875. package/dist/server/server/src/services/auth.js.map +1 -1
  876. package/dist/server/server/src/services/auth.mjs.map +1 -1
  877. package/dist/server/server/src/services/condition.js.map +1 -1
  878. package/dist/server/server/src/services/condition.mjs.map +1 -1
  879. package/dist/server/server/src/services/constants.js.map +1 -1
  880. package/dist/server/server/src/services/constants.mjs.map +1 -1
  881. package/dist/server/server/src/services/content-type.js +9 -9
  882. package/dist/server/server/src/services/content-type.js.map +1 -1
  883. package/dist/server/server/src/services/content-type.mjs +1 -1
  884. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  885. package/dist/server/server/src/services/encryption.js.map +1 -1
  886. package/dist/server/server/src/services/encryption.mjs.map +1 -1
  887. package/dist/server/server/src/services/homepage.js.map +1 -1
  888. package/dist/server/server/src/services/homepage.mjs +1 -1
  889. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  890. package/dist/server/server/src/services/index.js.map +1 -1
  891. package/dist/server/server/src/services/index.mjs.map +1 -1
  892. package/dist/server/server/src/services/metrics.js.map +1 -1
  893. package/dist/server/server/src/services/metrics.mjs.map +1 -1
  894. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  895. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  896. package/dist/server/server/src/services/passport.js.map +1 -1
  897. package/dist/server/server/src/services/passport.mjs.map +1 -1
  898. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  899. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  900. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  901. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  902. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  903. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  904. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  905. package/dist/server/server/src/services/permission/permissions-manager/query-builders.mjs.map +1 -1
  906. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  907. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +2 -2
  908. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  909. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  910. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +2 -2
  911. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  912. package/dist/server/server/src/services/permission/queries.js +9 -9
  913. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  914. package/dist/server/server/src/services/permission/queries.mjs +1 -1
  915. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  916. package/dist/server/server/src/services/permission/sections-builder/builder.js.map +1 -1
  917. package/dist/server/server/src/services/permission/sections-builder/builder.mjs.map +1 -1
  918. package/dist/server/server/src/services/permission/sections-builder/handlers.js +10 -10
  919. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  920. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +1 -1
  921. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  922. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  923. package/dist/server/server/src/services/permission/sections-builder/index.mjs +1 -1
  924. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  925. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  926. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  927. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  928. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  929. package/dist/server/server/src/services/permission.js.map +1 -1
  930. package/dist/server/server/src/services/permission.mjs.map +1 -1
  931. package/dist/server/server/src/services/project-settings.js.map +1 -1
  932. package/dist/server/server/src/services/project-settings.mjs.map +1 -1
  933. package/dist/server/server/src/services/role.js.map +1 -1
  934. package/dist/server/server/src/services/role.mjs +2 -2
  935. package/dist/server/server/src/services/role.mjs.map +1 -1
  936. package/dist/server/server/src/services/token.js.map +1 -1
  937. package/dist/server/server/src/services/token.mjs.map +1 -1
  938. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  939. package/dist/server/server/src/services/transfer/permission.mjs.map +1 -1
  940. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  941. package/dist/server/server/src/services/transfer/token.mjs +1 -1
  942. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  943. package/dist/server/server/src/services/transfer/utils.js.map +1 -1
  944. package/dist/server/server/src/services/transfer/utils.mjs.map +1 -1
  945. package/dist/server/server/src/services/user.js.map +1 -1
  946. package/dist/server/server/src/services/user.mjs +2 -2
  947. package/dist/server/server/src/services/user.mjs.map +1 -1
  948. package/dist/server/server/src/strategies/admin.js.map +1 -1
  949. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  950. package/dist/server/server/src/strategies/api-token.js.map +1 -1
  951. package/dist/server/server/src/strategies/api-token.mjs.map +1 -1
  952. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  953. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  954. package/dist/server/server/src/utils/index.js.map +1 -1
  955. package/dist/server/server/src/utils/index.mjs.map +1 -1
  956. package/dist/server/server/src/validation/action-provider.js.map +1 -1
  957. package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
  958. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  959. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  960. package/dist/server/server/src/validation/authentication/forgot-password.js.map +1 -1
  961. package/dist/server/server/src/validation/authentication/forgot-password.mjs.map +1 -1
  962. package/dist/server/server/src/validation/authentication/login.js.map +1 -1
  963. package/dist/server/server/src/validation/authentication/login.mjs.map +1 -1
  964. package/dist/server/server/src/validation/authentication/register.js.map +1 -1
  965. package/dist/server/server/src/validation/authentication/register.mjs.map +1 -1
  966. package/dist/server/server/src/validation/authentication/reset-password.js.map +1 -1
  967. package/dist/server/server/src/validation/authentication/reset-password.mjs.map +1 -1
  968. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  969. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
  970. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  971. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.mjs.map +1 -1
  972. package/dist/server/server/src/validation/common-validators.js +2 -4
  973. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  974. package/dist/server/server/src/validation/common-validators.mjs +4 -5
  975. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  976. package/dist/server/server/src/validation/permission.js.map +1 -1
  977. package/dist/server/server/src/validation/permission.mjs.map +1 -1
  978. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  979. package/dist/server/server/src/validation/policies/hasPermissions.mjs.map +1 -1
  980. package/dist/server/server/src/validation/project-settings.js.map +1 -1
  981. package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
  982. package/dist/server/server/src/validation/role.js.map +1 -1
  983. package/dist/server/server/src/validation/role.mjs.map +1 -1
  984. package/dist/server/server/src/validation/transfer/token.js.map +1 -1
  985. package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
  986. package/dist/server/server/src/validation/user.js +1 -4
  987. package/dist/server/server/src/validation/user.js.map +1 -1
  988. package/dist/server/server/src/validation/user.mjs +1 -4
  989. package/dist/server/server/src/validation/user.mjs.map +1 -1
  990. package/dist/server/shared/utils/session-auth.js.map +1 -1
  991. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  992. package/package.json +17 -12
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.js","sources":["../../../../../admin/src/hooks/useMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'> & {\n navigationLink?: string;\n};\nexport type MobileMenuItem = {\n to: string;\n target?: string;\n link?: string;\n};\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n topMobileNavigation: MobileMenuItem[];\n burgerMobileNavigation: MobileMenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: 'https://market.strapi.io',\n target: '_blank',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n topMobileNavigation: [\n {\n to: '/',\n },\n {\n to: 'content-manager',\n },\n {\n to: 'plugins/content-releases',\n },\n {\n to: 'plugins/upload',\n },\n ],\n burgerMobileNavigation: [\n {\n to: '/settings',\n },\n ],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n"],"names":["useMenu","shouldUpdateStrapi","checkUserHasPermissions","useAuth","state","menu","useStrapiApp","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","React","useState","generalSectionLinks","icon","House","intlLabel","id","defaultMessage","to","position","ShoppingCart","target","marketplace","main","Cog","notificationsCount","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isLoading","generalSectionLinksRef","useRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","current","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","map","filter","_","index","length","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions"],"mappings":"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"}
1
+ {"version":3,"file":"useMenu.js","sources":["../../../../../admin/src/hooks/useMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'> & {\n navigationLink?: string;\n};\nexport type MobileMenuItem = {\n to: string;\n target?: string;\n link?: string;\n};\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n topMobileNavigation: MobileMenuItem[];\n burgerMobileNavigation: MobileMenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: 'https://market.strapi.io',\n target: '_blank',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n topMobileNavigation: [\n {\n to: '/',\n },\n {\n to: 'content-manager',\n },\n {\n to: 'plugins/content-releases',\n },\n {\n to: 'plugins/upload',\n },\n ],\n burgerMobileNavigation: [\n {\n to: '/settings',\n },\n ],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n"],"names":["useMenu","shouldUpdateStrapi","checkUserHasPermissions","useAuth","state","menu","useStrapiApp","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","React","useState","generalSectionLinks","icon","House","intlLabel","id","defaultMessage","to","position","ShoppingCart","target","marketplace","main","Cog","notificationsCount","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isLoading","generalSectionLinksRef","useRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","current","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","map","filter","_","index","length","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.mjs","sources":["../../../../../admin/src/hooks/useMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'> & {\n navigationLink?: string;\n};\nexport type MobileMenuItem = {\n to: string;\n target?: string;\n link?: string;\n};\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n topMobileNavigation: MobileMenuItem[];\n burgerMobileNavigation: MobileMenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: 'https://market.strapi.io',\n target: '_blank',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n topMobileNavigation: [\n {\n to: '/',\n },\n {\n to: 'content-manager',\n },\n {\n to: 'plugins/content-releases',\n },\n {\n to: 'plugins/upload',\n },\n ],\n burgerMobileNavigation: [\n {\n to: '/settings',\n },\n ],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n"],"names":["useMenu","shouldUpdateStrapi","checkUserHasPermissions","useAuth","state","menu","useStrapiApp","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","React","useState","generalSectionLinks","icon","House","intlLabel","id","defaultMessage","to","position","ShoppingCart","target","marketplace","main","Cog","notificationsCount","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isLoading","generalSectionLinksRef","useRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","current","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","map","filter","_","index","length","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions"],"mappings":"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"}
1
+ {"version":3,"file":"useMenu.mjs","sources":["../../../../../admin/src/hooks/useMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'> & {\n navigationLink?: string;\n};\nexport type MobileMenuItem = {\n to: string;\n target?: string;\n link?: string;\n};\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n topMobileNavigation: MobileMenuItem[];\n burgerMobileNavigation: MobileMenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: 'https://market.strapi.io',\n target: '_blank',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n topMobileNavigation: [\n {\n to: '/',\n },\n {\n to: 'content-manager',\n },\n {\n to: 'plugins/content-releases',\n },\n {\n to: 'plugins/upload',\n },\n ],\n burgerMobileNavigation: [\n {\n to: '/settings',\n },\n ],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n"],"names":["useMenu","shouldUpdateStrapi","checkUserHasPermissions","useAuth","state","menu","useStrapiApp","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","React","useState","generalSectionLinks","icon","House","intlLabel","id","defaultMessage","to","position","ShoppingCart","target","marketplace","main","Cog","notificationsCount","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isLoading","generalSectionLinksRef","useRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","current","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","map","filter","_","index","length","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOnce.js","sources":["../../../../../admin/src/hooks/useOnce.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\nexport const useOnce = (effect: React.EffectCallback) => React.useEffect(effect, emptyDeps);\n\nconst emptyDeps: React.DependencyList = [];\n"],"names":["useOnce","effect","React","useEffect","emptyDeps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,UAAU,CAACC,MAAAA,GAAiCC,iBAAMC,SAAS,CAACF,QAAQG,SAAW;AAE5F,MAAMA,YAAkC,EAAE;;;;"}
1
+ {"version":3,"file":"useOnce.js","sources":["../../../../../admin/src/hooks/useOnce.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\nexport const useOnce = (effect: React.EffectCallback) => React.useEffect(effect, emptyDeps);\n\nconst emptyDeps: React.DependencyList = [];\n"],"names":["useOnce","effect","React","useEffect","emptyDeps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,UAAU,CAACC,MAAAA,GAAiCC,iBAAMC,SAAS,CAACF,QAAQG,SAAAA;AAEjF,MAAMA,YAAkC,EAAE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOnce.mjs","sources":["../../../../../admin/src/hooks/useOnce.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\nexport const useOnce = (effect: React.EffectCallback) => React.useEffect(effect, emptyDeps);\n\nconst emptyDeps: React.DependencyList = [];\n"],"names":["useOnce","effect","React","useEffect","emptyDeps"],"mappings":";;AAGO,MAAMA,UAAU,CAACC,MAAAA,GAAiCC,MAAMC,SAAS,CAACF,QAAQG,SAAW;AAE5F,MAAMA,YAAkC,EAAE;;;;"}
1
+ {"version":3,"file":"useOnce.mjs","sources":["../../../../../admin/src/hooks/useOnce.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\nexport const useOnce = (effect: React.EffectCallback) => React.useEffect(effect, emptyDeps);\n\nconst emptyDeps: React.DependencyList = [];\n"],"names":["useOnce","effect","React","useEffect","emptyDeps"],"mappings":";;AAGO,MAAMA,UAAU,CAACC,MAAAA,GAAiCC,MAAMC,SAAS,CAACF,QAAQG,SAAAA;AAEjF,MAAMA,YAAkC,EAAE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePersistentState.js","sources":["../../../../../admin/src/hooks/usePersistentState.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useInitQuery } from '../services/admin';\n\nfunction readFromStorage<T>(key: string, fallback: T): T {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return fallback;\n try {\n return JSON.parse(raw);\n } catch {\n // if primitive was stored\n return raw as unknown as T;\n }\n}\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => readFromStorage(key, defaultValue));\n\n const currentKeyRef = useRef(key);\n\n // when the key changes, re-hydrate from the new key\n useEffect(() => {\n if (currentKeyRef.current !== key) {\n currentKeyRef.current = key;\n setValue(readFromStorage(key, defaultValue));\n }\n // include defaultValue in case it changes across models\n }, [key, defaultValue]);\n\n // persist whenever (key, value) change — but only for the active key\n useEffect(() => {\n if (currentKeyRef.current !== key) return; // safety guard\n\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\n// Same as usePersistentState, but scoped to the current instance of Strapi\n// useful for storing state that should not be shared across different instances of Strapi running on localhost\nconst useScopedPersistentState = <T>(key: string, defaultValue: T) => {\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const namespacedKey = `${key}:${uuid}`;\n return usePersistentState<T>(namespacedKey, defaultValue);\n};\n\nexport { usePersistentState, useScopedPersistentState };\n"],"names":["readFromStorage","key","fallback","raw","window","localStorage","getItem","JSON","parse","usePersistentState","defaultValue","value","setValue","useState","currentKeyRef","useRef","useEffect","current","setItem","stringify","useScopedPersistentState","data","initData","useInitQuery","uuid","namespacedKey"],"mappings":";;;;;AAIA,SAASA,eAAAA,CAAmBC,GAAW,EAAEC,QAAW,EAAA;AAClD,IAAA,MAAMC,GAAMC,GAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACL,GAAAA,CAAAA;IACxC,IAAIE,GAAAA,KAAQ,MAAM,OAAOD,QAAAA;IACzB,IAAI;QACF,OAAOK,IAAAA,CAAKC,KAAK,CAACL,GAAAA,CAAAA;AACpB,KAAA,CAAE,OAAM;;QAEN,OAAOA,GAAAA;AACT;AACF;AAEMM,MAAAA,kBAAAA,GAAqB,CAAIR,GAAaS,EAAAA,YAAAA,GAAAA;AAC1C,IAAA,MAAM,CAACC,KAAOC,EAAAA,QAAAA,CAAS,GAAGC,cAAY,CAAA,IAAMb,gBAAgBC,GAAKS,EAAAA,YAAAA,CAAAA,CAAAA;AAEjE,IAAA,MAAMI,gBAAgBC,YAAOd,CAAAA,GAAAA,CAAAA;;IAG7Be,eAAU,CAAA,IAAA;QACR,IAAIF,aAAAA,CAAcG,OAAO,KAAKhB,GAAK,EAAA;AACjCa,YAAAA,aAAAA,CAAcG,OAAO,GAAGhB,GAAAA;AACxBW,YAAAA,QAAAA,CAASZ,gBAAgBC,GAAKS,EAAAA,YAAAA,CAAAA,CAAAA;AAChC;;KAEC,EAAA;AAACT,QAAAA,GAAAA;AAAKS,QAAAA;AAAa,KAAA,CAAA;;IAGtBM,eAAU,CAAA,IAAA;AACR,QAAA,IAAIF,aAAcG,CAAAA,OAAO,KAAKhB,GAAAA,EAAK;AAEnCG,QAAAA,MAAAA,CAAOC,YAAY,CAACa,OAAO,CAACjB,GAAKM,EAAAA,IAAAA,CAAKY,SAAS,CAACR,KAAAA,CAAAA,CAAAA;KAC/C,EAAA;AAACV,QAAAA,GAAAA;AAAKU,QAAAA;AAAM,KAAA,CAAA;IAEf,OAAO;AAACA,QAAAA,KAAAA;AAAOC,QAAAA;AAAS,KAAA;AAC1B;AAEA;AACA;AACMQ,MAAAA,wBAAAA,GAA2B,CAAInB,GAAaS,EAAAA,YAAAA,GAAAA;AAChD,IAAA,MAAM,EAAEW,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,kBAAAA,EAAAA;AAC3B,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGF,YAAY,EAAC;AAE9B,IAAA,MAAMG,aAAgB,GAAA,CAAA,EAAGxB,GAAI,CAAA,CAAC,EAAEuB,IAAM,CAAA,CAAA;AACtC,IAAA,OAAOf,mBAAsBgB,aAAef,EAAAA,YAAAA,CAAAA;AAC9C;;;;;"}
1
+ {"version":3,"file":"usePersistentState.js","sources":["../../../../../admin/src/hooks/usePersistentState.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useInitQuery } from '../services/admin';\n\nfunction readFromStorage<T>(key: string, fallback: T): T {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return fallback;\n try {\n return JSON.parse(raw);\n } catch {\n // if primitive was stored\n return raw as unknown as T;\n }\n}\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => readFromStorage(key, defaultValue));\n\n const currentKeyRef = useRef(key);\n\n // when the key changes, re-hydrate from the new key\n useEffect(() => {\n if (currentKeyRef.current !== key) {\n currentKeyRef.current = key;\n setValue(readFromStorage(key, defaultValue));\n }\n // include defaultValue in case it changes across models\n }, [key, defaultValue]);\n\n // persist whenever (key, value) change — but only for the active key\n useEffect(() => {\n if (currentKeyRef.current !== key) return; // safety guard\n\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\n// Same as usePersistentState, but scoped to the current instance of Strapi\n// useful for storing state that should not be shared across different instances of Strapi running on localhost\nconst useScopedPersistentState = <T>(key: string, defaultValue: T) => {\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const namespacedKey = `${key}:${uuid}`;\n return usePersistentState<T>(namespacedKey, defaultValue);\n};\n\nexport { usePersistentState, useScopedPersistentState };\n"],"names":["readFromStorage","key","fallback","raw","window","localStorage","getItem","JSON","parse","usePersistentState","defaultValue","value","setValue","useState","currentKeyRef","useRef","useEffect","current","setItem","stringify","useScopedPersistentState","data","initData","useInitQuery","uuid","namespacedKey"],"mappings":";;;;;AAIA,SAASA,eAAAA,CAAmBC,GAAW,EAAEC,QAAW,EAAA;AAClD,IAAA,MAAMC,GAAAA,GAAMC,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACL,GAAAA,CAAAA;IACxC,IAAIE,GAAAA,KAAQ,MAAM,OAAOD,QAAAA;IACzB,IAAI;QACF,OAAOK,IAAAA,CAAKC,KAAK,CAACL,GAAAA,CAAAA;AACpB,IAAA,CAAA,CAAE,OAAM;;QAEN,OAAOA,GAAAA;AACT,IAAA;AACF;AAEA,MAAMM,kBAAAA,GAAqB,CAAIR,GAAAA,EAAaS,YAAAA,GAAAA;AAC1C,IAAA,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,cAAAA,CAAY,IAAMb,gBAAgBC,GAAAA,EAAKS,YAAAA,CAAAA,CAAAA;AAEjE,IAAA,MAAMI,gBAAgBC,YAAAA,CAAOd,GAAAA,CAAAA;;IAG7Be,eAAAA,CAAU,IAAA;QACR,IAAIF,aAAAA,CAAcG,OAAO,KAAKhB,GAAAA,EAAK;AACjCa,YAAAA,aAAAA,CAAcG,OAAO,GAAGhB,GAAAA;AACxBW,YAAAA,QAAAA,CAASZ,gBAAgBC,GAAAA,EAAKS,YAAAA,CAAAA,CAAAA;AAChC,QAAA;;IAEF,CAAA,EAAG;AAACT,QAAAA,GAAAA;AAAKS,QAAAA;AAAa,KAAA,CAAA;;IAGtBM,eAAAA,CAAU,IAAA;AACR,QAAA,IAAIF,aAAAA,CAAcG,OAAO,KAAKhB,GAAAA,EAAK;AAEnCG,QAAAA,MAAAA,CAAOC,YAAY,CAACa,OAAO,CAACjB,GAAAA,EAAKM,IAAAA,CAAKY,SAAS,CAACR,KAAAA,CAAAA,CAAAA;IAClD,CAAA,EAAG;AAACV,QAAAA,GAAAA;AAAKU,QAAAA;AAAM,KAAA,CAAA;IAEf,OAAO;AAACA,QAAAA,KAAAA;AAAOC,QAAAA;AAAS,KAAA;AAC1B;AAEA;AACA;AACA,MAAMQ,wBAAAA,GAA2B,CAAInB,GAAAA,EAAaS,YAAAA,GAAAA;AAChD,IAAA,MAAM,EAAEW,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,kBAAAA,EAAAA;AAC3B,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGF,YAAY,EAAC;AAE9B,IAAA,MAAMG,aAAAA,GAAgB,CAAA,EAAGxB,GAAAA,CAAI,CAAC,EAAEuB,IAAAA,CAAAA,CAAM;AACtC,IAAA,OAAOf,mBAAsBgB,aAAAA,EAAef,YAAAA,CAAAA;AAC9C;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePersistentState.mjs","sources":["../../../../../admin/src/hooks/usePersistentState.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useInitQuery } from '../services/admin';\n\nfunction readFromStorage<T>(key: string, fallback: T): T {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return fallback;\n try {\n return JSON.parse(raw);\n } catch {\n // if primitive was stored\n return raw as unknown as T;\n }\n}\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => readFromStorage(key, defaultValue));\n\n const currentKeyRef = useRef(key);\n\n // when the key changes, re-hydrate from the new key\n useEffect(() => {\n if (currentKeyRef.current !== key) {\n currentKeyRef.current = key;\n setValue(readFromStorage(key, defaultValue));\n }\n // include defaultValue in case it changes across models\n }, [key, defaultValue]);\n\n // persist whenever (key, value) change — but only for the active key\n useEffect(() => {\n if (currentKeyRef.current !== key) return; // safety guard\n\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\n// Same as usePersistentState, but scoped to the current instance of Strapi\n// useful for storing state that should not be shared across different instances of Strapi running on localhost\nconst useScopedPersistentState = <T>(key: string, defaultValue: T) => {\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const namespacedKey = `${key}:${uuid}`;\n return usePersistentState<T>(namespacedKey, defaultValue);\n};\n\nexport { usePersistentState, useScopedPersistentState };\n"],"names":["readFromStorage","key","fallback","raw","window","localStorage","getItem","JSON","parse","usePersistentState","defaultValue","value","setValue","useState","currentKeyRef","useRef","useEffect","current","setItem","stringify","useScopedPersistentState","data","initData","useInitQuery","uuid","namespacedKey"],"mappings":";;;AAIA,SAASA,eAAAA,CAAmBC,GAAW,EAAEC,QAAW,EAAA;AAClD,IAAA,MAAMC,GAAMC,GAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACL,GAAAA,CAAAA;IACxC,IAAIE,GAAAA,KAAQ,MAAM,OAAOD,QAAAA;IACzB,IAAI;QACF,OAAOK,IAAAA,CAAKC,KAAK,CAACL,GAAAA,CAAAA;AACpB,KAAA,CAAE,OAAM;;QAEN,OAAOA,GAAAA;AACT;AACF;AAEMM,MAAAA,kBAAAA,GAAqB,CAAIR,GAAaS,EAAAA,YAAAA,GAAAA;AAC1C,IAAA,MAAM,CAACC,KAAOC,EAAAA,QAAAA,CAAS,GAAGC,QAAY,CAAA,IAAMb,gBAAgBC,GAAKS,EAAAA,YAAAA,CAAAA,CAAAA;AAEjE,IAAA,MAAMI,gBAAgBC,MAAOd,CAAAA,GAAAA,CAAAA;;IAG7Be,SAAU,CAAA,IAAA;QACR,IAAIF,aAAAA,CAAcG,OAAO,KAAKhB,GAAK,EAAA;AACjCa,YAAAA,aAAAA,CAAcG,OAAO,GAAGhB,GAAAA;AACxBW,YAAAA,QAAAA,CAASZ,gBAAgBC,GAAKS,EAAAA,YAAAA,CAAAA,CAAAA;AAChC;;KAEC,EAAA;AAACT,QAAAA,GAAAA;AAAKS,QAAAA;AAAa,KAAA,CAAA;;IAGtBM,SAAU,CAAA,IAAA;AACR,QAAA,IAAIF,aAAcG,CAAAA,OAAO,KAAKhB,GAAAA,EAAK;AAEnCG,QAAAA,MAAAA,CAAOC,YAAY,CAACa,OAAO,CAACjB,GAAKM,EAAAA,IAAAA,CAAKY,SAAS,CAACR,KAAAA,CAAAA,CAAAA;KAC/C,EAAA;AAACV,QAAAA,GAAAA;AAAKU,QAAAA;AAAM,KAAA,CAAA;IAEf,OAAO;AAACA,QAAAA,KAAAA;AAAOC,QAAAA;AAAS,KAAA;AAC1B;AAEA;AACA;AACMQ,MAAAA,wBAAAA,GAA2B,CAAInB,GAAaS,EAAAA,YAAAA,GAAAA;AAChD,IAAA,MAAM,EAAEW,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,YAAAA,EAAAA;AAC3B,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGF,YAAY,EAAC;AAE9B,IAAA,MAAMG,aAAgB,GAAA,CAAA,EAAGxB,GAAI,CAAA,CAAC,EAAEuB,IAAM,CAAA,CAAA;AACtC,IAAA,OAAOf,mBAAsBgB,aAAef,EAAAA,YAAAA,CAAAA;AAC9C;;;;"}
1
+ {"version":3,"file":"usePersistentState.mjs","sources":["../../../../../admin/src/hooks/usePersistentState.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { useInitQuery } from '../services/admin';\n\nfunction readFromStorage<T>(key: string, fallback: T): T {\n const raw = window.localStorage.getItem(key);\n if (raw === null) return fallback;\n try {\n return JSON.parse(raw);\n } catch {\n // if primitive was stored\n return raw as unknown as T;\n }\n}\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => readFromStorage(key, defaultValue));\n\n const currentKeyRef = useRef(key);\n\n // when the key changes, re-hydrate from the new key\n useEffect(() => {\n if (currentKeyRef.current !== key) {\n currentKeyRef.current = key;\n setValue(readFromStorage(key, defaultValue));\n }\n // include defaultValue in case it changes across models\n }, [key, defaultValue]);\n\n // persist whenever (key, value) change — but only for the active key\n useEffect(() => {\n if (currentKeyRef.current !== key) return; // safety guard\n\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\n// Same as usePersistentState, but scoped to the current instance of Strapi\n// useful for storing state that should not be shared across different instances of Strapi running on localhost\nconst useScopedPersistentState = <T>(key: string, defaultValue: T) => {\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const namespacedKey = `${key}:${uuid}`;\n return usePersistentState<T>(namespacedKey, defaultValue);\n};\n\nexport { usePersistentState, useScopedPersistentState };\n"],"names":["readFromStorage","key","fallback","raw","window","localStorage","getItem","JSON","parse","usePersistentState","defaultValue","value","setValue","useState","currentKeyRef","useRef","useEffect","current","setItem","stringify","useScopedPersistentState","data","initData","useInitQuery","uuid","namespacedKey"],"mappings":";;;AAIA,SAASA,eAAAA,CAAmBC,GAAW,EAAEC,QAAW,EAAA;AAClD,IAAA,MAAMC,GAAAA,GAAMC,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACL,GAAAA,CAAAA;IACxC,IAAIE,GAAAA,KAAQ,MAAM,OAAOD,QAAAA;IACzB,IAAI;QACF,OAAOK,IAAAA,CAAKC,KAAK,CAACL,GAAAA,CAAAA;AACpB,IAAA,CAAA,CAAE,OAAM;;QAEN,OAAOA,GAAAA;AACT,IAAA;AACF;AAEA,MAAMM,kBAAAA,GAAqB,CAAIR,GAAAA,EAAaS,YAAAA,GAAAA;AAC1C,IAAA,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,QAAAA,CAAY,IAAMb,gBAAgBC,GAAAA,EAAKS,YAAAA,CAAAA,CAAAA;AAEjE,IAAA,MAAMI,gBAAgBC,MAAAA,CAAOd,GAAAA,CAAAA;;IAG7Be,SAAAA,CAAU,IAAA;QACR,IAAIF,aAAAA,CAAcG,OAAO,KAAKhB,GAAAA,EAAK;AACjCa,YAAAA,aAAAA,CAAcG,OAAO,GAAGhB,GAAAA;AACxBW,YAAAA,QAAAA,CAASZ,gBAAgBC,GAAAA,EAAKS,YAAAA,CAAAA,CAAAA;AAChC,QAAA;;IAEF,CAAA,EAAG;AAACT,QAAAA,GAAAA;AAAKS,QAAAA;AAAa,KAAA,CAAA;;IAGtBM,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIF,aAAAA,CAAcG,OAAO,KAAKhB,GAAAA,EAAK;AAEnCG,QAAAA,MAAAA,CAAOC,YAAY,CAACa,OAAO,CAACjB,GAAAA,EAAKM,IAAAA,CAAKY,SAAS,CAACR,KAAAA,CAAAA,CAAAA;IAClD,CAAA,EAAG;AAACV,QAAAA,GAAAA;AAAKU,QAAAA;AAAM,KAAA,CAAA;IAEf,OAAO;AAACA,QAAAA,KAAAA;AAAOC,QAAAA;AAAS,KAAA;AAC1B;AAEA;AACA;AACA,MAAMQ,wBAAAA,GAA2B,CAAInB,GAAAA,EAAaS,YAAAA,GAAAA;AAChD,IAAA,MAAM,EAAEW,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,YAAAA,EAAAA;AAC3B,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGF,YAAY,EAAC;AAE9B,IAAA,MAAMG,aAAAA,GAAgB,CAAA,EAAGxB,GAAAA,CAAI,CAAC,EAAEuB,IAAAA,CAAAA,CAAM;AACtC,IAAA,OAAOf,mBAAsBgB,aAAAA,EAAef,YAAAA,CAAAA;AAC9C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePrev.js","sources":["../../../../../admin/src/hooks/usePrev.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"names":["usePrev","value","ref","useRef","useEffect","current"],"mappings":";;;;AAEO,MAAMA,UAAU,CAAIC,KAAAA,GAAAA;AACzB,IAAA,MAAMC,GAAMC,GAAAA,YAAAA,EAAAA;IAEZC,eAAU,CAAA,IAAA;AACRF,QAAAA,GAAAA,CAAIG,OAAO,GAAGJ,KAAAA;KACb,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEV,IAAA,OAAOC,IAAIG,OAAO;AACpB;;;;"}
1
+ {"version":3,"file":"usePrev.js","sources":["../../../../../admin/src/hooks/usePrev.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"names":["usePrev","value","ref","useRef","useEffect","current"],"mappings":";;;;AAEO,MAAMA,UAAU,CAAIC,KAAAA,GAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAMC,YAAAA,EAAAA;IAEZC,eAAAA,CAAU,IAAA;AACRF,QAAAA,GAAAA,CAAIG,OAAO,GAAGJ,KAAAA;IAChB,CAAA,EAAG;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEV,IAAA,OAAOC,IAAIG,OAAO;AACpB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePrev.mjs","sources":["../../../../../admin/src/hooks/usePrev.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"names":["usePrev","value","ref","useRef","useEffect","current"],"mappings":";;AAEO,MAAMA,UAAU,CAAIC,KAAAA,GAAAA;AACzB,IAAA,MAAMC,GAAMC,GAAAA,MAAAA,EAAAA;IAEZC,SAAU,CAAA,IAAA;AACRF,QAAAA,GAAAA,CAAIG,OAAO,GAAGJ,KAAAA;KACb,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEV,IAAA,OAAOC,IAAIG,OAAO;AACpB;;;;"}
1
+ {"version":3,"file":"usePrev.mjs","sources":["../../../../../admin/src/hooks/usePrev.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"names":["usePrev","value","ref","useRef","useEffect","current"],"mappings":";;AAEO,MAAMA,UAAU,CAAIC,KAAAA,GAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAMC,MAAAA,EAAAA;IAEZC,SAAAA,CAAU,IAAA;AACRF,QAAAA,GAAAA,CAAIG,OAAO,GAAGJ,KAAAA;IAChB,CAAA,EAAG;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEV,IAAA,OAAOC,IAAIG,OAAO;AACpB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryParams.js","sources":["../../../../../admin/src/hooks/useQueryParams.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useSearch = () => {\n const { search } = useLocation();\n\n return useMemo(() => search, [search]);\n};\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const search = useSearch();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n"],"names":["useSearch","search","useLocation","useMemo","useQueryParams","initialParams","navigate","useNavigate","query","searchQuery","startsWith","slice","parse","setQuery","useCallback","nextParams","method","replace","nextQuery","Object","keys","forEach","key","prototype","hasOwnProperty","call","stringify","encode","rawQuery"],"mappings":";;;;;;AAKA,MAAMA,SAAY,GAAA,IAAA;IAChB,MAAM,EAAEC,MAAM,EAAE,GAAGC,0BAAAA,EAAAA;IAEnB,OAAOC,aAAAA,CAAQ,IAAMF,MAAQ,EAAA;AAACA,QAAAA;AAAO,KAAA,CAAA;AACvC,CAAA;AAEA,MAAMG,iBAAiB,CAAwBC,aAAAA,GAAAA;AAC7C,IAAA,MAAMJ,MAASD,GAAAA,SAAAA,EAAAA;AACf,IAAA,MAAMM,QAAWC,GAAAA,0BAAAA,EAAAA;AAEjB,IAAA,MAAMC,QAAQL,aAAQ,CAAA,IAAA;;QAEpB,MAAMM,WAAAA,GAAcR,OAAOS,UAAU,CAAC,OAAOT,MAAOU,CAAAA,KAAK,CAAC,CAAKV,CAAAA,GAAAA,MAAAA;QAC/D,IAAI,CAACA,UAAUI,aAAe,EAAA;YAC5B,OAAOA,aAAAA;AACT;QAEA,OAAO;AAAE,YAAA,GAAGA,aAAa;AAAE,YAAA,GAAGO,SAAMH,WAAY;AAAC,SAAA;KAChD,EAAA;AAACR,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;IAE1B,MAAMQ,QAAAA,GAAWC,kBACf,CAACC,UAAAA,EAAoBC,SAA4B,MAAM,EAAEC,UAAU,KAAK,GAAA;AACtE,QAAA,IAAIC,SAAY,GAAA;AAAE,YAAA,GAAGV;AAAM,SAAA;AAE3B,QAAA,IAAIQ,WAAW,QAAU,EAAA;AACvBG,YAAAA,MAAAA,CAAOC,IAAI,CAACL,UAAYM,CAAAA,CAAAA,OAAO,CAAC,CAACC,GAAAA,GAAAA;gBAC/B,IAAIH,MAAAA,CAAOI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAWI,GAAM,CAAA,EAAA;;oBAExD,OAAOJ,SAAS,CAACI,GAAI,CAAA;AACvB;AACF,aAAA,CAAA;SACK,MAAA;YACLJ,SAAY,GAAA;AAAE,gBAAA,GAAGV,KAAK;AAAE,gBAAA,GAAGO;AAAW,aAAA;AACxC;QAEAT,QAAS,CAAA;AAAEL,YAAAA,MAAAA,EAAQyB,aAAUR,SAAW,EAAA;gBAAES,MAAQ,EAAA;AAAM,aAAA;SAAM,EAAA;AAAEV,YAAAA;AAAQ,SAAA,CAAA;KAE1E,EAAA;AAACX,QAAAA,QAAAA;AAAUE,QAAAA;AAAM,KAAA,CAAA;IAGnB,OAAO;AAAC,QAAA;AAAEA,YAAAA,KAAAA;YAAOoB,QAAU3B,EAAAA;AAAO,SAAA;AAAGY,QAAAA;AAAS,KAAA;AAChD;;;;"}
1
+ {"version":3,"file":"useQueryParams.js","sources":["../../../../../admin/src/hooks/useQueryParams.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useSearch = () => {\n const { search } = useLocation();\n\n return useMemo(() => search, [search]);\n};\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const search = useSearch();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n"],"names":["useSearch","search","useLocation","useMemo","useQueryParams","initialParams","navigate","useNavigate","query","searchQuery","startsWith","slice","parse","setQuery","useCallback","nextParams","method","replace","nextQuery","Object","keys","forEach","key","prototype","hasOwnProperty","call","stringify","encode","rawQuery"],"mappings":";;;;;;AAKA,MAAMA,SAAAA,GAAY,IAAA;IAChB,MAAM,EAAEC,MAAM,EAAE,GAAGC,0BAAAA,EAAAA;IAEnB,OAAOC,aAAAA,CAAQ,IAAMF,MAAAA,EAAQ;AAACA,QAAAA;AAAO,KAAA,CAAA;AACvC,CAAA;AAEA,MAAMG,iBAAiB,CAAwBC,aAAAA,GAAAA;AAC7C,IAAA,MAAMJ,MAAAA,GAASD,SAAAA,EAAAA;AACf,IAAA,MAAMM,QAAAA,GAAWC,0BAAAA,EAAAA;AAEjB,IAAA,MAAMC,QAAQL,aAAAA,CAAQ,IAAA;;QAEpB,MAAMM,WAAAA,GAAcR,OAAOS,UAAU,CAAC,OAAOT,MAAAA,CAAOU,KAAK,CAAC,CAAA,CAAA,GAAKV,MAAAA;QAC/D,IAAI,CAACA,UAAUI,aAAAA,EAAe;YAC5B,OAAOA,aAAAA;AACT,QAAA;QAEA,OAAO;AAAE,YAAA,GAAGA,aAAa;AAAE,YAAA,GAAGO,SAAMH,WAAAA;AAAa,SAAA;IACnD,CAAA,EAAG;AAACR,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;IAE1B,MAAMQ,QAAAA,GAAWC,kBACf,CAACC,UAAAA,EAAoBC,SAA4B,MAAM,EAAEC,UAAU,KAAK,GAAA;AACtE,QAAA,IAAIC,SAAAA,GAAY;AAAE,YAAA,GAAGV;AAAM,SAAA;AAE3B,QAAA,IAAIQ,WAAW,QAAA,EAAU;AACvBG,YAAAA,MAAAA,CAAOC,IAAI,CAACL,UAAAA,CAAAA,CAAYM,OAAO,CAAC,CAACC,GAAAA,GAAAA;gBAC/B,IAAIH,MAAAA,CAAOI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAWI,GAAAA,CAAAA,EAAM;;oBAExD,OAAOJ,SAAS,CAACI,GAAAA,CAAI;AACvB,gBAAA;AACF,YAAA,CAAA,CAAA;QACF,CAAA,MAAO;YACLJ,SAAAA,GAAY;AAAE,gBAAA,GAAGV,KAAK;AAAE,gBAAA,GAAGO;AAAW,aAAA;AACxC,QAAA;QAEAT,QAAAA,CAAS;AAAEL,YAAAA,MAAAA,EAAQyB,aAAUR,SAAAA,EAAW;gBAAES,MAAAA,EAAQ;AAAM,aAAA;SAAG,EAAG;AAAEV,YAAAA;AAAQ,SAAA,CAAA;IAC1E,CAAA,EACA;AAACX,QAAAA,QAAAA;AAAUE,QAAAA;AAAM,KAAA,CAAA;IAGnB,OAAO;AAAC,QAAA;AAAEA,YAAAA,KAAAA;YAAOoB,QAAAA,EAAU3B;AAAO,SAAA;AAAGY,QAAAA;AAAS,KAAA;AAChD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryParams.mjs","sources":["../../../../../admin/src/hooks/useQueryParams.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useSearch = () => {\n const { search } = useLocation();\n\n return useMemo(() => search, [search]);\n};\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const search = useSearch();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n"],"names":["useSearch","search","useLocation","useMemo","useQueryParams","initialParams","navigate","useNavigate","query","searchQuery","startsWith","slice","parse","setQuery","useCallback","nextParams","method","replace","nextQuery","Object","keys","forEach","key","prototype","hasOwnProperty","call","stringify","encode","rawQuery"],"mappings":";;;;AAKA,MAAMA,SAAY,GAAA,IAAA;IAChB,MAAM,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;IAEnB,OAAOC,OAAAA,CAAQ,IAAMF,MAAQ,EAAA;AAACA,QAAAA;AAAO,KAAA,CAAA;AACvC,CAAA;AAEA,MAAMG,iBAAiB,CAAwBC,aAAAA,GAAAA;AAC7C,IAAA,MAAMJ,MAASD,GAAAA,SAAAA,EAAAA;AACf,IAAA,MAAMM,QAAWC,GAAAA,WAAAA,EAAAA;AAEjB,IAAA,MAAMC,QAAQL,OAAQ,CAAA,IAAA;;QAEpB,MAAMM,WAAAA,GAAcR,OAAOS,UAAU,CAAC,OAAOT,MAAOU,CAAAA,KAAK,CAAC,CAAKV,CAAAA,GAAAA,MAAAA;QAC/D,IAAI,CAACA,UAAUI,aAAe,EAAA;YAC5B,OAAOA,aAAAA;AACT;QAEA,OAAO;AAAE,YAAA,GAAGA,aAAa;AAAE,YAAA,GAAGO,MAAMH,WAAY;AAAC,SAAA;KAChD,EAAA;AAACR,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;IAE1B,MAAMQ,QAAAA,GAAWC,YACf,CAACC,UAAAA,EAAoBC,SAA4B,MAAM,EAAEC,UAAU,KAAK,GAAA;AACtE,QAAA,IAAIC,SAAY,GAAA;AAAE,YAAA,GAAGV;AAAM,SAAA;AAE3B,QAAA,IAAIQ,WAAW,QAAU,EAAA;AACvBG,YAAAA,MAAAA,CAAOC,IAAI,CAACL,UAAYM,CAAAA,CAAAA,OAAO,CAAC,CAACC,GAAAA,GAAAA;gBAC/B,IAAIH,MAAAA,CAAOI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAWI,GAAM,CAAA,EAAA;;oBAExD,OAAOJ,SAAS,CAACI,GAAI,CAAA;AACvB;AACF,aAAA,CAAA;SACK,MAAA;YACLJ,SAAY,GAAA;AAAE,gBAAA,GAAGV,KAAK;AAAE,gBAAA,GAAGO;AAAW,aAAA;AACxC;QAEAT,QAAS,CAAA;AAAEL,YAAAA,MAAAA,EAAQyB,UAAUR,SAAW,EAAA;gBAAES,MAAQ,EAAA;AAAM,aAAA;SAAM,EAAA;AAAEV,YAAAA;AAAQ,SAAA,CAAA;KAE1E,EAAA;AAACX,QAAAA,QAAAA;AAAUE,QAAAA;AAAM,KAAA,CAAA;IAGnB,OAAO;AAAC,QAAA;AAAEA,YAAAA,KAAAA;YAAOoB,QAAU3B,EAAAA;AAAO,SAAA;AAAGY,QAAAA;AAAS,KAAA;AAChD;;;;"}
1
+ {"version":3,"file":"useQueryParams.mjs","sources":["../../../../../admin/src/hooks/useQueryParams.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useSearch = () => {\n const { search } = useLocation();\n\n return useMemo(() => search, [search]);\n};\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const search = useSearch();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n"],"names":["useSearch","search","useLocation","useMemo","useQueryParams","initialParams","navigate","useNavigate","query","searchQuery","startsWith","slice","parse","setQuery","useCallback","nextParams","method","replace","nextQuery","Object","keys","forEach","key","prototype","hasOwnProperty","call","stringify","encode","rawQuery"],"mappings":";;;;AAKA,MAAMA,SAAAA,GAAY,IAAA;IAChB,MAAM,EAAEC,MAAM,EAAE,GAAGC,WAAAA,EAAAA;IAEnB,OAAOC,OAAAA,CAAQ,IAAMF,MAAAA,EAAQ;AAACA,QAAAA;AAAO,KAAA,CAAA;AACvC,CAAA;AAEA,MAAMG,iBAAiB,CAAwBC,aAAAA,GAAAA;AAC7C,IAAA,MAAMJ,MAAAA,GAASD,SAAAA,EAAAA;AACf,IAAA,MAAMM,QAAAA,GAAWC,WAAAA,EAAAA;AAEjB,IAAA,MAAMC,QAAQL,OAAAA,CAAQ,IAAA;;QAEpB,MAAMM,WAAAA,GAAcR,OAAOS,UAAU,CAAC,OAAOT,MAAAA,CAAOU,KAAK,CAAC,CAAA,CAAA,GAAKV,MAAAA;QAC/D,IAAI,CAACA,UAAUI,aAAAA,EAAe;YAC5B,OAAOA,aAAAA;AACT,QAAA;QAEA,OAAO;AAAE,YAAA,GAAGA,aAAa;AAAE,YAAA,GAAGO,MAAMH,WAAAA;AAAa,SAAA;IACnD,CAAA,EAAG;AAACR,QAAAA,MAAAA;AAAQI,QAAAA;AAAc,KAAA,CAAA;IAE1B,MAAMQ,QAAAA,GAAWC,YACf,CAACC,UAAAA,EAAoBC,SAA4B,MAAM,EAAEC,UAAU,KAAK,GAAA;AACtE,QAAA,IAAIC,SAAAA,GAAY;AAAE,YAAA,GAAGV;AAAM,SAAA;AAE3B,QAAA,IAAIQ,WAAW,QAAA,EAAU;AACvBG,YAAAA,MAAAA,CAAOC,IAAI,CAACL,UAAAA,CAAAA,CAAYM,OAAO,CAAC,CAACC,GAAAA,GAAAA;gBAC/B,IAAIH,MAAAA,CAAOI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAWI,GAAAA,CAAAA,EAAM;;oBAExD,OAAOJ,SAAS,CAACI,GAAAA,CAAI;AACvB,gBAAA;AACF,YAAA,CAAA,CAAA;QACF,CAAA,MAAO;YACLJ,SAAAA,GAAY;AAAE,gBAAA,GAAGV,KAAK;AAAE,gBAAA,GAAGO;AAAW,aAAA;AACxC,QAAA;QAEAT,QAAAA,CAAS;AAAEL,YAAAA,MAAAA,EAAQyB,UAAUR,SAAAA,EAAW;gBAAES,MAAAA,EAAQ;AAAM,aAAA;SAAG,EAAG;AAAEV,YAAAA;AAAQ,SAAA,CAAA;IAC1E,CAAA,EACA;AAACX,QAAAA,QAAAA;AAAUE,QAAAA;AAAM,KAAA,CAAA;IAGnB,OAAO;AAAC,QAAA;AAAEA,YAAAA,KAAAA;YAAOoB,QAAAA,EAAU3B;AAAO,SAAA;AAAGY,QAAAA;AAAS,KAAA;AAChD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRBAC.js","sources":["../../../../../admin/src/hooks/useRBAC.ts"],"sourcesContent":["import * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[],\n rawQueryContext?: string\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<unknown>();\n const [data, setData] = React.useState<Record<string, boolean>>();\n\n const warnOnce = React.useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = React.useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = React.useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth('useRBAC', (state) => state.checkUserHasPermissions);\n\n const permssionsChecked = usePrev(actualPermissionsToCheck);\n const contextChecked = usePrev(rawQueryContext);\n\n React.useEffect(() => {\n if (\n !isEqual(permssionsChecked, actualPermissionsToCheck) ||\n // TODO: also run this when the query context changes\n contextChecked !== rawQueryContext\n ) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n checkUserHasPermissions(actualPermissionsToCheck, passedPermissions, rawQueryContext)\n .then((res) => {\n if (res) {\n setData(\n res.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: true,\n };\n }, {})\n );\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [\n actualPermissionsToCheck,\n checkUserHasPermissions,\n passedPermissions,\n permissionsToCheck,\n permssionsChecked,\n contextChecked,\n rawQueryContext,\n ]);\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries({\n ...defaultAllowedActions,\n ...data,\n }).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return {\n allowedActions,\n permissions: actualPermissionsToCheck,\n isLoading: isLoading || isLoadingAuth,\n error,\n };\n};\n\nconst getActionName = (permission: Permission): string => {\n const [action = ''] = permission.action.split('.').slice(-1);\n return action.split('-').map(capitalise).join('');\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n"],"names":["useRBAC","permissionsToCheck","passedPermissions","rawQueryContext","isLoadingAuth","useAuth","state","isLoading","setIsLoading","React","useState","error","setError","data","setData","warnOnce","useMemo","once","console","warn","actualPermissionsToCheck","Array","isArray","Object","values","flat","defaultAllowedActions","reduce","acc","permission","getActionName","checkUserHasPermissions","permssionsChecked","usePrev","contextChecked","useEffect","isEqual","undefined","then","res","catch","err","finally","allowedActions","entries","name","allowed","capitalise","permissions","action","split","slice","map","join"],"mappings":"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"}
1
+ {"version":3,"file":"useRBAC.js","sources":["../../../../../admin/src/hooks/useRBAC.ts"],"sourcesContent":["import * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[],\n rawQueryContext?: string\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<unknown>();\n const [data, setData] = React.useState<Record<string, boolean>>();\n\n const warnOnce = React.useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = React.useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = React.useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth('useRBAC', (state) => state.checkUserHasPermissions);\n\n const permssionsChecked = usePrev(actualPermissionsToCheck);\n const contextChecked = usePrev(rawQueryContext);\n\n React.useEffect(() => {\n if (\n !isEqual(permssionsChecked, actualPermissionsToCheck) ||\n // TODO: also run this when the query context changes\n contextChecked !== rawQueryContext\n ) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n checkUserHasPermissions(actualPermissionsToCheck, passedPermissions, rawQueryContext)\n .then((res) => {\n if (res) {\n setData(\n res.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: true,\n };\n }, {})\n );\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [\n actualPermissionsToCheck,\n checkUserHasPermissions,\n passedPermissions,\n permissionsToCheck,\n permssionsChecked,\n contextChecked,\n rawQueryContext,\n ]);\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries({\n ...defaultAllowedActions,\n ...data,\n }).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return {\n allowedActions,\n permissions: actualPermissionsToCheck,\n isLoading: isLoading || isLoadingAuth,\n error,\n };\n};\n\nconst getActionName = (permission: Permission): string => {\n const [action = ''] = permission.action.split('.').slice(-1);\n return action.split('-').map(capitalise).join('');\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n"],"names":["useRBAC","permissionsToCheck","passedPermissions","rawQueryContext","isLoadingAuth","useAuth","state","isLoading","setIsLoading","React","useState","error","setError","data","setData","warnOnce","useMemo","once","console","warn","actualPermissionsToCheck","Array","isArray","Object","values","flat","defaultAllowedActions","reduce","acc","permission","getActionName","checkUserHasPermissions","permssionsChecked","usePrev","contextChecked","useEffect","isEqual","undefined","then","res","catch","err","finally","allowedActions","entries","name","allowed","capitalise","permissions","action","split","slice","map","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BC,UACKA,OAAAA,GAAU,CACdC,kBAAAA,GAAkE,EAAE,EACpEC,iBAAAA,EACAC,eAAAA,GAAAA;AAOA,IAAA,MAAMC,gBAAgBC,YAAAA,CAAQ,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAAA;AACnE,IAAA,MAAM,CAACA,SAAAA,EAAWC,YAAAA,CAAa,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,IAAA,CAAA;AACjD,IAAA,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGH,iBAAMC,QAAQ,EAAA;AACxC,IAAA,MAAM,CAACG,IAAAA,EAAMC,OAAAA,CAAQ,GAAGL,iBAAMC,QAAQ,EAAA;IAEtC,MAAMK,QAAAA,GAAWN,iBAAMO,OAAO,CAAC,IAAMC,SAAAA,CAAKC,OAAAA,CAAQC,IAAI,CAAA,EAAG,EAAE,CAAA;IAE3D,MAAMC,wBAAAA,GAAyCX,gBAAAA,CAAMO,OAAO,CAAC,IAAA;QAC3D,IAAIK,KAAAA,CAAMC,OAAO,CAACrB,kBAAAA,CAAAA,EAAqB;YACrC,OAAOA,kBAAAA;QACT,CAAA,MAAO;YACLc,QAAAA,CACE,sHAAA,CAAA;AAGF,YAAA,OAAOQ,MAAAA,CAAOC,MAAM,CAACvB,kBAAAA,CAAAA,CAAoBwB,IAAI,EAAA;AAC/C,QAAA;IACF,CAAA,EAAG;AAACxB,QAAAA,kBAAAA;AAAoBc,QAAAA;AAAS,KAAA,CAAA;AAEjC;;;AAGC,MACD,MAAMW,qBAAAA,GAAwBjB,gBAAAA,CAAMO,OAAO,CAAC,IAAA;AAC1C,QAAA,OAAOI,wBAAAA,CAAyBO,MAAM,CAA0B,CAACC,GAAAA,EAAKC,UAAAA,GAAAA;YACpE,OAAO;AACL,gBAAA,GAAGD,GAAG;gBACN,CAACE,aAAAA,CAAcD,cAAc;AAC/B,aAAA;AACF,QAAA,CAAA,EAAG,EAAC,CAAA;IACN,CAAA,EAAG;AAACT,QAAAA;AAAyB,KAAA,CAAA;AAE7B,IAAA,MAAMW,0BAA0B1B,YAAAA,CAAQ,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMyB,uBAAuB,CAAA;AAE3F,IAAA,MAAMC,oBAAoBC,eAAAA,CAAQb,wBAAAA,CAAAA;AAClC,IAAA,MAAMc,iBAAiBD,eAAAA,CAAQ9B,eAAAA,CAAAA;AAE/BM,IAAAA,gBAAAA,CAAM0B,SAAS,CAAC,IAAA;AACd,QAAA,IACE,CAACC,OAAAA,CAAQJ,iBAAAA,EAAmBZ,wBAAAA,CAAAA;AAE5Bc,QAAAA,cAAAA,KAAmB/B,eAAAA,EACnB;YACAK,YAAAA,CAAa,IAAA,CAAA;YACbM,OAAAA,CAAQuB,SAAAA,CAAAA;YACRzB,QAAAA,CAASyB,SAAAA,CAAAA;AAETN,YAAAA,uBAAAA,CAAwBX,wBAAAA,EAA0BlB,iBAAAA,EAAmBC,eAAAA,CAAAA,CAClEmC,IAAI,CAAC,CAACC,GAAAA,GAAAA;AACL,gBAAA,IAAIA,GAAAA,EAAK;AACPzB,oBAAAA,OAAAA,CACEyB,GAAAA,CAAIZ,MAAM,CAA0B,CAACC,GAAAA,EAAKC,UAAAA,GAAAA;wBACxC,OAAO;AACL,4BAAA,GAAGD,GAAG;4BACN,CAACE,aAAAA,CAAcD,cAAc;AAC/B,yBAAA;AACF,oBAAA,CAAA,EAAG,EAAC,CAAA,CAAA;AAER,gBAAA;YACF,CAAA,CAAA,CACCW,KAAK,CAAC,CAACC,GAAAA,GAAAA;gBACN7B,QAAAA,CAAS6B,GAAAA,CAAAA;AACX,YAAA,CAAA,CAAA,CACCC,OAAO,CAAC,IAAA;gBACPlC,YAAAA,CAAa,KAAA,CAAA;AACf,YAAA,CAAA,CAAA;AACJ,QAAA;IACF,CAAA,EAAG;AACDY,QAAAA,wBAAAA;AACAW,QAAAA,uBAAAA;AACA7B,QAAAA,iBAAAA;AACAD,QAAAA,kBAAAA;AACA+B,QAAAA,iBAAAA;AACAE,QAAAA,cAAAA;AACA/B,QAAAA;AACD,KAAA,CAAA;AAED;;;AAGC,MACD,MAAMwC,cAAAA,GAAiBpB,MAAAA,CAAOqB,OAAO,CAAC;AACpC,QAAA,GAAGlB,qBAAqB;AACxB,QAAA,GAAGb;AACL,KAAA,CAAA,CAAGc,MAAM,CAAC,CAACC,GAAAA,EAAK,CAACiB,MAAMC,OAAAA,CAAQ,GAAA;AAC7BlB,QAAAA,GAAG,CAAC,CAAC,GAAG,EAAEmB,kBAAAA,CAAWF,IAAAA,CAAAA,CAAAA,CAAO,CAAC,GAAGC,OAAAA;QAEhC,OAAOlB,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;IAEJ,OAAO;AACLe,QAAAA,cAAAA;QACAK,WAAAA,EAAa5B,wBAAAA;AACbb,QAAAA,SAAAA,EAAWA,SAAAA,IAAaH,aAAAA;AACxBO,QAAAA;AACF,KAAA;AACF;AAEA,MAAMmB,gBAAgB,CAACD,UAAAA,GAAAA;AACrB,IAAA,MAAM,CAACoB,MAAAA,GAAS,EAAE,CAAC,GAAGpB,UAAAA,CAAWoB,MAAM,CAACC,KAAK,CAAC,GAAA,CAAA,CAAKC,KAAK,CAAC,EAAC,CAAA;IAC1D,OAAOF,MAAAA,CAAOC,KAAK,CAAC,GAAA,CAAA,CAAKE,GAAG,CAACL,kBAAAA,CAAAA,CAAYM,IAAI,CAAC,EAAA,CAAA;AAChD,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRBAC.mjs","sources":["../../../../../admin/src/hooks/useRBAC.ts"],"sourcesContent":["import * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[],\n rawQueryContext?: string\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<unknown>();\n const [data, setData] = React.useState<Record<string, boolean>>();\n\n const warnOnce = React.useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = React.useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = React.useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth('useRBAC', (state) => state.checkUserHasPermissions);\n\n const permssionsChecked = usePrev(actualPermissionsToCheck);\n const contextChecked = usePrev(rawQueryContext);\n\n React.useEffect(() => {\n if (\n !isEqual(permssionsChecked, actualPermissionsToCheck) ||\n // TODO: also run this when the query context changes\n contextChecked !== rawQueryContext\n ) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n checkUserHasPermissions(actualPermissionsToCheck, passedPermissions, rawQueryContext)\n .then((res) => {\n if (res) {\n setData(\n res.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: true,\n };\n }, {})\n );\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [\n actualPermissionsToCheck,\n checkUserHasPermissions,\n passedPermissions,\n permissionsToCheck,\n permssionsChecked,\n contextChecked,\n rawQueryContext,\n ]);\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries({\n ...defaultAllowedActions,\n ...data,\n }).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return {\n allowedActions,\n permissions: actualPermissionsToCheck,\n isLoading: isLoading || isLoadingAuth,\n error,\n };\n};\n\nconst getActionName = (permission: Permission): string => {\n const [action = ''] = permission.action.split('.').slice(-1);\n return action.split('-').map(capitalise).join('');\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n"],"names":["useRBAC","permissionsToCheck","passedPermissions","rawQueryContext","isLoadingAuth","useAuth","state","isLoading","setIsLoading","React","useState","error","setError","data","setData","warnOnce","useMemo","once","console","warn","actualPermissionsToCheck","Array","isArray","Object","values","flat","defaultAllowedActions","reduce","acc","permission","getActionName","checkUserHasPermissions","permssionsChecked","usePrev","contextChecked","useEffect","isEqual","undefined","then","res","catch","err","finally","allowedActions","entries","name","allowed","capitalise","permissions","action","split","slice","map","join"],"mappings":"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"}
1
+ {"version":3,"file":"useRBAC.mjs","sources":["../../../../../admin/src/hooks/useRBAC.ts"],"sourcesContent":["import * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[],\n rawQueryContext?: string\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<unknown>();\n const [data, setData] = React.useState<Record<string, boolean>>();\n\n const warnOnce = React.useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = React.useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = React.useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth('useRBAC', (state) => state.checkUserHasPermissions);\n\n const permssionsChecked = usePrev(actualPermissionsToCheck);\n const contextChecked = usePrev(rawQueryContext);\n\n React.useEffect(() => {\n if (\n !isEqual(permssionsChecked, actualPermissionsToCheck) ||\n // TODO: also run this when the query context changes\n contextChecked !== rawQueryContext\n ) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n checkUserHasPermissions(actualPermissionsToCheck, passedPermissions, rawQueryContext)\n .then((res) => {\n if (res) {\n setData(\n res.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: true,\n };\n }, {})\n );\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [\n actualPermissionsToCheck,\n checkUserHasPermissions,\n passedPermissions,\n permissionsToCheck,\n permssionsChecked,\n contextChecked,\n rawQueryContext,\n ]);\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries({\n ...defaultAllowedActions,\n ...data,\n }).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return {\n allowedActions,\n permissions: actualPermissionsToCheck,\n isLoading: isLoading || isLoadingAuth,\n error,\n };\n};\n\nconst getActionName = (permission: Permission): string => {\n const [action = ''] = permission.action.split('.').slice(-1);\n return action.split('-').map(capitalise).join('');\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n"],"names":["useRBAC","permissionsToCheck","passedPermissions","rawQueryContext","isLoadingAuth","useAuth","state","isLoading","setIsLoading","React","useState","error","setError","data","setData","warnOnce","useMemo","once","console","warn","actualPermissionsToCheck","Array","isArray","Object","values","flat","defaultAllowedActions","reduce","acc","permission","getActionName","checkUserHasPermissions","permssionsChecked","usePrev","contextChecked","useEffect","isEqual","undefined","then","res","catch","err","finally","allowedActions","entries","name","allowed","capitalise","permissions","action","split","slice","map","join"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSettingsMenu.js","sources":["../../../../../admin/src/hooks/useSettingsMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nimport type {\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n} from '../core/apis/router';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n licenseOnly?: never;\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const checkUserHasPermission = useAuth(\n 'useSettingsMenu',\n (state) => state.checkUserHasPermissions\n );\n const shouldUpdateStrapi = useAppInfo('useSettingsMenu', (state) => state.shouldUpdateStrapi);\n const settings = useStrapiApp('useSettingsMenu', (state) => state.settings);\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: (await checkUserHasPermission(link.permissions)).length > 0,\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [\n adminLinks,\n globalLinks,\n settings,\n shouldUpdateStrapi,\n addPermissions,\n checkUserHasPermission,\n ]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n"],"names":["formatLinks","menu","map","menuSection","formattedLinks","links","link","isDisplayed","useSettingsMenu","isLoading","setData","React","useState","checkUserHasPermission","useAuth","state","checkUserHasPermissions","shouldUpdateStrapi","useAppInfo","settings","useStrapiApp","permissions","useSelector","selectAdminPermissions","ceLinks","useMemo","SETTINGS_LINKS_CE","admin","adminLinks","global","globalLinks","useEnterprise","SETTINGS_LINKS_EE","combine","eeLinks","defaultValue","addPermissions","useCallback","id","Error","main","useEffect","getData","buildMenuPermissions","sections","Promise","all","reduce","acc","section","sectionIndex","linksWithPermissions","linkIndex","hasPermission","length","menuPermissions","prev","permission","find","Boolean","otherSections","sortBy","hasNotification","intlLabel","defaultMessage","Object","values","menuItem","filter"],"mappings":"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"}
1
+ {"version":3,"file":"useSettingsMenu.js","sources":["../../../../../admin/src/hooks/useSettingsMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nimport type {\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n} from '../core/apis/router';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n licenseOnly?: never;\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const checkUserHasPermission = useAuth(\n 'useSettingsMenu',\n (state) => state.checkUserHasPermissions\n );\n const shouldUpdateStrapi = useAppInfo('useSettingsMenu', (state) => state.shouldUpdateStrapi);\n const settings = useStrapiApp('useSettingsMenu', (state) => state.settings);\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: (await checkUserHasPermission(link.permissions)).length > 0,\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [\n adminLinks,\n globalLinks,\n settings,\n shouldUpdateStrapi,\n addPermissions,\n checkUserHasPermission,\n ]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n"],"names":["formatLinks","menu","map","menuSection","formattedLinks","links","link","isDisplayed","useSettingsMenu","isLoading","setData","React","useState","checkUserHasPermission","useAuth","state","checkUserHasPermissions","shouldUpdateStrapi","useAppInfo","settings","useStrapiApp","permissions","useSelector","selectAdminPermissions","ceLinks","useMemo","SETTINGS_LINKS_CE","admin","adminLinks","global","globalLinks","useEnterprise","SETTINGS_LINKS_EE","combine","eeLinks","defaultValue","addPermissions","useCallback","id","Error","main","useEffect","getData","buildMenuPermissions","sections","Promise","all","reduce","acc","section","sectionIndex","linksWithPermissions","linkIndex","hasPermission","length","menuPermissions","prev","permission","find","Boolean","otherSections","sortBy","hasNotification","intlLabel","defaultMessage","Object","values","menuItem","filter"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSettingsMenu.mjs","sources":["../../../../../admin/src/hooks/useSettingsMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nimport type {\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n} from '../core/apis/router';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n licenseOnly?: never;\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const checkUserHasPermission = useAuth(\n 'useSettingsMenu',\n (state) => state.checkUserHasPermissions\n );\n const shouldUpdateStrapi = useAppInfo('useSettingsMenu', (state) => state.shouldUpdateStrapi);\n const settings = useStrapiApp('useSettingsMenu', (state) => state.settings);\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: (await checkUserHasPermission(link.permissions)).length > 0,\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [\n adminLinks,\n globalLinks,\n settings,\n shouldUpdateStrapi,\n addPermissions,\n checkUserHasPermission,\n ]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n"],"names":["formatLinks","menu","map","menuSection","formattedLinks","links","link","isDisplayed","useSettingsMenu","isLoading","setData","React","useState","checkUserHasPermission","useAuth","state","checkUserHasPermissions","shouldUpdateStrapi","useAppInfo","settings","useStrapiApp","permissions","useSelector","selectAdminPermissions","ceLinks","useMemo","SETTINGS_LINKS_CE","admin","adminLinks","global","globalLinks","useEnterprise","SETTINGS_LINKS_EE","combine","eeLinks","defaultValue","addPermissions","useCallback","id","Error","main","useEffect","getData","buildMenuPermissions","sections","Promise","all","reduce","acc","section","sectionIndex","linksWithPermissions","linkIndex","hasPermission","length","menuPermissions","prev","permission","find","Boolean","otherSections","sortBy","hasNotification","intlLabel","defaultMessage","Object","values","menuItem","filter"],"mappings":"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"}
1
+ {"version":3,"file":"useSettingsMenu.mjs","sources":["../../../../../admin/src/hooks/useSettingsMenu.ts"],"sourcesContent":["import * as React from 'react';\n\nimport sortBy from 'lodash/sortBy';\nimport { useSelector } from 'react-redux';\n\nimport { SETTINGS_LINKS_CE, SettingsMenuLink } from '../constants';\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { selectAdminPermissions } from '../selectors';\nimport { PermissionMap } from '../types/permissions';\n\nimport { useEnterprise } from './useEnterprise';\n\nimport type {\n StrapiAppSetting,\n StrapiAppSettingLink as IStrapiAppSettingLink,\n} from '../core/apis/router';\n\nconst formatLinks = (menu: SettingsMenuSection[]): SettingsMenuSectionWithDisplayedLinks[] =>\n menu.map((menuSection) => {\n const formattedLinks = menuSection.links.map((link) => ({\n ...link,\n isDisplayed: false,\n }));\n\n return { ...menuSection, links: formattedLinks };\n });\n\ninterface SettingsMenuLinkWithPermissions extends SettingsMenuLink {\n permissions: IStrapiAppSettingLink['permissions'];\n hasNotification?: boolean;\n}\n\ninterface StrapiAppSettingsLink extends IStrapiAppSettingLink {\n licenseOnly?: never;\n hasNotification?: never;\n}\n\ninterface SettingsMenuSection extends Omit<StrapiAppSetting, 'links'> {\n links: Array<SettingsMenuLinkWithPermissions | StrapiAppSettingsLink>;\n}\n\ninterface SettingsMenuLinkWithPermissionsAndDisplayed extends SettingsMenuLinkWithPermissions {\n isDisplayed: boolean;\n}\n\ninterface StrapiAppSettingLinkWithDisplayed extends StrapiAppSettingsLink {\n isDisplayed: boolean;\n}\n\ninterface SettingsMenuSectionWithDisplayedLinks extends Omit<SettingsMenuSection, 'links'> {\n links: Array<SettingsMenuLinkWithPermissionsAndDisplayed | StrapiAppSettingLinkWithDisplayed>;\n}\n\ntype SettingsMenu = SettingsMenuSectionWithDisplayedLinks[];\n\nconst useSettingsMenu = (): {\n isLoading: boolean;\n menu: SettingsMenu;\n} => {\n const [{ isLoading, menu }, setData] = React.useState<{\n isLoading: boolean;\n menu: SettingsMenu;\n }>({\n isLoading: true,\n menu: [],\n });\n const checkUserHasPermission = useAuth(\n 'useSettingsMenu',\n (state) => state.checkUserHasPermissions\n );\n const shouldUpdateStrapi = useAppInfo('useSettingsMenu', (state) => state.shouldUpdateStrapi);\n const settings = useStrapiApp('useSettingsMenu', (state) => state.settings);\n const permissions = useSelector(selectAdminPermissions);\n\n /**\n * memoize the return value of this function to avoid re-computing it on every render\n * because it's used in an effect it ends up re-running recursively.\n */\n const ceLinks = React.useMemo(() => SETTINGS_LINKS_CE(), []);\n\n const { admin: adminLinks, global: globalLinks } = useEnterprise(\n ceLinks,\n async () => (await import('../../../ee/admin/src/constants')).SETTINGS_LINKS_EE(),\n {\n combine(ceLinks, eeLinks) {\n return {\n admin: [...eeLinks.admin, ...ceLinks.admin],\n global: [...ceLinks.global, ...eeLinks.global],\n };\n },\n defaultValue: {\n admin: [],\n global: [],\n },\n }\n );\n\n const addPermissions = React.useCallback(\n (link: SettingsMenuLink) => {\n if (!link.id) {\n throw new Error('The settings menu item must have an id attribute.');\n }\n\n return {\n ...link,\n permissions: permissions.settings?.[link.id as keyof PermissionMap['settings']]?.main ?? [],\n } satisfies SettingsMenuLinkWithPermissions;\n },\n [permissions.settings]\n );\n\n React.useEffect(() => {\n const getData = async () => {\n interface MenuLinkPermission {\n hasPermission: boolean;\n sectionIndex: number;\n linkIndex: number;\n }\n\n const buildMenuPermissions = (sections: SettingsMenuSectionWithDisplayedLinks[]) =>\n Promise.all(\n sections.reduce<Promise<MenuLinkPermission>[]>((acc, section, sectionIndex) => {\n const linksWithPermissions = section.links.map(async (link, linkIndex) => ({\n hasPermission: (await checkUserHasPermission(link.permissions)).length > 0,\n sectionIndex,\n linkIndex,\n }));\n\n return [...acc, ...linksWithPermissions];\n }, [])\n );\n\n const menuPermissions = await buildMenuPermissions(sections);\n\n setData((prev) => {\n return {\n ...prev,\n isLoading: false,\n menu: sections.map((section, sectionIndex) => ({\n ...section,\n links: section.links.map((link, linkIndex) => {\n const permission = menuPermissions.find(\n (permission) =>\n permission.sectionIndex === sectionIndex && permission.linkIndex === linkIndex\n );\n\n return {\n ...link,\n isDisplayed: Boolean(permission?.hasPermission),\n };\n }),\n })),\n };\n });\n };\n\n const { global, ...otherSections } = settings;\n const sections = formatLinks([\n {\n ...global,\n links: sortBy([...global.links, ...globalLinks.map(addPermissions)], (link) => link.id).map(\n (link) => ({\n ...link,\n hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,\n })\n ),\n },\n {\n id: 'permissions',\n intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },\n links: adminLinks.map(addPermissions),\n },\n ...Object.values(otherSections),\n ]);\n\n getData();\n }, [\n adminLinks,\n globalLinks,\n settings,\n shouldUpdateStrapi,\n addPermissions,\n checkUserHasPermission,\n ]);\n\n return {\n isLoading,\n menu: menu.map((menuItem) => ({\n ...menuItem,\n links: menuItem.links.filter((link) => link.isDisplayed),\n })),\n };\n};\n\nexport { useSettingsMenu };\nexport type { SettingsMenu };\n"],"names":["formatLinks","menu","map","menuSection","formattedLinks","links","link","isDisplayed","useSettingsMenu","isLoading","setData","React","useState","checkUserHasPermission","useAuth","state","checkUserHasPermissions","shouldUpdateStrapi","useAppInfo","settings","useStrapiApp","permissions","useSelector","selectAdminPermissions","ceLinks","useMemo","SETTINGS_LINKS_CE","admin","adminLinks","global","globalLinks","useEnterprise","SETTINGS_LINKS_EE","combine","eeLinks","defaultValue","addPermissions","useCallback","id","Error","main","useEffect","getData","buildMenuPermissions","sections","Promise","all","reduce","acc","section","sectionIndex","linksWithPermissions","linkIndex","hasPermission","length","menuPermissions","prev","permission","find","Boolean","otherSections","sortBy","hasNotification","intlLabel","defaultMessage","Object","values","menuItem","filter"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useThrottledCallback.js","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: any[]) => any>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n"],"names":["useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle"],"mappings":";;;;;AAMA;;;;;;;;;;;;;;;;AAgBC,IACKA,MAAAA,oBAAAA,GAAuB,CAC3BC,QAAAA,EACAC,IACAC,EAAAA,OAAAA,GAAAA;AAEA,IAAA,MAAMC,oBAAoBC,aACxB,CAAA,IAAMC,QAASL,CAAAA,QAAAA,EAAUC,MAAMC,OAC/B,CAAA,EAAA;AAACF,QAAAA,QAAAA;AAAUE,QAAAA,OAAAA;AAASD,QAAAA;AAAK,KAAA,CAAA;IAG3B,OAAOE,iBAAAA;AACT;;;;"}
1
+ {"version":3,"file":"useThrottledCallback.js","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: any[]) => any>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n"],"names":["useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle"],"mappings":";;;;;AAMA;;;;;;;;;;;;;;;;AAgBC,IACD,MAAMA,oBAAAA,GAAuB,CAC3BC,QAAAA,EACAC,IAAAA,EACAC,OAAAA,GAAAA;AAEA,IAAA,MAAMC,oBAAoBC,aAAAA,CACxB,IAAMC,QAAAA,CAASL,QAAAA,EAAUC,MAAMC,OAAAA,CAAAA,EAC/B;AAACF,QAAAA,QAAAA;AAAUE,QAAAA,OAAAA;AAASD,QAAAA;AAAK,KAAA,CAAA;IAG3B,OAAOE,iBAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useThrottledCallback.mjs","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: any[]) => any>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n"],"names":["useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle"],"mappings":";;;AAMA;;;;;;;;;;;;;;;;AAgBC,IACKA,MAAAA,oBAAAA,GAAuB,CAC3BC,QAAAA,EACAC,IACAC,EAAAA,OAAAA,GAAAA;AAEA,IAAA,MAAMC,oBAAoBC,OACxB,CAAA,IAAMC,QAASL,CAAAA,QAAAA,EAAUC,MAAMC,OAC/B,CAAA,EAAA;AAACF,QAAAA,QAAAA;AAAUE,QAAAA,OAAAA;AAASD,QAAAA;AAAK,KAAA,CAAA;IAG3B,OAAOE,iBAAAA;AACT;;;;"}
1
+ {"version":3,"file":"useThrottledCallback.mjs","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: any[]) => any>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n"],"names":["useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle"],"mappings":";;;AAMA;;;;;;;;;;;;;;;;AAgBC,IACD,MAAMA,oBAAAA,GAAuB,CAC3BC,QAAAA,EACAC,IAAAA,EACAC,OAAAA,GAAAA;AAEA,IAAA,MAAMC,oBAAoBC,OAAAA,CACxB,IAAMC,QAAAA,CAASL,QAAAA,EAAUC,MAAMC,OAAAA,CAAAA,EAC/B;AAACF,QAAAA,QAAAA;AAAUE,QAAAA,OAAAA;AAASD,QAAAA;AAAK,KAAA,CAAA;IAG3B,OAAOE,iBAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWarnIfUnsavedChanges.js","sources":["../../../../../admin/src/hooks/useWarnIfUnsavedChanges.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useWarnIfUnsavedChanges(enabled: boolean) {\n useEffect(() => {\n if (!enabled) return;\n\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n e.preventDefault();\n e.returnValue = '';\n return '';\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n }, [enabled]);\n}\n"],"names":["useWarnIfUnsavedChanges","enabled","useEffect","handleBeforeUnload","e","preventDefault","returnValue","window","addEventListener","removeEventListener"],"mappings":";;;;AAEO,SAASA,wBAAwBC,OAAgB,EAAA;IACtDC,eAAU,CAAA,IAAA;AACR,QAAA,IAAI,CAACD,OAAS,EAAA;AAEd,QAAA,MAAME,qBAAqB,CAACC,CAAAA,GAAAA;AAC1BA,YAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,YAAAA,CAAAA,CAAEE,WAAW,GAAG,EAAA;YAChB,OAAO,EAAA;AACT,SAAA;QAEAC,MAAOC,CAAAA,gBAAgB,CAAC,cAAgBL,EAAAA,kBAAAA,CAAAA;AACxC,QAAA,OAAO,IAAMI,MAAAA,CAAOE,mBAAmB,CAAC,cAAgBN,EAAAA,kBAAAA,CAAAA;KACvD,EAAA;AAACF,QAAAA;AAAQ,KAAA,CAAA;AACd;;;;"}
1
+ {"version":3,"file":"useWarnIfUnsavedChanges.js","sources":["../../../../../admin/src/hooks/useWarnIfUnsavedChanges.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useWarnIfUnsavedChanges(enabled: boolean) {\n useEffect(() => {\n if (!enabled) return;\n\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n e.preventDefault();\n e.returnValue = '';\n return '';\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n }, [enabled]);\n}\n"],"names":["useWarnIfUnsavedChanges","enabled","useEffect","handleBeforeUnload","e","preventDefault","returnValue","window","addEventListener","removeEventListener"],"mappings":";;;;AAEO,SAASA,wBAAwBC,OAAgB,EAAA;IACtDC,eAAAA,CAAU,IAAA;AACR,QAAA,IAAI,CAACD,OAAAA,EAAS;AAEd,QAAA,MAAME,qBAAqB,CAACC,CAAAA,GAAAA;AAC1BA,YAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,YAAAA,CAAAA,CAAEE,WAAW,GAAG,EAAA;YAChB,OAAO,EAAA;AACT,QAAA,CAAA;QAEAC,MAAAA,CAAOC,gBAAgB,CAAC,cAAA,EAAgBL,kBAAAA,CAAAA;AACxC,QAAA,OAAO,IAAMI,MAAAA,CAAOE,mBAAmB,CAAC,cAAA,EAAgBN,kBAAAA,CAAAA;IAC1D,CAAA,EAAG;AAACF,QAAAA;AAAQ,KAAA,CAAA;AACd;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWarnIfUnsavedChanges.mjs","sources":["../../../../../admin/src/hooks/useWarnIfUnsavedChanges.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useWarnIfUnsavedChanges(enabled: boolean) {\n useEffect(() => {\n if (!enabled) return;\n\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n e.preventDefault();\n e.returnValue = '';\n return '';\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n }, [enabled]);\n}\n"],"names":["useWarnIfUnsavedChanges","enabled","useEffect","handleBeforeUnload","e","preventDefault","returnValue","window","addEventListener","removeEventListener"],"mappings":";;AAEO,SAASA,wBAAwBC,OAAgB,EAAA;IACtDC,SAAU,CAAA,IAAA;AACR,QAAA,IAAI,CAACD,OAAS,EAAA;AAEd,QAAA,MAAME,qBAAqB,CAACC,CAAAA,GAAAA;AAC1BA,YAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,YAAAA,CAAAA,CAAEE,WAAW,GAAG,EAAA;YAChB,OAAO,EAAA;AACT,SAAA;QAEAC,MAAOC,CAAAA,gBAAgB,CAAC,cAAgBL,EAAAA,kBAAAA,CAAAA;AACxC,QAAA,OAAO,IAAMI,MAAAA,CAAOE,mBAAmB,CAAC,cAAgBN,EAAAA,kBAAAA,CAAAA;KACvD,EAAA;AAACF,QAAAA;AAAQ,KAAA,CAAA;AACd;;;;"}
1
+ {"version":3,"file":"useWarnIfUnsavedChanges.mjs","sources":["../../../../../admin/src/hooks/useWarnIfUnsavedChanges.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useWarnIfUnsavedChanges(enabled: boolean) {\n useEffect(() => {\n if (!enabled) return;\n\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n e.preventDefault();\n e.returnValue = '';\n return '';\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n }, [enabled]);\n}\n"],"names":["useWarnIfUnsavedChanges","enabled","useEffect","handleBeforeUnload","e","preventDefault","returnValue","window","addEventListener","removeEventListener"],"mappings":";;AAEO,SAASA,wBAAwBC,OAAgB,EAAA;IACtDC,SAAAA,CAAU,IAAA;AACR,QAAA,IAAI,CAACD,OAAAA,EAAS;AAEd,QAAA,MAAME,qBAAqB,CAACC,CAAAA,GAAAA;AAC1BA,YAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,YAAAA,CAAAA,CAAEE,WAAW,GAAG,EAAA;YAChB,OAAO,EAAA;AACT,QAAA,CAAA;QAEAC,MAAAA,CAAOC,gBAAgB,CAAC,cAAA,EAAgBL,kBAAAA,CAAAA;AACxC,QAAA,OAAO,IAAMI,MAAAA,CAAOE,mBAAmB,CAAC,cAAA,EAAgBN,kBAAAA,CAAAA;IAC1D,CAAA,EAAG;AAACF,QAAAA;AAAQ,KAAA,CAAA;AACd;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,EAAEA,OAAAA,EAASC,aAAa,EAAE,GAAGC,WAAAA;AAEnC,MAAMC,WAAc,GAAA,IAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,WAAWC,YAAQ,CAAA,kBAAA,EAAoB,CAACC,KAAAA,GAAUA,MAAMC,IAAI,CAAA;AAClE,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAU,CAAA,GAAGC,iBAAMC,QAAQ,EAAA;AAC1C,IAAA,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,8BAAiB,CAAA,kBAAA,CAAA;AAErD,IAAA,MAAM,EAAEC,IAAMC,EAAAA,OAAO,EAAEC,SAAWC,EAAAA,gBAAgB,EAAE,GAAGC,yBAAAA,EAAAA;AACvD,IAAA,MAAM,CAACC,OAASC,EAAAA,UAAAA,CAAW,GAAGV,gBAAAA,CAAMC,QAAQ,CAASZ,aAAAA,CAAAA;AAErDW,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,uBAAyB,EAAA;YAC3BU,KAAM,CAAA,4DAAA,CAAA,CACHC,IAAI,CAAC,OAAOC,GAAAA,GAAAA;gBACX,IAAI,CAACA,GAAIC,CAAAA,EAAE,EAAE;AACX,oBAAA;AACF;gBAEA,MAAMC,QAAAA,GAAY,MAAMF,GAAAA,CAAIG,IAAI,EAAA;gBAEhC,IAAI,CAACD,QAASE,CAAAA,QAAQ,EAAE;AACtB,oBAAA,MAAM,IAAIC,KAAAA,EAAAA;AACZ;AAEAT,gBAAAA,UAAAA,CAAWM,SAASE,QAAQ,CAAA;AAC9B,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;AACL;;eAGF,CAAA;AACJ;KACC,EAAA;AAAClB,QAAAA;AAAwB,KAAA,CAAA;AAE5BF,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;QACdU,wBAAmB3B,CAAAA,QAAAA,CAAAA,CAAUmB,IAAI,CAAC,CAACS,EAAAA,GAAAA;AACjC,YAAA,IAAIA,EAAI,EAAA;gBACNvB,SAAUuB,CAAAA,EAAAA,CAAAA;AACZ;AACF,SAAA,CAAA;KACC,EAAA;AAAC5B,QAAAA;AAAS,KAAA,CAAA;IAEb,MAAM,EAAE6B,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AAEvB,IAAA,MAAM,EACJlB,SAAAA,EAAWmB,aAAa,EACxBC,mBAAmB,EACnBC,mBAAmB,EACnBC,mBAAmB,EACnBC,sBAAsB,EACvB,GAAGC,eAAAA,CAAQC,yBAAyB1C,aAAeoB,EAAAA,OAAAA,CAAAA,CAAAA;IAEpD,MAAMuB,aAAAA,GAAgBC,uBAAa,kBAAoB,EAAA,CAACrC,QAAUA,KAAMsC,CAAAA,OAAO,CAACC,MAAM,CAAA;AACtF,IAAA,MAAMC,YAAY/B,OAAS+B,EAAAA,SAAAA;AAC3BpC,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIyB,SAAW,EAAA;AACbb,YAAAA,UAAAA,CAAW,sCAAwC,EAAA;AACjDc,gBAAAA,iBAAAA,EAAmBL,gBAAgBM,GAAG,CAAC,CAACC,MAAAA,GAAWA,OAAOC,GAAG,CAAA;AAC7DJ,gBAAAA;AACF,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,SAAAA;AAAWJ,QAAAA,aAAAA;AAAeT,QAAAA;AAAW,KAAA,CAAA;;;AAIzC,IAAA,IAAIE,iBAAiBlB,gBAAkB,EAAA;QACrC,qBAAOkC,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,qBACEC,eAACC,CAAAA,uBAAAA,EAAAA;AACE,QAAA,GAAGxC,OAAO;QACXP,MAAQA,EAAAA,MAAAA;QACRgD,sBAAwBrC,EAAAA,OAAAA;AACxBsC,QAAAA,kBAAAA,EAAoBhB,yBAAyB1C,aAAeoB,EAAAA,OAAAA,CAAAA;;0BAE5DgC,cAACO,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;0BACDP,cAACQ,CAAAA,qCAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAR,cAACS,CAAAA,oBAAAA,EAAAA;oBAAYC,OAASC,EAAAA,iCAAAA;AACpB,oBAAA,QAAA,gBAAAR,eAACS,CAAAA,gBAAAA,EAAAA;wBAAIC,UAAW,EAAA,YAAA;;0CACdb,cAACc,CAAAA,0BAAAA,EAAAA;0CACE/D,aAAc,CAAA;oCAAE8B,EAAI,EAAA,eAAA;oCAAiBkC,cAAgB,EAAA;AAAkB,iCAAA;;0CAE1EZ,eAACa,CAAAA,iBAAAA,EAAAA;gCACCC,MAAO,EAAA,QAAA;gCACPC,SAAW,EAAA;oCACTC,OAAS,EAAA,QAAA;oCACTC,KAAO,EAAA;AACT,iCAAA;gCACAC,UAAW,EAAA,YAAA;;kDAEXrB,cAACsB,CAAAA,iBAAAA,EAAAA;wCACCrC,mBAAqBA,EAAAA,mBAAAA;wCACrBC,mBAAqBA,EAAAA,mBAAAA;wCACrBC,mBAAqBA,EAAAA,mBAAAA;wCACrBC,sBAAwBA,EAAAA;;kDAE1Be,eAACa,CAAAA,iBAAAA,EAAAA;wCACCE,SAAU,EAAA,QAAA;wCACVG,UAAW,EAAA,SAAA;wCACXE,IAAM,EAAA,CAAA;wCACNC,QAAS,EAAA,MAAA;wCACTC,KAAM,EAAA,MAAA;wCACNR,MAAQ,EAAA;4CACNE,OAAS,EAAA,MAAA;4CACTC,KAAO,EAAA;AACT,yCAAA;;0DAEApB,cAAC0B,CAAAA,yBAAAA,EAAAA,EAAAA,CAAAA;0DACD1B,cAAC2B,CAAAA,qBAAAA,EAAAA,EAAAA;;;;;;;;;;;AAQjB;AAEA,MAAMC,kBAAqB,GAAA,IAAA;AACzB,IAAA,qBACE5B,cAAC6B,CAAAA,yBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA7B,cAAClD,CAAAA,WAAAA,EAAAA,EAAAA;;AAGP;AAEA,MAAMwC,wBAA2B,GAAA,CAC/BwC,qBACAC,EAAAA,sBAAAA,GAAiC,EAAE,GAAA;AAEnC,IAAA,IAAI,CAACC,KAAAA,CAAMF,qBAA0B,CAAA,IAAA,CAACE,MAAMD,sBAAyB,CAAA,EAAA;QACnE,OAAO,KAAA;AACT;AAEA,IAAA,OAAOE,GAAGH,qBAAuBC,EAAAA,sBAAAA,CAAAA;AACnC,CAAA;;;;;"}
1
+ {"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n <Outlet />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}