@strapi/content-manager 0.0.0-experimental.4ba6327ad9358dc248e95b1ff7d6566fc59325c8 → 0.0.0-experimental.4bff63e3a112a60282524bf4515b64d9cf4e48b6

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 (318) hide show
  1. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
  2. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  4. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Fields.js +4 -1
  6. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  12. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  13. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  14. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  15. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/LeftMenu.js +91 -51
  26. package/dist/admin/components/LeftMenu.js.map +1 -1
  27. package/dist/admin/components/LeftMenu.mjs +93 -53
  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 +34 -10
  32. package/dist/admin/components/Widgets.js.map +1 -1
  33. package/dist/admin/components/Widgets.mjs +34 -10
  34. package/dist/admin/components/Widgets.mjs.map +1 -1
  35. package/dist/admin/content-manager.js.map +1 -1
  36. package/dist/admin/content-manager.mjs.map +1 -1
  37. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  38. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  39. package/dist/admin/history/components/VersionHeader.js +1 -0
  40. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  41. package/dist/admin/history/components/VersionHeader.mjs +1 -0
  42. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  43. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  44. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  45. package/dist/admin/history/components/VersionsList.js +1 -1
  46. package/dist/admin/history/components/VersionsList.js.map +1 -1
  47. package/dist/admin/history/components/VersionsList.mjs +1 -1
  48. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  49. package/dist/admin/history/pages/History.js +7 -7
  50. package/dist/admin/history/pages/History.js.map +1 -1
  51. package/dist/admin/history/pages/History.mjs +7 -7
  52. package/dist/admin/history/pages/History.mjs.map +1 -1
  53. package/dist/admin/history/services/historyVersion.js.map +1 -1
  54. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  55. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  56. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  57. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  58. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  59. package/dist/admin/index.js.map +1 -1
  60. package/dist/admin/index.mjs.map +1 -1
  61. package/dist/admin/layout.js +27 -6
  62. package/dist/admin/layout.js.map +1 -1
  63. package/dist/admin/layout.mjs +28 -7
  64. package/dist/admin/layout.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/EditViewPage.js +19 -22
  66. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  67. package/dist/admin/pages/EditView/EditViewPage.mjs +20 -23
  68. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  70. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  71. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  72. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  73. package/dist/admin/pages/EditView/components/DocumentActions.js +27 -4
  74. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  75. package/dist/admin/pages/EditView/components/DocumentActions.mjs +28 -5
  76. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  78. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  80. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  82. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  84. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  86. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  88. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  90. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  102. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
  104. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +3 -2
  106. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  108. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  110. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
  112. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -4
  114. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  116. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  118. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
  120. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
  122. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  124. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  126. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  130. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  132. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormLayout.js +13 -8
  140. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
  142. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  143. package/dist/admin/pages/EditView/components/Header.js +92 -27
  144. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  145. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  146. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/InputRenderer.js +32 -18
  148. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/InputRenderer.mjs +32 -18
  150. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/utils/data.js +34 -9
  152. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  153. package/dist/admin/pages/EditView/utils/data.mjs +34 -9
  154. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  155. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  156. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  157. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  158. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  159. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  160. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  161. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  162. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  163. package/dist/admin/pages/ListView/ListViewPage.js +8 -8
  164. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  165. package/dist/admin/pages/ListView/ListViewPage.mjs +8 -8
  166. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  167. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  168. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  169. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  170. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  171. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  172. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  173. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  174. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  175. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  176. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  177. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  178. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  179. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  180. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  181. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  182. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  183. package/dist/admin/preview/components/InputPopover.js +189 -0
  184. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  185. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  186. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  187. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  188. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  189. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  190. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  191. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  192. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  193. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  194. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  195. package/dist/admin/preview/pages/Preview.js +144 -106
  196. package/dist/admin/preview/pages/Preview.js.map +1 -1
  197. package/dist/admin/preview/pages/Preview.mjs +145 -107
  198. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  199. package/dist/admin/preview/services/preview.js.map +1 -1
  200. package/dist/admin/preview/services/preview.mjs.map +1 -1
  201. package/dist/admin/preview/utils/constants.js +56 -0
  202. package/dist/admin/preview/utils/constants.js.map +1 -0
  203. package/dist/admin/preview/utils/constants.mjs +52 -0
  204. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  205. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  206. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  207. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  208. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  209. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  210. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  211. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  212. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  213. package/dist/admin/preview/utils/previewScript.js +534 -0
  214. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  215. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  216. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  217. package/dist/admin/router.js.map +1 -1
  218. package/dist/admin/router.mjs.map +1 -1
  219. package/dist/admin/services/api.js +3 -1
  220. package/dist/admin/services/api.js.map +1 -1
  221. package/dist/admin/services/api.mjs +3 -1
  222. package/dist/admin/services/api.mjs.map +1 -1
  223. package/dist/admin/services/documents.js +39 -13
  224. package/dist/admin/services/documents.js.map +1 -1
  225. package/dist/admin/services/documents.mjs +39 -13
  226. package/dist/admin/services/documents.mjs.map +1 -1
  227. package/dist/admin/services/homepage.js.map +1 -1
  228. package/dist/admin/services/homepage.mjs.map +1 -1
  229. package/dist/admin/services/relations.js.map +1 -1
  230. package/dist/admin/services/relations.mjs.map +1 -1
  231. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  232. package/dist/admin/src/components/Widgets.d.ts +6 -2
  233. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  234. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  235. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  236. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
  237. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  238. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  239. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  240. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  241. package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
  242. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  243. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  244. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  245. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  246. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  247. package/dist/admin/src/services/api.d.ts +1 -1
  248. package/dist/admin/src/services/components.d.ts +2 -2
  249. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  250. package/dist/admin/src/services/documents.d.ts +16 -16
  251. package/dist/admin/src/services/homepage.d.ts +1 -1
  252. package/dist/admin/src/services/init.d.ts +1 -1
  253. package/dist/admin/src/services/relations.d.ts +2 -2
  254. package/dist/admin/src/services/uid.d.ts +3 -3
  255. package/dist/admin/translations/en.json.js +6 -0
  256. package/dist/admin/translations/en.json.js.map +1 -1
  257. package/dist/admin/translations/en.json.mjs +6 -0
  258. package/dist/admin/translations/en.json.mjs.map +1 -1
  259. package/dist/admin/translations/es.json.js +1 -0
  260. package/dist/admin/translations/es.json.js.map +1 -1
  261. package/dist/admin/translations/es.json.mjs +1 -0
  262. package/dist/admin/translations/es.json.mjs.map +1 -1
  263. package/dist/admin/translations/fr.json.js +1 -0
  264. package/dist/admin/translations/fr.json.js.map +1 -1
  265. package/dist/admin/translations/fr.json.mjs +1 -0
  266. package/dist/admin/translations/fr.json.mjs.map +1 -1
  267. package/dist/admin/utils/translations.js.map +1 -1
  268. package/dist/admin/utils/translations.mjs.map +1 -1
  269. package/dist/admin/utils/urls.js.map +1 -1
  270. package/dist/admin/utils/urls.mjs.map +1 -1
  271. package/dist/admin/utils/users.js.map +1 -1
  272. package/dist/admin/utils/users.mjs.map +1 -1
  273. package/dist/admin/utils/validation.js.map +1 -1
  274. package/dist/admin/utils/validation.mjs.map +1 -1
  275. package/dist/server/controllers/collection-types.js +2 -1
  276. package/dist/server/controllers/collection-types.js.map +1 -1
  277. package/dist/server/controllers/collection-types.mjs +2 -1
  278. package/dist/server/controllers/collection-types.mjs.map +1 -1
  279. package/dist/server/controllers/relations.js +6 -4
  280. package/dist/server/controllers/relations.js.map +1 -1
  281. package/dist/server/controllers/relations.mjs +6 -4
  282. package/dist/server/controllers/relations.mjs.map +1 -1
  283. package/dist/server/controllers/single-types.js.map +1 -1
  284. package/dist/server/controllers/single-types.mjs.map +1 -1
  285. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  286. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  287. package/dist/server/controllers/validation/index.js.map +1 -1
  288. package/dist/server/controllers/validation/index.mjs.map +1 -1
  289. package/dist/server/history/utils.js.map +1 -1
  290. package/dist/server/history/utils.mjs.map +1 -1
  291. package/dist/server/homepage/services/homepage.js +2 -2
  292. package/dist/server/homepage/services/homepage.js.map +1 -1
  293. package/dist/server/homepage/services/homepage.mjs +2 -2
  294. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  295. package/dist/server/middlewares/routing.js.map +1 -1
  296. package/dist/server/middlewares/routing.mjs.map +1 -1
  297. package/dist/server/preview/services/preview-config.js +8 -33
  298. package/dist/server/preview/services/preview-config.js.map +1 -1
  299. package/dist/server/preview/services/preview-config.mjs +9 -34
  300. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  301. package/dist/server/preview/services/preview.js.map +1 -1
  302. package/dist/server/preview/services/preview.mjs.map +1 -1
  303. package/dist/server/preview/utils.js.map +1 -1
  304. package/dist/server/preview/utils.mjs.map +1 -1
  305. package/dist/server/services/configuration.js.map +1 -1
  306. package/dist/server/services/configuration.mjs.map +1 -1
  307. package/dist/server/services/field-sizes.js.map +1 -1
  308. package/dist/server/services/field-sizes.mjs.map +1 -1
  309. package/dist/server/services/uid.js.map +1 -1
  310. package/dist/server/services/uid.mjs.map +1 -1
  311. package/dist/server/services/utils/store.js.map +1 -1
  312. package/dist/server/services/utils/store.mjs.map +1 -1
  313. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  314. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  315. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  316. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  317. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  318. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"History.js","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } 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 direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100vh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\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 height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\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","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","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 { useQueryParams, Page, createContext, useRBAC } 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 direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100dvh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\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 height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={4}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={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","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
