@strapi/admin 5.48.1 → 5.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +33 -20
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +6 -1
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/ErrorElement.js +97 -2
  12. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  13. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  14. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/Filters.js +3 -2
  16. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  17. package/dist/admin/admin/src/components/Form.js +9 -5
  18. package/dist/admin/admin/src/components/Form.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  22. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  24. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  26. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  27. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  28. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  30. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  32. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  34. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  35. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  36. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  38. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  40. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  41. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  42. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  43. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  44. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  45. package/dist/admin/admin/src/components/LeftMenu.js +3 -2
  46. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  47. package/dist/admin/admin/src/components/MainNav/NavUser.js +10 -0
  48. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  49. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  50. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  52. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  53. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  54. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  55. package/dist/admin/admin/src/components/Pagination.js +3 -2
  56. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  57. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  58. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  59. package/dist/admin/admin/src/components/RelativeTime.js +6 -4
  60. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  61. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  62. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  63. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  64. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  65. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  66. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  67. package/dist/admin/admin/src/components/Table.js +3 -2
  68. package/dist/admin/admin/src/components/Table.js.map +1 -1
  69. package/dist/admin/admin/src/components/Theme.js +3 -2
  70. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  71. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  72. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  73. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  74. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  75. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  76. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  77. package/dist/admin/admin/src/core/apis/router.js +39 -33
  78. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  79. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  80. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  81. package/dist/admin/admin/src/features/Auth.js +78 -6
  82. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  83. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  84. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  85. package/dist/admin/admin/src/features/BackButton.js +3 -2
  86. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  87. package/dist/admin/admin/src/features/Configuration.js +3 -2
  88. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  89. package/dist/admin/admin/src/features/Notifications.js +3 -2
  90. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  91. package/dist/admin/admin/src/features/Tracking.js +7 -3
  92. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  93. package/dist/admin/admin/src/features/Widgets.js +3 -2
  94. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  95. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  96. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  97. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  98. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  99. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  100. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  101. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  102. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  103. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  104. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  105. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  106. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  107. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  108. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  109. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  110. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  111. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  112. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  113. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  114. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  115. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  116. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  117. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  118. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  119. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  120. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  121. package/dist/admin/admin/src/hooks/useMenu.js +7 -3
  122. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  124. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  125. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  126. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  127. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  128. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  129. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  130. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  131. package/dist/admin/admin/src/hooks/useSettingsMenu.js +7 -3
  132. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  133. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  134. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  135. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -7
  136. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  137. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -2
  138. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  140. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  141. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  142. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  144. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  146. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  148. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  150. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  152. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  153. package/dist/admin/admin/src/pages/Home/HomePage.js +3 -2
  154. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  155. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  156. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  157. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +7 -3
  158. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  160. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  161. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  162. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  163. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  164. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  165. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  166. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  167. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  168. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  170. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  172. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  174. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  176. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  178. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  180. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  182. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  184. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  186. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  188. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +4 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -0
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +11 -3
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +11 -4
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -6
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +71 -27
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +26 -4
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  237. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  240. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  242. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  243. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  244. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  245. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  246. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  247. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  248. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  249. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  250. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  251. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  252. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  253. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  254. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  255. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  256. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  257. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  258. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  259. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  260. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  261. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  262. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  263. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  264. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  265. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  266. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  267. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  268. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  269. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  270. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  271. package/dist/admin/admin/src/router.js +9 -0
  272. package/dist/admin/admin/src/router.js.map +1 -1
  273. package/dist/admin/admin/src/router.mjs +9 -0
  274. package/dist/admin/admin/src/router.mjs.map +1 -1
  275. package/dist/admin/admin/src/services/auth.js +43 -2
  276. package/dist/admin/admin/src/services/auth.js.map +1 -1
  277. package/dist/admin/admin/src/services/auth.mjs +41 -3
  278. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  279. package/dist/admin/admin/src/translations/en.json.js +22 -0
  280. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  281. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  282. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  283. package/dist/admin/admin/src/translations/ja.json.js +748 -265
  284. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  285. package/dist/admin/admin/src/translations/ja.json.mjs +745 -266
  286. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  287. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  288. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  289. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  290. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  291. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  292. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  293. package/dist/admin/admin/src/utils/locales.js +3 -2
  294. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  295. package/dist/admin/admin/src/utils/objects.js +9 -4
  296. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  297. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  298. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  299. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  300. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  301. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  302. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  303. package/dist/admin/admin/src/utils/urls.js +5 -1
  304. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  305. package/dist/admin/admin/tests/server.js +25 -0
  306. package/dist/admin/admin/tests/server.js.map +1 -1
  307. package/dist/admin/admin/tests/server.mjs +25 -0
  308. package/dist/admin/admin/tests/server.mjs.map +1 -1
  309. package/dist/admin/admin/tests/utils.js +3 -2
  310. package/dist/admin/admin/tests/utils.js.map +1 -1
  311. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  312. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  313. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  314. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  315. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  316. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  324. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  325. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  326. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  327. package/dist/admin/index.js +2 -0
  328. package/dist/admin/index.js.map +1 -1
  329. package/dist/admin/index.mjs +1 -0
  330. package/dist/admin/index.mjs.map +1 -1
  331. package/dist/admin/src/StrapiApp.d.ts +11 -5
  332. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  339. package/dist/admin/src/components/FormInputs/Renderer.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  342. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +5 -6
  348. package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
  349. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  350. package/dist/admin/src/core/apis/router.d.ts +2 -3
  351. package/dist/admin/src/core/store/configure.d.ts +2 -2
  352. package/dist/admin/src/core/utils/createHook.d.ts +4 -4
  353. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  354. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  355. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  356. package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
  357. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  358. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  359. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  360. package/dist/admin/src/hooks/useQueryParams.d.ts +1 -1
  361. package/dist/admin/src/hooks/useThrottledCallback.d.ts +0 -1
  362. package/dist/admin/src/index.d.ts +1 -0
  363. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  364. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  365. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  366. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  369. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  372. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  373. package/dist/admin/src/reducer.d.ts +1 -1
  374. package/dist/admin/src/services/admin.d.ts +2 -2
  375. package/dist/admin/src/services/api.d.ts +1 -1
  376. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  377. package/dist/admin/src/services/auth.d.ts +29 -27
  378. package/dist/admin/src/services/contentApi.d.ts +1 -1
  379. package/dist/admin/src/services/users.d.ts +7 -7
  380. package/dist/admin/src/services/webhooks.d.ts +2 -2
  381. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  382. package/dist/admin/src/utils/locales.d.ts +0 -1
  383. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  384. package/dist/admin/src/utils/shims.d.ts +1 -1
  385. package/dist/admin/tests/store.d.ts +4 -4
  386. package/dist/admin/tests/utils.d.ts +5 -5
  387. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  388. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  389. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  390. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  391. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  392. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  393. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  394. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  395. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  396. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  397. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  398. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  399. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  400. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  401. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  402. package/dist/ee/server/src/index.d.ts +2 -3
  403. package/dist/ee/server/src/index.d.ts.map +1 -1
  404. package/dist/ee/server/src/register.d.ts.map +1 -1
  405. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  406. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  407. package/dist/ee/server/src/services/index.d.ts +1 -1
  408. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  409. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  410. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  411. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  412. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  413. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  414. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  415. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  416. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  417. package/dist/ee/server/src/validation/role.d.ts +6 -6
  418. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  419. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  420. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  421. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  422. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  423. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  424. package/dist/server/ee/server/src/controllers/user.js +6 -2
  425. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  426. package/dist/server/ee/server/src/services/auth.js +5 -1
  427. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  428. package/dist/server/ee/server/src/services/user.js +8 -4
  429. package/dist/server/ee/server/src/services/user.js.map +1 -1
  430. package/dist/server/index.js +6 -2
  431. package/dist/server/index.js.map +1 -1
  432. package/dist/server/server/src/ai/services/ai.js +10 -4
  433. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js +9 -4
  439. package/dist/server/server/src/controllers/admin.js.map +1 -1
  440. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  441. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  442. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  444. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  445. package/dist/server/server/src/controllers/authentication.js +18 -6
  446. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  447. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  448. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  449. package/dist/server/server/src/controllers/index.js +2 -0
  450. package/dist/server/server/src/controllers/index.js.map +1 -1
  451. package/dist/server/server/src/controllers/index.mjs +2 -0
  452. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  453. package/dist/server/server/src/controllers/role.js +2 -4
  454. package/dist/server/server/src/controllers/role.js.map +1 -1
  455. package/dist/server/server/src/controllers/role.mjs +2 -4
  456. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  457. package/dist/server/server/src/controllers/user.js +3 -2
  458. package/dist/server/server/src/controllers/user.js.map +1 -1
  459. package/dist/server/server/src/controllers/webhooks.js +7 -2
  460. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  461. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  462. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  463. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  464. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  465. package/dist/server/server/src/routes/serve-admin-panel.js +9 -4
  466. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  467. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  468. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  469. package/dist/server/server/src/routes/users.js +12 -26
  470. package/dist/server/server/src/routes/users.js.map +1 -1
  471. package/dist/server/server/src/routes/users.mjs +12 -26
  472. package/dist/server/server/src/routes/users.mjs.map +1 -1
  473. package/dist/server/server/src/services/api-token.js +7 -3
  474. package/dist/server/server/src/services/api-token.js.map +1 -1
  475. package/dist/server/server/src/services/auth.js +8 -3
  476. package/dist/server/server/src/services/auth.js.map +1 -1
  477. package/dist/server/server/src/services/content-type.js +6 -2
  478. package/dist/server/server/src/services/content-type.js.map +1 -1
  479. package/dist/server/server/src/services/encryption.js +8 -4
  480. package/dist/server/server/src/services/encryption.js.map +1 -1
  481. package/dist/server/server/src/services/passport.js +6 -2
  482. package/dist/server/server/src/services/passport.js.map +1 -1
  483. package/dist/server/server/src/services/permission/engine.js +5 -1
  484. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  485. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  486. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  487. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  488. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  489. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  490. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  491. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  492. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  493. package/dist/server/server/src/services/permission/queries.js +5 -1
  494. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  495. package/dist/server/server/src/services/project-settings.js +6 -2
  496. package/dist/server/server/src/services/project-settings.js.map +1 -1
  497. package/dist/server/server/src/services/role.js +10 -5
  498. package/dist/server/server/src/services/role.js.map +1 -1
  499. package/dist/server/server/src/services/role.mjs +2 -1
  500. package/dist/server/server/src/services/role.mjs.map +1 -1
  501. package/dist/server/server/src/services/token.js +7 -2
  502. package/dist/server/server/src/services/token.js.map +1 -1
  503. package/dist/server/server/src/services/transfer/permission.js +5 -1
  504. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  505. package/dist/server/server/src/services/transfer/token.js +10 -5
  506. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  507. package/dist/server/server/src/services/user.js +10 -6
  508. package/dist/server/server/src/services/user.js.map +1 -1
  509. package/dist/server/server/src/strategies/admin.js +4 -0
  510. package/dist/server/server/src/strategies/admin.js.map +1 -1
  511. package/dist/server/server/src/strategies/admin.mjs +4 -0
  512. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  513. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  514. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  515. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  516. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  517. package/dist/server/server/src/validation/common-validators.js +6 -2
  518. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  519. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  520. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  521. package/dist/server/shared/utils/session-auth.js +5 -1
  522. package/dist/server/shared/utils/session-auth.js.map +1 -1
  523. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  524. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  525. package/dist/server/src/bootstrap.d.ts.map +1 -1
  526. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  527. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  528. package/dist/server/src/content-types/index.d.ts +6 -0
  529. package/dist/server/src/content-types/index.d.ts.map +1 -1
  530. package/dist/server/src/content-types/session.d.ts +6 -0
  531. package/dist/server/src/content-types/session.d.ts.map +1 -1
  532. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  533. package/dist/server/src/controllers/api-token.d.ts +1 -1
  534. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  535. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  536. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  537. package/dist/server/src/controllers/authentication.d.ts +4 -4
  538. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  539. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  540. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  541. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  542. package/dist/server/src/controllers/homepage.d.ts +2 -2
  543. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  544. package/dist/server/src/controllers/index.d.ts +33 -43
  545. package/dist/server/src/controllers/index.d.ts.map +1 -1
  546. package/dist/server/src/controllers/role.d.ts +4 -4
  547. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  548. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  549. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  550. package/dist/server/src/controllers/user.d.ts +2 -2
  551. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  552. package/dist/server/src/domain/action/index.d.ts +4 -65
  553. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  554. package/dist/server/src/domain/action/provider.d.ts +30 -3
  555. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  556. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  557. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  558. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  559. package/dist/server/src/domain/permission/index.d.ts +0 -1
  560. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  561. package/dist/server/src/domain/user.d.ts.map +1 -1
  562. package/dist/server/src/index.d.ts +51 -63
  563. package/dist/server/src/index.d.ts.map +1 -1
  564. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  565. package/dist/server/src/middlewares/index.d.ts +0 -1
  566. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  567. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  568. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  569. package/dist/server/src/policies/index.d.ts.map +1 -1
  570. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  571. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  572. package/dist/server/src/register.d.ts.map +1 -1
  573. package/dist/server/src/routes/index.d.ts +0 -1
  574. package/dist/server/src/routes/index.d.ts.map +1 -1
  575. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  576. package/dist/server/src/routes/transfer.d.ts +0 -1
  577. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  578. package/dist/server/src/routes/users.d.ts.map +1 -1
  579. package/dist/server/src/services/action.d.ts.map +1 -1
  580. package/dist/server/src/services/api-token.d.ts +5 -6
  581. package/dist/server/src/services/api-token.d.ts.map +1 -1
  582. package/dist/server/src/services/auth.d.ts.map +1 -1
  583. package/dist/server/src/services/condition.d.ts.map +1 -1
  584. package/dist/server/src/services/content-type.d.ts.map +1 -1
  585. package/dist/server/src/services/encryption.d.ts.map +1 -1
  586. package/dist/server/src/services/homepage.d.ts.map +1 -1
  587. package/dist/server/src/services/index.d.ts +12 -21
  588. package/dist/server/src/services/index.d.ts.map +1 -1
  589. package/dist/server/src/services/metrics.d.ts.map +1 -1
  590. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  591. package/dist/server/src/services/passport.d.ts +0 -1
  592. package/dist/server/src/services/passport.d.ts.map +1 -1
  593. package/dist/server/src/services/permission/engine.d.ts +1 -2
  594. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  595. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  596. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  597. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  598. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  599. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  600. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  601. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  602. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  603. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  604. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  605. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  606. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  607. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  608. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  609. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  610. package/dist/server/src/services/permission.d.ts +13 -38
  611. package/dist/server/src/services/permission.d.ts.map +1 -1
  612. package/dist/server/src/services/project-settings.d.ts +2 -4
  613. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  614. package/dist/server/src/services/role.d.ts +7 -1
  615. package/dist/server/src/services/role.d.ts.map +1 -1
  616. package/dist/server/src/services/token.d.ts +1 -1
  617. package/dist/server/src/services/token.d.ts.map +1 -1
  618. package/dist/server/src/services/transfer/token.d.ts +11 -11
  619. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  620. package/dist/server/src/services/user.d.ts +3 -3
  621. package/dist/server/src/services/user.d.ts.map +1 -1
  622. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  623. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  624. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  625. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  626. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  627. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  628. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  629. package/dist/server/src/validation/action-provider.d.ts +2 -2
  630. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  631. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  632. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  633. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  634. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  635. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  636. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  637. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  638. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  639. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  640. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  641. package/dist/server/src/validation/permission.d.ts +6 -6
  642. package/dist/server/src/validation/permission.d.ts.map +1 -1
  643. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  644. package/dist/server/src/validation/project-settings.d.ts +6 -6
  645. package/dist/server/src/validation/role.d.ts +8 -8
  646. package/dist/server/src/validation/role.d.ts.map +1 -1
  647. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  648. package/dist/server/src/validation/user.d.ts +8 -8
  649. package/dist/shared/contracts/permissions.d.ts +1 -0
  650. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  651. package/dist/shared/contracts/sessions.d.ts +62 -0
  652. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  653. package/dist/shared/contracts/shared.d.ts +1 -1
  654. package/dist/shared/contracts/shared.d.ts.map +1 -1
  655. package/dist/shared/utils/session-auth.d.ts +1 -1
  656. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  657. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"ResizeIndicator.js","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":"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"}
