@strapi/content-manager 5.37.1 → 5.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  2. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js.map +1 -1
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
  9. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js +62 -30
  11. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  12. package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
  13. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  14. package/dist/admin/components/DragLayer.js.map +1 -1
  15. package/dist/admin/components/DragLayer.mjs.map +1 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  22. package/dist/admin/components/FieldTypeIcon.js.map +1 -1
  23. package/dist/admin/components/FieldTypeIcon.mjs +1 -1
  24. package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
  25. package/dist/admin/components/InjectionZone.js.map +1 -1
  26. package/dist/admin/components/InjectionZone.mjs.map +1 -1
  27. package/dist/admin/components/LeftMenu.js.map +1 -1
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/RelativeTime.js.map +1 -1
  30. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  31. package/dist/admin/components/Widgets.js.map +1 -1
  32. package/dist/admin/components/Widgets.mjs +1 -1
  33. package/dist/admin/components/Widgets.mjs.map +1 -1
  34. package/dist/admin/constants/attributes.js.map +1 -1
  35. package/dist/admin/constants/attributes.mjs.map +1 -1
  36. package/dist/admin/constants/collections.js.map +1 -1
  37. package/dist/admin/constants/collections.mjs.map +1 -1
  38. package/dist/admin/constants/dragAndDrop.js.map +1 -1
  39. package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
  40. package/dist/admin/constants/hooks.js.map +1 -1
  41. package/dist/admin/constants/hooks.mjs.map +1 -1
  42. package/dist/admin/constants/plugin.js.map +1 -1
  43. package/dist/admin/constants/plugin.mjs.map +1 -1
  44. package/dist/admin/content-manager.js.map +1 -1
  45. package/dist/admin/content-manager.mjs.map +1 -1
  46. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  47. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  48. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  49. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  50. package/dist/admin/history/components/VersionContent.js +48 -16
  51. package/dist/admin/history/components/VersionContent.js.map +1 -1
  52. package/dist/admin/history/components/VersionContent.mjs +48 -16
  53. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  54. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  55. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  56. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  57. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  58. package/dist/admin/history/components/VersionInputRenderer.mjs +1 -1
  59. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  60. package/dist/admin/history/components/VersionsList.js.map +1 -1
  61. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  62. package/dist/admin/history/index.js.map +1 -1
  63. package/dist/admin/history/index.mjs.map +1 -1
  64. package/dist/admin/history/pages/History.js.map +1 -1
  65. package/dist/admin/history/pages/History.mjs +1 -1
  66. package/dist/admin/history/pages/History.mjs.map +1 -1
  67. package/dist/admin/history/routes.js.map +1 -1
  68. package/dist/admin/history/routes.mjs.map +1 -1
  69. package/dist/admin/history/services/historyVersion.js.map +1 -1
  70. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  71. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  72. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  73. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  74. package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
  75. package/dist/admin/hooks/useDebounce.js.map +1 -1
  76. package/dist/admin/hooks/useDebounce.mjs.map +1 -1
  77. package/dist/admin/hooks/useDocument.js.map +1 -1
  78. package/dist/admin/hooks/useDocument.mjs +1 -1
  79. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  80. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  81. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  82. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  83. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  84. package/dist/admin/hooks/useDocumentLayout.js +2 -1
  85. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  86. package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
  87. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  88. package/dist/admin/hooks/useDragAndDrop.js +1 -3
  89. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  90. package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
  91. package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
  92. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  93. package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
  94. package/dist/admin/hooks/useLazyComponents.js.map +1 -1
  95. package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
  96. package/dist/admin/hooks/useOnce.js.map +1 -1
  97. package/dist/admin/hooks/useOnce.mjs.map +1 -1
  98. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  99. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  100. package/dist/admin/hooks/usePrev.js.map +1 -1
  101. package/dist/admin/hooks/usePrev.mjs.map +1 -1
  102. package/dist/admin/index.js.map +1 -1
  103. package/dist/admin/index.mjs.map +1 -1
  104. package/dist/admin/layout.js.map +1 -1
  105. package/dist/admin/layout.mjs.map +1 -1
  106. package/dist/admin/modules/app.js.map +1 -1
  107. package/dist/admin/modules/app.mjs.map +1 -1
  108. package/dist/admin/modules/hooks.js.map +1 -1
  109. package/dist/admin/modules/hooks.mjs +1 -1
  110. package/dist/admin/modules/hooks.mjs.map +1 -1
  111. package/dist/admin/modules/reducers.js.map +1 -1
  112. package/dist/admin/modules/reducers.mjs.map +1 -1
  113. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  114. package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
  115. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  116. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  117. package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
  118. package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  120. package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
  121. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  122. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  124. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
  126. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  142. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +51 -0
  143. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +53 -2
  145. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.mjs.map +1 -1
  148. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  150. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +6 -2
  151. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +6 -2
  153. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  158. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  160. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  166. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
  172. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
  174. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  180. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  182. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  184. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  185. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
  186. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
  187. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  188. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  189. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  190. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  191. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  192. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  193. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +1 -1
  194. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  195. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +1 -1
  196. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  197. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
  198. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.mjs.map +1 -1
  199. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  200. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  201. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.js.map +1 -1
  202. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
  203. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
  204. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  205. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +45 -8
  206. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  207. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +148 -111
  208. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  209. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +152 -115
  210. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  211. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  212. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  213. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  214. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  215. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  216. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  217. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  218. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  219. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  220. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  221. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  222. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  223. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  224. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
  225. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  226. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  227. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  228. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  229. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
  230. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  231. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
  232. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
  233. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  234. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs +8 -6
  235. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  236. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  237. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  238. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  239. package/dist/admin/pages/EditView/components/Header.mjs +2 -2
  240. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  241. package/dist/admin/pages/EditView/components/InputRenderer.js +15 -5
  242. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  243. package/dist/admin/pages/EditView/components/InputRenderer.mjs +15 -5
  244. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  245. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  246. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  247. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  248. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  249. package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
  250. package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
  251. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  252. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
  253. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  254. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  255. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -1
  256. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  257. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  258. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  259. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  260. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  261. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  262. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  263. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  264. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  265. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  266. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  267. package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
  268. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  269. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  270. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  271. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  272. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  273. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
  274. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  275. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
  276. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  277. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
  278. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  279. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
  280. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  281. package/dist/admin/pages/ListView/components/Filters.js +54 -1
  282. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  283. package/dist/admin/pages/ListView/components/Filters.mjs +54 -1
  284. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  285. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  286. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  287. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  288. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  289. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
  290. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  291. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
  292. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  293. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  294. package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
  295. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  296. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  297. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  298. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  299. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  300. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  301. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  302. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  303. package/dist/admin/pages/NoContentTypePage.js.map +1 -1
  304. package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
  305. package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
  306. package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
  307. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  308. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  309. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  310. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  311. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  312. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  313. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  314. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  315. package/dist/admin/preview/index.js.map +1 -1
  316. package/dist/admin/preview/index.mjs.map +1 -1
  317. package/dist/admin/preview/pages/Preview.js.map +1 -1
  318. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  319. package/dist/admin/preview/routes.js.map +1 -1
  320. package/dist/admin/preview/routes.mjs.map +1 -1
  321. package/dist/admin/preview/services/preview.js.map +1 -1
  322. package/dist/admin/preview/services/preview.mjs.map +1 -1
  323. package/dist/admin/preview/utils/constants.js +0 -1
  324. package/dist/admin/preview/utils/constants.js.map +1 -1
  325. package/dist/admin/preview/utils/constants.mjs +0 -1
  326. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  327. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  328. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  329. package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
  330. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
  331. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  332. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  333. package/dist/admin/router.js.map +1 -1
  334. package/dist/admin/router.mjs.map +1 -1
  335. package/dist/admin/services/api.js.map +1 -1
  336. package/dist/admin/services/api.mjs.map +1 -1
  337. package/dist/admin/services/components.js.map +1 -1
  338. package/dist/admin/services/components.mjs.map +1 -1
  339. package/dist/admin/services/contentTypes.js.map +1 -1
  340. package/dist/admin/services/contentTypes.mjs.map +1 -1
  341. package/dist/admin/services/documents.js.map +1 -1
  342. package/dist/admin/services/documents.mjs.map +1 -1
  343. package/dist/admin/services/homepage.js.map +1 -1
  344. package/dist/admin/services/homepage.mjs.map +1 -1
  345. package/dist/admin/services/init.js.map +1 -1
  346. package/dist/admin/services/init.mjs.map +1 -1
  347. package/dist/admin/services/relations.js.map +1 -1
  348. package/dist/admin/services/relations.mjs.map +1 -1
  349. package/dist/admin/services/uid.js.map +1 -1
  350. package/dist/admin/services/uid.mjs.map +1 -1
  351. package/dist/admin/src/exports.d.ts +1 -1
  352. package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
  353. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -0
  354. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
  355. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  356. package/dist/admin/src/utils/conditionalFields.d.ts +12 -0
  357. package/dist/admin/translations/en.json.js +10 -0
  358. package/dist/admin/translations/en.json.js.map +1 -1
  359. package/dist/admin/translations/en.json.mjs +10 -0
  360. package/dist/admin/translations/en.json.mjs.map +1 -1
  361. package/dist/admin/translations/es.json.js +136 -2
  362. package/dist/admin/translations/es.json.js.map +1 -1
  363. package/dist/admin/translations/es.json.mjs +136 -2
  364. package/dist/admin/translations/es.json.mjs.map +1 -1
  365. package/dist/admin/translations/fr.json.js +72 -1
  366. package/dist/admin/translations/fr.json.js.map +1 -1
  367. package/dist/admin/translations/fr.json.mjs +72 -1
  368. package/dist/admin/translations/fr.json.mjs.map +1 -1
  369. package/dist/admin/utils/api.js.map +1 -1
  370. package/dist/admin/utils/api.mjs.map +1 -1
  371. package/dist/admin/utils/attributes.js.map +1 -1
  372. package/dist/admin/utils/attributes.mjs.map +1 -1
  373. package/dist/admin/utils/conditionalFields.js +76 -0
  374. package/dist/admin/utils/conditionalFields.js.map +1 -0
  375. package/dist/admin/utils/conditionalFields.mjs +69 -0
  376. package/dist/admin/utils/conditionalFields.mjs.map +1 -0
  377. package/dist/admin/utils/objects.js.map +1 -1
  378. package/dist/admin/utils/objects.mjs.map +1 -1
  379. package/dist/admin/utils/relations.js.map +1 -1
  380. package/dist/admin/utils/relations.mjs.map +1 -1
  381. package/dist/admin/utils/strings.js.map +1 -1
  382. package/dist/admin/utils/strings.mjs.map +1 -1
  383. package/dist/admin/utils/translations.js.map +1 -1
  384. package/dist/admin/utils/translations.mjs.map +1 -1
  385. package/dist/admin/utils/urls.js.map +1 -1
  386. package/dist/admin/utils/urls.mjs.map +1 -1
  387. package/dist/admin/utils/users.js.map +1 -1
  388. package/dist/admin/utils/users.mjs.map +1 -1
  389. package/dist/admin/utils/validation.js.map +1 -1
  390. package/dist/admin/utils/validation.mjs.map +1 -1
  391. package/dist/server/bootstrap.js.map +1 -1
  392. package/dist/server/bootstrap.mjs.map +1 -1
  393. package/dist/server/constants/index.js.map +1 -1
  394. package/dist/server/constants/index.mjs.map +1 -1
  395. package/dist/server/controllers/collection-types.js +157 -4
  396. package/dist/server/controllers/collection-types.js.map +1 -1
  397. package/dist/server/controllers/collection-types.mjs +159 -6
  398. package/dist/server/controllers/collection-types.mjs.map +1 -1
  399. package/dist/server/controllers/components.js.map +1 -1
  400. package/dist/server/controllers/components.mjs.map +1 -1
  401. package/dist/server/controllers/content-types.js +10 -10
  402. package/dist/server/controllers/content-types.js.map +1 -1
  403. package/dist/server/controllers/content-types.mjs.map +1 -1
  404. package/dist/server/controllers/index.js +4 -4
  405. package/dist/server/controllers/index.js.map +1 -1
  406. package/dist/server/controllers/index.mjs.map +1 -1
  407. package/dist/server/controllers/init.js.map +1 -1
  408. package/dist/server/controllers/init.mjs.map +1 -1
  409. package/dist/server/controllers/relations.js.map +1 -1
  410. package/dist/server/controllers/relations.mjs +3 -3
  411. package/dist/server/controllers/relations.mjs.map +1 -1
  412. package/dist/server/controllers/single-types.js +19 -4
  413. package/dist/server/controllers/single-types.js.map +1 -1
  414. package/dist/server/controllers/single-types.mjs +20 -5
  415. package/dist/server/controllers/single-types.mjs.map +1 -1
  416. package/dist/server/controllers/uid.js.map +1 -1
  417. package/dist/server/controllers/uid.mjs +1 -1
  418. package/dist/server/controllers/uid.mjs.map +1 -1
  419. package/dist/server/controllers/utils/clone.js.map +1 -1
  420. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  421. package/dist/server/controllers/utils/document-status.js.map +1 -1
  422. package/dist/server/controllers/utils/document-status.mjs.map +1 -1
  423. package/dist/server/controllers/utils/metadata.js.map +1 -1
  424. package/dist/server/controllers/utils/metadata.mjs.map +1 -1
  425. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  426. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  427. package/dist/server/controllers/validation/index.js.map +1 -1
  428. package/dist/server/controllers/validation/index.mjs +1 -1
  429. package/dist/server/controllers/validation/index.mjs.map +1 -1
  430. package/dist/server/controllers/validation/model-configuration.js +6 -1
  431. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  432. package/dist/server/controllers/validation/model-configuration.mjs +6 -1
  433. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  434. package/dist/server/controllers/validation/relations.js.map +1 -1
  435. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  436. package/dist/server/destroy.js.map +1 -1
  437. package/dist/server/destroy.mjs.map +1 -1
  438. package/dist/server/history/constants.js.map +1 -1
  439. package/dist/server/history/constants.mjs.map +1 -1
  440. package/dist/server/history/controllers/history-version.js.map +1 -1
  441. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  442. package/dist/server/history/controllers/index.js.map +1 -1
  443. package/dist/server/history/controllers/index.mjs.map +1 -1
  444. package/dist/server/history/controllers/validation/history-version.js.map +1 -1
  445. package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
  446. package/dist/server/history/index.js +4 -4
  447. package/dist/server/history/index.js.map +1 -1
  448. package/dist/server/history/index.mjs.map +1 -1
  449. package/dist/server/history/models/history-version.js.map +1 -1
  450. package/dist/server/history/models/history-version.mjs.map +1 -1
  451. package/dist/server/history/routes/history-version.js.map +1 -1
  452. package/dist/server/history/routes/history-version.mjs.map +1 -1
  453. package/dist/server/history/routes/index.js.map +1 -1
  454. package/dist/server/history/routes/index.mjs.map +1 -1
  455. package/dist/server/history/services/history.js.map +1 -1
  456. package/dist/server/history/services/history.mjs.map +1 -1
  457. package/dist/server/history/services/index.js.map +1 -1
  458. package/dist/server/history/services/index.mjs.map +1 -1
  459. package/dist/server/history/services/lifecycles.js.map +1 -1
  460. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  461. package/dist/server/history/services/utils.js.map +1 -1
  462. package/dist/server/history/services/utils.mjs.map +1 -1
  463. package/dist/server/history/utils.js.map +1 -1
  464. package/dist/server/history/utils.mjs.map +1 -1
  465. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  466. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  467. package/dist/server/homepage/controllers/index.js.map +1 -1
  468. package/dist/server/homepage/controllers/index.mjs.map +1 -1
  469. package/dist/server/homepage/index.js +6 -6
  470. package/dist/server/homepage/index.js.map +1 -1
  471. package/dist/server/homepage/index.mjs.map +1 -1
  472. package/dist/server/homepage/routes/homepage.js.map +1 -1
  473. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  474. package/dist/server/homepage/routes/index.js.map +1 -1
  475. package/dist/server/homepage/routes/index.mjs.map +1 -1
  476. package/dist/server/homepage/services/homepage.js.map +1 -1
  477. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  478. package/dist/server/homepage/services/index.js.map +1 -1
  479. package/dist/server/homepage/services/index.mjs.map +1 -1
  480. package/dist/server/index.js +8 -8
  481. package/dist/server/middlewares/routing.js.map +1 -1
  482. package/dist/server/middlewares/routing.mjs.map +1 -1
  483. package/dist/server/policies/hasPermissions.js.map +1 -1
  484. package/dist/server/policies/hasPermissions.mjs.map +1 -1
  485. package/dist/server/policies/index.js.map +1 -1
  486. package/dist/server/policies/index.mjs.map +1 -1
  487. package/dist/server/preview/controllers/index.js.map +1 -1
  488. package/dist/server/preview/controllers/index.mjs.map +1 -1
  489. package/dist/server/preview/controllers/preview.js.map +1 -1
  490. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  491. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  492. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  493. package/dist/server/preview/index.js +4 -4
  494. package/dist/server/preview/index.js.map +1 -1
  495. package/dist/server/preview/index.mjs.map +1 -1
  496. package/dist/server/preview/routes/index.js.map +1 -1
  497. package/dist/server/preview/routes/index.mjs.map +1 -1
  498. package/dist/server/preview/routes/preview.js.map +1 -1
  499. package/dist/server/preview/routes/preview.mjs.map +1 -1
  500. package/dist/server/preview/services/index.js.map +1 -1
  501. package/dist/server/preview/services/index.mjs.map +1 -1
  502. package/dist/server/preview/services/preview-config.js.map +1 -1
  503. package/dist/server/preview/services/preview-config.mjs +1 -1
  504. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  505. package/dist/server/preview/services/preview.js +2 -1
  506. package/dist/server/preview/services/preview.js.map +1 -1
  507. package/dist/server/preview/services/preview.mjs +2 -1
  508. package/dist/server/preview/services/preview.mjs.map +1 -1
  509. package/dist/server/preview/utils.js.map +1 -1
  510. package/dist/server/preview/utils.mjs.map +1 -1
  511. package/dist/server/register.js.map +1 -1
  512. package/dist/server/register.mjs.map +1 -1
  513. package/dist/server/routes/admin.js.map +1 -1
  514. package/dist/server/routes/admin.mjs.map +1 -1
  515. package/dist/server/routes/index.js +4 -4
  516. package/dist/server/routes/index.js.map +1 -1
  517. package/dist/server/routes/index.mjs.map +1 -1
  518. package/dist/server/services/components.js.map +1 -1
  519. package/dist/server/services/components.mjs.map +1 -1
  520. package/dist/server/services/configuration.js.map +1 -1
  521. package/dist/server/services/configuration.mjs.map +1 -1
  522. package/dist/server/services/content-types.js.map +1 -1
  523. package/dist/server/services/content-types.mjs.map +1 -1
  524. package/dist/server/services/data-mapper.js.map +1 -1
  525. package/dist/server/services/data-mapper.mjs.map +1 -1
  526. package/dist/server/services/document-manager.js.map +1 -1
  527. package/dist/server/services/document-manager.mjs +2 -2
  528. package/dist/server/services/document-manager.mjs.map +1 -1
  529. package/dist/server/services/document-metadata.js.map +1 -1
  530. package/dist/server/services/document-metadata.mjs +2 -2
  531. package/dist/server/services/document-metadata.mjs.map +1 -1
  532. package/dist/server/services/field-sizes.js.map +1 -1
  533. package/dist/server/services/field-sizes.mjs.map +1 -1
  534. package/dist/server/services/index.js +4 -4
  535. package/dist/server/services/index.js.map +1 -1
  536. package/dist/server/services/index.mjs.map +1 -1
  537. package/dist/server/services/metrics.js.map +1 -1
  538. package/dist/server/services/metrics.mjs.map +1 -1
  539. package/dist/server/services/permission-checker.js.map +1 -1
  540. package/dist/server/services/permission-checker.mjs.map +1 -1
  541. package/dist/server/services/permission.js.map +1 -1
  542. package/dist/server/services/permission.mjs.map +1 -1
  543. package/dist/server/services/populate-builder.js.map +1 -1
  544. package/dist/server/services/populate-builder.mjs +4 -4
  545. package/dist/server/services/populate-builder.mjs.map +1 -1
  546. package/dist/server/services/uid.js.map +1 -1
  547. package/dist/server/services/uid.mjs.map +1 -1
  548. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  549. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  550. package/dist/server/services/utils/configuration/index.js.map +1 -1
  551. package/dist/server/services/utils/configuration/index.mjs +3 -3
  552. package/dist/server/services/utils/configuration/index.mjs.map +1 -1
  553. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  554. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  555. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  556. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  557. package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
  558. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  559. package/dist/server/services/utils/configuration/settings.js +4 -2
  560. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  561. package/dist/server/services/utils/configuration/settings.mjs +5 -3
  562. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  563. package/dist/server/services/utils/draft.js.map +1 -1
  564. package/dist/server/services/utils/draft.mjs.map +1 -1
  565. package/dist/server/services/utils/populate.js.map +1 -1
  566. package/dist/server/services/utils/populate.mjs +1 -1
  567. package/dist/server/services/utils/populate.mjs.map +1 -1
  568. package/dist/server/services/utils/store.js.map +1 -1
  569. package/dist/server/services/utils/store.mjs.map +1 -1
  570. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  571. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  572. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  573. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  574. package/dist/server/utils/index.js.map +1 -1
  575. package/dist/server/utils/index.mjs.map +1 -1
  576. package/dist/server/validation/policies/hasPermissions.js.map +1 -1
  577. package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
  578. package/dist/shared/contracts/content-types.d.ts +2 -0
  579. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  580. package/dist/shared/contracts/relations.d.ts +1 -1
  581. package/dist/shared/contracts/relations.d.ts.map +1 -1
  582. package/package.json +15 -10
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../admin/src/history/index.ts"],"sourcesContent":["/* eslint-disable check-file/no-index */\n\nimport { type ContentManagerPlugin } from '../content-manager';\n\nimport { HistoryAction } from './components/HistoryAction';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst historyAdmin: Partial<Plugin.Config.AdminInput> = {\n bootstrap(app: StrapiApp) {\n const { addDocumentAction } = app.getPlugin('content-manager').apis as {\n addDocumentAction: ContentManagerPlugin['addDocumentAction'];\n };\n\n /**\n * Register the document action here using the public API, and not by setting the action in the\n * Content Manager directly, because this API lets us control the order of the actions array.\n * We want history to be the last non-delete action in the array.\n */\n addDocumentAction((actions) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'delete');\n actions.splice(indexOfDeleteAction, 0, HistoryAction);\n return actions;\n });\n },\n};\n\nexport { historyAdmin };\n"],"names":["historyAdmin","bootstrap","app","addDocumentAction","getPlugin","apis","actions","indexOfDeleteAction","findIndex","action","type","splice","HistoryAction"],"mappings":";;AASA,MAAMA,YAAkD,GAAA;AACtDC,IAAAA,SAAAA,CAAAA,CAAUC,GAAc,EAAA;QACtB,MAAM,EAAEC,iBAAiB,EAAE,GAAGD,IAAIE,SAAS,CAAC,mBAAmBC,IAAI;AAInE;;;;AAIC,QACDF,kBAAkB,CAACG,OAAAA,GAAAA;YACjB,MAAMC,mBAAAA,GAAsBD,QAAQE,SAAS,CAAC,CAACC,MAAWA,GAAAA,MAAAA,CAAOC,IAAI,KAAK,QAAA,CAAA;YAC1EJ,OAAQK,CAAAA,MAAM,CAACJ,mBAAAA,EAAqB,CAAGK,EAAAA,aAAAA,CAAAA;YACvC,OAAON,OAAAA;AACT,SAAA,CAAA;AACF;AACF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../admin/src/history/index.ts"],"sourcesContent":["/* eslint-disable check-file/no-index */\n\nimport { type ContentManagerPlugin } from '../content-manager';\n\nimport { HistoryAction } from './components/HistoryAction';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst historyAdmin: Partial<Plugin.Config.AdminInput> = {\n bootstrap(app: StrapiApp) {\n const { addDocumentAction } = app.getPlugin('content-manager').apis as {\n addDocumentAction: ContentManagerPlugin['addDocumentAction'];\n };\n\n /**\n * Register the document action here using the public API, and not by setting the action in the\n * Content Manager directly, because this API lets us control the order of the actions array.\n * We want history to be the last non-delete action in the array.\n */\n addDocumentAction((actions) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'delete');\n actions.splice(indexOfDeleteAction, 0, HistoryAction);\n return actions;\n });\n },\n};\n\nexport { historyAdmin };\n"],"names":["historyAdmin","bootstrap","app","addDocumentAction","getPlugin","apis","actions","indexOfDeleteAction","findIndex","action","type","splice","HistoryAction"],"mappings":";;AASA,MAAMA,YAAAA,GAAkD;AACtDC,IAAAA,SAAAA,CAAAA,CAAUC,GAAc,EAAA;QACtB,MAAM,EAAEC,iBAAiB,EAAE,GAAGD,IAAIE,SAAS,CAAC,mBAAmBC,IAAI;AAInE;;;;AAIC,QACDF,kBAAkB,CAACG,OAAAA,GAAAA;YACjB,MAAMC,mBAAAA,GAAsBD,QAAQE,SAAS,CAAC,CAACC,MAAAA,GAAWA,MAAAA,CAAOC,IAAI,KAAK,QAAA,CAAA;YAC1EJ,OAAAA,CAAQK,MAAM,CAACJ,mBAAAA,EAAqB,CAAA,EAAGK,aAAAA,CAAAA;YACvC,OAAON,OAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"History.js","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n Page,\n createContext,\n useRBAC,\n HEIGHT_TOP_NAVIGATION,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex\n direction={{ initial: 'column', medium: 'row' }}\n alignItems=\"flex-start\"\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Main\n grow={1}\n width=\"100%\"\n height=\"100%\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"hidden auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","initial","medium","alignItems","height","overflow","Main","grow","width","background","paddingBottom","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","position","top","HEIGHT_TOP_NAVIGATION","large","bottom","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
1
+ {"version":3,"file":"History.js","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n Page,\n createContext,\n useRBAC,\n HEIGHT_TOP_NAVIGATION,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex\n direction={{ initial: 'column', medium: 'row' }}\n alignItems=\"flex-start\"\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Main\n grow={1}\n width=\"100%\"\n height=\"100%\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"hidden auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","initial","medium","alignItems","height","overflow","Main","grow","width","background","paddingBottom","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","position","top","HEIGHT_TOP_NAVIGATION","large","bottom","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { createContext, useRBAC, Page, HEIGHT_TOP_NAVIGATION, useQueryParams } from '@strapi/admin/strapi-admin';
3
+ import { useRBAC, Page, HEIGHT_TOP_NAVIGATION, useQueryParams, createContext } from '@strapi/admin/strapi-admin';
4
4
  import { Portal, FocusTrap, Box, Link, Flex, Main } from '@strapi/design-system';
5
5
  import { stringify } from 'qs';
6
6
  import { useIntl } from 'react-intl';
@@ -1 +1 @@
1
- {"version":3,"file":"History.mjs","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n Page,\n createContext,\n useRBAC,\n HEIGHT_TOP_NAVIGATION,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex\n direction={{ initial: 'column', medium: 'row' }}\n alignItems=\"flex-start\"\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Main\n grow={1}\n width=\"100%\"\n height=\"100%\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"hidden auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","initial","medium","alignItems","height","overflow","Main","grow","width","background","paddingBottom","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","position","top","HEIGHT_TOP_NAVIGATION","large","bottom","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
1
+ {"version":3,"file":"History.mjs","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n Page,\n createContext,\n useRBAC,\n HEIGHT_TOP_NAVIGATION,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex\n direction={{ initial: 'column', medium: 'row' }}\n alignItems=\"flex-start\"\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Main\n grow={1}\n width=\"100%\"\n height=\"100%\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"hidden auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n width=\"100dvw\"\n position=\"fixed\"\n top={{ initial: HEIGHT_TOP_NAVIGATION, large: 0 }}\n bottom={0}\n left={0}\n zIndex={{ initial: 2, large: 4 }}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["HistoryProvider","useHistoryContext","createContext","HistoryPage","headerId","React","useId","formatMessage","useIntl","slug","id","documentId","collectionType","useParams","isLoading","isLoadingDocument","schema","useDocument","model","isLoadingLayout","edit","layout","settings","displayName","mainField","useDocumentLayout","data","configuration","isLoadingConfiguration","useGetContentTypeConfigurationQuery","query","useQueryParams","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","page","Number","versionsResponse","useGetHistoryVersionsQuery","contentType","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","COLLECTION_TYPES","_jsx","Navigate","to","isFetching","Page","Loading","isError","length","_Fragment","NoData","action","Link","tag","NavLink","defaultMessage","search","stringify","replace","selectedVersion","find","version","toString","error","Error","_jsxs","Title","versions","Flex","direction","initial","medium","alignItems","height","overflow","Main","grow","width","background","paddingBottom","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","position","top","HEIGHT_TOP_NAVIGATION","large","bottom","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type PathRouteProps } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: PathRouteProps[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n"],"names":["ProtectedHistoryPage","React","lazy","then","mod","default","routes","path","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,oBAAuBC,iBAAAA,gBAAAA,CAAMC,IAAI,CAAC,IACtC,oDAAO,oBAAA,KAAA,CAAmBC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAqB,CAAA,CAAA,CAAA;AAG/E;;AAEC,UACKM,MAA2B,GAAA;AAC/B,IAAA;QACEC,IAAM,EAAA,mCAAA;QACNC,SAAWR,EAAAA;AACb,KAAA;AACA,IAAA;QACEO,IAAM,EAAA,+BAAA;QACNC,SAAWR,EAAAA;AACb;AACD;;;;"}
1
+ {"version":3,"file":"routes.js","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type PathRouteProps } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: PathRouteProps[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n"],"names":["ProtectedHistoryPage","React","lazy","then","mod","default","routes","path","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,oBAAAA,iBAAuBC,gBAAAA,CAAMC,IAAI,CAAC,IACtC,oDAAO,oBAAA,KAAA,CAAmBC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAqB,CAAA,CAAA,CAAA;AAG/E;;AAEC,UACKM,MAAAA,GAA2B;AAC/B,IAAA;QACEC,IAAAA,EAAM,mCAAA;QACNC,SAAAA,EAAWR;AACb,KAAA;AACA,IAAA;QACEO,IAAAA,EAAM,+BAAA;QACNC,SAAAA,EAAWR;AACb;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.mjs","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type PathRouteProps } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: PathRouteProps[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n"],"names":["ProtectedHistoryPage","React","lazy","then","mod","default","routes","path","Component"],"mappings":";;AAKA,MAAMA,oBAAuBC,iBAAAA,KAAAA,CAAMC,IAAI,CAAC,IACtC,OAAO,qBAAA,CAAA,CAAmBC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAqB,CAAA,CAAA,CAAA;AAG/E;;AAEC,UACKM,MAA2B,GAAA;AAC/B,IAAA;QACEC,IAAM,EAAA,mCAAA;QACNC,SAAWR,EAAAA;AACb,KAAA;AACA,IAAA;QACEO,IAAM,EAAA,+BAAA;QACNC,SAAWR,EAAAA;AACb;AACD;;;;"}
1
+ {"version":3,"file":"routes.mjs","sources":["../../../admin/src/history/routes.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type PathRouteProps } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: PathRouteProps[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n"],"names":["ProtectedHistoryPage","React","lazy","then","mod","default","routes","path","Component"],"mappings":";;AAKA,MAAMA,oBAAAA,iBAAuBC,KAAAA,CAAMC,IAAI,CAAC,IACtC,OAAO,qBAAA,CAAA,CAAmBC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAqB,CAAA,CAAA,CAAA;AAG/E;;AAEC,UACKM,MAAAA,GAA2B;AAC/B,IAAA;QACEC,IAAAA,EAAM,mCAAA;QACNC,SAAAA,EAAWR;AACb,KAAA;AACA,IAAA;QACEO,IAAAA,EAAM,+BAAA;QACNC,SAAAA,EAAWR;AACb;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"historyVersion.js","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;;;AAcA,MAAMA,kBAAAA,GAAqBC,qBAAkBC,CAAAA,eAAe,CAAC;IAC3DC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAK,EAAA,CAAC,iCAAiC,CAAC;wBACxCC,MAAQ,EAAA,KAAA;wBACRC,MAAQ,EAAA;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAI,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAgBR,EAAAA,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAQ,EAAA,KAAA;wBACRO,IAAMF,EAAAA;AACR,qBAAA;AACF,iBAAA;gBACAG,eAAiB,EAAA,CAACC,MAAMC,MAAQ,EAAA,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAM,EAAA,UAAA;4BACNC,EACEF,EAAAA,cAAAA,KAAmBG,4BACf,GAAA,CAAA,EAAGjB,MAAOkB,CAAAA,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAAA,CAAY,GACrCb,MAAAA,CAAOkB;AACf;AACD,qBAAA;AACH;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,0BAA0B,EAAEC,yBAAyB,EAAE,GAAG3B;;;;;"}
1
+ {"version":3,"file":"historyVersion.js","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;;;AAcA,MAAMA,kBAAAA,GAAqBC,qBAAAA,CAAkBC,eAAe,CAAC;IAC3DC,SAAAA,EAAW,CAACC,WAAa;YACvBC,kBAAAA,EAAoBD,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAAA,EAAK,CAAC,iCAAiC,CAAC;wBACxCC,MAAAA,EAAQ,KAAA;wBACRC,MAAAA,EAAQ;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,gBAAA,CAAA;gBACAI,YAAAA,EAAc;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAAA,EAAgBR,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAAA,EAAQ,KAAA;wBACRO,IAAAA,EAAMF;AACR,qBAAA;AACF,gBAAA,CAAA;gBACAG,eAAAA,EAAiB,CAACC,MAAMC,MAAAA,EAAQ,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAAA,EAAM,UAAA;4BACNC,EAAAA,EACEF,cAAAA,KAAmBG,4BAAAA,GACf,CAAA,EAAGjB,MAAAA,CAAOkB,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAAA,CAAY,GACrCb,MAAAA,CAAOkB;AACf;AACD,qBAAA;AACH,gBAAA;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,0BAA0B,EAAEC,yBAAyB,EAAE,GAAG3B;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"historyVersion.mjs","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;AAcA,MAAMA,kBAAAA,GAAqBC,iBAAkBC,CAAAA,eAAe,CAAC;IAC3DC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAK,EAAA,CAAC,iCAAiC,CAAC;wBACxCC,MAAQ,EAAA,KAAA;wBACRC,MAAQ,EAAA;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,iBAAA;gBACAI,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAgBR,EAAAA,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAQ,EAAA,KAAA;wBACRO,IAAMF,EAAAA;AACR,qBAAA;AACF,iBAAA;gBACAG,eAAiB,EAAA,CAACC,MAAMC,MAAQ,EAAA,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAM,EAAA,UAAA;4BACNC,EACEF,EAAAA,cAAAA,KAAmBG,gBACf,GAAA,CAAA,EAAGjB,MAAOkB,CAAAA,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAAA,CAAY,GACrCb,MAAAA,CAAOkB;AACf;AACD,qBAAA;AACH;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,0BAA0B,EAAEC,yBAAyB,EAAE,GAAG3B;;;;"}
1
+ {"version":3,"file":"historyVersion.mjs","sources":["../../../../admin/src/history/services/historyVersion.ts"],"sourcesContent":["import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n"],"names":["historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","method","config","providesTags","restoreVersion","mutation","body","versionId","data","invalidatesTags","_res","_error","documentId","collectionType","type","id","COLLECTION_TYPES","contentType","useGetHistoryVersionsQuery","useRestoreVersionMutation"],"mappings":";;;AAcA,MAAMA,kBAAAA,GAAqBC,iBAAAA,CAAkBC,eAAe,CAAC;IAC3DC,SAAAA,EAAW,CAACC,WAAa;YACvBC,kBAAAA,EAAoBD,OAAAA,CAAQE,KAAK,CAG/B;AACAA,gBAAAA,KAAAA,CAAAA,CAAMC,MAAM,EAAA;oBACV,OAAO;wBACLC,GAAAA,EAAK,CAAC,iCAAiC,CAAC;wBACxCC,MAAAA,EAAQ,KAAA;wBACRC,MAAAA,EAAQ;AACNH,4BAAAA;AACF;AACF,qBAAA;AACF,gBAAA,CAAA;gBACAI,YAAAA,EAAc;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAC,cAAAA,EAAgBR,OAAAA,CAAQS,QAAQ,CAAiD;AAC/EP,gBAAAA,KAAAA,CAAAA,CAAM,EAAEC,MAAM,EAAEO,IAAI,EAAE,EAAA;oBACpB,OAAO;AACLN,wBAAAA,GAAAA,EAAK,CAAC,kCAAkC,EAAED,OAAOQ,SAAS,CAAC,QAAQ,CAAC;wBACpEN,MAAAA,EAAQ,KAAA;wBACRO,IAAAA,EAAMF;AACR,qBAAA;AACF,gBAAA,CAAA;gBACAG,eAAAA,EAAiB,CAACC,MAAMC,MAAAA,EAAQ,EAAEC,UAAU,EAAEC,cAAc,EAAEd,MAAM,EAAE,GAAA;oBACpE,OAAO;AACL,wBAAA,gBAAA;AACA,wBAAA;4BACEe,IAAAA,EAAM,UAAA;4BACNC,EAAAA,EACEF,cAAAA,KAAmBG,gBAAAA,GACf,CAAA,EAAGjB,MAAAA,CAAOkB,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAAA,CAAY,GACrCb,MAAAA,CAAOkB;AACf;AACD,qBAAA;AACH,gBAAA;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,0BAA0B,EAAEC,yBAAyB,EAAE,GAAG3B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useContentManagerInitData.js","sources":["../../../admin/src/hooks/useContentManagerInitData.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n"],"names":["MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","state","notifyStatus","useNotifyAT","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","checkUserHasPermissions","useAuth","useTypedSelector","app","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","id","defaultMessage","error","type","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","collectionTypeLinks","singleType","singleTypeLinks","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","map","permissions","authorizedCollectionTypeLinks","filter","_","index","length","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","links","configurations","link","isDisplayed","collectionTypesPermissions","action","subject","uid","singleTypesPermissions","currentContentTypeConfig","find","search","searchParams","page","pageSize","settings","sort","defaultSortBy","defaultSortOrder","stringify","encode","title","info","displayName","to","COLLECTION_TYPES","SINGLE_TYPES","name"],"mappings":"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"}
1
+ {"version":3,"file":"useContentManagerInitData.js","sources":["../../../admin/src/hooks/useContentManagerInitData.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n"],"names":["MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","state","notifyStatus","useNotifyAT","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","checkUserHasPermissions","useAuth","useTypedSelector","app","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","id","defaultMessage","error","type","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","collectionTypeLinks","singleType","singleTypeLinks","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","map","permissions","authorizedCollectionTypeLinks","filter","_","index","length","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","links","configurations","link","isDisplayed","collectionTypesPermissions","action","subject","uid","singleTypesPermissions","currentContentTypeConfig","find","search","searchParams","page","pageSize","settings","sort","defaultSortBy","defaultSortOrder","stringify","encode","title","info","displayName","to","COLLECTION_TYPES","SINGLE_TYPES","name"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useContentManagerInitData.mjs","sources":["../../../admin/src/hooks/useContentManagerInitData.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n"],"names":["MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","state","notifyStatus","useNotifyAT","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","checkUserHasPermissions","useAuth","useTypedSelector","app","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","id","defaultMessage","error","type","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","collectionTypeLinks","singleType","singleTypeLinks","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","map","permissions","authorizedCollectionTypeLinks","filter","_","index","length","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","links","configurations","link","isDisplayed","collectionTypesPermissions","action","subject","uid","singleTypesPermissions","currentContentTypeConfig","find","search","searchParams","page","pageSize","settings","sort","defaultSortBy","defaultSortOrder","stringify","encode","title","info","displayName","to","COLLECTION_TYPES","SINGLE_TYPES","name"],"mappings":"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"}
1
+ {"version":3,"file":"useContentManagerInitData.mjs","sources":["../../../admin/src/hooks/useContentManagerInitData.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n"],"names":["MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","state","notifyStatus","useNotifyAT","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","getTranslation","checkUserHasPermissions","useAuth","useTypedSelector","app","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","id","defaultMessage","error","type","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","collectionTypeLinks","singleType","singleTypeLinks","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","map","permissions","authorizedCollectionTypeLinks","filter","_","index","length","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","links","configurations","link","isDisplayed","collectionTypesPermissions","action","subject","uid","singleTypesPermissions","currentContentTypeConfig","find","search","searchParams","page","pageSize","settings","sort","defaultSortBy","defaultSortOrder","stringify","encode","title","info","displayName","to","COLLECTION_TYPES","SINGLE_TYPES","name"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useContentTypeSchema.js","sources":["../../../admin/src/hooks/useContentTypeSchema.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\n\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { ContentType } from '../../../shared/contracts/content-types';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\ntype ComponentsDictionary = Record<string, Component>;\n\n/**\n * @internal\n * @description Given a model UID, return the schema and the schemas\n * of the associated components within said model's schema. A wrapper\n * implementation around the `useGetInitialDataQuery` with a unique\n * `selectFromResult` function to memoize the calculation.\n *\n * If no model is provided, the hook will return all the schemas.\n */\nconst useContentTypeSchema = (model?: string) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading, isFetching } = useGetInitialDataQuery(undefined);\n\n const { components, contentType, contentTypes } = React.useMemo(() => {\n const contentType = data?.contentTypes.find((ct) => ct.uid === model);\n\n const componentsByKey = data?.components.reduce<ComponentsDictionary>((acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n }, {});\n\n const components = extractContentTypeComponents(contentType?.attributes, componentsByKey);\n\n return {\n components: Object.keys(components).length === 0 ? undefined : components,\n contentType,\n contentTypes: data?.contentTypes ?? [],\n };\n }, [model, data]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError]);\n\n return {\n // This must be memoized to avoid inifiinite re-renders where the empty object is different everytime.\n components: React.useMemo(() => components ?? {}, [components]),\n schema: contentType,\n schemas: contentTypes,\n isLoading: isLoading || isFetching,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * extractContentTypeComponents\n * -----------------------------------------------------------------------------------------------*/\n/**\n * @internal\n * @description Extracts the components used in a content type's attributes recursively.\n */\nconst extractContentTypeComponents = (\n attributes: ContentType['attributes'] = {},\n allComponents: ComponentsDictionary = {}\n): ComponentsDictionary => {\n const getComponents = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.reduce<string[]>((acc, attribute) => {\n /**\n * If the attribute is a component or dynamiczone, we need to recursively\n * extract the component UIDs from its attributes.\n */\n if (attribute.type === 'component') {\n const componentAttributes = Object.values(\n allComponents[attribute.component]?.attributes ?? {}\n );\n\n acc.push(attribute.component, ...getComponents(componentAttributes));\n } else if (attribute.type === 'dynamiczone') {\n acc.push(\n ...attribute.components,\n /**\n * Dynamic zones have an array of components, so we flatMap over them\n * performing the same search as above.\n */\n ...attribute.components.flatMap((componentUid) => {\n const componentAttributes = Object.values(\n allComponents[componentUid]?.attributes ?? {}\n );\n\n return getComponents(componentAttributes);\n })\n );\n }\n\n return acc;\n }, []);\n };\n\n const componentUids = getComponents(Object.values(attributes));\n\n const uniqueComponentUids = [...new Set(componentUids)];\n\n const componentsByKey = uniqueComponentUids.reduce<ComponentsDictionary>((acc, uid) => {\n acc[uid] = allComponents[uid];\n\n return acc;\n }, {});\n\n return componentsByKey;\n};\n\nexport { useContentTypeSchema, extractContentTypeComponents };\nexport type { ComponentsDictionary };\n"],"names":["useContentTypeSchema","model","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","data","error","isLoading","isFetching","useGetInitialDataQuery","undefined","components","contentType","contentTypes","React","useMemo","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","keys","length","useEffect","type","message","schema","schemas","allComponents","getComponents","attribute","componentAttributes","values","push","flatMap","componentUid","componentUids","uniqueComponentUids","Set"],"mappings":"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"}
1
+ {"version":3,"file":"useContentTypeSchema.js","sources":["../../../admin/src/hooks/useContentTypeSchema.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\n\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { ContentType } from '../../../shared/contracts/content-types';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\ntype ComponentsDictionary = Record<string, Component>;\n\n/**\n * @internal\n * @description Given a model UID, return the schema and the schemas\n * of the associated components within said model's schema. A wrapper\n * implementation around the `useGetInitialDataQuery` with a unique\n * `selectFromResult` function to memoize the calculation.\n *\n * If no model is provided, the hook will return all the schemas.\n */\nconst useContentTypeSchema = (model?: string) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading, isFetching } = useGetInitialDataQuery(undefined);\n\n const { components, contentType, contentTypes } = React.useMemo(() => {\n const contentType = data?.contentTypes.find((ct) => ct.uid === model);\n\n const componentsByKey = data?.components.reduce<ComponentsDictionary>((acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n }, {});\n\n const components = extractContentTypeComponents(contentType?.attributes, componentsByKey);\n\n return {\n components: Object.keys(components).length === 0 ? undefined : components,\n contentType,\n contentTypes: data?.contentTypes ?? [],\n };\n }, [model, data]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError]);\n\n return {\n // This must be memoized to avoid inifiinite re-renders where the empty object is different everytime.\n components: React.useMemo(() => components ?? {}, [components]),\n schema: contentType,\n schemas: contentTypes,\n isLoading: isLoading || isFetching,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * extractContentTypeComponents\n * -----------------------------------------------------------------------------------------------*/\n/**\n * @internal\n * @description Extracts the components used in a content type's attributes recursively.\n */\nconst extractContentTypeComponents = (\n attributes: ContentType['attributes'] = {},\n allComponents: ComponentsDictionary = {}\n): ComponentsDictionary => {\n const getComponents = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.reduce<string[]>((acc, attribute) => {\n /**\n * If the attribute is a component or dynamiczone, we need to recursively\n * extract the component UIDs from its attributes.\n */\n if (attribute.type === 'component') {\n const componentAttributes = Object.values(\n allComponents[attribute.component]?.attributes ?? {}\n );\n\n acc.push(attribute.component, ...getComponents(componentAttributes));\n } else if (attribute.type === 'dynamiczone') {\n acc.push(\n ...attribute.components,\n /**\n * Dynamic zones have an array of components, so we flatMap over them\n * performing the same search as above.\n */\n ...attribute.components.flatMap((componentUid) => {\n const componentAttributes = Object.values(\n allComponents[componentUid]?.attributes ?? {}\n );\n\n return getComponents(componentAttributes);\n })\n );\n }\n\n return acc;\n }, []);\n };\n\n const componentUids = getComponents(Object.values(attributes));\n\n const uniqueComponentUids = [...new Set(componentUids)];\n\n const componentsByKey = uniqueComponentUids.reduce<ComponentsDictionary>((acc, uid) => {\n acc[uid] = allComponents[uid];\n\n return acc;\n }, {});\n\n return componentsByKey;\n};\n\nexport { useContentTypeSchema, extractContentTypeComponents };\nexport type { ComponentsDictionary };\n"],"names":["useContentTypeSchema","model","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","data","error","isLoading","isFetching","useGetInitialDataQuery","undefined","components","contentType","contentTypes","React","useMemo","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","keys","length","useEffect","type","message","schema","schemas","allComponents","getComponents","attribute","componentAttributes","values","push","flatMap","componentUid","componentUids","uniqueComponentUids","Set"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA;;;;;;;;IASA,MAAMA,uBAAuB,CAACC,KAAAA,GAAAA;IAC5B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;IAEpD,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGC,2BAAAA,CAAuBC,SAAAA,CAAAA;IAEtE,MAAM,EAAEC,UAAU,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAGC,gBAAAA,CAAMC,OAAO,CAAC,IAAA;QAC9D,MAAMH,WAAAA,GAAcP,MAAMQ,YAAAA,CAAaG,IAAAA,CAAK,CAACC,EAAAA,GAAOA,EAAAA,CAAGC,GAAG,KAAKnB,KAAAA,CAAAA;AAE/D,QAAA,MAAMoB,eAAAA,GAAkBd,IAAAA,EAAMM,UAAAA,CAAWS,MAAAA,CAA6B,CAACC,GAAAA,EAAKC,SAAAA,GAAAA;AAC1ED,YAAAA,GAAG,CAACC,SAAAA,CAAUJ,GAAG,CAAC,GAAGI,SAAAA;YAErB,OAAOD,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;QAEJ,MAAMV,UAAAA,GAAaY,4BAAAA,CAA6BX,WAAAA,EAAaY,UAAAA,EAAYL,eAAAA,CAAAA;QAEzE,OAAO;AACLR,YAAAA,UAAAA,EAAYc,OAAOC,IAAI,CAACf,YAAYgB,MAAM,KAAK,IAAIjB,SAAAA,GAAYC,UAAAA;AAC/DC,YAAAA,WAAAA;YACAC,YAAAA,EAAcR,IAAAA,EAAMQ,gBAAgB;AACtC,SAAA;IACF,CAAA,EAAG;AAACd,QAAAA,KAAAA;AAAOM,QAAAA;AAAK,KAAA,CAAA;AAEhBS,IAAAA,gBAAAA,CAAMc,SAAS,CAAC,IAAA;AACd,QAAA,IAAItB,KAAAA,EAAO;YACTN,kBAAAA,CAAmB;gBACjB6B,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAS3B,cAAAA,CAAeG,KAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACN,QAAAA,kBAAAA;AAAoBM,QAAAA,KAAAA;AAAOH,QAAAA;AAAe,KAAA,CAAA;IAE9C,OAAO;;AAELQ,QAAAA,UAAAA,EAAYG,iBAAMC,OAAO,CAAC,IAAMJ,UAAAA,IAAc,EAAC,EAAG;AAACA,YAAAA;AAAW,SAAA,CAAA;QAC9DoB,MAAAA,EAAQnB,WAAAA;QACRoB,OAAAA,EAASnB,YAAAA;AACTN,QAAAA,SAAAA,EAAWA,SAAAA,IAAaC;AAC1B,KAAA;AACF;AAEA;;;;;IAOA,MAAMe,+BAA+B,CACnCC,UAAAA,GAAwC,EAAE,EAC1CS,aAAAA,GAAsC,EAAE,GAAA;AAExC,IAAA,MAAMC,gBAAgB,CAACV,UAAAA,GAAAA;AACrB,QAAA,OAAOA,UAAAA,CAAWJ,MAAM,CAAW,CAACC,GAAAA,EAAKc,SAAAA,GAAAA;AACvC;;;AAGC,UACD,IAAIA,SAAAA,CAAUN,IAAI,KAAK,WAAA,EAAa;gBAClC,MAAMO,mBAAAA,GAAsBX,MAAAA,CAAOY,MAAM,CACvCJ,aAAa,CAACE,SAAAA,CAAUb,SAAS,CAAC,EAAEE,UAAAA,IAAc,EAAC,CAAA;AAGrDH,gBAAAA,GAAAA,CAAIiB,IAAI,CAACH,SAAAA,CAAUb,SAAS,KAAKY,aAAAA,CAAcE,mBAAAA,CAAAA,CAAAA;AACjD,YAAA,CAAA,MAAO,IAAID,SAAAA,CAAUN,IAAI,KAAK,aAAA,EAAe;AAC3CR,gBAAAA,GAAAA,CAAIiB,IAAI,CAAA,GACHH,SAAAA,CAAUxB,UAAU;;;AAItB,cAAA,GACEwB,SAAAA,CAAUxB,UAAU,CAAC4B,OAAO,CAAC,CAACC,YAAAA,GAAAA;oBAC/B,MAAMJ,mBAAAA,GAAsBX,OAAOY,MAAM,CACvCJ,aAAa,CAACO,YAAAA,CAAa,EAAEhB,UAAAA,IAAc,EAAC,CAAA;AAG9C,oBAAA,OAAOU,aAAAA,CAAcE,mBAAAA,CAAAA;AACvB,gBAAA,CAAA,CAAA,CAAA;AAEJ,YAAA;YAEA,OAAOf,GAAAA;AACT,QAAA,CAAA,EAAG,EAAE,CAAA;AACP,IAAA,CAAA;AAEA,IAAA,MAAMoB,aAAAA,GAAgBP,aAAAA,CAAcT,MAAAA,CAAOY,MAAM,CAACb,UAAAA,CAAAA,CAAAA;AAElD,IAAA,MAAMkB,mBAAAA,GAAsB;AAAI,QAAA,GAAA,IAAIC,GAAAA,CAAIF,aAAAA;AAAe,KAAA;AAEvD,IAAA,MAAMtB,eAAAA,GAAkBuB,mBAAAA,CAAoBtB,MAAM,CAAuB,CAACC,GAAAA,EAAKH,GAAAA,GAAAA;AAC7EG,QAAAA,GAAG,CAACH,GAAAA,CAAI,GAAGe,aAAa,CAACf,GAAAA,CAAI;QAE7B,OAAOG,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;IAEJ,OAAOF,eAAAA;AACT;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useContentTypeSchema.mjs","sources":["../../../admin/src/hooks/useContentTypeSchema.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\n\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { ContentType } from '../../../shared/contracts/content-types';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\ntype ComponentsDictionary = Record<string, Component>;\n\n/**\n * @internal\n * @description Given a model UID, return the schema and the schemas\n * of the associated components within said model's schema. A wrapper\n * implementation around the `useGetInitialDataQuery` with a unique\n * `selectFromResult` function to memoize the calculation.\n *\n * If no model is provided, the hook will return all the schemas.\n */\nconst useContentTypeSchema = (model?: string) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading, isFetching } = useGetInitialDataQuery(undefined);\n\n const { components, contentType, contentTypes } = React.useMemo(() => {\n const contentType = data?.contentTypes.find((ct) => ct.uid === model);\n\n const componentsByKey = data?.components.reduce<ComponentsDictionary>((acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n }, {});\n\n const components = extractContentTypeComponents(contentType?.attributes, componentsByKey);\n\n return {\n components: Object.keys(components).length === 0 ? undefined : components,\n contentType,\n contentTypes: data?.contentTypes ?? [],\n };\n }, [model, data]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError]);\n\n return {\n // This must be memoized to avoid inifiinite re-renders where the empty object is different everytime.\n components: React.useMemo(() => components ?? {}, [components]),\n schema: contentType,\n schemas: contentTypes,\n isLoading: isLoading || isFetching,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * extractContentTypeComponents\n * -----------------------------------------------------------------------------------------------*/\n/**\n * @internal\n * @description Extracts the components used in a content type's attributes recursively.\n */\nconst extractContentTypeComponents = (\n attributes: ContentType['attributes'] = {},\n allComponents: ComponentsDictionary = {}\n): ComponentsDictionary => {\n const getComponents = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.reduce<string[]>((acc, attribute) => {\n /**\n * If the attribute is a component or dynamiczone, we need to recursively\n * extract the component UIDs from its attributes.\n */\n if (attribute.type === 'component') {\n const componentAttributes = Object.values(\n allComponents[attribute.component]?.attributes ?? {}\n );\n\n acc.push(attribute.component, ...getComponents(componentAttributes));\n } else if (attribute.type === 'dynamiczone') {\n acc.push(\n ...attribute.components,\n /**\n * Dynamic zones have an array of components, so we flatMap over them\n * performing the same search as above.\n */\n ...attribute.components.flatMap((componentUid) => {\n const componentAttributes = Object.values(\n allComponents[componentUid]?.attributes ?? {}\n );\n\n return getComponents(componentAttributes);\n })\n );\n }\n\n return acc;\n }, []);\n };\n\n const componentUids = getComponents(Object.values(attributes));\n\n const uniqueComponentUids = [...new Set(componentUids)];\n\n const componentsByKey = uniqueComponentUids.reduce<ComponentsDictionary>((acc, uid) => {\n acc[uid] = allComponents[uid];\n\n return acc;\n }, {});\n\n return componentsByKey;\n};\n\nexport { useContentTypeSchema, extractContentTypeComponents };\nexport type { ComponentsDictionary };\n"],"names":["useContentTypeSchema","model","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","data","error","isLoading","isFetching","useGetInitialDataQuery","undefined","components","contentType","contentTypes","React","useMemo","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","keys","length","useEffect","type","message","schema","schemas","allComponents","getComponents","attribute","componentAttributes","values","push","flatMap","componentUid","componentUids","uniqueComponentUids","Set"],"mappings":"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"}
1
+ {"version":3,"file":"useContentTypeSchema.mjs","sources":["../../../admin/src/hooks/useContentTypeSchema.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\n\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { ContentType } from '../../../shared/contracts/content-types';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\ntype ComponentsDictionary = Record<string, Component>;\n\n/**\n * @internal\n * @description Given a model UID, return the schema and the schemas\n * of the associated components within said model's schema. A wrapper\n * implementation around the `useGetInitialDataQuery` with a unique\n * `selectFromResult` function to memoize the calculation.\n *\n * If no model is provided, the hook will return all the schemas.\n */\nconst useContentTypeSchema = (model?: string) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading, isFetching } = useGetInitialDataQuery(undefined);\n\n const { components, contentType, contentTypes } = React.useMemo(() => {\n const contentType = data?.contentTypes.find((ct) => ct.uid === model);\n\n const componentsByKey = data?.components.reduce<ComponentsDictionary>((acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n }, {});\n\n const components = extractContentTypeComponents(contentType?.attributes, componentsByKey);\n\n return {\n components: Object.keys(components).length === 0 ? undefined : components,\n contentType,\n contentTypes: data?.contentTypes ?? [],\n };\n }, [model, data]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError]);\n\n return {\n // This must be memoized to avoid inifiinite re-renders where the empty object is different everytime.\n components: React.useMemo(() => components ?? {}, [components]),\n schema: contentType,\n schemas: contentTypes,\n isLoading: isLoading || isFetching,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * extractContentTypeComponents\n * -----------------------------------------------------------------------------------------------*/\n/**\n * @internal\n * @description Extracts the components used in a content type's attributes recursively.\n */\nconst extractContentTypeComponents = (\n attributes: ContentType['attributes'] = {},\n allComponents: ComponentsDictionary = {}\n): ComponentsDictionary => {\n const getComponents = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.reduce<string[]>((acc, attribute) => {\n /**\n * If the attribute is a component or dynamiczone, we need to recursively\n * extract the component UIDs from its attributes.\n */\n if (attribute.type === 'component') {\n const componentAttributes = Object.values(\n allComponents[attribute.component]?.attributes ?? {}\n );\n\n acc.push(attribute.component, ...getComponents(componentAttributes));\n } else if (attribute.type === 'dynamiczone') {\n acc.push(\n ...attribute.components,\n /**\n * Dynamic zones have an array of components, so we flatMap over them\n * performing the same search as above.\n */\n ...attribute.components.flatMap((componentUid) => {\n const componentAttributes = Object.values(\n allComponents[componentUid]?.attributes ?? {}\n );\n\n return getComponents(componentAttributes);\n })\n );\n }\n\n return acc;\n }, []);\n };\n\n const componentUids = getComponents(Object.values(attributes));\n\n const uniqueComponentUids = [...new Set(componentUids)];\n\n const componentsByKey = uniqueComponentUids.reduce<ComponentsDictionary>((acc, uid) => {\n acc[uid] = allComponents[uid];\n\n return acc;\n }, {});\n\n return componentsByKey;\n};\n\nexport { useContentTypeSchema, extractContentTypeComponents };\nexport type { ComponentsDictionary };\n"],"names":["useContentTypeSchema","model","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","data","error","isLoading","isFetching","useGetInitialDataQuery","undefined","components","contentType","contentTypes","React","useMemo","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","keys","length","useEffect","type","message","schema","schemas","allComponents","getComponents","attribute","componentAttributes","values","push","flatMap","componentUid","componentUids","uniqueComponentUids","Set"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDebounce.js","sources":["../../../admin/src/hooks/useDebounce.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout"],"mappings":";;;;AAEO,SAASA,WAAAA,CAAoBC,KAAa,EAAEC,KAAa,EAAA;AAC9D,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAkB,CAAA,GAAGC,cAASJ,CAAAA,KAAAA,CAAAA;IAErDK,eAAU,CAAA,IAAA;AACR,QAAA,MAAMC,UAAUC,UAAW,CAAA,IAAA;YACzBJ,iBAAkBH,CAAAA,KAAAA,CAAAA;SACjBC,EAAAA,KAAAA,CAAAA;QAEH,OAAO,IAAA;YACLO,YAAaF,CAAAA,OAAAA,CAAAA;AACf,SAAA;KACC,EAAA;AAACN,QAAAA,KAAAA;AAAOC,QAAAA;AAAM,KAAA,CAAA;IAEjB,OAAOC,cAAAA;AACT;;;;"}
1
+ {"version":3,"file":"useDebounce.js","sources":["../../../admin/src/hooks/useDebounce.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout"],"mappings":";;;;AAEO,SAASA,WAAAA,CAAoBC,KAAa,EAAEC,KAAa,EAAA;AAC9D,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAAA,CAAkB,GAAGC,cAAAA,CAASJ,KAAAA,CAAAA;IAErDK,eAAAA,CAAU,IAAA;AACR,QAAA,MAAMC,UAAUC,UAAAA,CAAW,IAAA;YACzBJ,iBAAAA,CAAkBH,KAAAA,CAAAA;QACpB,CAAA,EAAGC,KAAAA,CAAAA;QAEH,OAAO,IAAA;YACLO,YAAAA,CAAaF,OAAAA,CAAAA;AACf,QAAA,CAAA;IACF,CAAA,EAAG;AAACN,QAAAA,KAAAA;AAAOC,QAAAA;AAAM,KAAA,CAAA;IAEjB,OAAOC,cAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDebounce.mjs","sources":["../../../admin/src/hooks/useDebounce.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout"],"mappings":";;AAEO,SAASA,WAAAA,CAAoBC,KAAa,EAAEC,KAAa,EAAA;AAC9D,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAkB,CAAA,GAAGC,QAASJ,CAAAA,KAAAA,CAAAA;IAErDK,SAAU,CAAA,IAAA;AACR,QAAA,MAAMC,UAAUC,UAAW,CAAA,IAAA;YACzBJ,iBAAkBH,CAAAA,KAAAA,CAAAA;SACjBC,EAAAA,KAAAA,CAAAA;QAEH,OAAO,IAAA;YACLO,YAAaF,CAAAA,OAAAA,CAAAA;AACf,SAAA;KACC,EAAA;AAACN,QAAAA,KAAAA;AAAOC,QAAAA;AAAM,KAAA,CAAA;IAEjB,OAAOC,cAAAA;AACT;;;;"}
1
+ {"version":3,"file":"useDebounce.mjs","sources":["../../../admin/src/hooks/useDebounce.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout"],"mappings":";;AAEO,SAASA,WAAAA,CAAoBC,KAAa,EAAEC,KAAa,EAAA;AAC9D,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAAA,CAAkB,GAAGC,QAAAA,CAASJ,KAAAA,CAAAA;IAErDK,SAAAA,CAAU,IAAA;AACR,QAAA,MAAMC,UAAUC,UAAAA,CAAW,IAAA;YACzBJ,iBAAAA,CAAkBH,KAAAA,CAAAA;QACpB,CAAA,EAAGC,KAAAA,CAAAA;QAEH,OAAO,IAAA;YACLO,YAAAA,CAAaF,OAAAA,CAAAA;AACf,QAAA,CAAA;IACF,CAAA,EAAG;AAACN,QAAAA,KAAAA;AAAOC,QAAAA;AAAM,KAAA,CAAA;IAEjB,OAAOC,cAAAA;AACT;;;;"}