@strapi/admin 5.30.0 → 5.30.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 (342) hide show
  1. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  2. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  3. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  4. package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  6. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.js +1 -1
  8. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  9. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  10. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +8 -3
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +8 -3
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +1 -1
  16. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +1 -1
  18. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Number.js +1 -1
  20. package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Number.mjs +1 -1
  22. package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  24. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  26. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  28. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  30. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  32. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  34. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  36. package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +8 -4
  38. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +8 -4
  40. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/NpsSurvey.js +5 -3
  42. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  43. package/dist/admin/admin/src/components/NpsSurvey.mjs +5 -3
  44. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  46. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  47. package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
  48. package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  50. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  52. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/Table.js +1 -1
  54. package/dist/admin/admin/src/components/Table.js.map +1 -1
  55. package/dist/admin/admin/src/components/Table.mjs +1 -1
  56. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  58. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  59. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  60. package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
  61. package/dist/admin/admin/src/core/apis/Plugin.js +0 -1
  62. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  63. package/dist/admin/admin/src/core/apis/Plugin.mjs +0 -1
  64. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  65. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  66. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  67. package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
  68. package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
  69. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  70. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  71. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  72. package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
  73. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  74. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  75. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  76. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  77. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  78. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  79. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  80. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  82. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  83. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  84. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +2 -2
  86. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +2 -2
  88. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
  90. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +1 -1
  91. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +1 -1
  92. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +1 -1
  94. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +1 -1
  96. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  98. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +8 -1
  100. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +9 -2
  102. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  104. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  106. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  108. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  110. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  112. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +2 -0
  114. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  115. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +2 -0
  116. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  117. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  118. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  119. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  120. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  121. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
  122. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
  126. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +9 -2
  128. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -2
  130. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +9 -2
  132. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  138. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  144. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  146. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +2 -0
  154. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +2 -0
  156. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -2
  158. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +9 -2
  160. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +9 -2
  176. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +9 -2
  178. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  179. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  180. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  181. package/dist/admin/admin/src/services/api.js +2 -1
  182. package/dist/admin/admin/src/services/api.js.map +1 -1
  183. package/dist/admin/admin/src/services/api.mjs +2 -1
  184. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  185. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  186. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  187. package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
  188. package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
  189. package/dist/admin/admin/src/services/users.js.map +1 -1
  190. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  191. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  192. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  193. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  194. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  195. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  196. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  197. package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
  198. package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
  199. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  200. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  201. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  202. package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
  203. package/dist/admin/admin/src/utils/users.js.map +1 -1
  204. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  205. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  206. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  207. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  208. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  209. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  210. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
  211. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  212. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  213. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  214. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  215. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -3
  216. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  217. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -3
  218. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  219. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  220. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
  221. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  222. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
  223. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  224. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  225. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
  226. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
  227. package/dist/admin/ee/admin/src/services/ai.js +14 -1
  228. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  229. package/dist/admin/ee/admin/src/services/ai.mjs +14 -2
  230. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  231. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  232. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  233. package/dist/admin/ee.js +1 -0
  234. package/dist/admin/ee.js.map +1 -1
  235. package/dist/admin/ee.mjs +1 -1
  236. package/dist/admin/src/components/Form.d.ts +1 -1
  237. package/dist/admin/src/core/store/configure.d.ts +2 -2
  238. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  239. package/dist/admin/src/ee.d.ts +1 -1
  240. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  241. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  242. package/dist/admin/src/selectors.d.ts +2 -2
  243. package/dist/admin/src/services/admin.d.ts +6 -6
  244. package/dist/admin/src/services/api.d.ts +1 -1
  245. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  246. package/dist/admin/src/services/auth.d.ts +13 -13
  247. package/dist/admin/src/services/contentApi.d.ts +1 -1
  248. package/dist/admin/src/services/contentManager.d.ts +1 -1
  249. package/dist/admin/src/services/homepage.d.ts +3 -3
  250. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  251. package/dist/admin/src/services/users.d.ts +8 -8
  252. package/dist/admin/src/services/webhooks.d.ts +2 -2
  253. package/dist/admin/tests/utils.d.ts +1 -1
  254. package/dist/ee/admin/src/services/ai.d.ts +6 -3
  255. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  256. package/dist/ee/server/src/ai/containers/ai.d.ts +11 -0
  257. package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -0
  258. package/dist/ee/server/src/ai/controllers/ai.d.ts +1 -0
  259. package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
  260. package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
  261. package/dist/ee/server/src/index.d.ts +1 -0
  262. package/dist/ee/server/src/index.d.ts.map +1 -1
  263. package/dist/server/ee/server/src/ai/containers/ai.js +18 -0
  264. package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -0
  265. package/dist/server/ee/server/src/ai/containers/ai.mjs +16 -0
  266. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -0
  267. package/dist/server/ee/server/src/ai/controllers/ai.js +6 -0
  268. package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
  269. package/dist/server/ee/server/src/ai/controllers/ai.mjs +6 -0
  270. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
  271. package/dist/server/ee/server/src/ai/routes/ai.js +11 -0
  272. package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
  273. package/dist/server/ee/server/src/ai/routes/ai.mjs +11 -0
  274. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
  275. package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
  276. package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
  277. package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
  278. package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
  279. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  280. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  281. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  282. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  283. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  284. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  285. package/dist/server/ee/server/src/index.js +7 -0
  286. package/dist/server/ee/server/src/index.js.map +1 -1
  287. package/dist/server/ee/server/src/index.mjs +7 -0
  288. package/dist/server/ee/server/src/index.mjs.map +1 -1
  289. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  290. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  291. package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
  292. package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
  293. package/dist/server/ee/server/src/utils/index.js.map +1 -1
  294. package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
  295. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  296. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  297. package/dist/server/server/src/controllers/user.js +10 -0
  298. package/dist/server/server/src/controllers/user.js.map +1 -1
  299. package/dist/server/server/src/controllers/user.mjs +10 -0
  300. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  301. package/dist/server/server/src/domain/action/index.js.map +1 -1
  302. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  303. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  304. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  305. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  306. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  307. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  308. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  309. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  310. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  311. package/dist/server/server/src/services/api-token.js.map +1 -1
  312. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  313. package/dist/server/server/src/services/auth.js.map +1 -1
  314. package/dist/server/server/src/services/auth.mjs.map +1 -1
  315. package/dist/server/server/src/services/content-type.js.map +1 -1
  316. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  317. package/dist/server/server/src/services/encryption.js.map +1 -1
  318. package/dist/server/server/src/services/encryption.mjs.map +1 -1
  319. package/dist/server/server/src/services/homepage.js.map +1 -1
  320. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  321. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  322. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  323. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  324. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  325. package/dist/server/server/src/services/role.js.map +1 -1
  326. package/dist/server/server/src/services/role.mjs.map +1 -1
  327. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  328. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  329. package/dist/server/server/src/services/user.js.map +1 -1
  330. package/dist/server/server/src/services/user.mjs.map +1 -1
  331. package/dist/server/server/src/utils/index.js.map +1 -1
  332. package/dist/server/server/src/utils/index.mjs.map +1 -1
  333. package/dist/server/server/src/validation/action-provider.js.map +1 -1
  334. package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
  335. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  336. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
  337. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  338. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  339. package/dist/server/src/controllers/user.d.ts.map +1 -1
  340. package/dist/shared/contracts/ai.d.ts +16 -0
  341. package/dist/shared/contracts/ai.d.ts.map +1 -1
  342. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"StrapiApp.js","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { DefaultTheme } from 'styled-components';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","constructor","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