1
+ {"version":3,"file":"ResizeIndicator.js","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":"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"}
@@ -9,7 +9,8 @@ var Tracking = require('../features/Tracking.js');
9
9
  var useMediaQuery = require('../hooks/useMediaQuery.js');
10
10
  var useQueryParams = require('../hooks/useQueryParams.js');
11
11
 
12
- function _interopNamespaceDefault(e) {
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
13
14
  var n = Object.create(null);
14
15
  if (e) {
15
16
  Object.keys(e).forEach(function (k) {
@@ -26,7 +27,7 @@ function _interopNamespaceDefault(e) {
26
27
  return Object.freeze(n);
27
28
  }
28
29
 
29
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
31
 
31
32
  const SearchInput = ({ disabled, label, placeholder, trackedEvent, trackedEventDetails })=>{
32
33
  const inputRef = React__namespace.useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.js","sources":["../../../../../admin/src/components/SearchInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search as SearchIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { TrackingEvent, useTracking } from '../features/Tracking';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\ninterface SearchInputProps {\n disabled?: boolean;\n label: string;\n placeholder?: string;\n trackedEvent?: TrackingEvent['name'] | null;\n trackedEventDetails?: TrackingEvent['properties'];\n}\n\nconst SearchInput = ({\n disabled,\n label,\n placeholder,\n trackedEvent,\n trackedEventDetails,\n}: SearchInputProps) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const iconButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const [{ query }, setQuery] = useQueryParams<{ _q: string; page?: number }>();\n\n const [value, setValue] = React.useState(query?._q || '');\n const [isOpen, setIsOpen] = React.useState(!!value);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const isMobile = useIsMobile();\n\n const handleToggle = () => setIsOpen((prev) => !prev);\n\n React.useLayoutEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isOpen]);\n\n const handleClear = () => {\n setValue('');\n setQuery({ _q: '' }, 'remove');\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n // Ensure value is a string\n if (value) {\n if (trackedEvent) {\n trackUsage(trackedEvent, trackedEventDetails);\n }\n setQuery({ _q: encodeURIComponent(value), page: 1 });\n } else {\n handleToggle();\n setQuery({ _q: '' }, 'remove');\n }\n };\n\n const renderSearchForm = (opts?: { enableBlurClose?: boolean }) => (\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n ref={inputRef}\n name=\"search\"\n onChange={(e) => setValue(e.target.value)}\n value={value}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onClear={handleClear}\n placeholder={isMobile ? undefined : placeholder}\n disabled={disabled}\n onBlur={\n opts?.enableBlurClose\n ? (e) => {\n if (!e.currentTarget.contains(e.relatedTarget) && e.currentTarget.value === '') {\n setIsOpen(false);\n }\n }\n : undefined\n }\n >\n {label}\n </Searchbar>\n </SearchForm>\n );\n\n if (isMobile) {\n // Add wrapper so that the Searchbar takes up the rest of the available space.\n return <Box width=\"100%\">{renderSearchForm()}</Box>;\n }\n\n if (isOpen) {\n return renderSearchForm({ enableBlurClose: true });\n }\n\n return (\n <IconButton\n ref={iconButtonRef}\n disabled={disabled}\n label={formatMessage({ id: 'global.search', defaultMessage: 'Search' })}\n onClick={handleToggle}\n >\n <SearchIcon />\n </IconButton>\n );\n};\n\nexport { SearchInput };\nexport type { SearchInputProps };\n"],"names":["SearchInput","disabled","label","placeholder","trackedEvent","trackedEventDetails","inputRef","React","useRef","iconButtonRef","query","setQuery","useQueryParams","value","setValue","useState","_q","isOpen","setIsOpen","formatMessage","useIntl","trackUsage","useTracking","isMobile","useIsMobile","handleToggle","prev","useLayoutEffect","current","focus","handleClear","handleSubmit","e","preventDefault","encodeURIComponent","page","renderSearchForm","opts","_jsx","SearchForm","onSubmit","Searchbar","ref","name","onChange","target","clearLabel","id","defaultMessage","onClear","undefined","onBlur","enableBlurClose","currentTarget","contains","relatedTarget","Box","width","IconButton","onClick","SearchIcon"],"mappings":"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"}
1
+ {"version":3,"file":"SearchInput.js","sources":["../../../../../admin/src/components/SearchInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search as SearchIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { TrackingEvent, useTracking } from '../features/Tracking';\nimport { useIsMobile } from '../hooks/useMediaQuery';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\ninterface SearchInputProps {\n disabled?: boolean;\n label: string;\n placeholder?: string;\n trackedEvent?: TrackingEvent['name'] | null;\n trackedEventDetails?: TrackingEvent['properties'];\n}\n\nconst SearchInput = ({\n disabled,\n label,\n placeholder,\n trackedEvent,\n trackedEventDetails,\n}: SearchInputProps) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const iconButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const [{ query }, setQuery] = useQueryParams<{ _q: string; page?: number }>();\n\n const [value, setValue] = React.useState(query?._q || '');\n const [isOpen, setIsOpen] = React.useState(!!value);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const isMobile = useIsMobile();\n\n const handleToggle = () => setIsOpen((prev) => !prev);\n\n React.useLayoutEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isOpen]);\n\n const handleClear = () => {\n setValue('');\n setQuery({ _q: '' }, 'remove');\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n // Ensure value is a string\n if (value) {\n if (trackedEvent) {\n trackUsage(trackedEvent, trackedEventDetails);\n }\n setQuery({ _q: encodeURIComponent(value), page: 1 });\n } else {\n handleToggle();\n setQuery({ _q: '' }, 'remove');\n }\n };\n\n const renderSearchForm = (opts?: { enableBlurClose?: boolean }) => (\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n ref={inputRef}\n name=\"search\"\n onChange={(e) => setValue(e.target.value)}\n value={value}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onClear={handleClear}\n placeholder={isMobile ? undefined : placeholder}\n disabled={disabled}\n onBlur={\n opts?.enableBlurClose\n ? (e) => {\n if (!e.currentTarget.contains(e.relatedTarget) && e.currentTarget.value === '') {\n setIsOpen(false);\n }\n }\n : undefined\n }\n >\n {label}\n </Searchbar>\n </SearchForm>\n );\n\n if (isMobile) {\n // Add wrapper so that the Searchbar takes up the rest of the available space.\n return <Box width=\"100%\">{renderSearchForm()}</Box>;\n }\n\n if (isOpen) {\n return renderSearchForm({ enableBlurClose: true });\n }\n\n return (\n <IconButton\n ref={iconButtonRef}\n disabled={disabled}\n label={formatMessage({ id: 'global.search', defaultMessage: 'Search' })}\n onClick={handleToggle}\n >\n <SearchIcon />\n </IconButton>\n );\n};\n\nexport { SearchInput };\nexport type { SearchInputProps };\n"],"names":["SearchInput","disabled","label","placeholder","trackedEvent","trackedEventDetails","inputRef","React","useRef","iconButtonRef","query","setQuery","useQueryParams","value","setValue","useState","_q","isOpen","setIsOpen","formatMessage","useIntl","trackUsage","useTracking","isMobile","useIsMobile","handleToggle","prev","useLayoutEffect","current","focus","handleClear","handleSubmit","e","preventDefault","encodeURIComponent","page","renderSearchForm","opts","_jsx","SearchForm","onSubmit","Searchbar","ref","name","onChange","target","clearLabel","id","defaultMessage","onClear","undefined","onBlur","enableBlurClose","currentTarget","contains","relatedTarget","Box","width","IconButton","onClick","SearchIcon"],"mappings":"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"}
@@ -11,7 +11,8 @@ var useControllableState = require('../hooks/useControllableState.js');
11
11
  var useQueryParams = require('../hooks/useQueryParams.js');
12
12
  var Context = require('./Context.js');
13
13
 
14
- function _interopNamespaceDefault(e) {
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
15
16
  var n = Object.create(null);
16
17
  if (e) {
17
18
  Object.keys(e).forEach(function (k) {
@@ -28,7 +29,7 @@ function _interopNamespaceDefault(e) {
28
29
  return Object.freeze(n);
29
30
  }
30
31
 
31
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
 
33
34
  const [TableProvider, useTable] = Context.createContext('Table');
34
35
  const Root = ({ children, defaultSelectedRows, footer, headers = [], isLoading = false, onSelectedRowsChange, rows = [], selectedRows: selectedRowsProps })=>{
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../../../admin/src/components/Table.tsx"],"sourcesContent":["/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n IconButton,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n [key: string]: any;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\nconst [TableProvider, useTable] = createContext<TableContextValue<any, any>>('Table');\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <TableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </TableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{ sort?: `${string}:${'ASC' | 'DESC'}` }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n {\n id: 'components.TableHeader.sort',\n defaultMessage: 'Sort on {label}',\n },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery(\n {\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n },\n 'push',\n true\n );\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClickSort();\n }\n };\n\n return (\n <SortableTh\n onClick={sortable ? handleClickSort : undefined}\n onKeyDown={sortable ? handleKeyDown : undefined}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={isSorted ? (sortOrder === 'ASC' ? 'ascending' : 'descending') : undefined}\n $sortable={!!sortable}\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Flex gap={1}>\n <Typography textColor=\"neutral600\" tag=\"span\" variant=\"sigma\">\n {label}\n </Typography>\n {isSorted && sortable && <SortIcon $isUp={sortOrder === 'ASC'} />}\n </Flex>\n </Tooltip>\n </SortableTh>\n );\n};\n\nconst SortableTh = styled(Th)<{ $sortable: boolean }>`\n cursor: ${({ $sortable }) => ($sortable ? 'pointer' : 'default')};\n`;\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n selectRow(rows.find((row) => row.id === id));\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n"],"names":["TableProvider","useTable","createContext","Root","children","defaultSelectedRows","footer","headers","isLoading","onSelectedRowsChange","rows","selectedRows","selectedRowsProps","setSelectedRows","useControllableState","prop","defaultProp","onChange","hasHeaderCheckbox","setHasHeaderCheckbox","React","useState","rowCount","length","colCount","selectRow","row","Array","isArray","prev","currentRowIndex","findIndex","r","id","toSpliced","_jsx","Content","state","DSTable","Head","Thead","Tr","HeaderCell","name","label","sortable","query","setQuery","useQueryParams","sort","sortBy","sortOrder","split","formatMessage","useIntl","isSorted","sortLabel","defaultMessage","handleClickSort","handleKeyDown","e","key","preventDefault","SortableTh","onClick","undefined","onKeyDown","tabIndex","aria-sort","$sortable","Tooltip","_jsxs","Flex","gap","Typography","textColor","tag","variant","SortIcon","$isUp","styled","Th","CaretDown","ActionBar","number","HeaderCheckboxCell","areAllEntriesSelected","isIndeterminate","useEffect","handleSelectAll","Checkbox","aria-label","disabled","checked","onCheckedChange","Empty","props","Tbody","Td","colSpan","EmptyStateLayout","content","hasRadius","icon","EmptyDocuments","width","Loading","justifyContent","padding","background","Loader","Body","Row","Cell","CheckboxCell","handleSelectRow","find","isChecked","stopPropagation","target","Table"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["../../../../../admin/src/components/Table.tsx"],"sourcesContent":["/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n IconButton,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n [key: string]: any;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\nconst [TableProvider, useTable] = createContext<TableContextValue<any, any>>('Table');\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <TableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </TableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{ sort?: `${string}:${'ASC' | 'DESC'}` }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n {\n id: 'components.TableHeader.sort',\n defaultMessage: 'Sort on {label}',\n },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery(\n {\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n },\n 'push',\n true\n );\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClickSort();\n }\n };\n\n return (\n <SortableTh\n onClick={sortable ? handleClickSort : undefined}\n onKeyDown={sortable ? handleKeyDown : undefined}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={isSorted ? (sortOrder === 'ASC' ? 'ascending' : 'descending') : undefined}\n $sortable={!!sortable}\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Flex gap={1}>\n <Typography textColor=\"neutral600\" tag=\"span\" variant=\"sigma\">\n {label}\n </Typography>\n {isSorted && sortable && <SortIcon $isUp={sortOrder === 'ASC'} />}\n </Flex>\n </Tooltip>\n </SortableTh>\n );\n};\n\nconst SortableTh = styled(Th)<{ $sortable: boolean }>`\n cursor: ${({ $sortable }) => ($sortable ? 'pointer' : 'default')};\n`;\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n selectRow(rows.find((row) => row.id === id));\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n"],"names":["TableProvider","useTable","createContext","Root","children","defaultSelectedRows","footer","headers","isLoading","onSelectedRowsChange","rows","selectedRows","selectedRowsProps","setSelectedRows","useControllableState","prop","defaultProp","onChange","hasHeaderCheckbox","setHasHeaderCheckbox","React","useState","rowCount","length","colCount","selectRow","row","Array","isArray","prev","currentRowIndex","findIndex","r","id","toSpliced","_jsx","Content","state","DSTable","Head","Thead","Tr","HeaderCell","name","label","sortable","query","setQuery","useQueryParams","sort","sortBy","sortOrder","split","formatMessage","useIntl","isSorted","sortLabel","defaultMessage","handleClickSort","handleKeyDown","e","key","preventDefault","SortableTh","onClick","undefined","onKeyDown","tabIndex","aria-sort","$sortable","Tooltip","_jsxs","Flex","gap","Typography","textColor","tag","variant","SortIcon","$isUp","styled","Th","CaretDown","ActionBar","number","HeaderCheckboxCell","areAllEntriesSelected","isIndeterminate","useEffect","handleSelectAll","Checkbox","aria-label","disabled","checked","onCheckedChange","Empty","props","Tbody","Td","colSpan","EmptyStateLayout","content","hasRadius","icon","EmptyDocuments","width","Loading","justifyContent","padding","background","Loader","Body","Row","Cell","CheckboxCell","handleSelectRow","find","isChecked","stopPropagation","target","Table"],"mappings":"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"}
@@ -9,7 +9,8 @@ var styled = require('styled-components');
9
9
  var hooks = require('../core/store/hooks.js');
10
10
  var reducer = require('../reducer.js');
11
11
 
12
- function _interopNamespaceDefault(e) {
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
13
14
  var n = Object.create(null);
14
15
  if (e) {
15
16
  Object.keys(e).forEach(function (k) {
@@ -26,7 +27,7 @@ function _interopNamespaceDefault(e) {
26
27
  return Object.freeze(n);
27
28
  }
28
29
 
29
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
31
 
31
32
  const Theme = ({ children, themes })=>{
32
33
  const { currentTheme } = hooks.useTypedSelector((state)=>state.admin_app.theme);
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.js","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { type DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n const isIos =\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\n navigator.platform\n ) ||\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle $shouldOverrideInputFontSize={isIos} />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle<{ $shouldOverrideInputFontSize: boolean }>`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n // Temporary fix override to fix iOS zoom due to the 14px input font size\n ${({ $shouldOverrideInputFontSize }) =>\n $shouldOverrideInputFontSize\n ? `\n input[type=\"color\"],\n input[type=\"date\"],\n input[type=\"datetime\"],\n input[type=\"datetime-local\"],\n input[type=\"email\"],\n input[type=\"month\"],\n input[type=\"number\"],\n input[type=\"password\"],\n input[type=\"search\"],\n input[type=\"tel\"],\n input[type=\"text\"],\n input[type=\"time\"],\n input[type=\"url\"],\n input[type=\"week\"],\n select:focus,\n textarea {\n font-size: 16px !important;\n line-height: 2.4rem !important;\n }\n `\n : undefined}\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","isIos","includes","navigator","platform","userAgent","document","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","$shouldOverrideInputFontSize","createGlobalStyle","colors","neutral100","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,sBAAAA,CAAiB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAMC,KAAAA,GACJ;AAAC,QAAA,gBAAA;AAAkB,QAAA,kBAAA;AAAoB,QAAA,gBAAA;AAAkB,QAAA,MAAA;AAAQ,QAAA,QAAA;AAAU,QAAA;KAAO,CAACC,QAAQ,CACzFC,SAAAA,CAAUC,QAAQ,CAAA,IAEnBD,SAAAA,CAAUE,SAAS,CAACH,QAAQ,CAAC,KAAA,CAAA,IAAU,YAAA,IAAgBI,QAAAA;;AAG1DX,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAAA,CAAOC,UAAU,CAAC,8BAAA,CAAA;QACvChB,cAAAA,CAAec,YAAAA,CAAaG,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBnB,cAAAA,CAAemB,KAAAA,CAAMF,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAC1C,QAAA,CAAA;QACAH,YAAAA,CAAaM,gBAAgB,CAAC,QAAA,EAAUF,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAAA,CAAaO,mBAAmB,CAAC,QAAA,EAAUH,QAAAA,CAAAA;AAC7C,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAELjB,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACdR,QAAAA,CAASiB,0BAAAA,CAAmBC,MAAAA,CAAOC,IAAI,CAAC/B,MAAAA,CAAAA,CAAAA,CAAAA;IAC1C,CAAA,EAAG;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAMgC,iBAAAA,GAAoB/B,YAAAA,KAAiB,QAAA,GAAWK,WAAAA,GAAcL,YAAAA;AAEpE,IAAA,qBACEgC,eAAA,CAACC,iCAAAA,EAAAA;QACCxB,MAAAA,EAAQA,MAAAA;AACR;;;;AAIC,UACDL,KAAAA,EAAOL,MAAAA,GAASgC,iBAAAA,IAAqB,OAAA,CAAQ;;AAE5CjC,YAAAA,QAAAA;0BACDoC,cAAA,CAACC,WAAAA,EAAAA;gBAAYC,4BAAAA,EAA8BvB;;;;AAGjD;AAEA,MAAMsB,WAAAA,GAAcE,wBAA4D;;gBAEhE,EAAE,CAAC,EAAEjC,KAAK,EAAE,GAAKA,KAAAA,CAAMkC,MAAM,CAACC,UAAU,CAAC;;;;AAIvD,EAAA,EAAE,CAAC,EAAEH,4BAA4B,EAAE,GACjCA,+BACI;;;;;;;;;;;;;;;;;;;;AAoBN,EAAA,CAAC,GACKI,SAAAA;AACR,CAAC;;;;"}
1
+ {"version":3,"file":"Theme.js","sources":["../../../../../admin/src/components/Theme.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { type DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n const isIos =\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\n navigator.platform\n ) ||\n (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle $shouldOverrideInputFontSize={isIos} />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle<{ $shouldOverrideInputFontSize: boolean }>`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n // Temporary fix override to fix iOS zoom due to the 14px input font size\n ${({ $shouldOverrideInputFontSize }) =>\n $shouldOverrideInputFontSize\n ? `\n input[type=\"color\"],\n input[type=\"date\"],\n input[type=\"datetime\"],\n input[type=\"datetime-local\"],\n input[type=\"email\"],\n input[type=\"month\"],\n input[type=\"number\"],\n input[type=\"password\"],\n input[type=\"search\"],\n input[type=\"tel\"],\n input[type=\"text\"],\n input[type=\"time\"],\n input[type=\"url\"],\n input[type=\"week\"],\n select:focus,\n textarea {\n font-size: 16px !important;\n line-height: 2.4rem !important;\n }\n `\n : undefined}\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["Theme","children","themes","currentTheme","useTypedSelector","state","admin_app","theme","systemTheme","setSystemTheme","React","useState","locale","useIntl","dispatch","useDispatch","isIos","includes","navigator","platform","userAgent","document","useEffect","themeWatcher","window","matchMedia","matches","listener","event","addEventListener","removeEventListener","setAvailableThemes","Object","keys","computedThemeName","_jsxs","DesignSystemProvider","_jsx","GlobalStyle","$shouldOverrideInputFontSize","createGlobalStyle","colors","neutral100","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAQ,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAc,GAAA;IAC7C,MAAM,EAAEC,YAAY,EAAE,GAAGC,sBAAAA,CAAiB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACC,KAAK,CAAA;AAC1E,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AACnB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAMC,KAAAA,GACJ;AAAC,QAAA,gBAAA;AAAkB,QAAA,kBAAA;AAAoB,QAAA,gBAAA;AAAkB,QAAA,MAAA;AAAQ,QAAA,QAAA;AAAU,QAAA;KAAO,CAACC,QAAQ,CACzFC,SAAAA,CAAUC,QAAQ,CAAA,IAEnBD,SAAAA,CAAUE,SAAS,CAACH,QAAQ,CAAC,KAAA,CAAA,IAAU,YAAA,IAAgBI,QAAAA;;AAG1DX,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACd,MAAMC,YAAAA,GAAeC,MAAAA,CAAOC,UAAU,CAAC,8BAAA,CAAA;QACvChB,cAAAA,CAAec,YAAAA,CAAaG,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAE/C,QAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;YAChBnB,cAAAA,CAAemB,KAAAA,CAAMF,OAAO,GAAG,MAAA,GAAS,OAAA,CAAA;AAC1C,QAAA,CAAA;QACAH,YAAAA,CAAaM,gBAAgB,CAAC,QAAA,EAAUF,QAAAA,CAAAA;;QAGxC,OAAO,IAAA;YACLJ,YAAAA,CAAaO,mBAAmB,CAAC,QAAA,EAAUH,QAAAA,CAAAA;AAC7C,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAELjB,IAAAA,gBAAAA,CAAMY,SAAS,CAAC,IAAA;QACdR,QAAAA,CAASiB,0BAAAA,CAAmBC,MAAAA,CAAOC,IAAI,CAAC/B,MAAAA,CAAAA,CAAAA,CAAAA;IAC1C,CAAA,EAAG;AAACY,QAAAA,QAAAA;AAAUZ,QAAAA;AAAO,KAAA,CAAA;IAErB,MAAMgC,iBAAAA,GAAoB/B,YAAAA,KAAiB,QAAA,GAAWK,WAAAA,GAAcL,YAAAA;AAEpE,IAAA,qBACEgC,eAAA,CAACC,iCAAAA,EAAAA;QACCxB,MAAAA,EAAQA,MAAAA;AACR;;;;AAIC,UACDL,KAAAA,EAAOL,MAAAA,GAASgC,iBAAAA,IAAqB,OAAA,CAAQ;;AAE5CjC,YAAAA,QAAAA;0BACDoC,cAAA,CAACC,WAAAA,EAAAA;gBAAYC,4BAAAA,EAA8BvB;;;;AAGjD;AAEA,MAAMsB,WAAAA,GAAcE,wBAA4D;;gBAEhE,EAAE,CAAC,EAAEjC,KAAK,EAAE,GAAKA,KAAAA,CAAMkC,MAAM,CAACC,UAAU,CAAC;;;;AAIvD,EAAA,EAAE,CAAC,EAAEH,4BAA4B,EAAE,GACjCA,+BACI;;;;;;;;;;;;;;;;;;;;AAoBN,EAAA,CAAC,GACKI,SAAAA;AACR,CAAC;;;;"}
@@ -12,7 +12,10 @@ var styled = require('styled-components');
12
12
  var Tracking = require('../features/Tracking.js');
13
13
  var widgetLayout = require('../utils/widgetLayout.js');
14
14
 
15
- function _interopNamespaceDefault(e) {
15
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
+
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule) return e;
16
19
  var n = Object.create(null);
17
20
  if (e) {
18
21
  Object.keys(e).forEach(function (k) {
@@ -29,23 +32,24 @@ function _interopNamespaceDefault(e) {
29
32
  return Object.freeze(n);
30
33
  }
31
34
 
32
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
+ var styled__default = /*#__PURE__*/_interopDefault(styled);
33
37
 
34
- const WidgetActions = styled(designSystem.Flex)`
38
+ const WidgetActions = styled__default.default(designSystem.Flex)`
35
39
  display: flex;
36
40
 
37
41
  @media (hover: hover) and (pointer: fine) {
38
42
  display: none;
39
43
  }
40
44
  `;
41
- const DragIconButton = styled(designSystem.IconButton)`
45
+ const DragIconButton = styled__default.default(designSystem.IconButton)`
42
46
  display: none;
43
47
 
44
48
  @media (hover: hover) and (pointer: fine) {
45
49
  display: flex;
46
50
  }
47
51
  `;
48
- const WidgetContainer = styled(designSystem.Flex)`
52
+ const WidgetContainer = styled__default.default(designSystem.Flex)`
49
53
  @media (hover: hover) and (pointer: fine) {
50
54
  &:hover ${WidgetActions} {
51
55
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetRoot.js","sources":["../../../../../admin/src/components/WidgetRoot.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography, ScrollArea, IconButton } from '@strapi/design-system';\nimport { PuzzlePiece, Trash, Drag } from '@strapi/icons';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { WIDGET_DATA_ATTRIBUTES } from '../utils/widgetLayout';\n\nimport type { FindWidgetFunction, WidgetIdFunction, DragEndFunction } from '../features/Widgets';\nimport type { WidgetType } from '@strapi/admin/strapi-admin';\n\nexport interface BaseWidgetProps\n extends Pick<WidgetType, 'title' | 'icon' | 'permissions' | 'link' | 'uid'> {\n findWidget?: FindWidgetFunction;\n deleteWidget?: WidgetIdFunction;\n onDragStart?: WidgetIdFunction;\n onDragEnd?: DragEndFunction;\n}\n\nexport interface WidgetRootProps extends BaseWidgetProps {\n children: React.ReactNode;\n component?: () => Promise<React.ComponentType>;\n}\n\nconst WidgetActions = styled(Flex)`\n display: flex;\n\n @media (hover: hover) and (pointer: fine) {\n display: none;\n }\n`;\n\nconst DragIconButton = styled(IconButton)`\n display: none;\n\n @media (hover: hover) and (pointer: fine) {\n display: flex;\n }\n`;\n\nconst WidgetContainer = styled(Flex)`\n @media (hover: hover) and (pointer: fine) {\n &:hover ${WidgetActions} {\n display: flex;\n }\n }\n\n &:focus-within ${WidgetActions} {\n display: flex;\n }\n\n &:focus-within ${DragIconButton} {\n pointer-events: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n pointer-events: auto;\n }\n }\n`;\n\nexport const WidgetRoot = ({\n title,\n icon = PuzzlePiece,\n children,\n link,\n uid,\n findWidget,\n deleteWidget,\n onDragStart,\n onDragEnd,\n component,\n}: WidgetRootProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const Icon = icon;\n\n const handleClickOnLink = () => {\n trackUsage('didOpenHomeWidgetLink', { widgetUID: uid });\n };\n\n const handleDeleteWidget = () => {\n deleteWidget?.(uid);\n };\n\n const [, drag, preview] = useDrag(\n () => ({\n type: 'widget',\n item: () => {\n onDragStart?.(uid);\n return {\n id: uid,\n originalIndex: findWidget?.(uid)?.index ?? 0,\n title,\n icon,\n link,\n component,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n end: () => {\n onDragEnd?.();\n },\n }),\n [uid, findWidget, onDragStart, onDragEnd, title, icon, link, component]\n );\n\n // Suppress default drag preview\n React.useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, [preview]);\n\n return (\n <WidgetContainer\n width=\"100%\"\n hasRadius\n direction=\"column\"\n alignItems=\"flex-start\"\n background={'neutral0'}\n borderColor={'neutral150'}\n shadow=\"tableShadow\"\n tag=\"section\"\n gap={4}\n padding={6}\n position=\"relative\"\n aria-labelledby={uid}\n tabIndex={0}\n {...{ [WIDGET_DATA_ATTRIBUTES.WIDGET_ID]: uid }}\n style={{\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n >\n <Flex\n direction=\"row\"\n gap={2}\n width=\"100%\"\n tag=\"header\"\n alignItems=\"center\"\n minHeight=\"2.25rem\"\n >\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\" id={uid}>\n {formatMessage(title)}\n </Typography>\n </Flex>\n {link && (\n <Typography\n tag={ReactRouterLink}\n variant=\"omega\"\n textColor=\"primary600\"\n style={{ textDecoration: 'none' }}\n textAlign=\"right\"\n to={link.href}\n onClick={handleClickOnLink}\n >\n {formatMessage(link.label)}\n </Typography>\n )}\n <WidgetActions gap={2}>\n <IconButton\n variant=\"danger-light\"\n size=\"XS\"\n onClick={handleDeleteWidget}\n label={formatMessage({\n id: 'HomePage.widget.delete',\n defaultMessage: 'Delete',\n })}\n cursor=\"pointer\"\n >\n <Trash />\n </IconButton>\n <DragIconButton\n variant=\"tertiary\"\n size=\"XS\"\n ref={drag}\n tabIndex={-1}\n label={formatMessage({\n id: 'HomePage.widget.drag',\n defaultMessage: 'Drag to move',\n })}\n cursor=\"grab\"\n >\n <Drag />\n </DragIconButton>\n </WidgetActions>\n </Flex>\n <ScrollArea>\n <Box width=\"100%\" height=\"261px\" overflow=\"auto\" tag=\"main\">\n {children}\n </Box>\n </ScrollArea>\n </WidgetContainer>\n );\n};\n"],"names":["WidgetActions","styled","Flex","DragIconButton","IconButton","WidgetContainer","theme","breakpoints","medium","WidgetRoot","title","icon","PuzzlePiece","children","link","uid","findWidget","deleteWidget","onDragStart","onDragEnd","component","trackUsage","useTracking","formatMessage","useIntl","Icon","handleClickOnLink","widgetUID","handleDeleteWidget","drag","preview","useDrag","type","item","id","originalIndex","index","collect","monitor","isDragging","end","React","useEffect","getEmptyImage","captureDraggingState","_jsxs","width","hasRadius","direction","alignItems","background","borderColor","shadow","tag","gap","padding","position","aria-labelledby","tabIndex","WIDGET_DATA_ATTRIBUTES","WIDGET_ID","style","transition","minHeight","marginRight","_jsx","fill","aria-hidden","Typography","textColor","variant","ReactRouterLink","textDecoration","textAlign","to","href","onClick","label","size","defaultMessage","cursor","Trash","ref","Drag","ScrollArea","Box","height","overflow"],"mappings":"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"}
@@ -2,6 +2,10 @@
2
2
 
3
3
  var invariant = require('invariant');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var invariant__default = /*#__PURE__*/_interopDefault(invariant);
8
+
5
9
  const ALLOWED_TYPES = [
6
10
  'biginteger',
7
11
  'boolean',
@@ -44,17 +48,17 @@ class CustomFields {
44
48
  // Handle individual custom field
45
49
  const { name, pluginId, type, intlLabel, intlDescription, components, options } = customFields;
46
50
  // Ensure required attributes are provided
47
- invariant(name, 'A name must be provided');
48
- invariant(type, 'A type must be provided');
49
- invariant(intlLabel, 'An intlLabel must be provided');
50
- invariant(intlDescription, 'An intlDescription must be provided');
51
- invariant(components, 'A components object must be provided');
52
- invariant(components.Input, 'An Input component must be provided');
51
+ invariant__default.default(name, 'A name must be provided');
52
+ invariant__default.default(type, 'A type must be provided');
53
+ invariant__default.default(intlLabel, 'An intlLabel must be provided');
54
+ invariant__default.default(intlDescription, 'An intlDescription must be provided');
55
+ invariant__default.default(components, 'A components object must be provided');
56
+ invariant__default.default(components.Input, 'An Input component must be provided');
53
57
  // Ensure the type is valid
54
- invariant(ALLOWED_TYPES.includes(type), `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`);
58
+ invariant__default.default(ALLOWED_TYPES.includes(type), `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`);
55
59
  // Ensure name has no special characters
56
60
  const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;
57
- invariant(isValidObjectKey.test(name), `Custom field name: '${name}' is not a valid object key`);
61
+ invariant__default.default(isValidObjectKey.test(name), `Custom field name: '${name}' is not a valid object key`);
58
62
  // Ensure options have valid name paths
59
63
  const allFormOptions = [
60
64
  ...options?.base || [],
@@ -63,14 +67,14 @@ class CustomFields {
63
67
  if (allFormOptions.length) {
64
68
  const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);
65
69
  optionPathValidations.forEach(({ isValidOptionPath, errorMessage })=>{
66
- invariant(isValidOptionPath, errorMessage);
70
+ invariant__default.default(isValidOptionPath, errorMessage);
67
71
  });
68
72
  }
69
73
  // When no plugin is specified, default to the global namespace
70
74
  const uid = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;
71
75
  // Ensure the uid is unique
72
76
  const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);
73
- invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);
77
+ invariant__default.default(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);
74
78
  this.customFields[uid] = customFields;
75
79
  }
76
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFields.js","sources":["../../../../../../admin/src/core/apis/CustomFields.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport { ComponentType } from 'react';\n\nimport { Internal, Utils } from '@strapi/types';\nimport invariant from 'invariant';\n\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { AnySchema } from 'yup';\n\ntype CustomFieldUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype CustomFieldOptionInput =\n | 'text'\n | 'checkbox'\n | 'checkbox-with-number-field'\n | 'select-default-boolean'\n | 'date'\n | 'select'\n | 'number'\n | 'boolean-radio-group'\n | 'select-date'\n | 'text-area-enum'\n | 'select-number'\n | 'radio-group';\n\ntype CustomFieldOptionName =\n | 'min'\n | 'minLength'\n | 'max'\n | 'maxLength'\n | 'required'\n | 'regex'\n | 'enum'\n | 'unique'\n | 'private'\n | 'default';\n\ninterface CustomFieldOption {\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n description: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n name: CustomFieldOptionName;\n type: CustomFieldOptionInput;\n defaultValue?: string | number | boolean | Date;\n}\n\ninterface CustomFieldOptionSection {\n sectionTitle:\n | (MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n })\n | null;\n items: CustomFieldOption[];\n}\n\ninterface CustomFieldOptions {\n base?: (CustomFieldOptionSection | CustomFieldOption)[];\n advanced?: (CustomFieldOptionSection | CustomFieldOption)[];\n validator?: () => Record<string, AnySchema>;\n}\n\ninterface CustomField {\n name: string;\n pluginId?: string;\n type: (typeof ALLOWED_TYPES)[number];\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n intlDescription: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n icon?: ComponentType;\n components: {\n Input: () => Promise<{ default?: ComponentType }>;\n };\n options?: CustomFieldOptions;\n}\n\nconst ALLOWED_TYPES = [\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'decimal',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'password',\n 'richtext',\n 'string',\n 'text',\n 'time',\n 'uid',\n] as const;\n\nconst ALLOWED_ROOT_LEVEL_OPTIONS = [\n 'min',\n 'minLength',\n 'max',\n 'maxLength',\n 'required',\n 'regex',\n 'enum',\n 'unique',\n 'private',\n 'default',\n] as const;\n\nclass CustomFields {\n customFields: Record<string, CustomField>;\n\n constructor() {\n this.customFields = {};\n }\n\n register = (customFields: CustomField | CustomField[]) => {\n if (Array.isArray(customFields)) {\n // If several custom fields are passed, register them one by one\n customFields.forEach((customField) => {\n this.register(customField);\n });\n } else {\n // Handle individual custom field\n const { name, pluginId, type, intlLabel, intlDescription, components, options } =\n customFields;\n\n // Ensure required attributes are provided\n invariant(name, 'A name must be provided');\n invariant(type, 'A type must be provided');\n invariant(intlLabel, 'An intlLabel must be provided');\n invariant(intlDescription, 'An intlDescription must be provided');\n invariant(components, 'A components object must be provided');\n invariant(components.Input, 'An Input component must be provided');\n\n // Ensure the type is valid\n invariant(\n ALLOWED_TYPES.includes(type),\n `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`\n );\n\n // Ensure name has no special characters\n const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;\n invariant(\n isValidObjectKey.test(name),\n `Custom field name: '${name}' is not a valid object key`\n );\n\n // Ensure options have valid name paths\n const allFormOptions = [...(options?.base || []), ...(options?.advanced || [])];\n\n if (allFormOptions.length) {\n const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);\n\n optionPathValidations.forEach(({ isValidOptionPath, errorMessage }) => {\n invariant(isValidOptionPath, errorMessage);\n });\n }\n\n // When no plugin is specified, default to the global namespace\n const uid: CustomFieldUID = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;\n\n // Ensure the uid is unique\n const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);\n invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);\n\n this.customFields[uid] = customFields;\n }\n };\n\n getAll = () => {\n return this.customFields;\n };\n\n get = (uid: string): CustomField | undefined => {\n return this.customFields[uid];\n };\n}\n\ninterface OptionValidation {\n isValidOptionPath: boolean;\n errorMessage: string;\n}\n\nconst optionsValidationReducer = (\n acc: OptionValidation[],\n option: CustomFieldOptionSection | CustomFieldOption\n): OptionValidation[] => {\n if ('items' in option) {\n return option.items.reduce(optionsValidationReducer, acc);\n }\n\n if (!option.name) {\n acc.push({\n isValidOptionPath: false,\n errorMessage: \"The 'name' property is required on an options object\",\n });\n } else {\n acc.push({\n isValidOptionPath:\n option.name.startsWith('options') || ALLOWED_ROOT_LEVEL_OPTIONS.includes(option.name),\n errorMessage: `'${option.name}' must be prefixed with 'options.'`,\n });\n }\n\n return acc;\n};\n\nexport { type CustomField, CustomFields };\n"],"names":["ALLOWED_TYPES","ALLOWED_ROOT_LEVEL_OPTIONS","CustomFields","register","customFields","Array","isArray","forEach","customField","name","pluginId","type","intlLabel","intlDescription","components","options","invariant","Input","includes","isValidObjectKey","test","allFormOptions","base","advanced","length","optionPathValidations","reduce","optionsValidationReducer","isValidOptionPath","errorMessage","uid","uidAlreadyUsed","Object","prototype","hasOwnProperty","call","getAll","get","acc","option","items","push","startsWith"],"mappings":"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"}
1
+ {"version":3,"file":"CustomFields.js","sources":["../../../../../../admin/src/core/apis/CustomFields.ts"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport { ComponentType } from 'react';\n\nimport { Internal, Utils } from '@strapi/types';\nimport invariant from 'invariant';\n\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { AnySchema } from 'yup';\n\ntype CustomFieldUID = Utils.String.Suffix<\n | Internal.Namespace.WithSeparator<Internal.Namespace.Plugin>\n | Internal.Namespace.WithSeparator<Internal.Namespace.Global>,\n string\n>;\n\ntype CustomFieldOptionInput =\n | 'text'\n | 'checkbox'\n | 'checkbox-with-number-field'\n | 'select-default-boolean'\n | 'date'\n | 'select'\n | 'number'\n | 'boolean-radio-group'\n | 'select-date'\n | 'text-area-enum'\n | 'select-number'\n | 'radio-group';\n\ntype CustomFieldOptionName =\n | 'min'\n | 'minLength'\n | 'max'\n | 'maxLength'\n | 'required'\n | 'regex'\n | 'enum'\n | 'unique'\n | 'private'\n | 'default';\n\ninterface CustomFieldOption {\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n description: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n name: CustomFieldOptionName;\n type: CustomFieldOptionInput;\n defaultValue?: string | number | boolean | Date;\n}\n\ninterface CustomFieldOptionSection {\n sectionTitle:\n | (MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n })\n | null;\n items: CustomFieldOption[];\n}\n\ninterface CustomFieldOptions {\n base?: (CustomFieldOptionSection | CustomFieldOption)[];\n advanced?: (CustomFieldOptionSection | CustomFieldOption)[];\n validator?: () => Record<string, AnySchema>;\n}\n\ninterface CustomField {\n name: string;\n pluginId?: string;\n type: (typeof ALLOWED_TYPES)[number];\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n intlDescription: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n icon?: ComponentType;\n components: {\n Input: () => Promise<{ default?: ComponentType }>;\n };\n options?: CustomFieldOptions;\n}\n\nconst ALLOWED_TYPES = [\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'decimal',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'password',\n 'richtext',\n 'string',\n 'text',\n 'time',\n 'uid',\n] as const;\n\nconst ALLOWED_ROOT_LEVEL_OPTIONS = [\n 'min',\n 'minLength',\n 'max',\n 'maxLength',\n 'required',\n 'regex',\n 'enum',\n 'unique',\n 'private',\n 'default',\n] as const;\n\nclass CustomFields {\n customFields: Record<string, CustomField>;\n\n constructor() {\n this.customFields = {};\n }\n\n register = (customFields: CustomField | CustomField[]) => {\n if (Array.isArray(customFields)) {\n // If several custom fields are passed, register them one by one\n customFields.forEach((customField) => {\n this.register(customField);\n });\n } else {\n // Handle individual custom field\n const { name, pluginId, type, intlLabel, intlDescription, components, options } =\n customFields;\n\n // Ensure required attributes are provided\n invariant(name, 'A name must be provided');\n invariant(type, 'A type must be provided');\n invariant(intlLabel, 'An intlLabel must be provided');\n invariant(intlDescription, 'An intlDescription must be provided');\n invariant(components, 'A components object must be provided');\n invariant(components.Input, 'An Input component must be provided');\n\n // Ensure the type is valid\n invariant(\n ALLOWED_TYPES.includes(type),\n `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`\n );\n\n // Ensure name has no special characters\n const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;\n invariant(\n isValidObjectKey.test(name),\n `Custom field name: '${name}' is not a valid object key`\n );\n\n // Ensure options have valid name paths\n const allFormOptions = [...(options?.base || []), ...(options?.advanced || [])];\n\n if (allFormOptions.length) {\n const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);\n\n optionPathValidations.forEach(({ isValidOptionPath, errorMessage }) => {\n invariant(isValidOptionPath, errorMessage);\n });\n }\n\n // When no plugin is specified, default to the global namespace\n const uid: CustomFieldUID = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;\n\n // Ensure the uid is unique\n const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);\n invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);\n\n this.customFields[uid] = customFields;\n }\n };\n\n getAll = () => {\n return this.customFields;\n };\n\n get = (uid: string): CustomField | undefined => {\n return this.customFields[uid];\n };\n}\n\ninterface OptionValidation {\n isValidOptionPath: boolean;\n errorMessage: string;\n}\n\nconst optionsValidationReducer = (\n acc: OptionValidation[],\n option: CustomFieldOptionSection | CustomFieldOption\n): OptionValidation[] => {\n if ('items' in option) {\n return option.items.reduce(optionsValidationReducer, acc);\n }\n\n if (!option.name) {\n acc.push({\n isValidOptionPath: false,\n errorMessage: \"The 'name' property is required on an options object\",\n });\n } else {\n acc.push({\n isValidOptionPath:\n option.name.startsWith('options') || ALLOWED_ROOT_LEVEL_OPTIONS.includes(option.name),\n errorMessage: `'${option.name}' must be prefixed with 'options.'`,\n });\n }\n\n return acc;\n};\n\nexport { type CustomField, CustomFields };\n"],"names":["ALLOWED_TYPES","ALLOWED_ROOT_LEVEL_OPTIONS","CustomFields","register","customFields","Array","isArray","forEach","customField","name","pluginId","type","intlLabel","intlDescription","components","options","invariant","Input","includes","isValidObjectKey","test","allFormOptions","base","advanced","length","optionPathValidations","reduce","optionsValidationReducer","isValidOptionPath","errorMessage","uid","uidAlreadyUsed","Object","prototype","hasOwnProperty","call","getAll","get","acc","option","items","push","startsWith"],"mappings":"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"}