@@ -126,7 +126,7 @@ const [HistoryProvider, useHistoryContext] = createContext('HistoryPage');
126
126
  children: [
127
127
  /*#__PURE__*/ jsxs(Main, {
128
128
  grow: 1,
129
- height: "100vh",
129
+ height: "100dvh",
130
130
  background: "neutral100",
131
131
  paddingBottom: 6,
132
132
  overflow: "auto",
@@ -158,23 +158,23 @@ const [HistoryProvider, useHistoryContext] = createContext('HistoryPage');
158
158
  }
159
159
  if (error || !slug) {
160
160
  return /*#__PURE__*/ jsx(Box, {
161
- height: "100vh",
162
- width: "100vw",
161
+ height: "100dvh",
162
+ width: "100dvw",
163
163
  position: "fixed",
164
164
  top: 0,
165
165
  left: 0,
166
- zIndex: 2,
166
+ zIndex: 4,
167
167
  background: "neutral0",
168
168
  children: /*#__PURE__*/ jsx(Page.Error, {})
169
169
  });
170
170
  }
171
171
  return /*#__PURE__*/ jsx(Box, {
172
- height: "100vh",
173
- width: "100vw",
172
+ height: "100dvh",
173
+ width: "100dvw",
174
174
  position: "fixed",
175
175
  top: 0,
176
176
  left: 0,
177
- zIndex: 2,
177
+ zIndex: 4,
178
178
  background: "neutral0",
179
179
  children: /*#__PURE__*/ jsx(Page.Protect, {
180
180
  permissions: permissions,
@@ -1 +1 @@
1
- {"version":3,"file":"History.mjs","sources":["../../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } 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 direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100vh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\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 height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\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","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","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 { useQueryParams, Page, createContext, useRBAC } 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 direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100dvh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n\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 height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={4}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={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","alignItems","Main","grow","height","background","paddingBottom","overflow","labelledBy","VersionHeader","VersionContent","VersionsList","ProtectedHistoryPageImpl","permissions","useRBAC","PERMISSIONS","map","subject","Box","width","position","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
@@ -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;AACNC,4BAAAA,EAAAA,EACEF,cAAmBG,KAAAA,4BAAAA,GACf,CAAC,EAAEjB,MAAOkB,CAAAA,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAW,CAAC,GACrCb,OAAOkB;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,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 +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;AACNC,4BAAAA,EAAAA,EACEF,cAAmBG,KAAAA,gBAAAA,GACf,CAAC,EAAEjB,MAAOkB,CAAAA,WAAW,CAAC,CAAC,EAAEL,UAAAA,CAAW,CAAC,GACrCb,OAAOkB;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,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 +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":";;;;;;;;;;;;;AA4BA,MAAM,EAAEA,6BAA6B,EAAEC,yBAAyB,EAAE,GAAGC,KAAAA;AAarE,MAAMC,yBAA4B,GAAA,IAAA;IAChC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAMC,QAAWC,GAAAA,gBAAAA,EAAAA;AACjB,IAAA,MAAMC,mBAAmBC,YACvB,CAAA,2BAAA,EACA,CAACC,KAAAA,GAAUA,MAAMF,gBAAgB,CAAA;IAEnC,MAAM,EAAEG,YAAY,EAAE,GAAGC,WAAAA,EAAAA;IACzB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAmBC,CAAAA,cAAAA,CAAAA;AACvE,IAAA,MAAMC,0BAA0BC,OAC9B,CAAA,2BAAA,EACA,CAACV,KAAAA,GAAUA,MAAMS,uBAAuB,CAAA;IAG1C,MAAMT,KAAAA,GAAQW,iBAAiB,CAACX,KAAAA,GAAUA,KAAK,CAAC,iBAAA,CAAkB,CAACY,GAAG,CAAA;IAEtE,MAAMC,gBAAAA,GAAmBC,uBAAuBC,SAAW,EAAA;AACzD;;;AAGC,QACDC,yBAA2B,EAAA;AAC7B,KAAA,CAAA;IAEAC,SAAU,CAAA,IAAA;QACR,IAAIJ,gBAAAA,CAAiBK,IAAI,EAAE;AACzBjB,YAAAA,YAAAA,CACEE,aAAc,CAAA;AACZgB,gBAAAA,EAAAA,EAAIX,cAAe,CAAA,yBAAA,CAAA;gBACnBY,cAAgB,EAAA;AAClB,aAAA,CAAA,CAAA;AAEJ;KACC,EAAA;AAACjB,QAAAA,aAAAA;AAAeU,QAAAA,gBAAAA,CAAiBK,IAAI;AAAEjB,QAAAA;AAAa,KAAA,CAAA;IAEvDgB,SAAU,CAAA,IAAA;QACR,IAAIJ,gBAAAA,CAAiBQ,KAAK,EAAE;YAC1B3B,kBAAmB,CAAA;gBAAE4B,IAAM,EAAA,QAAA;gBAAUC,OAASjB,EAAAA,cAAAA,CAAeO,iBAAiBQ,KAAK;AAAE,aAAA,CAAA;AACvF;KACC,EAAA;AAACf,QAAAA,cAAAA;AAAgBO,QAAAA,gBAAAA,CAAiBQ,KAAK;AAAE3B,QAAAA;AAAmB,KAAA,CAAA;AAE/D,IAAA,MAAM8B,wBAA2BC,GAAAA,iCAAAA,EAAAA;IAEjCR,SAAU,CAAA,IAAA;QACR,IAAIO,wBAAAA,CAAyBH,KAAK,EAAE;YAClC3B,kBAAmB,CAAA;gBACjB4B,IAAM,EAAA,QAAA;gBACNC,OAASjB,EAAAA,cAAAA,CAAekB,yBAAyBH,KAAK;AACxD,aAAA,CAAA;AACF;KACC,EAAA;AAACf,QAAAA,cAAAA;AAAgBkB,QAAAA,wBAAAA,CAAyBH,KAAK;AAAE3B,QAAAA;AAAmB,KAAA,CAAA;AAEvE,IAAA,MAAMgC,UAAa,GAAA,OACjBC,UACAC,EAAAA,YAAAA,EACAC,UACAC,EAAAA,yBAAAA,GAAAA;AAEA;;;;;;;AAOC,QACD,MAAM,EAAEC,cAAgBC,EAAAA,mBAAmB,EAAEC,UAAAA,EAAYC,eAAe,EAAE,GACxEN,YAAAA,CAAaO,MAAM,CAIjB,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AACJD,YAAAA,GAAG,CAACC,KAAMC,CAAAA,IAAI,CAAC,CAACC,IAAI,CAACF,KAAAA,CAAAA;YACrB,OAAOD,GAAAA;SAET,EAAA;AACEL,YAAAA,cAAAA,EAAgB,EAAE;AAClBE,YAAAA,UAAAA,EAAY;AACd,SAAA,CAAA;QAEJ,MAAMO,0BAAAA,GAA6BC,aACjCT,CAAAA,mBAAAA,EACA,iBACAF,EAAAA,yBAAAA,CAAAA;QAEF,MAAMY,sBAAAA,GAAyBD,cAAcP,eAAiB,EAAA,aAAA,CAAA;;AAG9D,QAAA,MAAMS,8BAAiC,GAAA,MAAMC,OAAQC,CAAAA,GAAG,CACtDL,0BAAAA,CAA2BM,GAAG,CAAC,CAAC,EAAEC,WAAW,EAAE,GAAKtC,uBAAwBsC,CAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAG9E,QAAA,MAAMC,6BAAgCR,GAAAA,0BAAAA,CAA2BS,MAAM,CACrE,CAACC,CAAAA,EAAGC,KAAUR,GAAAA,8BAA8B,CAACQ,KAAAA,CAAM,CAACC,MAAM,GAAG,CAAA,CAAA;;AAI/D,QAAA,MAAMC,0BAA6B,GAAA,MAAMT,OAAQC,CAAAA,GAAG,CAClDH,sBAAAA,CAAuBI,GAAG,CAAC,CAAC,EAAEC,WAAW,EAAE,GAAKtC,uBAAwBsC,CAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAE1E,QAAA,MAAMO,yBAA4BZ,GAAAA,sBAAAA,CAAuBO,MAAM,CAC7D,CAACC,CAAAA,EAAGC,KAAUE,GAAAA,0BAA0B,CAACF,KAAAA,CAAM,CAACC,MAAM,GAAG,CAAA,CAAA;AAE3D,QAAA,MAAM,EAAEG,OAAO,EAAE,GAAGzD,iBAAiBR,6BAA+B,EAAA;YAClEiE,OAASP,EAAAA,6BAAAA;YACTQ,MAAQ5B,EAAAA;AACV,SAAA,CAAA;AACA,QAAA,MAAM,EAAE6B,OAAO,EAAE,GAAG3D,iBAAiBP,yBAA2B,EAAA;YAC9DkE,OAASH,EAAAA,yBAAAA;YACTE,MAAQ5B,EAAAA;AACV,SAAA,CAAA;AAEAhC,QAAAA,QAAAA,CACE8D,cAAe,CAAA;YACbV,6BAA+BO,EAAAA,OAAAA;YAC/BD,yBAA2BG,EAAAA,OAAAA;AAC3B9B,YAAAA,UAAAA;YACAgC,kBAAoB/B,EAAAA,YAAAA;AACpBC,YAAAA;AACF,SAAA,CAAA,CAAA;AAEJ,KAAA;IAEAZ,SAAU,CAAA,IAAA;AACR,QAAA,IAAIJ,gBAAiBK,CAAAA,IAAI,IAAIM,wBAAAA,CAAyBN,IAAI,EAAE;AAC1DQ,YAAAA,UAAAA,CACEb,iBAAiBK,IAAI,CAACS,UAAU,EAChCd,iBAAiBK,IAAI,CAACU,YAAY,EAClCf,iBAAiBK,IAAI,CAACW,UAAU,EAChCL,yBAAyBN,IAAI,CAAA;AAEjC;KACC,EAAA;AAACL,QAAAA,gBAAAA,CAAiBK,IAAI;AAAEM,QAAAA,wBAAAA,CAAyBN;AAAK,KAAA,CAAA;IAEzD,OAAO;AAAE,QAAA,GAAGlB;AAAM,KAAA;AACpB;AAEA,MAAMyC,aAAgB,GAAA,CACpBmB,KACAtC,EAAAA,IAAAA,EACAuC,iBAA4D,EAAE,GAAA;IAE9D,OAAOD,KAAAA,CACJX,MAAM,CAAC,CAACa,IAAAA,GAASA,KAAKC,WAAW,CAAA,CACjCjB,GAAG,CAAC,CAACgB,IAAAA,GAAAA;AACJ,QAAA,MAAME,0BAA6B,GAAA;AACjC,YAAA;gBAAEC,MAAQ,EAAA,yCAAA;AAA2CC,gBAAAA,OAAAA,EAASJ,KAAKK;AAAI,aAAA;AACvE,YAAA;gBAAEF,MAAQ,EAAA,uCAAA;AAAyCC,gBAAAA,OAAAA,EAASJ,KAAKK;AAAI;AACtE,SAAA;AACD,QAAA,MAAMC,sBAAyB,GAAA;AAC7B,YAAA;gBAAEH,MAAQ,EAAA,uCAAA;AAAyCC,gBAAAA,OAAAA,EAASJ,KAAKK;AAAI;AACtE,SAAA;QACD,MAAMpB,WAAAA,GACJzB,IAAS,KAAA,iBAAA,GAAoB0C,0BAA6BI,GAAAA,sBAAAA;QAE5D,MAAMC,wBAAAA,GAA2BR,cAAeS,CAAAA,IAAI,CAAC,CAAC,EAAEH,GAAG,EAAE,GAAKA,GAAQL,KAAAA,IAAAA,CAAKK,GAAG,CAAA;AAElF,QAAA,IAAII,MAAS,GAAA,IAAA;AAEb,QAAA,IAAIF,wBAA0B,EAAA;AAC5B,YAAA,MAAMG,YAAe,GAAA;gBACnBC,IAAM,EAAA,CAAA;gBACNC,QAAUL,EAAAA,wBAAAA,CAAyBM,QAAQ,CAACD,QAAQ;AACpDE,gBAAAA,IAAAA,EAAM,CAAC,EAAEP,wBAAyBM,CAAAA,QAAQ,CAACE,aAAa,CAAC,CAAC,EAAER,wBAAyBM,CAAAA,QAAQ,CAACG,gBAAgB,CAAC;AACjH,aAAA;AAEAP,YAAAA,MAAAA,GAASQ,UAAUP,YAAc,EAAA;gBAAEQ,MAAQ,EAAA;AAAM,aAAA,CAAA;AACnD;QAEA,OAAO;AACLjC,YAAAA,WAAAA;AACAwB,YAAAA,MAAAA;AACAjC,YAAAA,IAAAA,EAAMwB,KAAKxB,IAAI;YACf2C,KAAOnB,EAAAA,IAAAA,CAAKoB,IAAI,CAACC,WAAW;AAC5BC,YAAAA,EAAAA,EAAI,CAAC,iBAAiB,EAAEtB,IAAAA,CAAKxB,IAAI,KAAK,gBAAA,GAAmB+C,gBAAmBC,GAAAA,YAAAA,CAAa,CAAC,EACxFxB,IAAKK,CAAAA,GAAG,CACT,CAAC;AACFA,YAAAA,GAAAA,EAAKL,KAAKK,GAAG;;AAEboB,YAAAA,IAAAA,EAAMzB,KAAKK,GAAG;AACdJ,YAAAA,WAAAA,EAAaD,KAAKC;AACpB,SAAA;AACF,KAAA,CAAA;AACJ,CAAA;;;;"}
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":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', { documentId, fromPreview, fromRelationModal });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","data","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}
1
+ {"version":3,"file":"useDocumentActions.js","sources":["../../../admin/src/hooks/useDocumentActions.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useRelationModal } from '../pages/EditView/components/FormInputs/Relations/RelationModal';\nimport { usePreviewContext } from '../preview/pages/Preview';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = (\n fromPreview?: boolean,\n fromRelationModal?: boolean\n) => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n locale?: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n\n // Get metadata from context providers for tracking purposes\n const previewContext = usePreviewContext('useDocumentActions', () => true, false);\n const relationContext = useRelationModal('useDocumentActions', () => true, false);\n const fromPreview = previewContext != undefined;\n const fromRelationModal = relationContext != undefined;\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry', { documentId });\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry', { documentId, fromPreview, fromRelationModal });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n publishDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [\n trackUsage,\n updateDocument,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n trackUsage('didCreateEntry', {\n ...trackerProperty,\n documentId: res.data.data.documentId,\n fromPreview,\n fromRelationModal,\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [\n createDocument,\n formatAPIError,\n formatMessage,\n fromPreview,\n fromRelationModal,\n toggleNotification,\n trackUsage,\n ]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId, locale }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n params: locale ? { locale } : undefined,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n // Omit id and documentId so they are not copied to the clone\n const { id: _id, documentId: _documentId, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n"],"names":["DEFAULT_UNEXPECTED_ERROR_MSG","id","defaultMessage","useDocumentActions","toggleNotification","useNotification","formatMessage","useIntl","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","navigate","useNavigate","previewContext","usePreviewContext","relationContext","useRelationModal","fromPreview","undefined","fromRelationModal","deleteDocument","isLoading","isDeleting","useDeleteDocumentMutation","_delete","React","useCallback","collectionType","model","documentId","params","trackerProperty","res","type","message","error","getTranslation","data","err","deleteManyDocuments","isDeletingMany","useDeleteManyDocumentsMutation","deleteMany","documentIds","title","discardDocument","isDiscardingDocument","useDiscardDocumentMutation","discard","publishDocument","isPublishing","usePublishDocumentMutation","publish","publishManyDocuments","isPublishingMany","usePublishManyDocumentsMutation","publishMany","updateDocument","isUpdating","useUpdateDocumentMutation","update","unpublishDocument","useUnpublishDocumentMutation","unpublish","discardDraft","unpublishManyDocuments","isUnpublishingMany","useUnpublishManyDocumentsMutation","unpublishMany","createDocument","useCreateDocumentMutation","create","autoCloneDocument","useAutoCloneDocumentMutation","autoClone","sourceId","locale","cloneDocument","useCloneDocumentMutation","clone","body","_id","_documentId","restBody","relative","getDoc","useLazyGetDocumentQuery","getDocument","args","delete"],"mappings":"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"}