1
+ {"version":3,"file":"StrapiApp.js","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { DefaultTheme } from 'styled-components';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StrapiApp.mjs","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { DefaultTheme } from 'styled-components';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","constructor","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
1
+ {"version":3,"file":"StrapiApp.mjs","sources":["../../../../admin/src/StrapiApp.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { Clock, User, TrendUp } from '@strapi/icons';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { ADMIN_PERMISSIONS_EE, AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../ee/admin/src/constants';\n\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RBAC, RBACMiddleware } from './core/apis/rbac';\nimport { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';\nimport { Widgets } from './core/apis/Widgets';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n ThemeName,\n getStoredToken,\n} from './reducer';\nimport { getInitialRoutes } from './router';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { DefaultTheme } from 'styled-components';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ntype Translation = { data: Record<string, string>; locale: string };\ntype Translations = Array<Translation>;\n\ninterface StrapiAppPlugin {\n bootstrap?: (\n args: Pick<StrapiApp, 'addSettingsLink' | 'addSettingsLinks' | 'getPlugin' | 'registerHook'>\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads?: (args: { locales: string[] }) => Promise<Translations>;\n}\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: {},\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n rbac = new RBAC();\n router: Router;\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n store: Store | null = null;\n customFields = new CustomFields();\n widgets = new Widgets();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n this.router = new Router(getInitialRoutes());\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addRBACMiddleware = (m: RBACMiddleware | RBACMiddleware[]) => {\n if (Array.isArray(m)) {\n this.rbac.use(m);\n } else {\n this.rbac.use(m);\n }\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addMenuLink = (link: Parameters<typeof this.router.addMenuLink>[0]) =>\n this.router.addMenuLink(link);\n\n /**\n * @deprecated use `addSettingsLink` instead, it internally supports\n * adding multiple links at once.\n */\n addSettingsLinks = (sectionId: string, links: UnloadedSettingsLink[]) => {\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n this.router.addSettingsLink(sectionId, links);\n };\n\n /**\n * @deprecated use `addSettingsLink` instead, you can pass a section object to\n * create the section and links at the same time.\n */\n createSettingSection = (\n section: Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n links: UnloadedSettingsLink[]\n ) => this.router.addSettingsLink(section, links);\n\n addSettingsLink = (\n sectionId: string | Pick<StrapiAppSetting, 'id' | 'intlLabel'>,\n link: UnloadedSettingsLink\n ) => {\n this.router.addSettingsLink(sectionId, link);\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`.trim()\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n getAdminInjectedComponents = (\n moduleName: string,\n containerName: string,\n blockName: string\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register(customRegister?: unknown) {\n this.widgets.register([\n {\n icon: User,\n title: {\n id: 'widget.profile.title',\n defaultMessage: 'Profile',\n },\n component: async () => {\n const { ProfileWidget } = await import('./components/Widgets');\n return ProfileWidget;\n },\n pluginId: 'admin',\n id: 'profile-info',\n link: {\n label: {\n id: 'global.profile.settings',\n defaultMessage: 'Profile settings',\n },\n href: '/me',\n },\n },\n {\n icon: TrendUp,\n title: {\n id: 'widget.key-statistics.title',\n defaultMessage: 'Project statistics',\n },\n component: async () => {\n const { KeyStatisticsWidget } = await import('./components/Widgets');\n return KeyStatisticsWidget;\n },\n pluginId: 'admin',\n id: 'key-statistics',\n roles: ['strapi-super-admin'],\n },\n ]);\n\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n\n if (isFunction(customRegister)) {\n customRegister(this);\n }\n\n // Register Audit Logs widget at the end of the widgets array\n if (window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)) {\n this.widgets.register([\n {\n icon: Clock,\n title: {\n id: 'widget.last-activity.title',\n defaultMessage: 'Last activity',\n },\n component: async () => {\n const { AuditLogsWidget } = await import(\n '../../ee/admin/src/components/AuditLogs/Widgets'\n );\n return AuditLogsWidget;\n },\n pluginId: 'admin',\n id: 'audit-logs',\n link: {\n label: {\n id: 'widget.last-activity.link',\n defaultMessage: 'Open Audit Logs',\n },\n href: `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC`,\n },\n permissions: [{ action: 'admin::audit-logs.read' }],\n },\n ]);\n }\n }\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.js`);\n\n return { data, locale };\n } catch {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n this.store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n token: getStoredToken(),\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const router = this.router.createRouter(this, {\n basename: getBasename(),\n });\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type { StrapiAppPlugin, StrapiAppConstructorArgs, InjectionZoneComponent };\n"],"names":["INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","HOOKS","StrapiApp","bootstrap","customBootstrap","Object","keys","appPlugins","forEach","plugin","addSettingsLink","addSettingsLinks","getPlugin","registerHook","isFunction","addComponents","addFields","addMenuLink","addReducers","register","customRegister","widgets","icon","User","title","id","defaultMessage","component","ProfileWidget","pluginId","link","label","href","TrendUp","KeyStatisticsWidget","roles","window","strapi","features","isEnabled","AUDIT_LOGS","Clock","AuditLogsWidget","AUDIT_LOGS_DEFAULT_PAGE_SIZE","permissions","action","loadAdminTrads","adminLocales","Promise","all","configurations","locales","map","locale","default","data","reduce","acc","current","loadTrads","customTranslations","adminTranslations","arrayOfPromises","registerTrads","filter","a","pluginsTrads","mergedTrads","currentPluginTrads","pluginTrads","acc1","translations","resolve","render","localeNames","pick","languageNativeNames","localStorage","getItem","LANGUAGE_LOCAL_STORAGE_KEY","store","configureStore","admin_app","merge","ADMIN_PERMISSIONS_CE","ADMIN_PERMISSIONS_EE","theme","availableThemes","currentTheme","THEME_LOCAL_STORAGE_KEY","language","token","getStoredToken","middlewares","reducers","router","createRouter","basename","getBasename","_jsx","RouterProvider","config","plugins","hooksDict","admin","injectionZones","authLogo","Logo","head","favicon","menuLogo","notifications","releases","themes","light","lightTheme","dark","darkTheme","tutorials","rbac","RBAC","library","components","fields","customFields","CustomFields","Widgets","Array","isArray","comp","invariant","Component","name","field","type","addMiddlewares","middleware","push","addRBACMiddleware","m","use","entries","reducer","sectionId","links","createSettingSection","section","createCustomConfigurations","customConfig","loc","auth","logo","menu","console","warn","trim","undefined","createHook","getAdminInjectedComponents","moduleName","containerName","blockName","err","error","fn","registerPlugin","pluginConf","Plugin","runHookSeries","asynchronous","runSeriesAsync","runSeries","runHookWaterfall","initialValue","runWaterfall","runHookParallel","runParallel","Router","getInitialRoutes"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentBox.js","sources":["../../../../../admin/src/components/ContentBox.tsx"],"sourcesContent":["import {\n Flex,\n FlexComponent,\n FlexProps,\n Typography,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface ContentBoxProps {\n title?: string;\n subtitle?: string;\n icon?: FlexProps['children'];\n iconBackground?: FlexProps['background'];\n endAction?: FlexProps['children'];\n titleEllipsis?: boolean;\n}\n\nconst ContentBox = ({\n title,\n subtitle,\n icon,\n iconBackground,\n endAction,\n titleEllipsis = false,\n}: ContentBoxProps) => {\n if (title && title.length > 70 && titleEllipsis) {\n title = `${title.substring(0, 70)}...`;\n }\n\n return (\n <Flex shadow=\"tableShadow\" hasRadius padding={6} background=\"neutral0\">\n <IconWrapper background={iconBackground} hasRadius padding={3}>\n {icon}\n </IconWrapper>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={endAction ? 0 : 1}>\n <Flex>\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {title}\n </TypographyWordBreak>\n {endAction}\n </Flex>\n <Typography textColor=\"neutral600\">{subtitle}</Typography>\n </Flex>\n </Flex>\n );\n};\n\nconst IconWrapper = styled<FlexComponent>(Flex)`\n margin-right: ${({ theme }) => theme.spaces[6]};\n\n svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n`;\n\nconst TypographyWordBreak = styled<TypographyComponent>(Typography)`\n color: ${({ theme }) => theme.colors.neutral800};\n word-break: break-all;\n`;\n\nexport { ContentBox };\nexport type { ContentBoxProps };\n"],"names":["ContentBox","title","subtitle","icon","iconBackground","endAction","titleEllipsis","length","substring","_jsxs","Flex","shadow","hasRadius","padding","background","_jsx","IconWrapper","direction","alignItems","gap","TypographyWordBreak","fontWeight","variant","Typography","textColor","styled","theme","spaces","colors","neutral800"],"mappings":";;;;;;AAkBA,MAAMA,UAAa,GAAA,CAAC,EAClBC,KAAK,EACLC,QAAQ,EACRC,IAAI,EACJC,cAAc,EACdC,SAAS,EACTC,aAAAA,GAAgB,KAAK,EACL,GAAA;AAChB,IAAA,IAAIL,KAASA,IAAAA,KAAAA,CAAMM,MAAM,GAAG,MAAMD,aAAe,EAAA;QAC/CL,KAAQ,GAAA,CAAC,EAAEA,KAAMO,CAAAA,SAAS,CAAC,CAAG,EAAA,EAAA,CAAA,CAAI,GAAG,CAAC;AACxC;AAEA,IAAA,qBACEC,eAACC,CAAAA,iBAAAA,EAAAA;QAAKC,MAAO,EAAA,aAAA;QAAcC,SAAS,EAAA,IAAA;QAACC,OAAS,EAAA,CAAA;QAAGC,UAAW,EAAA,UAAA;;0BAC1DC,cAACC,CAAAA,WAAAA,EAAAA;gBAAYF,UAAYV,EAAAA,cAAAA;gBAAgBQ,SAAS,EAAA,IAAA;gBAACC,OAAS,EAAA,CAAA;AACzDV,gBAAAA,QAAAA,EAAAA;;0BAEHM,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKO,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AAAUC,gBAAAA,GAAAA,EAAKd,YAAY,CAAI,GAAA,CAAA;;kCACjEI,eAACC,CAAAA,iBAAAA,EAAAA;;0CACCK,cAACK,CAAAA,mBAAAA,EAAAA;gCAAoBC,UAAW,EAAA,UAAA;gCAAWC,OAAQ,EAAA,IAAA;AAChDrB,gCAAAA,QAAAA,EAAAA;;AAEFI,4BAAAA;;;kCAEHU,cAACQ,CAAAA,uBAAAA,EAAAA;wBAAWC,SAAU,EAAA,YAAA;AAActB,wBAAAA,QAAAA,EAAAA;;;;;;AAI5C;AAEA,MAAMc,WAAAA,GAAcS,aAAsBf,CAAAA,iBAAAA,CAAK;gBAC/B,EAAE,CAAC,EAAEgB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;AAMjD,CAAC;AAED,MAAMP,mBAAAA,GAAsBK,aAA4BF,CAAAA,uBAAAA,CAAW;SAC1D,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAElD,CAAC;;;;"}
1
+ {"version":3,"file":"ContentBox.js","sources":["../../../../../admin/src/components/ContentBox.tsx"],"sourcesContent":["import {\n Flex,\n FlexComponent,\n FlexProps,\n Typography,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface ContentBoxProps {\n title?: string;\n subtitle?: string;\n icon?: FlexProps['children'];\n iconBackground?: FlexProps['background'];\n endAction?: FlexProps['children'];\n titleEllipsis?: boolean;\n}\n\nconst ContentBox = ({\n title,\n subtitle,\n icon,\n iconBackground,\n endAction,\n titleEllipsis = false,\n}: ContentBoxProps) => {\n if (title && title.length > 70 && titleEllipsis) {\n title = `${title.substring(0, 70)}...`;\n }\n\n return (\n <Flex shadow=\"tableShadow\" hasRadius padding={6} background=\"neutral0\">\n <IconWrapper background={iconBackground} hasRadius padding={3}>\n {icon}\n </IconWrapper>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={endAction ? 0 : 1}>\n <Flex>\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {title}\n </TypographyWordBreak>\n {endAction}\n </Flex>\n <Typography textColor=\"neutral600\">{subtitle}</Typography>\n </Flex>\n </Flex>\n );\n};\n\nconst IconWrapper = styled<FlexComponent>(Flex)`\n margin-right: ${({ theme }) => theme.spaces[6]};\n\n svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n`;\n\nconst TypographyWordBreak = styled<TypographyComponent>(Typography)`\n color: ${({ theme }) => theme.colors.neutral800};\n word-break: break-all;\n`;\n\nexport { ContentBox };\nexport type { ContentBoxProps };\n"],"names":["ContentBox","title","subtitle","icon","iconBackground","endAction","titleEllipsis","length","substring","_jsxs","Flex","shadow","hasRadius","padding","background","_jsx","IconWrapper","direction","alignItems","gap","TypographyWordBreak","fontWeight","variant","Typography","textColor","styled","theme","spaces","colors","neutral800"],"mappings":";;;;;;AAkBA,MAAMA,UAAa,GAAA,CAAC,EAClBC,KAAK,EACLC,QAAQ,EACRC,IAAI,EACJC,cAAc,EACdC,SAAS,EACTC,aAAAA,GAAgB,KAAK,EACL,GAAA;AAChB,IAAA,IAAIL,KAASA,IAAAA,KAAAA,CAAMM,MAAM,GAAG,MAAMD,aAAe,EAAA;AAC/CL,QAAAA,KAAAA,GAAQ,GAAGA,KAAMO,CAAAA,SAAS,CAAC,CAAG,EAAA,EAAA,CAAA,CAAI,GAAG,CAAC;AACxC;AAEA,IAAA,qBACEC,eAACC,CAAAA,iBAAAA,EAAAA;QAAKC,MAAO,EAAA,aAAA;QAAcC,SAAS,EAAA,IAAA;QAACC,OAAS,EAAA,CAAA;QAAGC,UAAW,EAAA,UAAA;;0BAC1DC,cAACC,CAAAA,WAAAA,EAAAA;gBAAYF,UAAYV,EAAAA,cAAAA;gBAAgBQ,SAAS,EAAA,IAAA;gBAACC,OAAS,EAAA,CAAA;AACzDV,gBAAAA,QAAAA,EAAAA;;0BAEHM,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKO,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AAAUC,gBAAAA,GAAAA,EAAKd,YAAY,CAAI,GAAA,CAAA;;kCACjEI,eAACC,CAAAA,iBAAAA,EAAAA;;0CACCK,cAACK,CAAAA,mBAAAA,EAAAA;gCAAoBC,UAAW,EAAA,UAAA;gCAAWC,OAAQ,EAAA,IAAA;AAChDrB,gCAAAA,QAAAA,EAAAA;;AAEFI,4BAAAA;;;kCAEHU,cAACQ,CAAAA,uBAAAA,EAAAA;wBAAWC,SAAU,EAAA,YAAA;AAActB,wBAAAA,QAAAA,EAAAA;;;;;;AAI5C;AAEA,MAAMc,WAAAA,GAAcS,aAAsBf,CAAAA,iBAAAA,CAAK;gBAC/B,EAAE,CAAC,EAAEgB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;AAMjD,CAAC;AAED,MAAMP,mBAAAA,GAAsBK,aAA4BF,CAAAA,uBAAAA,CAAW;SAC1D,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAElD,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentBox.mjs","sources":["../../../../../admin/src/components/ContentBox.tsx"],"sourcesContent":["import {\n Flex,\n FlexComponent,\n FlexProps,\n Typography,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface ContentBoxProps {\n title?: string;\n subtitle?: string;\n icon?: FlexProps['children'];\n iconBackground?: FlexProps['background'];\n endAction?: FlexProps['children'];\n titleEllipsis?: boolean;\n}\n\nconst ContentBox = ({\n title,\n subtitle,\n icon,\n iconBackground,\n endAction,\n titleEllipsis = false,\n}: ContentBoxProps) => {\n if (title && title.length > 70 && titleEllipsis) {\n title = `${title.substring(0, 70)}...`;\n }\n\n return (\n <Flex shadow=\"tableShadow\" hasRadius padding={6} background=\"neutral0\">\n <IconWrapper background={iconBackground} hasRadius padding={3}>\n {icon}\n </IconWrapper>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={endAction ? 0 : 1}>\n <Flex>\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {title}\n </TypographyWordBreak>\n {endAction}\n </Flex>\n <Typography textColor=\"neutral600\">{subtitle}</Typography>\n </Flex>\n </Flex>\n );\n};\n\nconst IconWrapper = styled<FlexComponent>(Flex)`\n margin-right: ${({ theme }) => theme.spaces[6]};\n\n svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n`;\n\nconst TypographyWordBreak = styled<TypographyComponent>(Typography)`\n color: ${({ theme }) => theme.colors.neutral800};\n word-break: break-all;\n`;\n\nexport { ContentBox };\nexport type { ContentBoxProps };\n"],"names":["ContentBox","title","subtitle","icon","iconBackground","endAction","titleEllipsis","length","substring","_jsxs","Flex","shadow","hasRadius","padding","background","_jsx","IconWrapper","direction","alignItems","gap","TypographyWordBreak","fontWeight","variant","Typography","textColor","styled","theme","spaces","colors","neutral800"],"mappings":";;;;AAkBA,MAAMA,UAAa,GAAA,CAAC,EAClBC,KAAK,EACLC,QAAQ,EACRC,IAAI,EACJC,cAAc,EACdC,SAAS,EACTC,aAAAA,GAAgB,KAAK,EACL,GAAA;AAChB,IAAA,IAAIL,KAASA,IAAAA,KAAAA,CAAMM,MAAM,GAAG,MAAMD,aAAe,EAAA;QAC/CL,KAAQ,GAAA,CAAC,EAAEA,KAAMO,CAAAA,SAAS,CAAC,CAAG,EAAA,EAAA,CAAA,CAAI,GAAG,CAAC;AACxC;AAEA,IAAA,qBACEC,IAACC,CAAAA,IAAAA,EAAAA;QAAKC,MAAO,EAAA,aAAA;QAAcC,SAAS,EAAA,IAAA;QAACC,OAAS,EAAA,CAAA;QAAGC,UAAW,EAAA,UAAA;;0BAC1DC,GAACC,CAAAA,WAAAA,EAAAA;gBAAYF,UAAYV,EAAAA,cAAAA;gBAAgBQ,SAAS,EAAA,IAAA;gBAACC,OAAS,EAAA,CAAA;AACzDV,gBAAAA,QAAAA,EAAAA;;0BAEHM,IAACC,CAAAA,IAAAA,EAAAA;gBAAKO,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AAAUC,gBAAAA,GAAAA,EAAKd,YAAY,CAAI,GAAA,CAAA;;kCACjEI,IAACC,CAAAA,IAAAA,EAAAA;;0CACCK,GAACK,CAAAA,mBAAAA,EAAAA;gCAAoBC,UAAW,EAAA,UAAA;gCAAWC,OAAQ,EAAA,IAAA;AAChDrB,gCAAAA,QAAAA,EAAAA;;AAEFI,4BAAAA;;;kCAEHU,GAACQ,CAAAA,UAAAA,EAAAA;wBAAWC,SAAU,EAAA,YAAA;AAActB,wBAAAA,QAAAA,EAAAA;;;;;;AAI5C;AAEA,MAAMc,WAAAA,GAAcS,MAAsBf,CAAAA,IAAAA,CAAK;gBAC/B,EAAE,CAAC,EAAEgB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;AAMjD,CAAC;AAED,MAAMP,mBAAAA,GAAsBK,MAA4BF,CAAAA,UAAAA,CAAW;SAC1D,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAElD,CAAC;;;;"}
1
+ {"version":3,"file":"ContentBox.mjs","sources":["../../../../../admin/src/components/ContentBox.tsx"],"sourcesContent":["import {\n Flex,\n FlexComponent,\n FlexProps,\n Typography,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\ninterface ContentBoxProps {\n title?: string;\n subtitle?: string;\n icon?: FlexProps['children'];\n iconBackground?: FlexProps['background'];\n endAction?: FlexProps['children'];\n titleEllipsis?: boolean;\n}\n\nconst ContentBox = ({\n title,\n subtitle,\n icon,\n iconBackground,\n endAction,\n titleEllipsis = false,\n}: ContentBoxProps) => {\n if (title && title.length > 70 && titleEllipsis) {\n title = `${title.substring(0, 70)}...`;\n }\n\n return (\n <Flex shadow=\"tableShadow\" hasRadius padding={6} background=\"neutral0\">\n <IconWrapper background={iconBackground} hasRadius padding={3}>\n {icon}\n </IconWrapper>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={endAction ? 0 : 1}>\n <Flex>\n <TypographyWordBreak fontWeight=\"semiBold\" variant=\"pi\">\n {title}\n </TypographyWordBreak>\n {endAction}\n </Flex>\n <Typography textColor=\"neutral600\">{subtitle}</Typography>\n </Flex>\n </Flex>\n );\n};\n\nconst IconWrapper = styled<FlexComponent>(Flex)`\n margin-right: ${({ theme }) => theme.spaces[6]};\n\n svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n`;\n\nconst TypographyWordBreak = styled<TypographyComponent>(Typography)`\n color: ${({ theme }) => theme.colors.neutral800};\n word-break: break-all;\n`;\n\nexport { ContentBox };\nexport type { ContentBoxProps };\n"],"names":["ContentBox","title","subtitle","icon","iconBackground","endAction","titleEllipsis","length","substring","_jsxs","Flex","shadow","hasRadius","padding","background","_jsx","IconWrapper","direction","alignItems","gap","TypographyWordBreak","fontWeight","variant","Typography","textColor","styled","theme","spaces","colors","neutral800"],"mappings":";;;;AAkBA,MAAMA,UAAa,GAAA,CAAC,EAClBC,KAAK,EACLC,QAAQ,EACRC,IAAI,EACJC,cAAc,EACdC,SAAS,EACTC,aAAAA,GAAgB,KAAK,EACL,GAAA;AAChB,IAAA,IAAIL,KAASA,IAAAA,KAAAA,CAAMM,MAAM,GAAG,MAAMD,aAAe,EAAA;AAC/CL,QAAAA,KAAAA,GAAQ,GAAGA,KAAMO,CAAAA,SAAS,CAAC,CAAG,EAAA,EAAA,CAAA,CAAI,GAAG,CAAC;AACxC;AAEA,IAAA,qBACEC,IAACC,CAAAA,IAAAA,EAAAA;QAAKC,MAAO,EAAA,aAAA;QAAcC,SAAS,EAAA,IAAA;QAACC,OAAS,EAAA,CAAA;QAAGC,UAAW,EAAA,UAAA;;0BAC1DC,GAACC,CAAAA,WAAAA,EAAAA;gBAAYF,UAAYV,EAAAA,cAAAA;gBAAgBQ,SAAS,EAAA,IAAA;gBAACC,OAAS,EAAA,CAAA;AACzDV,gBAAAA,QAAAA,EAAAA;;0BAEHM,IAACC,CAAAA,IAAAA,EAAAA;gBAAKO,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;AAAUC,gBAAAA,GAAAA,EAAKd,YAAY,CAAI,GAAA,CAAA;;kCACjEI,IAACC,CAAAA,IAAAA,EAAAA;;0CACCK,GAACK,CAAAA,mBAAAA,EAAAA;gCAAoBC,UAAW,EAAA,UAAA;gCAAWC,OAAQ,EAAA,IAAA;AAChDrB,gCAAAA,QAAAA,EAAAA;;AAEFI,4BAAAA;;;kCAEHU,GAACQ,CAAAA,UAAAA,EAAAA;wBAAWC,SAAU,EAAA,YAAA;AAActB,wBAAAA,QAAAA,EAAAA;;;;;;AAI5C;AAEA,MAAMc,WAAAA,GAAcS,MAAsBf,CAAAA,IAAAA,CAAK;gBAC/B,EAAE,CAAC,EAAEgB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;AAMjD,CAAC;AAED,MAAMP,mBAAAA,GAAsBK,MAA4BF,CAAAA,UAAAA,CAAW;SAC1D,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAElD,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DescriptionComponentRenderer.js","sources":["../../../../../admin/src/components/DescriptionComponentRenderer.tsx"],"sourcesContent":["/**\n * This component will render DescriptionComponents that return objects e.g. `cm.apis.addEditViewPanel`\n * these descriptions are still treated like components because users can use react hooks in them.\n *\n * Rendering them normally by mapping etc. causes mutliple render issues.\n */\n\nimport * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useForceUpdate } from '../hooks/useForceUpdate';\nimport { useThrottledCallback } from '../hooks/useThrottledCallback';\nimport { cancelIdleCallback, requestIdleCallback } from '../utils/shims';\n\ninterface DescriptionComponent<Props, Description> {\n (props: Props): Description | null;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DescriptionComponentRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionComponentRendererProps<Props = any, Description = any> {\n children: (descriptions: Array<Description & { id: string }>) => React.ReactNode;\n descriptions: DescriptionComponent<Props, Description>[];\n props: Props;\n}\n\n/**\n * @internal\n *\n * @description This component takes an array of DescriptionComponents, which are react components that return objects as opposed to JSX.\n * We render these in their own isolated memoized component and use an update function to push the data back out to the parent.\n * Saving it in a ref, and then \"forcing\" an update of the parent component to render the children of this component with the new data.\n *\n * The DescriptionCompoonents can take props and use react hooks hence why we render them as if they were a component. The update\n * function is throttled and managed to avoid erroneous updates where we could wait a single tick to update the entire UI, which\n * creates less \"popping\" from functions being called in rapid succession.\n */\nconst DescriptionComponentRenderer = <Props, Description>({\n children,\n props,\n descriptions,\n}: DescriptionComponentRendererProps<Props, Description>) => {\n const statesRef = React.useRef<Record<string, { value: Description & { id: string } }>>({});\n const [tick, forceUpdate] = useForceUpdate();\n\n const requestHandle = React.useRef<number | null>(null);\n const requestUpdate = React.useCallback(() => {\n if (requestHandle.current) {\n cancelIdleCallback(requestHandle.current);\n }\n\n requestHandle.current = requestIdleCallback(() => {\n requestHandle.current = null;\n\n forceUpdate();\n });\n }, [forceUpdate]);\n\n /**\n * This will avoid us calling too many react updates in a short space of time.\n */\n const throttledRequestUpdate = useThrottledCallback(requestUpdate, 60, { trailing: true });\n\n const update = React.useCallback<DescriptionProps<Props, Description>['update']>(\n (id, description) => {\n if (description === null) {\n delete statesRef.current[id];\n } else {\n const current = statesRef.current[id];\n statesRef.current[id] = { ...current, value: { ...description, id } };\n }\n\n throttledRequestUpdate();\n },\n [throttledRequestUpdate]\n );\n\n const ids = React.useMemo(\n () => descriptions.map((description) => getCompId(description)),\n [descriptions]\n );\n\n const states = React.useMemo(\n () =>\n ids\n .map((id) => statesRef.current[id]?.value)\n .filter((state) => state !== null && state !== undefined),\n /**\n * we leave tick in the deps to ensure the memo is recalculated when the `update` function is called.\n * the `ids` will most likely be stable unless we get new actions, but we can't respond to the Description\n * Component changing the ref data in any other way.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ids, tick]\n );\n\n return (\n <>\n {descriptions.map((description) => {\n const key = getCompId(description);\n return (\n <Description key={key} id={key} description={description} props={props} update={update} />\n );\n })}\n {children(states)}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Description\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionProps<Props, Description> {\n description: DescriptionComponent<Props, Description>;\n id: string;\n props: Props;\n update: (id: string, value: Description | null) => void;\n}\n\n/**\n * Descriptions are objects, but to create the object, we allow users to create components,\n * this means they can use react hooks in them. It also means we need to render them\n * within a component, however because they return an object of data we can't add that\n * to the react tree, instead we push it back out to the parent.\n */\nconst Description = React.memo(\n ({ description, id, props, update }: DescriptionProps<any, any>) => {\n const comp = description(props);\n\n useShallowCompareEffect(() => {\n update(id, comp);\n\n return () => {\n update(id, null);\n };\n }, comp);\n\n return null;\n },\n (prev, next) => isEqual(prev.props, next.props)\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Helpers\n * -----------------------------------------------------------------------------------------------*/\n\nconst ids = new WeakMap<DescriptionComponent<any, any>, string>();\n\nlet counter = 0;\n\nfunction getCompId<T, K>(comp: DescriptionComponent<T, K>): string {\n const cachedId = ids.get(comp);\n\n if (cachedId) return cachedId;\n\n const id = `${comp.name || (comp as any).displayName || '<anonymous>'}-${counter++}`;\n\n ids.set(comp, id);\n\n return id;\n}\n\nconst useShallowCompareMemoize = <T,>(value: T): Array<T | undefined> => {\n const ref = React.useRef<T | undefined>(undefined);\n\n if (!isEqual(value, ref.current)) {\n ref.current = value;\n }\n\n return [ref.current];\n};\n\nconst useShallowCompareEffect = (callback: React.EffectCallback, dependencies?: unknown) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the linter isn't able to see that deps are properly handled here\n React.useEffect(callback, useShallowCompareMemoize(dependencies));\n};\n\nexport { DescriptionComponentRenderer };\nexport type { DescriptionComponentRendererProps, DescriptionComponent };\n"],"names":["DescriptionComponentRenderer","children","props","descriptions","statesRef","React","useRef","tick","forceUpdate","useForceUpdate","requestHandle","requestUpdate","useCallback","current","cancelIdleCallback","requestIdleCallback","throttledRequestUpdate","useThrottledCallback","trailing","update","id","description","value","ids","useMemo","map","getCompId","states","filter","state","undefined","_jsxs","_Fragment","key","_jsx","Description","memo","comp","useShallowCompareEffect","prev","next","isEqual","WeakMap","counter","cachedId","get","name","displayName","set","useShallowCompareMemoize","ref","callback","dependencies","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"DescriptionComponentRenderer.js","sources":["../../../../../admin/src/components/DescriptionComponentRenderer.tsx"],"sourcesContent":["/**\n * This component will render DescriptionComponents that return objects e.g. `cm.apis.addEditViewPanel`\n * these descriptions are still treated like components because users can use react hooks in them.\n *\n * Rendering them normally by mapping etc. causes mutliple render issues.\n */\n\nimport * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useForceUpdate } from '../hooks/useForceUpdate';\nimport { useThrottledCallback } from '../hooks/useThrottledCallback';\nimport { cancelIdleCallback, requestIdleCallback } from '../utils/shims';\n\ninterface DescriptionComponent<Props, Description> {\n (props: Props): Description | null;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DescriptionComponentRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionComponentRendererProps<Props = any, Description = any> {\n children: (descriptions: Array<Description & { id: string }>) => React.ReactNode;\n descriptions: DescriptionComponent<Props, Description>[];\n props: Props;\n}\n\n/**\n * @internal\n *\n * @description This component takes an array of DescriptionComponents, which are react components that return objects as opposed to JSX.\n * We render these in their own isolated memoized component and use an update function to push the data back out to the parent.\n * Saving it in a ref, and then \"forcing\" an update of the parent component to render the children of this component with the new data.\n *\n * The DescriptionCompoonents can take props and use react hooks hence why we render them as if they were a component. The update\n * function is throttled and managed to avoid erroneous updates where we could wait a single tick to update the entire UI, which\n * creates less \"popping\" from functions being called in rapid succession.\n */\nconst DescriptionComponentRenderer = <Props, Description>({\n children,\n props,\n descriptions,\n}: DescriptionComponentRendererProps<Props, Description>) => {\n const statesRef = React.useRef<Record<string, { value: Description & { id: string } }>>({});\n const [tick, forceUpdate] = useForceUpdate();\n\n const requestHandle = React.useRef<number | null>(null);\n const requestUpdate = React.useCallback(() => {\n if (requestHandle.current) {\n cancelIdleCallback(requestHandle.current);\n }\n\n requestHandle.current = requestIdleCallback(() => {\n requestHandle.current = null;\n\n forceUpdate();\n });\n }, [forceUpdate]);\n\n /**\n * This will avoid us calling too many react updates in a short space of time.\n */\n const throttledRequestUpdate = useThrottledCallback(requestUpdate, 60, { trailing: true });\n\n const update = React.useCallback<DescriptionProps<Props, Description>['update']>(\n (id, description) => {\n if (description === null) {\n delete statesRef.current[id];\n } else {\n const current = statesRef.current[id];\n statesRef.current[id] = { ...current, value: { ...description, id } };\n }\n\n throttledRequestUpdate();\n },\n [throttledRequestUpdate]\n );\n\n const ids = React.useMemo(\n () => descriptions.map((description) => getCompId(description)),\n [descriptions]\n );\n\n const states = React.useMemo(\n () =>\n ids\n .map((id) => statesRef.current[id]?.value)\n .filter((state) => state !== null && state !== undefined),\n /**\n * we leave tick in the deps to ensure the memo is recalculated when the `update` function is called.\n * the `ids` will most likely be stable unless we get new actions, but we can't respond to the Description\n * Component changing the ref data in any other way.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ids, tick]\n );\n\n return (\n <>\n {descriptions.map((description) => {\n const key = getCompId(description);\n return (\n <Description key={key} id={key} description={description} props={props} update={update} />\n );\n })}\n {children(states)}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Description\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionProps<Props, Description> {\n description: DescriptionComponent<Props, Description>;\n id: string;\n props: Props;\n update: (id: string, value: Description | null) => void;\n}\n\n/**\n * Descriptions are objects, but to create the object, we allow users to create components,\n * this means they can use react hooks in them. It also means we need to render them\n * within a component, however because they return an object of data we can't add that\n * to the react tree, instead we push it back out to the parent.\n */\nconst Description = React.memo(\n ({ description, id, props, update }: DescriptionProps<any, any>) => {\n const comp = description(props);\n\n useShallowCompareEffect(() => {\n update(id, comp);\n\n return () => {\n update(id, null);\n };\n }, comp);\n\n return null;\n },\n (prev, next) => isEqual(prev.props, next.props)\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Helpers\n * -----------------------------------------------------------------------------------------------*/\n\nconst ids = new WeakMap<DescriptionComponent<any, any>, string>();\n\nlet counter = 0;\n\nfunction getCompId<T, K>(comp: DescriptionComponent<T, K>): string {\n const cachedId = ids.get(comp);\n\n if (cachedId) return cachedId;\n\n const id = `${comp.name || (comp as any).displayName || '<anonymous>'}-${counter++}`;\n\n ids.set(comp, id);\n\n return id;\n}\n\nconst useShallowCompareMemoize = <T,>(value: T): Array<T | undefined> => {\n const ref = React.useRef<T | undefined>(undefined);\n\n if (!isEqual(value, ref.current)) {\n ref.current = value;\n }\n\n return [ref.current];\n};\n\nconst useShallowCompareEffect = (callback: React.EffectCallback, dependencies?: unknown) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the linter isn't able to see that deps are properly handled here\n React.useEffect(callback, useShallowCompareMemoize(dependencies));\n};\n\nexport { DescriptionComponentRenderer };\nexport type { DescriptionComponentRendererProps, DescriptionComponent };\n"],"names":["DescriptionComponentRenderer","children","props","descriptions","statesRef","React","useRef","tick","forceUpdate","useForceUpdate","requestHandle","requestUpdate","useCallback","current","cancelIdleCallback","requestIdleCallback","throttledRequestUpdate","useThrottledCallback","trailing","update","id","description","value","ids","useMemo","map","getCompId","states","filter","state","undefined","_jsxs","_Fragment","key","_jsx","Description","memo","comp","useShallowCompareEffect","prev","next","isEqual","WeakMap","counter","cachedId","get","name","displayName","set","useShallowCompareMemoize","ref","callback","dependencies","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA;;;;;;;;;;IAWA,MAAMA,+BAA+B,CAAqB,EACxDC,QAAQ,EACRC,KAAK,EACLC,YAAY,EAC0C,GAAA;AACtD,IAAA,MAAMC,SAAYC,GAAAA,gBAAAA,CAAMC,MAAM,CAA0D,EAAC,CAAA;IACzF,MAAM,CAACC,IAAMC,EAAAA,WAAAA,CAAY,GAAGC,6BAAAA,EAAAA;IAE5B,MAAMC,aAAAA,GAAgBL,gBAAMC,CAAAA,MAAM,CAAgB,IAAA,CAAA;IAClD,MAAMK,aAAAA,GAAgBN,gBAAMO,CAAAA,WAAW,CAAC,IAAA;QACtC,IAAIF,aAAAA,CAAcG,OAAO,EAAE;AACzBC,YAAAA,wBAAAA,CAAmBJ,cAAcG,OAAO,CAAA;AAC1C;QAEAH,aAAcG,CAAAA,OAAO,GAAGE,yBAAoB,CAAA,IAAA;AAC1CL,YAAAA,aAAAA,CAAcG,OAAO,GAAG,IAAA;AAExBL,YAAAA,WAAAA,EAAAA;AACF,SAAA,CAAA;KACC,EAAA;AAACA,QAAAA;AAAY,KAAA,CAAA;AAEhB;;AAEC,MACD,MAAMQ,sBAAAA,GAAyBC,yCAAqBN,CAAAA,aAAAA,EAAe,EAAI,EAAA;QAAEO,QAAU,EAAA;AAAK,KAAA,CAAA;AAExF,IAAA,MAAMC,MAASd,GAAAA,gBAAAA,CAAMO,WAAW,CAC9B,CAACQ,EAAIC,EAAAA,WAAAA,GAAAA;AACH,QAAA,IAAIA,gBAAgB,IAAM,EAAA;YACxB,OAAOjB,SAAAA,CAAUS,OAAO,CAACO,EAAG,CAAA;SACvB,MAAA;AACL,YAAA,MAAMP,OAAUT,GAAAA,SAAAA,CAAUS,OAAO,CAACO,EAAG,CAAA;YACrChB,SAAUS,CAAAA,OAAO,CAACO,EAAAA,CAAG,GAAG;AAAE,gBAAA,GAAGP,OAAO;gBAAES,KAAO,EAAA;AAAE,oBAAA,GAAGD,WAAW;AAAED,oBAAAA;AAAG;AAAE,aAAA;AACtE;AAEAJ,QAAAA,sBAAAA,EAAAA;KAEF,EAAA;AAACA,QAAAA;AAAuB,KAAA,CAAA;IAG1B,MAAMO,GAAAA,GAAMlB,gBAAMmB,CAAAA,OAAO,CACvB,IAAMrB,YAAasB,CAAAA,GAAG,CAAC,CAACJ,WAAgBK,GAAAA,SAAAA,CAAUL,WAClD,CAAA,CAAA,EAAA;AAAClB,QAAAA;AAAa,KAAA,CAAA;IAGhB,MAAMwB,MAAAA,GAAStB,iBAAMmB,OAAO,CAC1B,IACED,GACGE,CAAAA,GAAG,CAAC,CAACL,EAAOhB,GAAAA,SAAAA,CAAUS,OAAO,CAACO,EAAAA,CAAG,EAAEE,KAAAA,CAAAA,CACnCM,MAAM,CAAC,CAACC,KAAUA,GAAAA,KAAAA,KAAU,IAAQA,IAAAA,KAAAA,KAAUC,SACnD,CAAA;;;;AAIC;AAED,IAAA;AAACP,QAAAA,GAAAA;AAAKhB,QAAAA;AAAK,KAAA,CAAA;IAGb,qBACEwB,eAAA,CAAAC,mBAAA,EAAA;;YACG7B,YAAasB,CAAAA,GAAG,CAAC,CAACJ,WAAAA,GAAAA;AACjB,gBAAA,MAAMY,MAAMP,SAAUL,CAAAA,WAAAA,CAAAA;AACtB,gBAAA,qBACEa,cAACC,CAAAA,WAAAA,EAAAA;oBAAsBf,EAAIa,EAAAA,GAAAA;oBAAKZ,WAAaA,EAAAA,WAAAA;oBAAanB,KAAOA,EAAAA,KAAAA;oBAAOiB,MAAQA,EAAAA;AAA9Dc,iBAAAA,EAAAA,GAAAA,CAAAA;AAEtB,aAAA,CAAA;YACChC,QAAS0B,CAAAA,MAAAA;;;AAGhB;AAaA;;;;;AAKC,IACD,MAAMQ,WAAAA,iBAAc9B,gBAAM+B,CAAAA,IAAI,CAC5B,CAAC,EAAEf,WAAW,EAAED,EAAE,EAAElB,KAAK,EAAEiB,MAAM,EAA8B,GAAA;AAC7D,IAAA,MAAMkB,OAAOhB,WAAYnB,CAAAA,KAAAA,CAAAA;IAEzBoC,uBAAwB,CAAA,IAAA;AACtBnB,QAAAA,MAAAA,CAAOC,EAAIiB,EAAAA,IAAAA,CAAAA;QAEX,OAAO,IAAA;AACLlB,YAAAA,MAAAA,CAAOC,EAAI,EAAA,IAAA,CAAA;AACb,SAAA;KACCiB,EAAAA,IAAAA,CAAAA;IAEH,OAAO,IAAA;AACT,CACA,EAAA,CAACE,MAAMC,IAASC,GAAAA,OAAAA,CAAQF,KAAKrC,KAAK,EAAEsC,KAAKtC,KAAK,CAAA,CAAA;AAGhD;;qGAIA,MAAMqB,MAAM,IAAImB,OAAAA,EAAAA;AAEhB,IAAIC,OAAU,GAAA,CAAA;AAEd,SAASjB,UAAgBW,IAAgC,EAAA;IACvD,MAAMO,QAAAA,GAAWrB,GAAIsB,CAAAA,GAAG,CAACR,IAAAA,CAAAA;AAEzB,IAAA,IAAIO,UAAU,OAAOA,QAAAA;AAErB,IAAA,MAAMxB,EAAK,GAAA,CAAA,EAAGiB,IAAKS,CAAAA,IAAI,IAAKT,IAAaU,CAAAA,WAAW,IAAI,aAAA,CAAc,CAAC,EAAEJ,OAAW,EAAA,CAAA,CAAA;IAEpFpB,GAAIyB,CAAAA,GAAG,CAACX,IAAMjB,EAAAA,EAAAA,CAAAA;IAEd,OAAOA,EAAAA;AACT;AAEA,MAAM6B,2BAA2B,CAAK3B,KAAAA,GAAAA;IACpC,MAAM4B,GAAAA,GAAM7C,gBAAMC,CAAAA,MAAM,CAAgBwB,SAAAA,CAAAA;AAExC,IAAA,IAAI,CAACW,OAAAA,CAAQnB,KAAO4B,EAAAA,GAAAA,CAAIrC,OAAO,CAAG,EAAA;AAChCqC,QAAAA,GAAAA,CAAIrC,OAAO,GAAGS,KAAAA;AAChB;IAEA,OAAO;AAAC4B,QAAAA,GAAAA,CAAIrC;AAAQ,KAAA;AACtB,CAAA;AAEA,MAAMyB,uBAAAA,GAA0B,CAACa,QAAgCC,EAAAA,YAAAA,GAAAA;;IAE/D/C,gBAAMgD,CAAAA,SAAS,CAACF,QAAAA,EAAUF,wBAAyBG,CAAAA,YAAAA,CAAAA,CAAAA;AACrD,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DescriptionComponentRenderer.mjs","sources":["../../../../../admin/src/components/DescriptionComponentRenderer.tsx"],"sourcesContent":["/**\n * This component will render DescriptionComponents that return objects e.g. `cm.apis.addEditViewPanel`\n * these descriptions are still treated like components because users can use react hooks in them.\n *\n * Rendering them normally by mapping etc. causes mutliple render issues.\n */\n\nimport * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useForceUpdate } from '../hooks/useForceUpdate';\nimport { useThrottledCallback } from '../hooks/useThrottledCallback';\nimport { cancelIdleCallback, requestIdleCallback } from '../utils/shims';\n\ninterface DescriptionComponent<Props, Description> {\n (props: Props): Description | null;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DescriptionComponentRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionComponentRendererProps<Props = any, Description = any> {\n children: (descriptions: Array<Description & { id: string }>) => React.ReactNode;\n descriptions: DescriptionComponent<Props, Description>[];\n props: Props;\n}\n\n/**\n * @internal\n *\n * @description This component takes an array of DescriptionComponents, which are react components that return objects as opposed to JSX.\n * We render these in their own isolated memoized component and use an update function to push the data back out to the parent.\n * Saving it in a ref, and then \"forcing\" an update of the parent component to render the children of this component with the new data.\n *\n * The DescriptionCompoonents can take props and use react hooks hence why we render them as if they were a component. The update\n * function is throttled and managed to avoid erroneous updates where we could wait a single tick to update the entire UI, which\n * creates less \"popping\" from functions being called in rapid succession.\n */\nconst DescriptionComponentRenderer = <Props, Description>({\n children,\n props,\n descriptions,\n}: DescriptionComponentRendererProps<Props, Description>) => {\n const statesRef = React.useRef<Record<string, { value: Description & { id: string } }>>({});\n const [tick, forceUpdate] = useForceUpdate();\n\n const requestHandle = React.useRef<number | null>(null);\n const requestUpdate = React.useCallback(() => {\n if (requestHandle.current) {\n cancelIdleCallback(requestHandle.current);\n }\n\n requestHandle.current = requestIdleCallback(() => {\n requestHandle.current = null;\n\n forceUpdate();\n });\n }, [forceUpdate]);\n\n /**\n * This will avoid us calling too many react updates in a short space of time.\n */\n const throttledRequestUpdate = useThrottledCallback(requestUpdate, 60, { trailing: true });\n\n const update = React.useCallback<DescriptionProps<Props, Description>['update']>(\n (id, description) => {\n if (description === null) {\n delete statesRef.current[id];\n } else {\n const current = statesRef.current[id];\n statesRef.current[id] = { ...current, value: { ...description, id } };\n }\n\n throttledRequestUpdate();\n },\n [throttledRequestUpdate]\n );\n\n const ids = React.useMemo(\n () => descriptions.map((description) => getCompId(description)),\n [descriptions]\n );\n\n const states = React.useMemo(\n () =>\n ids\n .map((id) => statesRef.current[id]?.value)\n .filter((state) => state !== null && state !== undefined),\n /**\n * we leave tick in the deps to ensure the memo is recalculated when the `update` function is called.\n * the `ids` will most likely be stable unless we get new actions, but we can't respond to the Description\n * Component changing the ref data in any other way.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ids, tick]\n );\n\n return (\n <>\n {descriptions.map((description) => {\n const key = getCompId(description);\n return (\n <Description key={key} id={key} description={description} props={props} update={update} />\n );\n })}\n {children(states)}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Description\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionProps<Props, Description> {\n description: DescriptionComponent<Props, Description>;\n id: string;\n props: Props;\n update: (id: string, value: Description | null) => void;\n}\n\n/**\n * Descriptions are objects, but to create the object, we allow users to create components,\n * this means they can use react hooks in them. It also means we need to render them\n * within a component, however because they return an object of data we can't add that\n * to the react tree, instead we push it back out to the parent.\n */\nconst Description = React.memo(\n ({ description, id, props, update }: DescriptionProps<any, any>) => {\n const comp = description(props);\n\n useShallowCompareEffect(() => {\n update(id, comp);\n\n return () => {\n update(id, null);\n };\n }, comp);\n\n return null;\n },\n (prev, next) => isEqual(prev.props, next.props)\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Helpers\n * -----------------------------------------------------------------------------------------------*/\n\nconst ids = new WeakMap<DescriptionComponent<any, any>, string>();\n\nlet counter = 0;\n\nfunction getCompId<T, K>(comp: DescriptionComponent<T, K>): string {\n const cachedId = ids.get(comp);\n\n if (cachedId) return cachedId;\n\n const id = `${comp.name || (comp as any).displayName || '<anonymous>'}-${counter++}`;\n\n ids.set(comp, id);\n\n return id;\n}\n\nconst useShallowCompareMemoize = <T,>(value: T): Array<T | undefined> => {\n const ref = React.useRef<T | undefined>(undefined);\n\n if (!isEqual(value, ref.current)) {\n ref.current = value;\n }\n\n return [ref.current];\n};\n\nconst useShallowCompareEffect = (callback: React.EffectCallback, dependencies?: unknown) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the linter isn't able to see that deps are properly handled here\n React.useEffect(callback, useShallowCompareMemoize(dependencies));\n};\n\nexport { DescriptionComponentRenderer };\nexport type { DescriptionComponentRendererProps, DescriptionComponent };\n"],"names":["DescriptionComponentRenderer","children","props","descriptions","statesRef","React","useRef","tick","forceUpdate","useForceUpdate","requestHandle","requestUpdate","useCallback","current","cancelIdleCallback","requestIdleCallback","throttledRequestUpdate","useThrottledCallback","trailing","update","id","description","value","ids","useMemo","map","getCompId","states","filter","state","undefined","_jsxs","_Fragment","key","_jsx","Description","memo","comp","useShallowCompareEffect","prev","next","isEqual","WeakMap","counter","cachedId","get","name","displayName","set","useShallowCompareMemoize","ref","callback","dependencies","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"DescriptionComponentRenderer.mjs","sources":["../../../../../admin/src/components/DescriptionComponentRenderer.tsx"],"sourcesContent":["/**\n * This component will render DescriptionComponents that return objects e.g. `cm.apis.addEditViewPanel`\n * these descriptions are still treated like components because users can use react hooks in them.\n *\n * Rendering them normally by mapping etc. causes mutliple render issues.\n */\n\nimport * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useForceUpdate } from '../hooks/useForceUpdate';\nimport { useThrottledCallback } from '../hooks/useThrottledCallback';\nimport { cancelIdleCallback, requestIdleCallback } from '../utils/shims';\n\ninterface DescriptionComponent<Props, Description> {\n (props: Props): Description | null;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DescriptionComponentRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionComponentRendererProps<Props = any, Description = any> {\n children: (descriptions: Array<Description & { id: string }>) => React.ReactNode;\n descriptions: DescriptionComponent<Props, Description>[];\n props: Props;\n}\n\n/**\n * @internal\n *\n * @description This component takes an array of DescriptionComponents, which are react components that return objects as opposed to JSX.\n * We render these in their own isolated memoized component and use an update function to push the data back out to the parent.\n * Saving it in a ref, and then \"forcing\" an update of the parent component to render the children of this component with the new data.\n *\n * The DescriptionCompoonents can take props and use react hooks hence why we render them as if they were a component. The update\n * function is throttled and managed to avoid erroneous updates where we could wait a single tick to update the entire UI, which\n * creates less \"popping\" from functions being called in rapid succession.\n */\nconst DescriptionComponentRenderer = <Props, Description>({\n children,\n props,\n descriptions,\n}: DescriptionComponentRendererProps<Props, Description>) => {\n const statesRef = React.useRef<Record<string, { value: Description & { id: string } }>>({});\n const [tick, forceUpdate] = useForceUpdate();\n\n const requestHandle = React.useRef<number | null>(null);\n const requestUpdate = React.useCallback(() => {\n if (requestHandle.current) {\n cancelIdleCallback(requestHandle.current);\n }\n\n requestHandle.current = requestIdleCallback(() => {\n requestHandle.current = null;\n\n forceUpdate();\n });\n }, [forceUpdate]);\n\n /**\n * This will avoid us calling too many react updates in a short space of time.\n */\n const throttledRequestUpdate = useThrottledCallback(requestUpdate, 60, { trailing: true });\n\n const update = React.useCallback<DescriptionProps<Props, Description>['update']>(\n (id, description) => {\n if (description === null) {\n delete statesRef.current[id];\n } else {\n const current = statesRef.current[id];\n statesRef.current[id] = { ...current, value: { ...description, id } };\n }\n\n throttledRequestUpdate();\n },\n [throttledRequestUpdate]\n );\n\n const ids = React.useMemo(\n () => descriptions.map((description) => getCompId(description)),\n [descriptions]\n );\n\n const states = React.useMemo(\n () =>\n ids\n .map((id) => statesRef.current[id]?.value)\n .filter((state) => state !== null && state !== undefined),\n /**\n * we leave tick in the deps to ensure the memo is recalculated when the `update` function is called.\n * the `ids` will most likely be stable unless we get new actions, but we can't respond to the Description\n * Component changing the ref data in any other way.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ids, tick]\n );\n\n return (\n <>\n {descriptions.map((description) => {\n const key = getCompId(description);\n return (\n <Description key={key} id={key} description={description} props={props} update={update} />\n );\n })}\n {children(states)}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Description\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionProps<Props, Description> {\n description: DescriptionComponent<Props, Description>;\n id: string;\n props: Props;\n update: (id: string, value: Description | null) => void;\n}\n\n/**\n * Descriptions are objects, but to create the object, we allow users to create components,\n * this means they can use react hooks in them. It also means we need to render them\n * within a component, however because they return an object of data we can't add that\n * to the react tree, instead we push it back out to the parent.\n */\nconst Description = React.memo(\n ({ description, id, props, update }: DescriptionProps<any, any>) => {\n const comp = description(props);\n\n useShallowCompareEffect(() => {\n update(id, comp);\n\n return () => {\n update(id, null);\n };\n }, comp);\n\n return null;\n },\n (prev, next) => isEqual(prev.props, next.props)\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Helpers\n * -----------------------------------------------------------------------------------------------*/\n\nconst ids = new WeakMap<DescriptionComponent<any, any>, string>();\n\nlet counter = 0;\n\nfunction getCompId<T, K>(comp: DescriptionComponent<T, K>): string {\n const cachedId = ids.get(comp);\n\n if (cachedId) return cachedId;\n\n const id = `${comp.name || (comp as any).displayName || '<anonymous>'}-${counter++}`;\n\n ids.set(comp, id);\n\n return id;\n}\n\nconst useShallowCompareMemoize = <T,>(value: T): Array<T | undefined> => {\n const ref = React.useRef<T | undefined>(undefined);\n\n if (!isEqual(value, ref.current)) {\n ref.current = value;\n }\n\n return [ref.current];\n};\n\nconst useShallowCompareEffect = (callback: React.EffectCallback, dependencies?: unknown) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the linter isn't able to see that deps are properly handled here\n React.useEffect(callback, useShallowCompareMemoize(dependencies));\n};\n\nexport { DescriptionComponentRenderer };\nexport type { DescriptionComponentRendererProps, DescriptionComponent };\n"],"names":["DescriptionComponentRenderer","children","props","descriptions","statesRef","React","useRef","tick","forceUpdate","useForceUpdate","requestHandle","requestUpdate","useCallback","current","cancelIdleCallback","requestIdleCallback","throttledRequestUpdate","useThrottledCallback","trailing","update","id","description","value","ids","useMemo","map","getCompId","states","filter","state","undefined","_jsxs","_Fragment","key","_jsx","Description","memo","comp","useShallowCompareEffect","prev","next","isEqual","WeakMap","counter","cachedId","get","name","displayName","set","useShallowCompareMemoize","ref","callback","dependencies","useEffect"],"mappings":"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"}
@@ -129,7 +129,7 @@ const Root = ({ children, disabled = false, onChange, options = [], onOpenChange
129
129
  setQuery({
130
130
  filters: newFilterQuery,
131
131
  page: 1
132
- });
132
+ }, 'push', true);
133
133
  setOpen(false);
134
134
  };
135
135
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Content, {