@strapi/admin 5.29.0 → 5.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  2. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  3. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  4. package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  6. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.js +1 -1
  8. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  9. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  10. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +8 -3
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +8 -3
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +1 -1
  16. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +1 -1
  18. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Number.js +1 -1
  20. package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Number.mjs +1 -1
  22. package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  24. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/String.js +2 -1
  26. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  27. package/dist/admin/admin/src/components/FormInputs/String.mjs +2 -1
  28. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
  30. package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  32. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  34. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  36. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  38. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  40. package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +8 -4
  42. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  43. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +8 -4
  44. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/NpsSurvey.js +5 -3
  46. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  47. package/dist/admin/admin/src/components/NpsSurvey.mjs +5 -3
  48. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  50. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  51. package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
  52. package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  54. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  55. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  56. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/Table.js +1 -1
  58. package/dist/admin/admin/src/components/Table.js.map +1 -1
  59. package/dist/admin/admin/src/components/Table.mjs +1 -1
  60. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  61. package/dist/admin/admin/src/components/Theme.js +34 -1
  62. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  63. package/dist/admin/admin/src/components/Theme.mjs +34 -1
  64. package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
  65. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  66. package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
  67. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  68. package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
  69. package/dist/admin/admin/src/core/apis/Plugin.js +0 -1
  70. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  71. package/dist/admin/admin/src/core/apis/Plugin.mjs +0 -1
  72. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  73. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  74. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  75. package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
  76. package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
  77. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  78. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  79. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  80. package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
  81. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  82. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  83. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  84. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  85. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  87. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Auth/components/Login.js +1 -1
  90. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Auth/components/Login.mjs +1 -1
  92. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  94. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  96. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +2 -2
  98. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +1 -1
  99. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +2 -2
  100. package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +1 -1
  101. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
  102. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +1 -1
  104. package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +1 -1
  105. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +1 -1
  106. package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +1 -1
  108. package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +1 -1
  109. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  110. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  111. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +8 -1
  112. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +9 -2
  114. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  115. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  116. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  117. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  118. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  119. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js +1 -0
  120. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
  121. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs +1 -0
  122. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +2 -0
  130. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +2 -0
  132. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +1 -0
  136. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +1 -0
  138. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +10 -2
  144. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +10 -2
  146. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -2
  148. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +9 -2
  150. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js +2 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs +2 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +2 -0
  176. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +2 -0
  178. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -2
  180. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +9 -2
  182. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +9 -2
  200. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +9 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  203. package/dist/admin/admin/src/pages/UseCasePage.js +1 -0
  204. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  205. package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -0
  206. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  207. package/dist/admin/admin/src/services/api.js +2 -1
  208. package/dist/admin/admin/src/services/api.js.map +1 -1
  209. package/dist/admin/admin/src/services/api.mjs +2 -1
  210. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  211. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  212. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  213. package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
  214. package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
  215. package/dist/admin/admin/src/services/users.js.map +1 -1
  216. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  217. package/dist/admin/admin/src/services/webhooks.js.map +1 -1
  218. package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
  219. package/dist/admin/admin/src/translations/en.json.js +4 -0
  220. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  221. package/dist/admin/admin/src/translations/en.json.mjs +4 -0
  222. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  223. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  224. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  225. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  226. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  227. package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
  228. package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
  229. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  230. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  231. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  232. package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
  233. package/dist/admin/admin/src/utils/users.js.map +1 -1
  234. package/dist/admin/admin/src/utils/users.mjs.map +1 -1
  235. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  236. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
  237. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  238. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  239. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  240. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
  241. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  242. package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
  243. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  244. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  245. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -3
  246. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  247. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -3
  248. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  249. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  250. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
  251. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  252. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
  253. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  254. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  255. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
  256. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
  257. package/dist/admin/ee/admin/src/services/ai.js +14 -1
  258. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  259. package/dist/admin/ee/admin/src/services/ai.mjs +14 -2
  260. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  261. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  262. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  263. package/dist/admin/ee.js +1 -0
  264. package/dist/admin/ee.js.map +1 -1
  265. package/dist/admin/ee.mjs +1 -1
  266. package/dist/admin/src/components/Form.d.ts +1 -1
  267. package/dist/admin/src/core/store/configure.d.ts +2 -2
  268. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  269. package/dist/admin/src/ee.d.ts +1 -1
  270. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  271. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  272. package/dist/admin/src/selectors.d.ts +2 -2
  273. package/dist/admin/src/services/admin.d.ts +6 -6
  274. package/dist/admin/src/services/api.d.ts +1 -1
  275. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  276. package/dist/admin/src/services/auth.d.ts +13 -13
  277. package/dist/admin/src/services/contentApi.d.ts +1 -1
  278. package/dist/admin/src/services/contentManager.d.ts +1 -1
  279. package/dist/admin/src/services/homepage.d.ts +3 -3
  280. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  281. package/dist/admin/src/services/users.d.ts +8 -8
  282. package/dist/admin/src/services/webhooks.d.ts +2 -2
  283. package/dist/admin/tests/utils.d.ts +1 -1
  284. package/dist/ee/admin/src/services/ai.d.ts +6 -3
  285. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  286. package/dist/ee/server/src/ai/containers/ai.d.ts +11 -0
  287. package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -0
  288. package/dist/ee/server/src/ai/controllers/ai.d.ts +1 -0
  289. package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
  290. package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
  291. package/dist/ee/server/src/index.d.ts +1 -0
  292. package/dist/ee/server/src/index.d.ts.map +1 -1
  293. package/dist/server/ee/server/src/ai/containers/ai.js +18 -0
  294. package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -0
  295. package/dist/server/ee/server/src/ai/containers/ai.mjs +16 -0
  296. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -0
  297. package/dist/server/ee/server/src/ai/controllers/ai.js +6 -0
  298. package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
  299. package/dist/server/ee/server/src/ai/controllers/ai.mjs +6 -0
  300. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
  301. package/dist/server/ee/server/src/ai/routes/ai.js +11 -0
  302. package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
  303. package/dist/server/ee/server/src/ai/routes/ai.mjs +11 -0
  304. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
  305. package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
  306. package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
  307. package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
  308. package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
  309. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  310. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  311. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  312. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  313. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  314. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  315. package/dist/server/ee/server/src/index.js +7 -0
  316. package/dist/server/ee/server/src/index.js.map +1 -1
  317. package/dist/server/ee/server/src/index.mjs +7 -0
  318. package/dist/server/ee/server/src/index.mjs.map +1 -1
  319. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  320. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  321. package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
  322. package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
  323. package/dist/server/ee/server/src/utils/index.js.map +1 -1
  324. package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
  325. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  326. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  327. package/dist/server/server/src/controllers/user.js +10 -0
  328. package/dist/server/server/src/controllers/user.js.map +1 -1
  329. package/dist/server/server/src/controllers/user.mjs +10 -0
  330. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  331. package/dist/server/server/src/domain/action/index.js.map +1 -1
  332. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  333. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  334. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  335. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  336. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  337. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  338. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  339. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  340. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  341. package/dist/server/server/src/services/api-token.js.map +1 -1
  342. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  343. package/dist/server/server/src/services/auth.js.map +1 -1
  344. package/dist/server/server/src/services/auth.mjs.map +1 -1
  345. package/dist/server/server/src/services/content-type.js.map +1 -1
  346. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  347. package/dist/server/server/src/services/encryption.js.map +1 -1
  348. package/dist/server/server/src/services/encryption.mjs.map +1 -1
  349. package/dist/server/server/src/services/homepage.js.map +1 -1
  350. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  351. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  352. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  353. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  354. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  355. package/dist/server/server/src/services/role.js.map +1 -1
  356. package/dist/server/server/src/services/role.mjs.map +1 -1
  357. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  358. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  359. package/dist/server/server/src/services/user.js +30 -0
  360. package/dist/server/server/src/services/user.js.map +1 -1
  361. package/dist/server/server/src/services/user.mjs +30 -0
  362. package/dist/server/server/src/services/user.mjs.map +1 -1
  363. package/dist/server/server/src/utils/index.js.map +1 -1
  364. package/dist/server/server/src/utils/index.mjs.map +1 -1
  365. package/dist/server/server/src/validation/action-provider.js.map +1 -1
  366. package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
  367. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  368. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
  369. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  370. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  371. package/dist/server/src/controllers/user.d.ts.map +1 -1
  372. package/dist/server/src/services/user.d.ts.map +1 -1
  373. package/dist/shared/contracts/ai.d.ts +16 -0
  374. package/dist/shared/contracts/ai.d.ts.map +1 -1
  375. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTypeCollapses.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, BoxComponent, Flex, FlexComponent, Modal } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nimport { Action, Subject } from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, rowHeight } from '../utils/constants';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ConditionForm } from '../utils/forms';\nimport { getCheckboxState } from '../utils/getCheckboxState';\n\nimport { CollapsePropertyMatrix } from './CollapsePropertyMatrix';\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\nimport { HiddenAction } from './HiddenAction';\nimport { RowLabelWithCheckbox, RowLabelWithCheckboxProps } from './RowLabelWithCheckbox';\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypeCollapses\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentTypeCollapsesProps extends Pick<CollapseProps, 'pathToData'> {\n actions?: Action[];\n isFormDisabled?: boolean;\n subjects?: Subject[];\n}\n\nconst ContentTypeCollapses = ({\n actions = [],\n isFormDisabled,\n pathToData,\n subjects = [],\n}: ContentTypeCollapsesProps) => {\n const [collapseToOpen, setCollapseToOpen] = React.useState<string | null>(null);\n\n const handleClickToggleCollapse = (collapseName: string) => () => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n return (\n <>\n {subjects.map(({ uid, label, properties }, index) => {\n const isActive = collapseToOpen === uid;\n const availableActions = actions.map((action) => ({\n ...action,\n isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1,\n }));\n return (\n <Flex\n key={uid}\n direction=\"column\"\n display=\"inline-flex\"\n alignItems=\"stretch\"\n minWidth=\"100%\"\n borderColor={isActive ? 'primary600' : undefined}\n >\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse(uid)}\n pathToData={[pathToData, uid].join('..')}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={[pathToData, uid].join('..')}\n propertyName={value}\n key={value}\n />\n );\n })}\n </Flex>\n );\n })}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Collapse\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CollapseProps\n extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'isFormDisabled' | 'label'> {\n availableActions?: Array<Action & { isDisplayed: boolean }>;\n isGrey?: boolean;\n onClickToggle: RowLabelWithCheckboxProps['onClick'];\n pathToData: string;\n}\n\nconst Collapse = ({\n availableActions = [],\n isActive = false,\n isGrey = false,\n isFormDisabled = false,\n label,\n onClickToggle,\n pathToData,\n}: CollapseProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<Record<string, ConditionForm>>((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = React.useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n // @ts-expect-error – hasConditions does not exist on all versions of checkboxesActions.\n const doesConditionButtonHasConditions = checkboxesActions.some((action) => action.hasConditions);\n\n return (\n <BoxWrapper $isActive={isActive}>\n <Wrapper\n height={rowHeight}\n flex={1}\n alignItems=\"center\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n >\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={capitalise(label)}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({ actionId, hasSomeActionsSelected, isDisplayed, ...restAction }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n const {\n hasConditions,\n hasAllActionsSelected,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n } = restAction as VisibleCheckboxAction;\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <Box position=\"relative\" zIndex={1}>\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n />\n </Box>\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasConditions ? 'indeterminate' : hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Wrapper>\n <Box bottom=\"10px\" right=\"9px\" position=\"absolute\">\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesConditionButtonHasConditions} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Box>\n </BoxWrapper>\n );\n};\n\ninterface VisibleCheckboxAction {\n actionId: string;\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n isDisplayed: true;\n isParentCheckbox: boolean;\n checkboxName: string;\n label: string;\n hasConditions: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface HiddenCheckboxAction {\n actionId: string;\n isDisplayed: false;\n hasAllActionsSelected?: never;\n hasSomeActionsSelected: boolean;\n}\n\nconst generateCheckboxesActions = (\n availableActions: Array<Action & { isDisplayed: boolean }>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n pathToData: string\n): Array<VisibleCheckboxAction | HiddenCheckboxAction> => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const baseCheckboxAction = {\n actionId,\n checkboxName: checkboxNameArray.join('..'),\n hasConditions: createArrayOfValues(conditionsValue).some((val) => val),\n isDisplayed,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected: value,\n hasSomeActionsSelected: value,\n isParentCheckbox: false,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isParentCheckbox: true,\n };\n });\n};\n\nconst activeRowStyle = (theme: DefaultTheme, isActive?: boolean): string => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n font-weight: ${theme.fontWeights.bold};\n }\n\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n\n &:focus-within {\n ${() => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Wrapper = styled<FlexComponent>(Flex)`\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div<{ $isActive: boolean }>`\n display: inline-flex;\n min-width: 100%;\n position: relative;\n\n ${ConditionsButton} {\n display: none;\n }\n\n ${({ $isActive, theme }) => $isActive && activeRowStyle(theme, $isActive)}\n\n &:hover {\n ${({ theme, $isActive }) => activeRowStyle(theme, $isActive)}\n }\n`;\n\nconst Cell = styled<FlexComponent>(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled<BoxComponent>(Box)`\n display: none;\n\n svg {\n width: 1.4rem;\n }\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ContentTypeCollapses };\nexport type { ContentTypeCollapsesProps, HiddenCheckboxAction, VisibleCheckboxAction };\n"],"names":["ContentTypeCollapses","actions","isFormDisabled","pathToData","subjects","collapseToOpen","setCollapseToOpen","React","useState","handleClickToggleCollapse","collapseName","nextCollapseToOpen","_jsx","_Fragment","map","uid","label","properties","index","isActive","availableActions","action","isDisplayed","Array","isArray","indexOf","_jsxs","Flex","direction","display","alignItems","minWidth","borderColor","undefined","Collapse","isGrey","onClickToggle","join","propertyLabel","value","children","childrenForm","CollapsePropertyMatrix","propertyName","formatMessage","useIntl","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","mainData","get","split","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","omit","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","checkboxesActions","generateCheckboxesActions","doesConditionButtonHasConditions","some","hasConditions","BoxWrapper","$isActive","Wrapper","height","rowHeight","flex","background","RowLabelWithCheckbox","isCollapsable","capitalise","checkboxName","onChange","onClick","someChecked","Chevron","paddingLeft","ChevronUp","ChevronDown","style","actionId","restAction","HiddenAction","isParentCheckbox","permissionLabel","Cell","justifyContent","Box","position","zIndex","tag","top","left","width","borderRadius","Checkbox","disabled","name","aria-label","id","defaultMessage","onCheckedChange","target","checked","bottom","right","Modal","Root","open","onOpenChange","prev","Trigger","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","applyToProperties","baseCheckboxNameArray","checkboxNameArray","isEmpty","conditionsValue","baseCheckboxAction","createArrayOfValues","val","pathToConditionsObject","activeRowStyle","theme","colors","primary100","primary600","fontWeights","bold","styled","div","cellWidth"],"mappings":"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"}
1
+ {"version":3,"file":"ContentTypeCollapses.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, BoxComponent, Flex, FlexComponent, Modal } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nimport { Action, Subject } from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, rowHeight } from '../utils/constants';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ConditionForm } from '../utils/forms';\nimport { getCheckboxState } from '../utils/getCheckboxState';\n\nimport { CollapsePropertyMatrix } from './CollapsePropertyMatrix';\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\nimport { HiddenAction } from './HiddenAction';\nimport { RowLabelWithCheckbox, RowLabelWithCheckboxProps } from './RowLabelWithCheckbox';\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypeCollapses\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentTypeCollapsesProps extends Pick<CollapseProps, 'pathToData'> {\n actions?: Action[];\n isFormDisabled?: boolean;\n subjects?: Subject[];\n}\n\nconst ContentTypeCollapses = ({\n actions = [],\n isFormDisabled,\n pathToData,\n subjects = [],\n}: ContentTypeCollapsesProps) => {\n const [collapseToOpen, setCollapseToOpen] = React.useState<string | null>(null);\n\n const handleClickToggleCollapse = (collapseName: string) => () => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n return (\n <>\n {subjects.map(({ uid, label, properties }, index) => {\n const isActive = collapseToOpen === uid;\n const availableActions = actions.map((action) => ({\n ...action,\n isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1,\n }));\n return (\n <Flex\n key={uid}\n direction=\"column\"\n display=\"inline-flex\"\n alignItems=\"stretch\"\n minWidth=\"100%\"\n borderColor={isActive ? 'primary600' : undefined}\n >\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse(uid)}\n pathToData={[pathToData, uid].join('..')}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={[pathToData, uid].join('..')}\n propertyName={value}\n key={value}\n />\n );\n })}\n </Flex>\n );\n })}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Collapse\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CollapseProps\n extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'isFormDisabled' | 'label'> {\n availableActions?: Array<Action & { isDisplayed: boolean }>;\n isGrey?: boolean;\n onClickToggle: RowLabelWithCheckboxProps['onClick'];\n pathToData: string;\n}\n\nconst Collapse = ({\n availableActions = [],\n isActive = false,\n isGrey = false,\n isFormDisabled = false,\n label,\n onClickToggle,\n pathToData,\n}: CollapseProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<Record<string, ConditionForm>>((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = React.useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n // @ts-expect-error – hasConditions does not exist on all versions of checkboxesActions.\n const doesConditionButtonHasConditions = checkboxesActions.some((action) => action.hasConditions);\n\n return (\n <BoxWrapper $isActive={isActive}>\n <Wrapper\n height={rowHeight}\n flex={1}\n alignItems=\"center\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n >\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={capitalise(label)}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({ actionId, hasSomeActionsSelected, isDisplayed, ...restAction }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n const {\n hasConditions,\n hasAllActionsSelected,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n } = restAction as VisibleCheckboxAction;\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <Box position=\"relative\" zIndex={1}>\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n />\n </Box>\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasConditions ? 'indeterminate' : hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Wrapper>\n <Box bottom=\"10px\" right=\"9px\" position=\"absolute\">\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesConditionButtonHasConditions} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Box>\n </BoxWrapper>\n );\n};\n\ninterface VisibleCheckboxAction {\n actionId: string;\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n isDisplayed: true;\n isParentCheckbox: boolean;\n checkboxName: string;\n label: string;\n hasConditions: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface HiddenCheckboxAction {\n actionId: string;\n isDisplayed: false;\n hasAllActionsSelected?: never;\n hasSomeActionsSelected: boolean;\n}\n\nconst generateCheckboxesActions = (\n availableActions: Array<Action & { isDisplayed: boolean }>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n pathToData: string\n): Array<VisibleCheckboxAction | HiddenCheckboxAction> => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const baseCheckboxAction = {\n actionId,\n checkboxName: checkboxNameArray.join('..'),\n hasConditions: createArrayOfValues(conditionsValue).some((val) => val),\n isDisplayed,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected: value,\n hasSomeActionsSelected: value,\n isParentCheckbox: false,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isParentCheckbox: true,\n };\n });\n};\n\nconst activeRowStyle = (theme: DefaultTheme, isActive?: boolean): string => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n font-weight: ${theme.fontWeights.bold};\n }\n\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n\n &:focus-within {\n ${() => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Wrapper = styled<FlexComponent>(Flex)`\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div<{ $isActive: boolean }>`\n display: inline-flex;\n min-width: 100%;\n position: relative;\n\n ${ConditionsButton} {\n display: none;\n }\n\n ${({ $isActive, theme }) => $isActive && activeRowStyle(theme, $isActive)}\n\n &:hover {\n ${({ theme, $isActive }) => activeRowStyle(theme, $isActive)}\n }\n`;\n\nconst Cell = styled<FlexComponent>(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled<BoxComponent>(Box)`\n display: none;\n\n svg {\n width: 1.4rem;\n }\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ContentTypeCollapses };\nexport type { ContentTypeCollapsesProps, HiddenCheckboxAction, VisibleCheckboxAction };\n"],"names":["ContentTypeCollapses","actions","isFormDisabled","pathToData","subjects","collapseToOpen","setCollapseToOpen","React","useState","handleClickToggleCollapse","collapseName","nextCollapseToOpen","_jsx","_Fragment","map","uid","label","properties","index","isActive","availableActions","action","isDisplayed","Array","isArray","indexOf","_jsxs","Flex","direction","display","alignItems","minWidth","borderColor","undefined","Collapse","isGrey","onClickToggle","join","propertyLabel","value","children","childrenForm","CollapsePropertyMatrix","propertyName","formatMessage","useIntl","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","mainData","get","split","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","omit","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","checkboxesActions","generateCheckboxesActions","doesConditionButtonHasConditions","some","hasConditions","BoxWrapper","$isActive","Wrapper","height","rowHeight","flex","background","RowLabelWithCheckbox","isCollapsable","capitalise","checkboxName","onChange","onClick","someChecked","Chevron","paddingLeft","ChevronUp","ChevronDown","style","actionId","restAction","HiddenAction","isParentCheckbox","permissionLabel","Cell","justifyContent","Box","position","zIndex","tag","top","left","width","borderRadius","Checkbox","disabled","name","aria-label","id","defaultMessage","onCheckedChange","target","checked","bottom","right","Modal","Root","open","onOpenChange","prev","Trigger","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","applyToProperties","baseCheckboxNameArray","checkboxNameArray","isEmpty","conditionsValue","baseCheckboxAction","createArrayOfValues","val","pathToConditionsObject","activeRowStyle","theme","colors","primary100","primary600","fontWeights","bold","styled","div","cellWidth"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalActions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
1
+ {"version":3,"file":"GlobalActions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalActions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
1
+ {"version":3,"file":"GlobalActions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
1
+ {"version":3,"file":"Permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
1
+ {"version":3,"file":"Permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [] }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n // @ts-expect-error – TODO: type better\n if (!value && updatedValues.conditions) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","useCallback","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","state","action","produce","draftState","pathToData","get","forEach","collectionType","collectionTypeActionData","undefined","updatedValues","updateValues","updatedConditions","set","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","objValue","pathToDataToSet","isObject","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","pathToValue","oldValues","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,UAAa,GAAA;AACjB,IAAA;QACEC,OAAS,EAAA,sDAAA;QACTC,cAAgB,EAAA,kBAAA;QAChBC,EAAI,EAAA;AACN,KAAA;AACA,IAAA;QACEF,OAAS,EAAA,kDAAA;QACTE,EAAI,EAAA,aAAA;QACJD,cAAgB,EAAA;AAClB,KAAA;AACA,IAAA;QACED,OAAS,EAAA,8CAAA;QACTC,cAAgB,EAAA,SAAA;QAChBC,EAAI,EAAA;AACN,KAAA;AACA,IAAA;QACEF,OAAS,EAAA,+CAAA;QACTC,cAAgB,EAAA,UAAA;QAChBC,EAAI,EAAA;AACN;AACD,CAAA;AAqBD,MAAMC,WAAcC,iBAAAA,KAAAA,CAAMC,UAAU,CAClC,CAAC,EAAEC,MAAM,EAAEC,cAAc,EAAEC,WAAc,GAAA,EAAE,EAAE,EAAEC,GAAAA,GAAAA;AAC7C,IAAA,MAAM,CAAC,EAAEC,WAAW,EAAEC,OAAO,EAAEC,YAAY,EAAE,EAAEC,QAAS,CAAA,GAAGT,MAAMU,UAAU,CACzEC,SACAC,YACA,EAAA,IAAMC,KAAKX,MAAQE,EAAAA,WAAAA,CAAAA,CAAAA;IAErB,MAAM,EAAEU,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1Bf,KAAMgB,CAAAA,mBAAmB,CAACX,GAAK,EAAA,IAAA;QAC7B,OAAO;AACLY,YAAAA,cAAAA,CAAAA,GAAAA;AACE,gBAAA,MAAMC,sBAAsBC,UAC1Bb,CAAAA,WAAAA,CAAYc,eAAe,EAC3BZ,aAAaY,eAAe,CAAA;AAE9B,gBAAA,MAAMC,kBAAkBF,UAAWb,CAAAA,WAAAA,CAAYgB,WAAW,EAAEd,aAAac,WAAW,CAAA;AAEpF,gBAAA,MAAMC,gBAAmB,GAAA;AAAE,oBAAA,GAAGL,mBAAmB;AAAE,oBAAA,GAAGG;AAAgB,iBAAA;gBAEtE,IAAIG,mBAAAA;AAEJ,gBAAA,IAAIC,QAAQF,gBAAmB,CAAA,EAAA;oBAC7BC,mBAAsB,GAAA,KAAA;iBACjB,MAAA;oBACLA,mBAAsBE,GAAAA,MAAAA,CAAOC,MAAM,CAACJ,gBAAAA,CAAAA,CAAkBK,IAAI,CAAC,CAACC,UAAa,GAAA,EAAE,GAAA;wBACzE,OAAOH,MAAAA,CAAOC,MAAM,CAACE,UAAAA,CAAAA,CAAYD,IAAI,CAAC,CAACE,eACrCC,GAAAA,GAAAA,CAAID,eAAiB,EAAA,YAAA,CAAA,CAAA;AAEzB,qBAAA,CAAA;AACF;gBAEA,OAAO;AAAEE,oBAAAA,iBAAAA,EAAmBC,uBAAwBzB,CAAAA,YAAAA,CAAAA;AAAegB,oBAAAA;AAAoB,iBAAA;AACzF,aAAA;AACAU,YAAAA,SAAAA,CAAAA,GAAAA;gBACEzB,QAAS,CAAA;oBAAE0B,IAAM,EAAA;AAAa,iBAAA,CAAA;AAChC,aAAA;AACAC,YAAAA,kBAAAA,CAAAA,GAAAA;gBACE3B,QAAS,CAAA;oBAAE0B,IAAM,EAAA;AAAwB,iBAAA,CAAA;AAC3C;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAME,+CAAkD,GAAA,CACtDC,oBACAC,EAAAA,YAAAA,EACAC,OACAC,EAAAA,KAAAA,GAAAA;QAEAhC,QAAS,CAAA;YACP0B,IAAM,EAAA,6CAAA;AACNG,YAAAA,oBAAAA;AACAC,YAAAA,YAAAA;AACAC,YAAAA,OAAAA;AACAC,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;IAEA,MAAMC,8CAAAA,GAAiD,CACrDC,kBAAAA,EACAC,QACAH,EAAAA,KAAAA,GAAAA;QAEAhC,QAAS,CAAA;YACP0B,IAAM,EAAA,kDAAA;AACNQ,YAAAA,kBAAAA;AACAC,YAAAA,QAAAA;AACAH,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMI,yBAAyB,CAACC,UAAAA,GAAAA;QAC9BrC,QAAS,CAAA;YAAE0B,IAAM,EAAA,sBAAA;AAAwBW,YAAAA;AAAW,SAAA,CAAA;AACtD,KAAA;AAEA,IAAA,MAAMC,0BACJ/C,GAAAA,KAAAA,CAAMgD,WAAW,CAAC,CAAC,EAAEC,MAAQ,EAAA,EAAEC,IAAI,EAAET,KAAK,EAAE,EAAE,GAAA;QAC5ChC,QAAS,CAAA;YACP0B,IAAM,EAAA,2BAAA;YACNgB,IAAMD,EAAAA,IAAAA;AACNT,YAAAA;AACF,SAAA,CAAA;AACF,KAAA,EAAG,EAAE,CAAA;AAEP,IAAA,MAAMW,0BACJpD,GAAAA,KAAAA,CAAMgD,WAAW,CAAC,CAAC,EAAEC,MAAQ,EAAA,EAAEC,IAAI,EAAET,KAAK,EAAE,EAAE,GAAA;QAC5ChC,QAAS,CAAA;YACP0B,IAAM,EAAA,kCAAA;YACNgB,IAAMD,EAAAA,IAAAA;AACNT,YAAAA;AACF,SAAA,CAAA;AACF,KAAA,EAAG,EAAE,CAAA;AAEP,IAAA,qBACEY,GAACC,CAAAA,8BAAAA,EAAAA;AACCC,QAAAA,mBAAAA,EAAqBrD,OAAO4C,UAAU;QACtCtC,YAAcA,EAAAA,YAAAA;QACdgD,kBAAoBX,EAAAA,sBAAAA;QACpBY,sBAAwBV,EAAAA,0BAAAA;QACxBW,sBAAwBN,EAAAA,0BAAAA;QACxBO,2CACEtB,EAAAA,+CAAAA;QAEFuB,0CAA4ClB,EAAAA,8CAAAA;gCAE5CmB,IAAA,CAACC,KAAKC,IAAI,EAAA;AAACC,YAAAA,YAAAA,EAAcrE,UAAU,CAAC,CAAE,CAAA,CAACG,EAAE;;AACvC,8BAAAuD,GAAA,CAACS,KAAKG,IAAI,EAAA;AACRC,oBAAAA,YAAAA,EAAYpD,aAAc,CAAA;wBACxBhB,EAAI,EAAA,uCAAA;wBACJD,cAAgB,EAAA;AAClB,qBAAA,CAAA;AAECF,oBAAAA,QAAAA,EAAAA,UAAAA,CAAWwE,GAAG,CAAC,CAACC,QACf,iBAAAf,GAAA,CAACS,KAAKO,OAAO,EAAA;AAAmB5B,4BAAAA,KAAAA,EAAO2B,SAAStE,EAAE;sCAC/CgB,aAAc,CAAA;AAAEhB,gCAAAA,EAAAA,EAAIsE,SAASxE,OAAO;AAAEC,gCAAAA,cAAAA,EAAgBuE,SAASvE;AAAe,6BAAA;AAD9DuE,yBAAAA,EAAAA,QAAAA,CAAStE,EAAE,CAAA;;AAKlC,8BAAAuD,GAAA,CAACS,KAAKQ,OAAO,EAAA;AAAC7B,oBAAAA,KAAAA,EAAO9C,UAAU,CAAC,CAAE,CAAA,CAACG,EAAE;AACnC,oBAAA,QAAA,gBAAAuD,GAACkB,CAAAA,YAAAA,EAAAA;AACCrE,wBAAAA,MAAAA,EAAQK,QAAQa,eAAe;wBAC/BoD,IAAK,EAAA,iBAAA;wBACLrE,cAAgBA,EAAAA;;;AAGpB,8BAAAkD,GAAA,CAACS,KAAKQ,OAAO,EAAA;AAAC7B,oBAAAA,KAAAA,EAAO9C,UAAU,CAAC,CAAE,CAAA,CAACG,EAAE;AACnC,oBAAA,QAAA,gBAAAuD,GAACkB,CAAAA,YAAAA,EAAAA;AACCrE,wBAAAA,MAAAA,EAAQK,QAAQe,WAAW;wBAC3BkD,IAAK,EAAA,aAAA;wBACLrE,cAAgBA,EAAAA;;;AAGpB,8BAAAkD,GAAA,CAACS,KAAKQ,OAAO,EAAA;AAAC7B,oBAAAA,KAAAA,EAAO9C,UAAU,CAAC,CAAE,CAAA,CAACG,EAAE;AACnC,oBAAA,QAAA,gBAAAuD,GAACoB,CAAAA,6BAAAA,EAAAA;AACCvE,wBAAAA,MAAAA,EAAQK,QAAQmE,OAAO;wBACvBF,IAAK,EAAA,SAAA;wBACLrE,cAAgBA,EAAAA;;;AAGpB,8BAAAkD,GAAA,CAACS,KAAKQ,OAAO,EAAA;AAAC7B,oBAAAA,KAAAA,EAAO9C,UAAU,CAAC,CAAE,CAAA,CAACG,EAAE;AACnC,oBAAA,QAAA,gBAAAuD,GAACoB,CAAAA,6BAAAA,EAAAA;AACCvE,wBAAAA,MAAAA,EAAQK,QAAQoE,QAAQ;wBACxBH,IAAK,EAAA,UAAA;wBACLrE,cAAgBA,EAAAA;;;;;;AAM5B,CAAA;AAyBF,MAAMS,YAAe,GAAA;AACnBN,IAAAA,WAAAA,EAAa,EAAC;AACdE,IAAAA,YAAAA,EAAc,EAAC;AACfD,IAAAA,OAAAA,EAAS;AACX,CAAA;AAmDA,uCACA,MAAMI,OAAU,GAAA,CAACiE,OAAcC,MAC7BC,GAAAA,OAAAA,CAAQF,OAAO,CAACG,UAAAA,GAAAA;AACd,QAAA,OAAQF,OAAO1C,IAAI;;;YAGjB,KAAK,kDAAA;AAAoD,gBAAA;AACvD,oBAAA,MAAM,EAAEQ,kBAAkB,EAAEC,QAAQ,EAAEH,KAAK,EAAE,GAAGoC,MAAAA;AAChD,oBAAA,MAAMG,UAAa,GAAA;AAAC,wBAAA,cAAA;AAAgBrC,wBAAAA;AAAmB,qBAAA;AAEvDjB,oBAAAA,MAAAA,CAAOyB,IAAI,CAAC8B,GAAAA,CAAIL,OAAOI,UAAaE,CAAAA,CAAAA,CAAAA,OAAO,CAAC,CAACC,cAAAA,GAAAA;wBAC3C,MAAMC,wBAAAA,GAA2BH,IAC/BL,KACA,EAAA;AAAII,4BAAAA,GAAAA,UAAAA;AAAYG,4BAAAA,cAAAA;AAAgBvC,4BAAAA;yBAAS,EACzCyC,SAAAA,CAAAA;AAGF,wBAAA,IAAID,wBAA0B,EAAA;4BAC5B,IAAIE,aAAAA,GAAgBC,aAAaH,wBAA0B3C,EAAAA,KAAAA,CAAAA;;;AAI3D,4BAAA,IAAI,CAACA,KAAAA,IAAS6C,aAAcxC,CAAAA,UAAU,EAAE;;AAEtC,gCAAA,MAAM0C,iBAAoBD,GAAAA,YAAAA,CAAaD,aAAcxC,CAAAA,UAAU,EAAE,KAAA,CAAA;gCAEjEwC,aAAgB,GAAA;AAAE,oCAAA,GAAGA,aAAa;oCAAExC,UAAY0C,EAAAA;AAAkB,iCAAA;AACpE;AAEAC,4BAAAA,GAAAA,CAAIV,UAAY,EAAA;AAAIC,gCAAAA,GAAAA,UAAAA;AAAYG,gCAAAA,cAAAA;AAAgBvC,gCAAAA;6BAAS,EAAE0C,aAAAA,CAAAA;AAC7D;AACF,qBAAA,CAAA;AAEA,oBAAA;AACF;YACA,KAAK,6CAAA;AAA+C,gBAAA;oBAClD,MAAM,EAAEhD,oBAAoB,EAAEC,YAAY,EAAEC,OAAO,EAAEC,KAAK,EAAE,GAAGoC,MAAAA;oBAC/D,IAAIa,qBAAAA,GAAwBC,SAAUf,CAAAA,KAAAA,CAAMpE,YAAY,CAAA;oBACxD,MAAMoF,gCAAAA,GAAmCtD,oBAAqBuD,CAAAA,KAAK,CAAC,IAAA,CAAA;AAEpE,oBAAA,MAAMC,WAAcb,GAAAA,GAAAA,CAAIS,qBAAuBE,EAAAA,gCAAAA,EAAkC,EAAC,CAAA;AAElFlE,oBAAAA,MAAAA,CAAOyB,IAAI,CAAC2C,WAAaZ,CAAAA,CAAAA,OAAO,CAAC,CAACtC,QAAAA,GAAAA;;;;wBAIhC,IAAIb,GAAAA,CAAI+D,WAAW,CAAClD,QAAAA,CAAS,EAAE,CAAC,WAAW,EAAEL,YAAAA,CAAAA,CAAc,CAAG,EAAA;4BAC5D,MAAMwD,QAAAA,GAAWd,IAAIa,WAAa,EAAA;AAAClD,gCAAAA,QAAAA;AAAU,gCAAA,YAAA;AAAcL,gCAAAA,YAAAA;AAAcC,gCAAAA;AAAQ,6BAAA,CAAA;AACjF,4BAAA,MAAMwD,eAAkB,GAAA;AACnBJ,gCAAAA,GAAAA,gCAAAA;AACHhD,gCAAAA,QAAAA;AACA,gCAAA,YAAA;AACAL,gCAAAA,YAAAA;AACAC,gCAAAA;AACD,6BAAA;4BAED,IAAI,CAACyD,SAASF,QAAW,CAAA,EAAA;AACvBN,gCAAAA,GAAAA,CAAIC,uBAAuBM,eAAiBvD,EAAAA,KAAAA,CAAAA;6BACvC,MAAA;gCACL,MAAMyD,YAAAA,GAAeX,aAAaQ,QAAUtD,EAAAA,KAAAA,CAAAA;AAE5CgD,gCAAAA,GAAAA,CAAIC,uBAAuBM,eAAiBE,EAAAA,YAAAA,CAAAA;AAC9C;AACF;AACF,qBAAA,CAAA;;AAGA,oBAAA,IAAI,CAACzD,KAAO,EAAA;;AAEViD,wBAAAA,qBAAAA,GAAwBS,uBAAwBT,CAAAA,qBAAAA,CAAAA;AAClD;AAEAD,oBAAAA,GAAAA,CAAIV,YAAY,cAAgBW,EAAAA,qBAAAA,CAAAA;AAEhC,oBAAA;AACF;YACA,KAAK,sBAAA;AAAwB,gBAAA;AAC3BhE,oBAAAA,MAAAA,CAAO0E,OAAO,CAACvB,MAAAA,CAAO/B,UAAU,CAAEoC,CAAAA,OAAO,CAAC,CAACmB,KAAAA,GAAAA;wBACzC,MAAM,CAACC,gBAAkBC,EAAAA,kBAAAA,CAAmB,GAAGF,KAAAA;AAE/CZ,wBAAAA,GAAAA,CACEV,UACA,EAAA;AAAC,4BAAA,cAAA;AAAmBuB,4BAAAA,GAAAA,gBAAAA,CAAiBT,KAAK,CAAC,IAAA,CAAA;AAAO,4BAAA;yBAAa,EAC/DU,kBAAAA,CAAAA;AAEJ,qBAAA,CAAA;AAEA,oBAAA;AACF;YACA,KAAK,2BAAA;AAA6B,gBAAA;oBAChC,IAAIb,qBAAAA,GAAwBC,SAAUf,CAAAA,KAAAA,CAAMpE,YAAY,CAAA;AAExDiF,oBAAAA,GAAAA,CAAIC,qBAAuB,EAAA;2BAAIb,MAAO1B,CAAAA,IAAI,CAAC0C,KAAK,CAAC,IAAA;AAAM,qBAAA,EAAEhB,OAAOpC,KAAK,CAAA;;oBAGrE,IAAI,CAACoC,MAAOpC,CAAAA,KAAK,EAAE;;AAEjBiD,wBAAAA,qBAAAA,GAAwBS,uBAAwBT,CAAAA,qBAAAA,CAAAA;AAClD;AAEAD,oBAAAA,GAAAA,CAAIV,YAAY,cAAgBW,EAAAA,qBAAAA,CAAAA;AAEhC,oBAAA;AACF;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCC,UACD,KAAK,kCAAA;AAAoC,gBAAA;AACvC,oBAAA,MAAM,EAAEvC,IAAI,EAAEV,KAAK,EAAE,GAAGoC,MAAAA;AACxB,oBAAA,MAAM2B,WAAc,GAAA;AAAIrD,wBAAAA,GAAAA,IAAAA,CAAK0C,KAAK,CAAC,IAAA;AAAM,qBAAA;oBACzC,IAAIH,qBAAAA,GAAwBC,SAAUf,CAAAA,KAAAA,CAAMpE,YAAY,CAAA;AACxD,oBAAA,MAAMiG,SAAYxB,GAAAA,GAAAA,CAAIS,qBAAuBc,EAAAA,WAAAA,EAAa,EAAC,CAAA;oBAE3D,MAAMlB,aAAAA,GAAgBC,aAAakB,SAAWhE,EAAAA,KAAAA,CAAAA;AAC9CgD,oBAAAA,GAAAA,CAAIC,uBAAuBc,WAAalB,EAAAA,aAAAA,CAAAA;;AAGxC,oBAAA,IAAI,CAAC7C,KAAO,EAAA;;AAEViD,wBAAAA,qBAAAA,GAAwBS,uBAAwBT,CAAAA,qBAAAA,CAAAA;AAClD;AAEAD,oBAAAA,GAAAA,CAAIV,UAAY,EAAA;AAAC,wBAAA;qBAAe,EAAEW,qBAAAA,CAAAA;AAElC,oBAAA;AACF;YACA,KAAK,YAAA;AAAc,gBAAA;oBACjBX,UAAWvE,CAAAA,YAAY,GAAGoE,KAAAA,CAAMtE,WAAW;AAC3C,oBAAA;AACF;YACA,KAAK,uBAAA;AAAyB,gBAAA;oBAC5ByE,UAAWzE,CAAAA,WAAW,GAAGsE,KAAAA,CAAMpE,YAAY;AAC3C,oBAAA;AACF;AACA,YAAA;gBACE,OAAOuE,UAAAA;AACX;AACF,KAAA,CAAA;AAEF;;qGAIA,MAAMlE,IAAO,GAAA,CACXX,MACAE,EAAAA,WAAAA,GAAAA;AAEA,IAAA,MAAM,EACJ0C,UAAU,EACV4D,QAAAA,EAAU,EAAEtF,eAAe,EAAEE,WAAW,EAAEoD,OAAO,EAAEC,QAAQ,EAAE,EAC9D,GAAGzE,MAAAA;AAEJ,IAAA,MAAMK,OAAU,GAAA;AACda,QAAAA,eAAAA;AACAE,QAAAA,WAAAA;AACAoD,QAAAA,OAAAA,EAASiC,aAAajC,OAAS,EAAA,QAAA,CAAA;AAC/BC,QAAAA,QAAAA,EAAUgC,aAAahC,QAAU,EAAA,UAAA;AACnC,KAAA;AAEA,IAAA,MAAMiC,WAAc,GAAA;QAClBxF,eAAiByF,EAAAA,mBAAAA,CAAoBzF,iBAAiB0B,UAAY1C,EAAAA,WAAAA,CAAAA;QAClEkB,WAAauF,EAAAA,mBAAAA,CAAoBvF,aAAawB,UAAY1C,EAAAA,WAAAA,CAAAA;AAC1DsE,QAAAA,OAAAA,EAASoC,iBAAkBvG,CAAAA,OAAAA,CAAQmE,OAAO,EAAE5B,UAAY1C,EAAAA,WAAAA,CAAAA;AACxDuE,QAAAA,QAAAA,EAAUmC,iBAAkBvG,CAAAA,OAAAA,CAAQoE,QAAQ,EAAE7B,UAAY1C,EAAAA,WAAAA;AAC5D,KAAA;IAEA,OAAO;QACLE,WAAasG,EAAAA,WAAAA;QACbpG,YAAcoG,EAAAA,WAAAA;AACdrG,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}