@strapi/content-manager 0.0.0-next.ce5699024a72ea224891438d5bbe39f904ec6774 → 0.0.0-next.d190a700af70e9360d767221b76cd8e815bd01aa

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 (519) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  8. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Fields.js +304 -205
  10. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Fields.mjs +309 -211
  12. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  13. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  14. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  15. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  16. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  26. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  27. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  28. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  29. package/dist/admin/components/LeftMenu.js +94 -50
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +97 -53
  32. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  33. package/dist/admin/components/RelativeTime.js.map +1 -1
  34. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  35. package/dist/admin/components/Widgets.js +437 -0
  36. package/dist/admin/components/Widgets.js.map +1 -0
  37. package/dist/admin/components/Widgets.mjs +414 -0
  38. package/dist/admin/components/Widgets.mjs.map +1 -0
  39. package/dist/admin/content-manager.js.map +1 -1
  40. package/dist/admin/content-manager.mjs.map +1 -1
  41. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  42. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  43. package/dist/admin/history/components/VersionContent.js +24 -3
  44. package/dist/admin/history/components/VersionContent.js.map +1 -1
  45. package/dist/admin/history/components/VersionContent.mjs +25 -4
  46. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  47. package/dist/admin/history/components/VersionHeader.js +7 -0
  48. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  49. package/dist/admin/history/components/VersionHeader.mjs +8 -1
  50. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  51. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  52. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  53. package/dist/admin/history/components/VersionsList.js +1 -1
  54. package/dist/admin/history/components/VersionsList.js.map +1 -1
  55. package/dist/admin/history/components/VersionsList.mjs +1 -1
  56. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  57. package/dist/admin/history/pages/History.js +8 -16
  58. package/dist/admin/history/pages/History.js.map +1 -1
  59. package/dist/admin/history/pages/History.mjs +8 -16
  60. package/dist/admin/history/pages/History.mjs.map +1 -1
  61. package/dist/admin/history/services/historyVersion.js.map +1 -1
  62. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  63. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  64. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  65. package/dist/admin/hooks/useDocumentActions.js +43 -12
  66. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  67. package/dist/admin/hooks/useDocumentActions.mjs +44 -13
  68. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  69. package/dist/admin/hooks/useDocumentContext.js +57 -0
  70. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  71. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  72. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  73. package/dist/admin/index.js +81 -5
  74. package/dist/admin/index.js.map +1 -1
  75. package/dist/admin/index.mjs +80 -3
  76. package/dist/admin/index.mjs.map +1 -1
  77. package/dist/admin/layout.js +28 -33
  78. package/dist/admin/layout.js.map +1 -1
  79. package/dist/admin/layout.mjs +29 -15
  80. package/dist/admin/layout.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/EditViewPage.js +101 -88
  82. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  83. package/dist/admin/pages/EditView/EditViewPage.mjs +103 -90
  84. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  86. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  87. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  88. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  89. package/dist/admin/pages/EditView/components/DocumentActions.js +335 -123
  90. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  91. package/dist/admin/pages/EditView/components/DocumentActions.mjs +342 -130
  92. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  94. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  104. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  106. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  108. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  110. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  112. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  114. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  116. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  118. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  120. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  122. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  124. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  126. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  128. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  130. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  132. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +19 -5
  134. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +20 -6
  136. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  138. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  140. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +27 -24
  142. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +29 -26
  144. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  146. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  148. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +508 -345
  150. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +508 -347
  152. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +180 -70
  154. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +184 -74
  156. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/UID.js +13 -10
  158. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +13 -10
  160. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  161. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  166. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  168. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  172. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  174. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormLayout.js +59 -34
  180. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormLayout.mjs +60 -34
  182. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  183. package/dist/admin/pages/EditView/components/Header.js +92 -27
  184. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  185. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  186. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  187. package/dist/admin/pages/EditView/components/InputRenderer.js +35 -28
  188. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/InputRenderer.mjs +35 -28
  190. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  191. package/dist/admin/pages/EditView/utils/data.js +128 -0
  192. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  193. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  194. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  195. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  196. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  197. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  198. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  199. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  200. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  201. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  202. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  203. package/dist/admin/pages/ListView/ListViewPage.js +225 -132
  204. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  205. package/dist/admin/pages/ListView/ListViewPage.mjs +227 -134
  206. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  207. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  208. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  210. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  211. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  212. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  213. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  214. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  215. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  216. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  217. package/dist/admin/pages/ListView/components/Filters.js +8 -2
  218. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  219. package/dist/admin/pages/ListView/components/Filters.mjs +8 -2
  220. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  221. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  222. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  223. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  224. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  225. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  226. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  227. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  228. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  229. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  230. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  231. package/dist/admin/preview/components/InputPopover.js +189 -0
  232. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  233. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  234. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  235. package/dist/admin/preview/components/PreviewHeader.js +2 -6
  236. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  237. package/dist/admin/preview/components/PreviewHeader.mjs +2 -6
  238. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  239. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  240. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  241. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  242. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  243. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  244. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  245. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  246. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  247. package/dist/admin/preview/pages/Preview.js +180 -84
  248. package/dist/admin/preview/pages/Preview.js.map +1 -1
  249. package/dist/admin/preview/pages/Preview.mjs +182 -86
  250. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  251. package/dist/admin/preview/services/preview.js.map +1 -1
  252. package/dist/admin/preview/services/preview.mjs.map +1 -1
  253. package/dist/admin/preview/utils/constants.js +56 -0
  254. package/dist/admin/preview/utils/constants.js.map +1 -0
  255. package/dist/admin/preview/utils/constants.mjs +52 -0
  256. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  257. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  258. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  259. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  260. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  261. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  262. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  263. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  264. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  265. package/dist/admin/preview/utils/previewScript.js +534 -0
  266. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  267. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  268. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  269. package/dist/admin/router.js.map +1 -1
  270. package/dist/admin/router.mjs.map +1 -1
  271. package/dist/admin/services/api.js +5 -1
  272. package/dist/admin/services/api.js.map +1 -1
  273. package/dist/admin/services/api.mjs +5 -1
  274. package/dist/admin/services/api.mjs.map +1 -1
  275. package/dist/admin/services/documents.js +59 -17
  276. package/dist/admin/services/documents.js.map +1 -1
  277. package/dist/admin/services/documents.mjs +59 -17
  278. package/dist/admin/services/documents.mjs.map +1 -1
  279. package/dist/admin/services/homepage.js +30 -0
  280. package/dist/admin/services/homepage.js.map +1 -0
  281. package/dist/admin/services/homepage.mjs +28 -0
  282. package/dist/admin/services/homepage.mjs.map +1 -0
  283. package/dist/admin/services/relations.js.map +1 -1
  284. package/dist/admin/services/relations.mjs.map +1 -1
  285. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  286. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  287. package/dist/admin/src/components/Widgets.d.ts +8 -0
  288. package/dist/admin/src/content-manager.d.ts +0 -3
  289. package/dist/admin/src/exports.d.ts +1 -0
  290. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  291. package/dist/admin/src/history/pages/History.d.ts +1 -1
  292. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  293. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  294. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  295. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  296. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  297. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  298. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  299. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  300. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  301. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  302. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  303. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -11
  304. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  305. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -2
  306. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  307. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  308. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  309. package/dist/admin/src/preview/pages/Preview.d.ts +14 -1
  310. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  311. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  312. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  313. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  314. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  315. package/dist/admin/src/services/api.d.ts +1 -1
  316. package/dist/admin/src/services/components.d.ts +2 -2
  317. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  318. package/dist/admin/src/services/documents.d.ts +23 -17
  319. package/dist/admin/src/services/homepage.d.ts +5 -0
  320. package/dist/admin/src/services/init.d.ts +1 -1
  321. package/dist/admin/src/services/relations.d.ts +2 -2
  322. package/dist/admin/src/services/uid.d.ts +3 -3
  323. package/dist/admin/src/utils/api.d.ts +1 -1
  324. package/dist/admin/src/utils/validation.d.ts +1 -0
  325. package/dist/admin/translations/en.json.js +15 -1
  326. package/dist/admin/translations/en.json.js.map +1 -1
  327. package/dist/admin/translations/en.json.mjs +15 -1
  328. package/dist/admin/translations/en.json.mjs.map +1 -1
  329. package/dist/admin/translations/es.json.js +6 -2
  330. package/dist/admin/translations/es.json.js.map +1 -1
  331. package/dist/admin/translations/es.json.mjs +6 -2
  332. package/dist/admin/translations/es.json.mjs.map +1 -1
  333. package/dist/admin/translations/fr.json.js +12 -3
  334. package/dist/admin/translations/fr.json.js.map +1 -1
  335. package/dist/admin/translations/fr.json.mjs +12 -3
  336. package/dist/admin/translations/fr.json.mjs.map +1 -1
  337. package/dist/admin/translations/ru.json.js +235 -226
  338. package/dist/admin/translations/ru.json.js.map +1 -1
  339. package/dist/admin/translations/ru.json.mjs +230 -226
  340. package/dist/admin/translations/ru.json.mjs.map +1 -1
  341. package/dist/admin/utils/api.js +1 -1
  342. package/dist/admin/utils/api.js.map +1 -1
  343. package/dist/admin/utils/api.mjs +1 -1
  344. package/dist/admin/utils/api.mjs.map +1 -1
  345. package/dist/admin/utils/translations.js.map +1 -1
  346. package/dist/admin/utils/translations.mjs.map +1 -1
  347. package/dist/admin/utils/urls.js.map +1 -1
  348. package/dist/admin/utils/urls.mjs.map +1 -1
  349. package/dist/admin/utils/users.js.map +1 -1
  350. package/dist/admin/utils/users.mjs.map +1 -1
  351. package/dist/admin/utils/validation.js +19 -7
  352. package/dist/admin/utils/validation.js.map +1 -1
  353. package/dist/admin/utils/validation.mjs +19 -7
  354. package/dist/admin/utils/validation.mjs.map +1 -1
  355. package/dist/server/controllers/collection-types.js +2 -1
  356. package/dist/server/controllers/collection-types.js.map +1 -1
  357. package/dist/server/controllers/collection-types.mjs +2 -1
  358. package/dist/server/controllers/collection-types.mjs.map +1 -1
  359. package/dist/server/controllers/content-types.js +11 -1
  360. package/dist/server/controllers/content-types.js.map +1 -1
  361. package/dist/server/controllers/content-types.mjs +11 -1
  362. package/dist/server/controllers/content-types.mjs.map +1 -1
  363. package/dist/server/controllers/index.js +3 -1
  364. package/dist/server/controllers/index.js.map +1 -1
  365. package/dist/server/controllers/index.mjs +3 -1
  366. package/dist/server/controllers/index.mjs.map +1 -1
  367. package/dist/server/controllers/relations.js +8 -6
  368. package/dist/server/controllers/relations.js.map +1 -1
  369. package/dist/server/controllers/relations.mjs +8 -6
  370. package/dist/server/controllers/relations.mjs.map +1 -1
  371. package/dist/server/controllers/single-types.js.map +1 -1
  372. package/dist/server/controllers/single-types.mjs.map +1 -1
  373. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  374. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  375. package/dist/server/controllers/validation/index.js +14 -2
  376. package/dist/server/controllers/validation/index.js.map +1 -1
  377. package/dist/server/controllers/validation/index.mjs +14 -2
  378. package/dist/server/controllers/validation/index.mjs.map +1 -1
  379. package/dist/server/history/services/lifecycles.js +23 -19
  380. package/dist/server/history/services/lifecycles.js.map +1 -1
  381. package/dist/server/history/services/lifecycles.mjs +23 -19
  382. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  383. package/dist/server/history/utils.js.map +1 -1
  384. package/dist/server/history/utils.mjs.map +1 -1
  385. package/dist/server/homepage/controllers/homepage.js +62 -0
  386. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  387. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  388. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  389. package/dist/server/homepage/controllers/index.js +10 -0
  390. package/dist/server/homepage/controllers/index.js.map +1 -0
  391. package/dist/server/homepage/controllers/index.mjs +8 -0
  392. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  393. package/dist/server/homepage/index.js +14 -0
  394. package/dist/server/homepage/index.js.map +1 -0
  395. package/dist/server/homepage/index.mjs +12 -0
  396. package/dist/server/homepage/index.mjs.map +1 -0
  397. package/dist/server/homepage/routes/homepage.js +36 -0
  398. package/dist/server/homepage/routes/homepage.js.map +1 -0
  399. package/dist/server/homepage/routes/homepage.mjs +34 -0
  400. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  401. package/dist/server/homepage/routes/index.js +13 -0
  402. package/dist/server/homepage/routes/index.js.map +1 -0
  403. package/dist/server/homepage/routes/index.mjs +11 -0
  404. package/dist/server/homepage/routes/index.mjs.map +1 -0
  405. package/dist/server/homepage/services/homepage.js +197 -0
  406. package/dist/server/homepage/services/homepage.js.map +1 -0
  407. package/dist/server/homepage/services/homepage.mjs +195 -0
  408. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  409. package/dist/server/homepage/services/index.js +10 -0
  410. package/dist/server/homepage/services/index.js.map +1 -0
  411. package/dist/server/homepage/services/index.mjs +8 -0
  412. package/dist/server/homepage/services/index.mjs.map +1 -0
  413. package/dist/server/middlewares/routing.js.map +1 -1
  414. package/dist/server/middlewares/routing.mjs.map +1 -1
  415. package/dist/server/preview/services/preview-config.js +11 -32
  416. package/dist/server/preview/services/preview-config.js.map +1 -1
  417. package/dist/server/preview/services/preview-config.mjs +12 -33
  418. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  419. package/dist/server/preview/services/preview.js +4 -1
  420. package/dist/server/preview/services/preview.js.map +1 -1
  421. package/dist/server/preview/services/preview.mjs +4 -1
  422. package/dist/server/preview/services/preview.mjs.map +1 -1
  423. package/dist/server/preview/utils.js.map +1 -1
  424. package/dist/server/preview/utils.mjs.map +1 -1
  425. package/dist/server/routes/index.js +3 -1
  426. package/dist/server/routes/index.js.map +1 -1
  427. package/dist/server/routes/index.mjs +3 -1
  428. package/dist/server/routes/index.mjs.map +1 -1
  429. package/dist/server/services/configuration.js.map +1 -1
  430. package/dist/server/services/configuration.mjs.map +1 -1
  431. package/dist/server/services/data-mapper.js +4 -1
  432. package/dist/server/services/data-mapper.js.map +1 -1
  433. package/dist/server/services/data-mapper.mjs +4 -1
  434. package/dist/server/services/data-mapper.mjs.map +1 -1
  435. package/dist/server/services/document-manager.js +8 -1
  436. package/dist/server/services/document-manager.js.map +1 -1
  437. package/dist/server/services/document-manager.mjs +8 -1
  438. package/dist/server/services/document-manager.mjs.map +1 -1
  439. package/dist/server/services/document-metadata.js +26 -2
  440. package/dist/server/services/document-metadata.js.map +1 -1
  441. package/dist/server/services/document-metadata.mjs +26 -2
  442. package/dist/server/services/document-metadata.mjs.map +1 -1
  443. package/dist/server/services/field-sizes.js.map +1 -1
  444. package/dist/server/services/field-sizes.mjs.map +1 -1
  445. package/dist/server/services/index.js +3 -1
  446. package/dist/server/services/index.js.map +1 -1
  447. package/dist/server/services/index.mjs +3 -1
  448. package/dist/server/services/index.mjs.map +1 -1
  449. package/dist/server/services/uid.js.map +1 -1
  450. package/dist/server/services/uid.mjs.map +1 -1
  451. package/dist/server/services/utils/configuration/attributes.js +1 -1
  452. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  453. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  454. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  455. package/dist/server/services/utils/configuration/layouts.js +1 -1
  456. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  457. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  458. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  459. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  460. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  461. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  462. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  463. package/dist/server/services/utils/populate.js +11 -0
  464. package/dist/server/services/utils/populate.js.map +1 -1
  465. package/dist/server/services/utils/populate.mjs +11 -0
  466. package/dist/server/services/utils/populate.mjs.map +1 -1
  467. package/dist/server/services/utils/store.js.map +1 -1
  468. package/dist/server/services/utils/store.mjs.map +1 -1
  469. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  470. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  471. package/dist/server/src/controllers/index.d.ts.map +1 -1
  472. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  473. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  474. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  475. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  476. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  477. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  478. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  479. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  480. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  481. package/dist/server/src/homepage/index.d.ts +23 -0
  482. package/dist/server/src/homepage/index.d.ts.map +1 -0
  483. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  484. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  485. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  486. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  487. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  488. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  489. package/dist/server/src/homepage/services/index.d.ts +16 -0
  490. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  491. package/dist/server/src/index.d.ts +15 -0
  492. package/dist/server/src/index.d.ts.map +1 -1
  493. package/dist/server/src/preview/services/index.d.ts +1 -0
  494. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  495. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  496. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  497. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  498. package/dist/server/src/preview/utils.d.ts +1 -0
  499. package/dist/server/src/preview/utils.d.ts.map +1 -1
  500. package/dist/server/src/routes/index.d.ts +1 -0
  501. package/dist/server/src/routes/index.d.ts.map +1 -1
  502. package/dist/server/src/services/data-mapper.d.ts +1 -0
  503. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  504. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  505. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  506. package/dist/server/src/services/index.d.ts +14 -0
  507. package/dist/server/src/services/index.d.ts.map +1 -1
  508. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  509. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  510. package/dist/shared/contracts/collection-types.d.ts +0 -1
  511. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  512. package/dist/shared/contracts/homepage.d.ts +38 -0
  513. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  514. package/package.json +12 -10
  515. package/dist/admin/features/DocumentContext.js +0 -71
  516. package/dist/admin/features/DocumentContext.js.map +0 -1
  517. package/dist/admin/features/DocumentContext.mjs +0 -49
  518. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  519. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -11,6 +11,7 @@ var populateBuilder = require('./populate-builder.js');
11
11
  var uid = require('./uid.js');
12
12
  var index = require('../history/index.js');
13
13
  var index$1 = require('../preview/index.js');
14
+ var index$2 = require('../homepage/index.js');
14
15
  var documentMetadata = require('./document-metadata.js');
15
16
  var documentManager = require('./document-manager.js');
16
17
 
@@ -27,7 +28,8 @@ var services = {
27
28
  'populate-builder': populateBuilder,
28
29
  uid,
29
30
  ...index.services ? index.services : {},
30
- ...index$1.services ? index$1.services : {}
31
+ ...index$1.services ? index$1.services : {},
32
+ ...index$2.services
31
33
  };
32
34
 
33
35
  module.exports = services;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import components from './components';\nimport contentTypes from './content-types';\nimport dataMapper from './data-mapper';\nimport fieldSizes from './field-sizes';\nimport metrics from './metrics';\nimport permissionChecker from './permission-checker';\nimport permission from './permission';\nimport populateBuilder from './populate-builder';\nimport uid from './uid';\nimport history from '../history';\nimport preview from '../preview';\nimport documentMetadata from './document-metadata';\nimport documentManager from './document-manager';\n\nexport default {\n components,\n 'content-types': contentTypes,\n 'data-mapper': dataMapper,\n 'document-metadata': documentMetadata,\n 'document-manager': documentManager,\n 'field-sizes': fieldSizes,\n metrics,\n 'permission-checker': permissionChecker,\n permission,\n 'populate-builder': populateBuilder,\n uid,\n ...(history.services ? history.services : {}),\n ...(preview.services ? preview.services : {}),\n};\n"],"names":["components","contentTypes","dataMapper","documentMetadata","documentManager","fieldSizes","metrics","permissionChecker","permission","populateBuilder","uid","history","services","preview"],"mappings":";;;;;;;;;;;;;;;;AAcA,eAAe;AACbA,IAAAA,UAAAA;IACA,eAAiBC,EAAAA,YAAAA;IACjB,aAAeC,EAAAA,UAAAA;IACf,mBAAqBC,EAAAA,gBAAAA;IACrB,kBAAoBC,EAAAA,eAAAA;IACpB,aAAeC,EAAAA,UAAAA;AACfC,IAAAA,OAAAA;IACA,oBAAsBC,EAAAA,iBAAAA;AACtBC,IAAAA,UAAAA;IACA,kBAAoBC,EAAAA,eAAAA;AACpBC,IAAAA,GAAAA;AACA,IAAA,GAAIC,MAAQC,QAAQ,GAAGD,MAAQC,QAAQ,GAAG,EAAE;AAC5C,IAAA,GAAIC,QAAQD,QAAQ,GAAGC,QAAQD,QAAQ,GAAG;AAC5C,CAAE;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import components from './components';\nimport contentTypes from './content-types';\nimport dataMapper from './data-mapper';\nimport fieldSizes from './field-sizes';\nimport metrics from './metrics';\nimport permissionChecker from './permission-checker';\nimport permission from './permission';\nimport populateBuilder from './populate-builder';\nimport uid from './uid';\nimport history from '../history';\nimport preview from '../preview';\nimport homepage from '../homepage';\nimport documentMetadata from './document-metadata';\nimport documentManager from './document-manager';\n\nexport default {\n components,\n 'content-types': contentTypes,\n 'data-mapper': dataMapper,\n 'document-metadata': documentMetadata,\n 'document-manager': documentManager,\n 'field-sizes': fieldSizes,\n metrics,\n 'permission-checker': permissionChecker,\n permission,\n 'populate-builder': populateBuilder,\n uid,\n ...(history.services ? history.services : {}),\n ...(preview.services ? preview.services : {}),\n ...homepage.services,\n};\n"],"names":["components","contentTypes","dataMapper","documentMetadata","documentManager","fieldSizes","metrics","permissionChecker","permission","populateBuilder","uid","history","services","preview","homepage"],"mappings":";;;;;;;;;;;;;;;;;AAeA,eAAe;AACbA,IAAAA,UAAAA;IACA,eAAiBC,EAAAA,YAAAA;IACjB,aAAeC,EAAAA,UAAAA;IACf,mBAAqBC,EAAAA,gBAAAA;IACrB,kBAAoBC,EAAAA,eAAAA;IACpB,aAAeC,EAAAA,UAAAA;AACfC,IAAAA,OAAAA;IACA,oBAAsBC,EAAAA,iBAAAA;AACtBC,IAAAA,UAAAA;IACA,kBAAoBC,EAAAA,eAAAA;AACpBC,IAAAA,GAAAA;AACA,IAAA,GAAIC,MAAQC,QAAQ,GAAGD,MAAQC,QAAQ,GAAG,EAAE;AAC5C,IAAA,GAAIC,QAAQD,QAAQ,GAAGC,QAAQD,QAAQ,GAAG,EAAE;AAC5C,IAAA,GAAGE,QAASF;AACd,CAAE;;;;"}
@@ -9,6 +9,7 @@ import populateBuilder from './populate-builder.mjs';
9
9
  import uid from './uid.mjs';
10
10
  import history from '../history/index.mjs';
11
11
  import preview from '../preview/index.mjs';
12
+ import homepage from '../homepage/index.mjs';
12
13
  import documentMetadata from './document-metadata.mjs';
13
14
  import documentManager from './document-manager.mjs';
14
15
 
@@ -25,7 +26,8 @@ var services = {
25
26
  'populate-builder': populateBuilder,
26
27
  uid,
27
28
  ...history.services ? history.services : {},
28
- ...preview.services ? preview.services : {}
29
+ ...preview.services ? preview.services : {},
30
+ ...homepage.services
29
31
  };
30
32
 
31
33
  export { services as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import components from './components';\nimport contentTypes from './content-types';\nimport dataMapper from './data-mapper';\nimport fieldSizes from './field-sizes';\nimport metrics from './metrics';\nimport permissionChecker from './permission-checker';\nimport permission from './permission';\nimport populateBuilder from './populate-builder';\nimport uid from './uid';\nimport history from '../history';\nimport preview from '../preview';\nimport documentMetadata from './document-metadata';\nimport documentManager from './document-manager';\n\nexport default {\n components,\n 'content-types': contentTypes,\n 'data-mapper': dataMapper,\n 'document-metadata': documentMetadata,\n 'document-manager': documentManager,\n 'field-sizes': fieldSizes,\n metrics,\n 'permission-checker': permissionChecker,\n permission,\n 'populate-builder': populateBuilder,\n uid,\n ...(history.services ? history.services : {}),\n ...(preview.services ? preview.services : {}),\n};\n"],"names":["components","contentTypes","dataMapper","documentMetadata","documentManager","fieldSizes","metrics","permissionChecker","permission","populateBuilder","uid","history","services","preview"],"mappings":";;;;;;;;;;;;;;AAcA,eAAe;AACbA,IAAAA,UAAAA;IACA,eAAiBC,EAAAA,OAAAA;IACjB,aAAeC,EAAAA,UAAAA;IACf,mBAAqBC,EAAAA,gBAAAA;IACrB,kBAAoBC,EAAAA,eAAAA;IACpB,aAAeC,EAAAA,uBAAAA;AACfC,IAAAA,OAAAA;IACA,oBAAsBC,EAAAA,iBAAAA;AACtBC,IAAAA,UAAAA;IACA,kBAAoBC,EAAAA,eAAAA;AACpBC,IAAAA,GAAAA;AACA,IAAA,GAAIC,QAAQC,QAAQ,GAAGD,QAAQC,QAAQ,GAAG,EAAE;AAC5C,IAAA,GAAIC,QAAQD,QAAQ,GAAGC,QAAQD,QAAQ,GAAG;AAC5C,CAAE;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import components from './components';\nimport contentTypes from './content-types';\nimport dataMapper from './data-mapper';\nimport fieldSizes from './field-sizes';\nimport metrics from './metrics';\nimport permissionChecker from './permission-checker';\nimport permission from './permission';\nimport populateBuilder from './populate-builder';\nimport uid from './uid';\nimport history from '../history';\nimport preview from '../preview';\nimport homepage from '../homepage';\nimport documentMetadata from './document-metadata';\nimport documentManager from './document-manager';\n\nexport default {\n components,\n 'content-types': contentTypes,\n 'data-mapper': dataMapper,\n 'document-metadata': documentMetadata,\n 'document-manager': documentManager,\n 'field-sizes': fieldSizes,\n metrics,\n 'permission-checker': permissionChecker,\n permission,\n 'populate-builder': populateBuilder,\n uid,\n ...(history.services ? history.services : {}),\n ...(preview.services ? preview.services : {}),\n ...homepage.services,\n};\n"],"names":["components","contentTypes","dataMapper","documentMetadata","documentManager","fieldSizes","metrics","permissionChecker","permission","populateBuilder","uid","history","services","preview","homepage"],"mappings":";;;;;;;;;;;;;;;AAeA,eAAe;AACbA,IAAAA,UAAAA;IACA,eAAiBC,EAAAA,OAAAA;IACjB,aAAeC,EAAAA,UAAAA;IACf,mBAAqBC,EAAAA,gBAAAA;IACrB,kBAAoBC,EAAAA,eAAAA;IACpB,aAAeC,EAAAA,uBAAAA;AACfC,IAAAA,OAAAA;IACA,oBAAsBC,EAAAA,iBAAAA;AACtBC,IAAAA,UAAAA;IACA,kBAAoBC,EAAAA,eAAAA;AACpBC,IAAAA,GAAAA;AACA,IAAA,GAAIC,QAAQC,QAAQ,GAAGD,QAAQC,QAAQ,GAAG,EAAE;AAC5C,IAAA,GAAIC,QAAQD,QAAQ,GAAGC,QAAQD,QAAQ,GAAG,EAAE;AAC5C,IAAA,GAAGE,SAASF;AACd,CAAE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"uid.js","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
1
+ {"version":3,"file":"uid.js","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uid.mjs","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
1
+ {"version":3,"file":"uid.mjs","sources":["../../../server/src/services/uid.ts"],"sourcesContent":["import _ from 'lodash';\nimport slugify from '@sindresorhus/slugify';\n\nimport type { Core, Schema, UID } from '@strapi/types';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => ({\n async generateUIDField({\n contentTypeUID,\n field,\n data,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n data: Record<string, any>;\n locale?: string;\n }) {\n const contentType = strapi.contentTypes[contentTypeUID];\n const { attributes } = contentType;\n\n const {\n targetField,\n default: defaultValue,\n options,\n } = attributes[field] as Schema.Attribute.UID;\n\n // @ts-expect-error targetField can be undefined\n const targetValue = _.get(data, targetField);\n\n if (!_.isEmpty(targetValue)) {\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(targetValue, options),\n locale,\n });\n }\n\n return this.findUniqueUID({\n contentTypeUID,\n field,\n value: slugify(\n _.isFunction(defaultValue) ? defaultValue() : defaultValue || contentType.modelName,\n options\n ),\n locale,\n });\n },\n\n async findUniqueUID({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const foundDocuments = await strapi.documents(contentTypeUID).findMany({\n filters: {\n [field]: { $startsWith: value },\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (!foundDocuments || foundDocuments.length === 0) {\n // If there are no documents found we can return the value as is\n return value;\n }\n\n let possibleCollisions: string[];\n if (!Array.isArray(foundDocuments)) {\n possibleCollisions = [foundDocuments[field]];\n } else {\n possibleCollisions = foundDocuments.map((doc: any) => doc[field]);\n }\n\n // If there are no documents sharing the proposed UID, we can return the value as is\n if (!possibleCollisions.includes(value)) {\n return value;\n }\n\n let i = 1;\n let tmpUId = `${value}-${i}`;\n while (possibleCollisions.includes(tmpUId)) {\n // While there are documents sharing the proposed UID, we need to find a new one\n // by incrementing the suffix until we find a unique one\n i += 1;\n tmpUId = `${value}-${i}`;\n }\n\n return tmpUId;\n },\n\n async checkUIDAvailability({\n contentTypeUID,\n field,\n value,\n locale,\n }: {\n contentTypeUID: UID.ContentType;\n field: string;\n value: string;\n locale?: string;\n }) {\n const documentCount = await strapi.documents(contentTypeUID).count({\n filters: {\n [field]: value,\n },\n locale,\n // TODO: Check UX. When modifying an entry, it only makes sense to check for collisions with other drafts\n // However, when publishing this \"available\" UID might collide with another published entry\n status: 'draft',\n });\n\n if (documentCount && documentCount > 0) {\n // If there are documents sharing the proposed UID, we can return false\n return false;\n }\n\n return true;\n },\n});\n"],"names":["strapi","generateUIDField","contentTypeUID","field","data","locale","contentType","contentTypes","attributes","targetField","default","defaultValue","options","targetValue","_","get","isEmpty","findUniqueUID","value","slugify","isFunction","modelName","foundDocuments","documents","findMany","filters","$startsWith","status","length","possibleCollisions","Array","isArray","map","doc","includes","i","tmpUId","checkUIDAvailability","documentCount","count"],"mappings":"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"}
@@ -87,7 +87,7 @@ const isVisible = (schema, name)=>{
87
87
  if (isHidden(schema, name)) {
88
88
  return false;
89
89
  }
90
- if (isTimestamp(schema, name) || name === 'id') {
90
+ if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {
91
91
  return false;
92
92
  }
93
93
  if (isPublicationField(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
1
+ {"version":3,"file":"attributes.js","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
@@ -85,7 +85,7 @@ const isVisible = (schema, name)=>{
85
85
  if (isHidden(schema, name)) {
86
86
  return false;
87
87
  }
88
- if (isTimestamp(schema, name) || name === 'id') {
88
+ if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {
89
89
  return false;
90
90
  }
91
91
  if (isPublicationField(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.mjs","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
1
+ {"version":3,"file":"attributes.mjs","sources":["../../../../../server/src/services/utils/configuration/attributes.ts"],"sourcesContent":["import _ from 'lodash';\nimport { intersection } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nconst { getNonVisibleAttributes, getWritableAttributes } = contentTypesUtils;\nconst { PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } =\n contentTypesUtils.constants;\n\nconst NON_SORTABLES = ['component', 'json', 'media', 'richtext', 'dynamiczone', 'blocks'];\nconst SORTABLE_RELATIONS = ['oneToOne', 'manyToOne'];\n\nconst NON_LISTABLES = ['json', 'password', 'richtext', 'dynamiczone', 'blocks'];\nconst LISTABLE_RELATIONS = ['oneToOne', 'oneToMany', 'manyToOne', 'manyToMany'];\n\n// hidden fields are fields that are configured to be hidden from list, and edit views\nconst isHidden = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const isHidden = _.get(schema, ['config', 'attributes', name, 'hidden'], false);\n if (isHidden === true) {\n return true;\n }\n\n return false;\n};\n\nconst isListable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n const attribute = schema.attributes[name];\n if (NON_LISTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !LISTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSortable = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (schema.modelType === 'component' && name === 'id') return false;\n\n const attribute = schema.attributes[name];\n if (NON_SORTABLES.includes(attribute.type)) {\n return false;\n }\n\n if (isRelation(attribute) && !SORTABLE_RELATIONS.includes(attribute.relationType)) {\n return false;\n }\n\n return true;\n};\n\nconst isSearchable = (schema: any, name: any) => {\n return isSortable(schema, name);\n};\n\nconst isVisible = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (isTimestamp(schema, name) || name === 'id' || name === 'documentId') {\n return false;\n }\n\n if (isPublicationField(name)) {\n return false;\n }\n\n if (isCreatorField(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst isPublicationField = (name: any) => PUBLISHED_AT_ATTRIBUTE === name;\n\nconst isTimestamp = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const timestamps = contentTypesUtils.getTimestamps(schema);\n if (!timestamps || !Array.isArray(timestamps)) {\n return false;\n }\n\n if (timestamps.includes(name)) {\n return true;\n }\n};\n\nconst isCreatorField = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n const creatorFields = contentTypesUtils.getCreatorFields(schema);\n if (!creatorFields || !Array.isArray(creatorFields)) {\n return false;\n }\n\n if (creatorFields.includes(name)) {\n return true;\n }\n};\n\nconst isRelation = (attribute: any) => attribute.type === 'relation';\n\nconst hasRelationAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return isRelation(schema.attributes[name]);\n};\n\nconst hasEditableAttribute = (schema: any, name: any) => {\n if (!_.has(schema.attributes, name)) {\n return false;\n }\n\n if (isHidden(schema, name)) {\n return false;\n }\n\n if (!isVisible(schema, name)) {\n return false;\n }\n\n return true;\n};\n\nconst findFirstStringAttribute = (schema: any) => {\n return Object.keys(schema.attributes || {}).find((key) => {\n const { type } = schema.attributes[key];\n return type === 'string' && key !== 'id';\n });\n};\n\nconst getDefaultMainField = (schema: any) => findFirstStringAttribute(schema) || 'id';\n\n/**\n * Returns list of all sortable attributes for a given content type schema\n * TODO V5: Refactor non visible fields to be a part of content-manager schema so we can use isSortable instead\n * @param {*} schema\n * @returns\n */\nconst getSortableAttributes = (schema: any) => {\n const validAttributes = Object.keys(schema.attributes).filter((key) => isListable(schema, key));\n\n const model = strapi.getModel(schema.uid);\n const nonVisibleWritableAttributes = intersection(\n getNonVisibleAttributes(model),\n getWritableAttributes(model)\n );\n\n return [\n 'id',\n ...validAttributes,\n ...nonVisibleWritableAttributes,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n ];\n};\n\nexport {\n isSortable,\n isVisible,\n isSearchable,\n isRelation,\n isListable,\n hasEditableAttribute,\n hasRelationAttribute,\n getDefaultMainField,\n getSortableAttributes,\n};\n"],"names":["getNonVisibleAttributes","getWritableAttributes","contentTypesUtils","PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","constants","NON_SORTABLES","SORTABLE_RELATIONS","NON_LISTABLES","LISTABLE_RELATIONS","isHidden","schema","name","_","has","attributes","get","isListable","attribute","includes","type","isRelation","relationType","isSortable","modelType","isSearchable","isVisible","isTimestamp","isPublicationField","isCreatorField","timestamps","getTimestamps","Array","isArray","creatorFields","getCreatorFields","hasRelationAttribute","hasEditableAttribute","findFirstStringAttribute","Object","keys","find","key","getDefaultMainField","getSortableAttributes","validAttributes","filter","model","strapi","getModel","uid","nonVisibleWritableAttributes","intersection"],"mappings":"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"}
@@ -37,7 +37,7 @@ async function createDefaultLayouts(schema) {
37
37
  };
38
38
  }
39
39
  function createDefaultListLayout(schema) {
40
- return Object.keys(schema.attributes).filter((name)=>attributes.isListable(schema, name)).slice(0, DEFAULT_LIST_LENGTH);
40
+ return Object.keys(schema.attributes).filter((name)=>attributes.isListable(schema, name) && name !== 'documentId').slice(0, DEFAULT_LIST_LENGTH);
41
41
  }
42
42
  const rowSize = (els)=>els.reduce((sum, el)=>sum + el.size, 0);
43
43
  function createDefaultEditLayout(schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.js","sources":["../../../../../server/src/services/utils/configuration/layouts.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport { isListable, hasEditableAttribute, hasRelationAttribute } from './attributes';\n\nconst DEFAULT_LIST_LENGTH = 4;\nconst MAX_ROW_SIZE = 12;\n\nconst isAllowedFieldSize = (type: any, size: any) => {\n const { getFieldSize } = getService('field-sizes');\n const fieldSize = getFieldSize(type);\n\n // Check if field was locked to another size\n if (!fieldSize.isResizable && size !== fieldSize.default) {\n return false;\n }\n\n // Otherwise allow unless it's bigger than a row\n return size <= MAX_ROW_SIZE;\n};\n\nconst getDefaultFieldSize = (attribute: any) => {\n const { hasFieldSize, getFieldSize } = getService('field-sizes');\n\n // Check if it's a custom field with a custom size and get the default size for the field type\n return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type)\n .default;\n};\n\nasync function createDefaultLayouts(schema: any) {\n return {\n // @ts-expect-error necessary to provide this default layout\n list: createDefaultListLayout(schema),\n // @ts-expect-error necessary to provide this default layout\n edit: createDefaultEditLayout(schema),\n ..._.pick(_.get(schema, ['config', 'layouts'], {}), ['list', 'edit']),\n };\n}\n\nfunction createDefaultListLayout(schema: any) {\n return Object.keys(schema.attributes)\n .filter((name) => isListable(schema, name))\n .slice(0, DEFAULT_LIST_LENGTH);\n}\n\nconst rowSize = (els: any) => els.reduce((sum: any, el: any) => sum + el.size, 0);\n\nfunction createDefaultEditLayout(schema: any) {\n const keys = Object.keys(schema.attributes).filter((name) => hasEditableAttribute(schema, name));\n\n return appendToEditLayout([], keys, schema);\n}\n\n/** Synchronisation functions */\n\nfunction syncLayouts(configuration: any, schema: any) {\n if (_.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);\n\n const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};\n\n let cleanList = list.filter((attr: any) => isListable(schema, attr));\n\n // TODO V5: remove editRelations\n const cleanEditRelations = editRelations.filter((attr: any) =>\n hasRelationAttribute(schema, attr)\n );\n\n // backward compatibility with when relations were on the side of the layout\n // it migrates the displayed relations to the main edit layout\n const elementsToReAppend = [...cleanEditRelations];\n let cleanEdit: unknown[] = [];\n for (const row of edit) {\n const newRow: unknown[] = [];\n\n for (const el of row) {\n if (!hasEditableAttribute(schema, el.name)) continue;\n\n // Check if the field is a custom field with a custom size.\n // If so, use the custom size instead of the type size\n const { hasFieldSize } = getService('field-sizes');\n const fieldType = hasFieldSize(schema.attributes[el.name].customField)\n ? schema.attributes[el.name].customField\n : schema.attributes[el.name].type;\n\n /* if the type of a field was changed (ex: string -> json) or a new field was added in the schema\n and the new type doesn't allow the size of the previous type, append the field at the end of layouts\n */\n if (!isAllowedFieldSize(fieldType, el.size)) {\n elementsToReAppend.push(el.name);\n continue;\n }\n\n newRow.push(el);\n }\n\n if (newRow.length > 0) {\n cleanEdit.push(newRow);\n }\n }\n\n cleanEdit = appendToEditLayout(cleanEdit as any, elementsToReAppend, schema);\n\n const newAttributes = _.difference(\n Object.keys(schema.attributes),\n Object.keys(configuration.metadatas)\n );\n\n /** Add new attributes where they belong */\n\n if (cleanList.length < DEFAULT_LIST_LENGTH) {\n // add newAttributes\n // only add valid listable attributes\n cleanList = _.uniq(\n cleanList\n .concat(newAttributes.filter((key) => isListable(schema, key)))\n .slice(0, DEFAULT_LIST_LENGTH)\n );\n }\n\n // add new attributes to edit view\n const newEditAttributes = newAttributes.filter((key) => hasEditableAttribute(schema, key));\n\n cleanEdit = appendToEditLayout(cleanEdit, newEditAttributes, schema);\n\n return {\n list: cleanList.length > 0 ? cleanList : createDefaultListLayout(schema),\n edit: cleanEdit.length > 0 ? cleanEdit : createDefaultEditLayout(schema),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/default-param-last\nconst appendToEditLayout = (layout: any = [], keysToAppend: any, schema: any) => {\n if (keysToAppend.length === 0) return layout;\n let currentRowIndex = Math.max(layout.length - 1, 0);\n\n // init currentRow if necessary\n if (!layout[currentRowIndex]) {\n layout[currentRowIndex] = [];\n }\n\n for (const key of keysToAppend) {\n const attribute = schema.attributes[key];\n\n const attributeSize = getDefaultFieldSize(attribute);\n const currenRowSize = rowSize(layout[currentRowIndex]);\n\n if (currenRowSize + attributeSize > MAX_ROW_SIZE) {\n currentRowIndex += 1;\n layout[currentRowIndex] = [];\n }\n\n layout[currentRowIndex].push({\n name: key,\n size: attributeSize,\n });\n }\n\n return layout;\n};\n\nexport { createDefaultLayouts, syncLayouts };\n"],"names":["DEFAULT_LIST_LENGTH","MAX_ROW_SIZE","isAllowedFieldSize","type","size","getFieldSize","getService","fieldSize","isResizable","default","getDefaultFieldSize","attribute","hasFieldSize","customField","createDefaultLayouts","schema","list","createDefaultListLayout","edit","createDefaultEditLayout","_","pick","get","Object","keys","attributes","filter","name","isListable","slice","rowSize","els","reduce","sum","el","hasEditableAttribute","appendToEditLayout","syncLayouts","configuration","isEmpty","layouts","editRelations","cleanList","attr","cleanEditRelations","hasRelationAttribute","elementsToReAppend","cleanEdit","row","newRow","fieldType","push","length","newAttributes","difference","metadatas","uniq","concat","key","newEditAttributes","layout","keysToAppend","currentRowIndex","Math","max","attributeSize","currenRowSize"],"mappings":";;;;;;AAIA,MAAMA,mBAAsB,GAAA,CAAA;AAC5B,MAAMC,YAAe,GAAA,EAAA;AAErB,MAAMC,kBAAAA,GAAqB,CAACC,IAAWC,EAAAA,IAAAA,GAAAA;AACrC,IAAA,MAAM,EAAEC,YAAY,EAAE,GAAGC,gBAAW,CAAA,aAAA,CAAA;AACpC,IAAA,MAAMC,YAAYF,YAAaF,CAAAA,IAAAA,CAAAA;;AAG/B,IAAA,IAAI,CAACI,SAAUC,CAAAA,WAAW,IAAIJ,IAASG,KAAAA,SAAAA,CAAUE,OAAO,EAAE;QACxD,OAAO,KAAA;AACT;;AAGA,IAAA,OAAOL,IAAQH,IAAAA,YAAAA;AACjB,CAAA;AAEA,MAAMS,sBAAsB,CAACC,SAAAA,GAAAA;AAC3B,IAAA,MAAM,EAAEC,YAAY,EAAEP,YAAY,EAAE,GAAGC,gBAAW,CAAA,aAAA,CAAA;;IAGlD,OAAOD,YAAAA,CAAaO,YAAaD,CAAAA,SAAAA,CAAUE,WAAW,CAAA,GAAIF,SAAUE,CAAAA,WAAW,GAAGF,SAAAA,CAAUR,IAAI,CAAA,CAC7FM,OAAO;AACZ,CAAA;AAEA,eAAeK,qBAAqBC,MAAW,EAAA;IAC7C,OAAO;;AAELC,QAAAA,IAAAA,EAAMC,uBAAwBF,CAAAA,MAAAA,CAAAA;;AAE9BG,QAAAA,IAAAA,EAAMC,uBAAwBJ,CAAAA,MAAAA,CAAAA;AAC9B,QAAA,GAAGK,EAAEC,IAAI,CAACD,CAAEE,CAAAA,GAAG,CAACP,MAAQ,EAAA;AAAC,YAAA,QAAA;AAAU,YAAA;AAAU,SAAA,EAAE,EAAK,CAAA,EAAA;AAAC,YAAA,MAAA;AAAQ,YAAA;SAAO;AACtE,KAAA;AACF;AAEA,SAASE,wBAAwBF,MAAW,EAAA;AAC1C,IAAA,OAAOQ,MAAOC,CAAAA,IAAI,CAACT,MAAAA,CAAOU,UAAU,CACjCC,CAAAA,MAAM,CAAC,CAACC,OAASC,qBAAWb,CAAAA,MAAAA,EAAQY,IACpCE,CAAAA,CAAAA,CAAAA,KAAK,CAAC,CAAG7B,EAAAA,mBAAAA,CAAAA;AACd;AAEA,MAAM8B,OAAU,GAAA,CAACC,GAAaA,GAAAA,GAAAA,CAAIC,MAAM,CAAC,CAACC,GAAAA,EAAUC,EAAYD,GAAAA,GAAAA,GAAMC,EAAG9B,CAAAA,IAAI,EAAE,CAAA,CAAA;AAE/E,SAASe,wBAAwBJ,MAAW,EAAA;AAC1C,IAAA,MAAMS,IAAOD,GAAAA,MAAAA,CAAOC,IAAI,CAACT,MAAOU,CAAAA,UAAU,CAAEC,CAAAA,MAAM,CAAC,CAACC,IAASQ,GAAAA,+BAAAA,CAAqBpB,MAAQY,EAAAA,IAAAA,CAAAA,CAAAA;IAE1F,OAAOS,kBAAAA,CAAmB,EAAE,EAAEZ,IAAMT,EAAAA,MAAAA,CAAAA;AACtC;AAEA,iCAEA,SAASsB,WAAYC,CAAAA,aAAkB,EAAEvB,MAAW,EAAA;AAClD,IAAA,IAAIK,EAAEmB,OAAO,CAACD,cAAcE,OAAO,CAAA,EAAG,OAAO1B,oBAAqBC,CAAAA,MAAAA,CAAAA;AAElE,IAAA,MAAM,EAAEC,IAAAA,GAAO,EAAE,EAAEyB,gBAAgB,EAAE,EAAEvB,IAAO,GAAA,EAAE,EAAE,GAAGoB,aAAcE,CAAAA,OAAO,IAAI,EAAC;AAE/E,IAAA,IAAIE,YAAY1B,IAAKU,CAAAA,MAAM,CAAC,CAACiB,IAAAA,GAAcf,sBAAWb,MAAQ4B,EAAAA,IAAAA,CAAAA,CAAAA;;AAG9D,IAAA,MAAMC,qBAAqBH,aAAcf,CAAAA,MAAM,CAAC,CAACiB,IAAAA,GAC/CE,gCAAqB9B,MAAQ4B,EAAAA,IAAAA,CAAAA,CAAAA;;;AAK/B,IAAA,MAAMG,kBAAqB,GAAA;AAAIF,QAAAA,GAAAA;AAAmB,KAAA;AAClD,IAAA,IAAIG,YAAuB,EAAE;IAC7B,KAAK,MAAMC,OAAO9B,IAAM,CAAA;AACtB,QAAA,MAAM+B,SAAoB,EAAE;QAE5B,KAAK,MAAMf,MAAMc,GAAK,CAAA;AACpB,YAAA,IAAI,CAACb,+BAAAA,CAAqBpB,MAAQmB,EAAAA,EAAAA,CAAGP,IAAI,CAAG,EAAA;;;AAI5C,YAAA,MAAM,EAAEf,YAAY,EAAE,GAAGN,gBAAW,CAAA,aAAA,CAAA;YACpC,MAAM4C,SAAAA,GAAYtC,YAAaG,CAAAA,MAAAA,CAAOU,UAAU,CAACS,EAAGP,CAAAA,IAAI,CAAC,CAACd,WAAW,CAAA,GACjEE,MAAOU,CAAAA,UAAU,CAACS,EAAAA,CAAGP,IAAI,CAAC,CAACd,WAAW,GACtCE,MAAAA,CAAOU,UAAU,CAACS,EAAGP,CAAAA,IAAI,CAAC,CAACxB,IAAI;AAEnC;;AAEA,SACA,IAAI,CAACD,kBAAAA,CAAmBgD,SAAWhB,EAAAA,EAAAA,CAAG9B,IAAI,CAAG,EAAA;gBAC3C0C,kBAAmBK,CAAAA,IAAI,CAACjB,EAAAA,CAAGP,IAAI,CAAA;AAC/B,gBAAA;AACF;AAEAsB,YAAAA,MAAAA,CAAOE,IAAI,CAACjB,EAAAA,CAAAA;AACd;QAEA,IAAIe,MAAAA,CAAOG,MAAM,GAAG,CAAG,EAAA;AACrBL,YAAAA,SAAAA,CAAUI,IAAI,CAACF,MAAAA,CAAAA;AACjB;AACF;IAEAF,SAAYX,GAAAA,kBAAAA,CAAmBW,WAAkBD,kBAAoB/B,EAAAA,MAAAA,CAAAA;AAErE,IAAA,MAAMsC,aAAgBjC,GAAAA,CAAAA,CAAEkC,UAAU,CAChC/B,OAAOC,IAAI,CAACT,MAAOU,CAAAA,UAAU,CAC7BF,EAAAA,MAAAA,CAAOC,IAAI,CAACc,cAAciB,SAAS,CAAA,CAAA;AAGrC,gDAEA,IAAIb,SAAUU,CAAAA,MAAM,GAAGpD,mBAAqB,EAAA;;;AAG1C0C,QAAAA,SAAAA,GAAYtB,EAAEoC,IAAI,CAChBd,SACGe,CAAAA,MAAM,CAACJ,aAAc3B,CAAAA,MAAM,CAAC,CAACgC,MAAQ9B,qBAAWb,CAAAA,MAAAA,EAAQ2C,GACxD7B,CAAAA,CAAAA,CAAAA,CAAAA,KAAK,CAAC,CAAG7B,EAAAA,mBAAAA,CAAAA,CAAAA;AAEhB;;AAGA,IAAA,MAAM2D,oBAAoBN,aAAc3B,CAAAA,MAAM,CAAC,CAACgC,GAAAA,GAAQvB,gCAAqBpB,MAAQ2C,EAAAA,GAAAA,CAAAA,CAAAA;IAErFX,SAAYX,GAAAA,kBAAAA,CAAmBW,WAAWY,iBAAmB5C,EAAAA,MAAAA,CAAAA;IAE7D,OAAO;AACLC,QAAAA,IAAAA,EAAM0B,SAAUU,CAAAA,MAAM,GAAG,CAAA,GAAIV,YAAYzB,uBAAwBF,CAAAA,MAAAA,CAAAA;AACjEG,QAAAA,IAAAA,EAAM6B,SAAUK,CAAAA,MAAM,GAAG,CAAA,GAAIL,YAAY5B,uBAAwBJ,CAAAA,MAAAA;AACnE,KAAA;AACF;AAEA;AACA,MAAMqB,kBAAqB,GAAA,CAACwB,MAAc,GAAA,EAAE,EAAEC,YAAmB9C,EAAAA,MAAAA,GAAAA;AAC/D,IAAA,IAAI8C,YAAaT,CAAAA,MAAM,KAAK,CAAA,EAAG,OAAOQ,MAAAA;AACtC,IAAA,IAAIE,kBAAkBC,IAAKC,CAAAA,GAAG,CAACJ,MAAOR,CAAAA,MAAM,GAAG,CAAG,EAAA,CAAA,CAAA;;AAGlD,IAAA,IAAI,CAACQ,MAAM,CAACE,eAAAA,CAAgB,EAAE;QAC5BF,MAAM,CAACE,eAAgB,CAAA,GAAG,EAAE;AAC9B;IAEA,KAAK,MAAMJ,OAAOG,YAAc,CAAA;AAC9B,QAAA,MAAMlD,SAAYI,GAAAA,MAAAA,CAAOU,UAAU,CAACiC,GAAI,CAAA;AAExC,QAAA,MAAMO,gBAAgBvD,mBAAoBC,CAAAA,SAAAA,CAAAA;AAC1C,QAAA,MAAMuD,aAAgBpC,GAAAA,OAAAA,CAAQ8B,MAAM,CAACE,eAAgB,CAAA,CAAA;QAErD,IAAII,aAAAA,GAAgBD,gBAAgBhE,YAAc,EAAA;YAChD6D,eAAmB,IAAA,CAAA;YACnBF,MAAM,CAACE,eAAgB,CAAA,GAAG,EAAE;AAC9B;AAEAF,QAAAA,MAAM,CAACE,eAAAA,CAAgB,CAACX,IAAI,CAAC;YAC3BxB,IAAM+B,EAAAA,GAAAA;YACNtD,IAAM6D,EAAAA;AACR,SAAA,CAAA;AACF;IAEA,OAAOL,MAAAA;AACT,CAAA;;;;;"}
1
+ {"version":3,"file":"layouts.js","sources":["../../../../../server/src/services/utils/configuration/layouts.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport { isListable, hasEditableAttribute, hasRelationAttribute } from './attributes';\n\nconst DEFAULT_LIST_LENGTH = 4;\nconst MAX_ROW_SIZE = 12;\n\nconst isAllowedFieldSize = (type: any, size: any) => {\n const { getFieldSize } = getService('field-sizes');\n const fieldSize = getFieldSize(type);\n\n // Check if field was locked to another size\n if (!fieldSize.isResizable && size !== fieldSize.default) {\n return false;\n }\n\n // Otherwise allow unless it's bigger than a row\n return size <= MAX_ROW_SIZE;\n};\n\nconst getDefaultFieldSize = (attribute: any) => {\n const { hasFieldSize, getFieldSize } = getService('field-sizes');\n\n // Check if it's a custom field with a custom size and get the default size for the field type\n return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type)\n .default;\n};\n\nasync function createDefaultLayouts(schema: any) {\n return {\n // @ts-expect-error necessary to provide this default layout\n list: createDefaultListLayout(schema),\n // @ts-expect-error necessary to provide this default layout\n edit: createDefaultEditLayout(schema),\n ..._.pick(_.get(schema, ['config', 'layouts'], {}), ['list', 'edit']),\n };\n}\n\nfunction createDefaultListLayout(schema: any) {\n return Object.keys(schema.attributes)\n .filter((name) => isListable(schema, name) && name !== 'documentId')\n .slice(0, DEFAULT_LIST_LENGTH);\n}\n\nconst rowSize = (els: any) => els.reduce((sum: any, el: any) => sum + el.size, 0);\n\nfunction createDefaultEditLayout(schema: any) {\n const keys = Object.keys(schema.attributes).filter((name) => hasEditableAttribute(schema, name));\n\n return appendToEditLayout([], keys, schema);\n}\n\n/** Synchronisation functions */\n\nfunction syncLayouts(configuration: any, schema: any) {\n if (_.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);\n\n const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};\n\n let cleanList = list.filter((attr: any) => isListable(schema, attr));\n\n // TODO V5: remove editRelations\n const cleanEditRelations = editRelations.filter((attr: any) =>\n hasRelationAttribute(schema, attr)\n );\n\n // backward compatibility with when relations were on the side of the layout\n // it migrates the displayed relations to the main edit layout\n const elementsToReAppend = [...cleanEditRelations];\n let cleanEdit: unknown[] = [];\n for (const row of edit) {\n const newRow: unknown[] = [];\n\n for (const el of row) {\n if (!hasEditableAttribute(schema, el.name)) continue;\n\n // Check if the field is a custom field with a custom size.\n // If so, use the custom size instead of the type size\n const { hasFieldSize } = getService('field-sizes');\n const fieldType = hasFieldSize(schema.attributes[el.name].customField)\n ? schema.attributes[el.name].customField\n : schema.attributes[el.name].type;\n\n /* if the type of a field was changed (ex: string -> json) or a new field was added in the schema\n and the new type doesn't allow the size of the previous type, append the field at the end of layouts\n */\n if (!isAllowedFieldSize(fieldType, el.size)) {\n elementsToReAppend.push(el.name);\n continue;\n }\n\n newRow.push(el);\n }\n\n if (newRow.length > 0) {\n cleanEdit.push(newRow);\n }\n }\n\n cleanEdit = appendToEditLayout(cleanEdit as any, elementsToReAppend, schema);\n\n const newAttributes = _.difference(\n Object.keys(schema.attributes),\n Object.keys(configuration.metadatas)\n );\n\n /** Add new attributes where they belong */\n\n if (cleanList.length < DEFAULT_LIST_LENGTH) {\n // add newAttributes\n // only add valid listable attributes\n cleanList = _.uniq(\n cleanList\n .concat(newAttributes.filter((key) => isListable(schema, key)))\n .slice(0, DEFAULT_LIST_LENGTH)\n );\n }\n\n // add new attributes to edit view\n const newEditAttributes = newAttributes.filter((key) => hasEditableAttribute(schema, key));\n\n cleanEdit = appendToEditLayout(cleanEdit, newEditAttributes, schema);\n\n return {\n list: cleanList.length > 0 ? cleanList : createDefaultListLayout(schema),\n edit: cleanEdit.length > 0 ? cleanEdit : createDefaultEditLayout(schema),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/default-param-last\nconst appendToEditLayout = (layout: any = [], keysToAppend: any, schema: any) => {\n if (keysToAppend.length === 0) return layout;\n let currentRowIndex = Math.max(layout.length - 1, 0);\n\n // init currentRow if necessary\n if (!layout[currentRowIndex]) {\n layout[currentRowIndex] = [];\n }\n\n for (const key of keysToAppend) {\n const attribute = schema.attributes[key];\n\n const attributeSize = getDefaultFieldSize(attribute);\n const currenRowSize = rowSize(layout[currentRowIndex]);\n\n if (currenRowSize + attributeSize > MAX_ROW_SIZE) {\n currentRowIndex += 1;\n layout[currentRowIndex] = [];\n }\n\n layout[currentRowIndex].push({\n name: key,\n size: attributeSize,\n });\n }\n\n return layout;\n};\n\nexport { createDefaultLayouts, syncLayouts };\n"],"names":["DEFAULT_LIST_LENGTH","MAX_ROW_SIZE","isAllowedFieldSize","type","size","getFieldSize","getService","fieldSize","isResizable","default","getDefaultFieldSize","attribute","hasFieldSize","customField","createDefaultLayouts","schema","list","createDefaultListLayout","edit","createDefaultEditLayout","_","pick","get","Object","keys","attributes","filter","name","isListable","slice","rowSize","els","reduce","sum","el","hasEditableAttribute","appendToEditLayout","syncLayouts","configuration","isEmpty","layouts","editRelations","cleanList","attr","cleanEditRelations","hasRelationAttribute","elementsToReAppend","cleanEdit","row","newRow","fieldType","push","length","newAttributes","difference","metadatas","uniq","concat","key","newEditAttributes","layout","keysToAppend","currentRowIndex","Math","max","attributeSize","currenRowSize"],"mappings":"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"}
@@ -35,7 +35,7 @@ async function createDefaultLayouts(schema) {
35
35
  };
36
36
  }
37
37
  function createDefaultListLayout(schema) {
38
- return Object.keys(schema.attributes).filter((name)=>isListable(schema, name)).slice(0, DEFAULT_LIST_LENGTH);
38
+ return Object.keys(schema.attributes).filter((name)=>isListable(schema, name) && name !== 'documentId').slice(0, DEFAULT_LIST_LENGTH);
39
39
  }
40
40
  const rowSize = (els)=>els.reduce((sum, el)=>sum + el.size, 0);
41
41
  function createDefaultEditLayout(schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.mjs","sources":["../../../../../server/src/services/utils/configuration/layouts.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport { isListable, hasEditableAttribute, hasRelationAttribute } from './attributes';\n\nconst DEFAULT_LIST_LENGTH = 4;\nconst MAX_ROW_SIZE = 12;\n\nconst isAllowedFieldSize = (type: any, size: any) => {\n const { getFieldSize } = getService('field-sizes');\n const fieldSize = getFieldSize(type);\n\n // Check if field was locked to another size\n if (!fieldSize.isResizable && size !== fieldSize.default) {\n return false;\n }\n\n // Otherwise allow unless it's bigger than a row\n return size <= MAX_ROW_SIZE;\n};\n\nconst getDefaultFieldSize = (attribute: any) => {\n const { hasFieldSize, getFieldSize } = getService('field-sizes');\n\n // Check if it's a custom field with a custom size and get the default size for the field type\n return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type)\n .default;\n};\n\nasync function createDefaultLayouts(schema: any) {\n return {\n // @ts-expect-error necessary to provide this default layout\n list: createDefaultListLayout(schema),\n // @ts-expect-error necessary to provide this default layout\n edit: createDefaultEditLayout(schema),\n ..._.pick(_.get(schema, ['config', 'layouts'], {}), ['list', 'edit']),\n };\n}\n\nfunction createDefaultListLayout(schema: any) {\n return Object.keys(schema.attributes)\n .filter((name) => isListable(schema, name))\n .slice(0, DEFAULT_LIST_LENGTH);\n}\n\nconst rowSize = (els: any) => els.reduce((sum: any, el: any) => sum + el.size, 0);\n\nfunction createDefaultEditLayout(schema: any) {\n const keys = Object.keys(schema.attributes).filter((name) => hasEditableAttribute(schema, name));\n\n return appendToEditLayout([], keys, schema);\n}\n\n/** Synchronisation functions */\n\nfunction syncLayouts(configuration: any, schema: any) {\n if (_.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);\n\n const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};\n\n let cleanList = list.filter((attr: any) => isListable(schema, attr));\n\n // TODO V5: remove editRelations\n const cleanEditRelations = editRelations.filter((attr: any) =>\n hasRelationAttribute(schema, attr)\n );\n\n // backward compatibility with when relations were on the side of the layout\n // it migrates the displayed relations to the main edit layout\n const elementsToReAppend = [...cleanEditRelations];\n let cleanEdit: unknown[] = [];\n for (const row of edit) {\n const newRow: unknown[] = [];\n\n for (const el of row) {\n if (!hasEditableAttribute(schema, el.name)) continue;\n\n // Check if the field is a custom field with a custom size.\n // If so, use the custom size instead of the type size\n const { hasFieldSize } = getService('field-sizes');\n const fieldType = hasFieldSize(schema.attributes[el.name].customField)\n ? schema.attributes[el.name].customField\n : schema.attributes[el.name].type;\n\n /* if the type of a field was changed (ex: string -> json) or a new field was added in the schema\n and the new type doesn't allow the size of the previous type, append the field at the end of layouts\n */\n if (!isAllowedFieldSize(fieldType, el.size)) {\n elementsToReAppend.push(el.name);\n continue;\n }\n\n newRow.push(el);\n }\n\n if (newRow.length > 0) {\n cleanEdit.push(newRow);\n }\n }\n\n cleanEdit = appendToEditLayout(cleanEdit as any, elementsToReAppend, schema);\n\n const newAttributes = _.difference(\n Object.keys(schema.attributes),\n Object.keys(configuration.metadatas)\n );\n\n /** Add new attributes where they belong */\n\n if (cleanList.length < DEFAULT_LIST_LENGTH) {\n // add newAttributes\n // only add valid listable attributes\n cleanList = _.uniq(\n cleanList\n .concat(newAttributes.filter((key) => isListable(schema, key)))\n .slice(0, DEFAULT_LIST_LENGTH)\n );\n }\n\n // add new attributes to edit view\n const newEditAttributes = newAttributes.filter((key) => hasEditableAttribute(schema, key));\n\n cleanEdit = appendToEditLayout(cleanEdit, newEditAttributes, schema);\n\n return {\n list: cleanList.length > 0 ? cleanList : createDefaultListLayout(schema),\n edit: cleanEdit.length > 0 ? cleanEdit : createDefaultEditLayout(schema),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/default-param-last\nconst appendToEditLayout = (layout: any = [], keysToAppend: any, schema: any) => {\n if (keysToAppend.length === 0) return layout;\n let currentRowIndex = Math.max(layout.length - 1, 0);\n\n // init currentRow if necessary\n if (!layout[currentRowIndex]) {\n layout[currentRowIndex] = [];\n }\n\n for (const key of keysToAppend) {\n const attribute = schema.attributes[key];\n\n const attributeSize = getDefaultFieldSize(attribute);\n const currenRowSize = rowSize(layout[currentRowIndex]);\n\n if (currenRowSize + attributeSize > MAX_ROW_SIZE) {\n currentRowIndex += 1;\n layout[currentRowIndex] = [];\n }\n\n layout[currentRowIndex].push({\n name: key,\n size: attributeSize,\n });\n }\n\n return layout;\n};\n\nexport { createDefaultLayouts, syncLayouts };\n"],"names":["DEFAULT_LIST_LENGTH","MAX_ROW_SIZE","isAllowedFieldSize","type","size","getFieldSize","getService","fieldSize","isResizable","default","getDefaultFieldSize","attribute","hasFieldSize","customField","createDefaultLayouts","schema","list","createDefaultListLayout","edit","createDefaultEditLayout","_","pick","get","Object","keys","attributes","filter","name","isListable","slice","rowSize","els","reduce","sum","el","hasEditableAttribute","appendToEditLayout","syncLayouts","configuration","isEmpty","layouts","editRelations","cleanList","attr","cleanEditRelations","hasRelationAttribute","elementsToReAppend","cleanEdit","row","newRow","fieldType","push","length","newAttributes","difference","metadatas","uniq","concat","key","newEditAttributes","layout","keysToAppend","currentRowIndex","Math","max","attributeSize","currenRowSize"],"mappings":"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"}
1
+ {"version":3,"file":"layouts.mjs","sources":["../../../../../server/src/services/utils/configuration/layouts.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport { isListable, hasEditableAttribute, hasRelationAttribute } from './attributes';\n\nconst DEFAULT_LIST_LENGTH = 4;\nconst MAX_ROW_SIZE = 12;\n\nconst isAllowedFieldSize = (type: any, size: any) => {\n const { getFieldSize } = getService('field-sizes');\n const fieldSize = getFieldSize(type);\n\n // Check if field was locked to another size\n if (!fieldSize.isResizable && size !== fieldSize.default) {\n return false;\n }\n\n // Otherwise allow unless it's bigger than a row\n return size <= MAX_ROW_SIZE;\n};\n\nconst getDefaultFieldSize = (attribute: any) => {\n const { hasFieldSize, getFieldSize } = getService('field-sizes');\n\n // Check if it's a custom field with a custom size and get the default size for the field type\n return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type)\n .default;\n};\n\nasync function createDefaultLayouts(schema: any) {\n return {\n // @ts-expect-error necessary to provide this default layout\n list: createDefaultListLayout(schema),\n // @ts-expect-error necessary to provide this default layout\n edit: createDefaultEditLayout(schema),\n ..._.pick(_.get(schema, ['config', 'layouts'], {}), ['list', 'edit']),\n };\n}\n\nfunction createDefaultListLayout(schema: any) {\n return Object.keys(schema.attributes)\n .filter((name) => isListable(schema, name) && name !== 'documentId')\n .slice(0, DEFAULT_LIST_LENGTH);\n}\n\nconst rowSize = (els: any) => els.reduce((sum: any, el: any) => sum + el.size, 0);\n\nfunction createDefaultEditLayout(schema: any) {\n const keys = Object.keys(schema.attributes).filter((name) => hasEditableAttribute(schema, name));\n\n return appendToEditLayout([], keys, schema);\n}\n\n/** Synchronisation functions */\n\nfunction syncLayouts(configuration: any, schema: any) {\n if (_.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);\n\n const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};\n\n let cleanList = list.filter((attr: any) => isListable(schema, attr));\n\n // TODO V5: remove editRelations\n const cleanEditRelations = editRelations.filter((attr: any) =>\n hasRelationAttribute(schema, attr)\n );\n\n // backward compatibility with when relations were on the side of the layout\n // it migrates the displayed relations to the main edit layout\n const elementsToReAppend = [...cleanEditRelations];\n let cleanEdit: unknown[] = [];\n for (const row of edit) {\n const newRow: unknown[] = [];\n\n for (const el of row) {\n if (!hasEditableAttribute(schema, el.name)) continue;\n\n // Check if the field is a custom field with a custom size.\n // If so, use the custom size instead of the type size\n const { hasFieldSize } = getService('field-sizes');\n const fieldType = hasFieldSize(schema.attributes[el.name].customField)\n ? schema.attributes[el.name].customField\n : schema.attributes[el.name].type;\n\n /* if the type of a field was changed (ex: string -> json) or a new field was added in the schema\n and the new type doesn't allow the size of the previous type, append the field at the end of layouts\n */\n if (!isAllowedFieldSize(fieldType, el.size)) {\n elementsToReAppend.push(el.name);\n continue;\n }\n\n newRow.push(el);\n }\n\n if (newRow.length > 0) {\n cleanEdit.push(newRow);\n }\n }\n\n cleanEdit = appendToEditLayout(cleanEdit as any, elementsToReAppend, schema);\n\n const newAttributes = _.difference(\n Object.keys(schema.attributes),\n Object.keys(configuration.metadatas)\n );\n\n /** Add new attributes where they belong */\n\n if (cleanList.length < DEFAULT_LIST_LENGTH) {\n // add newAttributes\n // only add valid listable attributes\n cleanList = _.uniq(\n cleanList\n .concat(newAttributes.filter((key) => isListable(schema, key)))\n .slice(0, DEFAULT_LIST_LENGTH)\n );\n }\n\n // add new attributes to edit view\n const newEditAttributes = newAttributes.filter((key) => hasEditableAttribute(schema, key));\n\n cleanEdit = appendToEditLayout(cleanEdit, newEditAttributes, schema);\n\n return {\n list: cleanList.length > 0 ? cleanList : createDefaultListLayout(schema),\n edit: cleanEdit.length > 0 ? cleanEdit : createDefaultEditLayout(schema),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/default-param-last\nconst appendToEditLayout = (layout: any = [], keysToAppend: any, schema: any) => {\n if (keysToAppend.length === 0) return layout;\n let currentRowIndex = Math.max(layout.length - 1, 0);\n\n // init currentRow if necessary\n if (!layout[currentRowIndex]) {\n layout[currentRowIndex] = [];\n }\n\n for (const key of keysToAppend) {\n const attribute = schema.attributes[key];\n\n const attributeSize = getDefaultFieldSize(attribute);\n const currenRowSize = rowSize(layout[currentRowIndex]);\n\n if (currenRowSize + attributeSize > MAX_ROW_SIZE) {\n currentRowIndex += 1;\n layout[currentRowIndex] = [];\n }\n\n layout[currentRowIndex].push({\n name: key,\n size: attributeSize,\n });\n }\n\n return layout;\n};\n\nexport { createDefaultLayouts, syncLayouts };\n"],"names":["DEFAULT_LIST_LENGTH","MAX_ROW_SIZE","isAllowedFieldSize","type","size","getFieldSize","getService","fieldSize","isResizable","default","getDefaultFieldSize","attribute","hasFieldSize","customField","createDefaultLayouts","schema","list","createDefaultListLayout","edit","createDefaultEditLayout","_","pick","get","Object","keys","attributes","filter","name","isListable","slice","rowSize","els","reduce","sum","el","hasEditableAttribute","appendToEditLayout","syncLayouts","configuration","isEmpty","layouts","editRelations","cleanList","attr","cleanEditRelations","hasRelationAttribute","elementsToReAppend","cleanEdit","row","newRow","fieldType","push","length","newAttributes","difference","metadatas","uniq","concat","key","newEditAttributes","layout","keysToAppend","currentRowIndex","Math","max","attributeSize","currenRowSize"],"mappings":"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"}
@@ -17,6 +17,14 @@ function createDefaultMetadatas(schema) {
17
17
  searchable: true,
18
18
  sortable: true
19
19
  }
20
+ },
21
+ documentId: {
22
+ edit: {},
23
+ list: {
24
+ label: 'documentId',
25
+ searchable: true,
26
+ sortable: true
27
+ }
20
28
  }
21
29
  };
22
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadatas.js","sources":["../../../../../server/src/services/utils/configuration/metadatas.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport {\n isSortable,\n isSearchable,\n isVisible,\n isListable,\n isRelation,\n getDefaultMainField,\n} from './attributes';\n\nfunction createDefaultMetadatas(schema: any) {\n return {\n ...Object.keys(schema.attributes).reduce((acc: any, name) => {\n acc[name] = createDefaultMetadata(schema, name);\n return acc;\n }, {}),\n id: {\n edit: {},\n list: {\n label: 'id',\n searchable: true,\n sortable: true,\n },\n },\n };\n}\n\nfunction createDefaultMetadata(schema: any, name: any) {\n const edit = {\n label: name,\n description: '',\n placeholder: '',\n visible: isVisible(schema, name),\n editable: true,\n } as any;\n\n const fieldAttributes = schema.attributes[name];\n if (isRelation(fieldAttributes)) {\n const { targetModel } = fieldAttributes;\n\n const targetSchema = getTargetSchema(targetModel);\n\n if (targetSchema) {\n edit.mainField = getDefaultMainField(targetSchema);\n }\n }\n\n _.assign(\n edit,\n _.pick(_.get(schema, ['config', 'metadatas', name, 'edit'], {}), [\n 'label',\n 'description',\n 'placeholder',\n 'visible',\n 'editable',\n 'mainField',\n ])\n );\n\n const list = {\n // @ts-expect-error we need to specify these properties\n label: name,\n // @ts-expect-error we need to specify these properties\n searchable: isSearchable(schema, name),\n // @ts-expect-error we need to specify these properties\n sortable: isSortable(schema, name),\n ..._.pick(_.get(schema, ['config', 'metadatas', name, 'list'], {}), [\n 'label',\n 'searchable',\n 'sortable',\n ]),\n };\n\n return { edit, list };\n}\n\n/** Synchronisation functions */\n\nasync function syncMetadatas(configuration: any, schema: any) {\n // clear all keys that do not exist anymore\n if (_.isEmpty(configuration.metadatas)) {\n return createDefaultMetadatas(schema);\n }\n\n // remove old keys\n const metasWithValidKeys = _.pick(configuration.metadatas, Object.keys(schema.attributes));\n\n // add new keys and missing fields\n const metasWithDefaults = _.merge({}, createDefaultMetadatas(schema), metasWithValidKeys);\n\n // clear the invalid mainFields\n const updatedMetas = Object.keys(metasWithDefaults).reduce((acc, key) => {\n const { edit, list } = metasWithDefaults[key];\n const attr = schema.attributes[key];\n\n const updatedMeta = { edit, list };\n // update sortable attr\n if (list.sortable && !isSortable(schema, key)) {\n _.set(updatedMeta, ['list', 'sortable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (list.searchable && !isSearchable(schema, key)) {\n _.set(updatedMeta, ['list', 'searchable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (!_.has(edit, 'mainField')) return acc;\n\n // remove mainField if the attribute is not a relation anymore\n if (!isRelation(attr)) {\n _.set(updatedMeta, 'edit', _.omit(edit, ['mainField']));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n // if the mainField is id you can keep it\n if (edit.mainField === 'id') return acc;\n\n // check the mainField in the targetModel\n const targetSchema = getTargetSchema(attr.targetModel);\n\n if (!targetSchema) return acc;\n\n if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {\n _.set(updatedMeta, ['edit', 'mainField'], getDefaultMainField(targetSchema));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n return acc;\n }, {});\n\n return _.assign(metasWithDefaults, updatedMetas);\n}\n\nconst getTargetSchema = (targetModel: any) => {\n return getService('content-types').findContentType(targetModel);\n};\n\nexport { createDefaultMetadatas, syncMetadatas };\n"],"names":["createDefaultMetadatas","schema","Object","keys","attributes","reduce","acc","name","createDefaultMetadata","id","edit","list","label","searchable","sortable","description","placeholder","visible","isVisible","editable","fieldAttributes","isRelation","targetModel","targetSchema","getTargetSchema","mainField","getDefaultMainField","_","assign","pick","get","isSearchable","isSortable","syncMetadatas","configuration","isEmpty","metadatas","metasWithValidKeys","metasWithDefaults","merge","updatedMetas","key","attr","updatedMeta","set","has","omit","isListable","getService","findContentType"],"mappings":"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"}
1
+ {"version":3,"file":"metadatas.js","sources":["../../../../../server/src/services/utils/configuration/metadatas.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport {\n isSortable,\n isSearchable,\n isVisible,\n isListable,\n isRelation,\n getDefaultMainField,\n} from './attributes';\n\nfunction createDefaultMetadatas(schema: any) {\n return {\n ...Object.keys(schema.attributes).reduce((acc: any, name) => {\n acc[name] = createDefaultMetadata(schema, name);\n return acc;\n }, {}),\n id: {\n edit: {},\n list: {\n label: 'id',\n searchable: true,\n sortable: true,\n },\n },\n documentId: {\n edit: {},\n list: {\n label: 'documentId',\n searchable: true,\n sortable: true,\n },\n },\n };\n}\n\nfunction createDefaultMetadata(schema: any, name: any) {\n const edit = {\n label: name,\n description: '',\n placeholder: '',\n visible: isVisible(schema, name),\n editable: true,\n } as any;\n\n const fieldAttributes = schema.attributes[name];\n if (isRelation(fieldAttributes)) {\n const { targetModel } = fieldAttributes;\n\n const targetSchema = getTargetSchema(targetModel);\n\n if (targetSchema) {\n edit.mainField = getDefaultMainField(targetSchema);\n }\n }\n\n _.assign(\n edit,\n _.pick(_.get(schema, ['config', 'metadatas', name, 'edit'], {}), [\n 'label',\n 'description',\n 'placeholder',\n 'visible',\n 'editable',\n 'mainField',\n ])\n );\n\n const list = {\n // @ts-expect-error we need to specify these properties\n label: name,\n // @ts-expect-error we need to specify these properties\n searchable: isSearchable(schema, name),\n // @ts-expect-error we need to specify these properties\n sortable: isSortable(schema, name),\n ..._.pick(_.get(schema, ['config', 'metadatas', name, 'list'], {}), [\n 'label',\n 'searchable',\n 'sortable',\n ]),\n };\n\n return { edit, list };\n}\n\n/** Synchronisation functions */\n\nasync function syncMetadatas(configuration: any, schema: any) {\n // clear all keys that do not exist anymore\n if (_.isEmpty(configuration.metadatas)) {\n return createDefaultMetadatas(schema);\n }\n\n // remove old keys\n const metasWithValidKeys = _.pick(configuration.metadatas, Object.keys(schema.attributes));\n\n // add new keys and missing fields\n const metasWithDefaults = _.merge({}, createDefaultMetadatas(schema), metasWithValidKeys);\n\n // clear the invalid mainFields\n const updatedMetas = Object.keys(metasWithDefaults).reduce((acc, key) => {\n const { edit, list } = metasWithDefaults[key];\n const attr = schema.attributes[key];\n\n const updatedMeta = { edit, list };\n\n // update sortable attr\n if (list.sortable && !isSortable(schema, key)) {\n _.set(updatedMeta, ['list', 'sortable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (list.searchable && !isSearchable(schema, key)) {\n _.set(updatedMeta, ['list', 'searchable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (!_.has(edit, 'mainField')) return acc;\n\n // remove mainField if the attribute is not a relation anymore\n if (!isRelation(attr)) {\n _.set(updatedMeta, 'edit', _.omit(edit, ['mainField']));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n // if the mainField is id you can keep it\n if (edit.mainField === 'id') return acc;\n\n // check the mainField in the targetModel\n const targetSchema = getTargetSchema(attr.targetModel);\n\n if (!targetSchema) return acc;\n\n if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {\n _.set(updatedMeta, ['edit', 'mainField'], getDefaultMainField(targetSchema));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n return acc;\n }, {});\n\n return _.assign(metasWithDefaults, updatedMetas);\n}\n\nconst getTargetSchema = (targetModel: any) => {\n return getService('content-types').findContentType(targetModel);\n};\n\nexport { createDefaultMetadatas, syncMetadatas };\n"],"names":["createDefaultMetadatas","schema","Object","keys","attributes","reduce","acc","name","createDefaultMetadata","id","edit","list","label","searchable","sortable","documentId","description","placeholder","visible","isVisible","editable","fieldAttributes","isRelation","targetModel","targetSchema","getTargetSchema","mainField","getDefaultMainField","_","assign","pick","get","isSearchable","isSortable","syncMetadatas","configuration","isEmpty","metadatas","metasWithValidKeys","metasWithDefaults","merge","updatedMetas","key","attr","updatedMeta","set","has","omit","isListable","getService","findContentType"],"mappings":"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"}
@@ -15,6 +15,14 @@ function createDefaultMetadatas(schema) {
15
15
  searchable: true,
16
16
  sortable: true
17
17
  }
18
+ },
19
+ documentId: {
20
+ edit: {},
21
+ list: {
22
+ label: 'documentId',
23
+ searchable: true,
24
+ sortable: true
25
+ }
18
26
  }
19
27
  };
20
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadatas.mjs","sources":["../../../../../server/src/services/utils/configuration/metadatas.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport {\n isSortable,\n isSearchable,\n isVisible,\n isListable,\n isRelation,\n getDefaultMainField,\n} from './attributes';\n\nfunction createDefaultMetadatas(schema: any) {\n return {\n ...Object.keys(schema.attributes).reduce((acc: any, name) => {\n acc[name] = createDefaultMetadata(schema, name);\n return acc;\n }, {}),\n id: {\n edit: {},\n list: {\n label: 'id',\n searchable: true,\n sortable: true,\n },\n },\n };\n}\n\nfunction createDefaultMetadata(schema: any, name: any) {\n const edit = {\n label: name,\n description: '',\n placeholder: '',\n visible: isVisible(schema, name),\n editable: true,\n } as any;\n\n const fieldAttributes = schema.attributes[name];\n if (isRelation(fieldAttributes)) {\n const { targetModel } = fieldAttributes;\n\n const targetSchema = getTargetSchema(targetModel);\n\n if (targetSchema) {\n edit.mainField = getDefaultMainField(targetSchema);\n }\n }\n\n _.assign(\n edit,\n _.pick(_.get(schema, ['config', 'metadatas', name, 'edit'], {}), [\n 'label',\n 'description',\n 'placeholder',\n 'visible',\n 'editable',\n 'mainField',\n ])\n );\n\n const list = {\n // @ts-expect-error we need to specify these properties\n label: name,\n // @ts-expect-error we need to specify these properties\n searchable: isSearchable(schema, name),\n // @ts-expect-error we need to specify these properties\n sortable: isSortable(schema, name),\n ..._.pick(_.get(schema, ['config', 'metadatas', name, 'list'], {}), [\n 'label',\n 'searchable',\n 'sortable',\n ]),\n };\n\n return { edit, list };\n}\n\n/** Synchronisation functions */\n\nasync function syncMetadatas(configuration: any, schema: any) {\n // clear all keys that do not exist anymore\n if (_.isEmpty(configuration.metadatas)) {\n return createDefaultMetadatas(schema);\n }\n\n // remove old keys\n const metasWithValidKeys = _.pick(configuration.metadatas, Object.keys(schema.attributes));\n\n // add new keys and missing fields\n const metasWithDefaults = _.merge({}, createDefaultMetadatas(schema), metasWithValidKeys);\n\n // clear the invalid mainFields\n const updatedMetas = Object.keys(metasWithDefaults).reduce((acc, key) => {\n const { edit, list } = metasWithDefaults[key];\n const attr = schema.attributes[key];\n\n const updatedMeta = { edit, list };\n // update sortable attr\n if (list.sortable && !isSortable(schema, key)) {\n _.set(updatedMeta, ['list', 'sortable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (list.searchable && !isSearchable(schema, key)) {\n _.set(updatedMeta, ['list', 'searchable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (!_.has(edit, 'mainField')) return acc;\n\n // remove mainField if the attribute is not a relation anymore\n if (!isRelation(attr)) {\n _.set(updatedMeta, 'edit', _.omit(edit, ['mainField']));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n // if the mainField is id you can keep it\n if (edit.mainField === 'id') return acc;\n\n // check the mainField in the targetModel\n const targetSchema = getTargetSchema(attr.targetModel);\n\n if (!targetSchema) return acc;\n\n if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {\n _.set(updatedMeta, ['edit', 'mainField'], getDefaultMainField(targetSchema));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n return acc;\n }, {});\n\n return _.assign(metasWithDefaults, updatedMetas);\n}\n\nconst getTargetSchema = (targetModel: any) => {\n return getService('content-types').findContentType(targetModel);\n};\n\nexport { createDefaultMetadatas, syncMetadatas };\n"],"names":["createDefaultMetadatas","schema","Object","keys","attributes","reduce","acc","name","createDefaultMetadata","id","edit","list","label","searchable","sortable","description","placeholder","visible","isVisible","editable","fieldAttributes","isRelation","targetModel","targetSchema","getTargetSchema","mainField","getDefaultMainField","_","assign","pick","get","isSearchable","isSortable","syncMetadatas","configuration","isEmpty","metadatas","metasWithValidKeys","metasWithDefaults","merge","updatedMetas","key","attr","updatedMeta","set","has","omit","isListable","getService","findContentType"],"mappings":"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"}
1
+ {"version":3,"file":"metadatas.mjs","sources":["../../../../../server/src/services/utils/configuration/metadatas.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getService } from '../../../utils';\nimport {\n isSortable,\n isSearchable,\n isVisible,\n isListable,\n isRelation,\n getDefaultMainField,\n} from './attributes';\n\nfunction createDefaultMetadatas(schema: any) {\n return {\n ...Object.keys(schema.attributes).reduce((acc: any, name) => {\n acc[name] = createDefaultMetadata(schema, name);\n return acc;\n }, {}),\n id: {\n edit: {},\n list: {\n label: 'id',\n searchable: true,\n sortable: true,\n },\n },\n documentId: {\n edit: {},\n list: {\n label: 'documentId',\n searchable: true,\n sortable: true,\n },\n },\n };\n}\n\nfunction createDefaultMetadata(schema: any, name: any) {\n const edit = {\n label: name,\n description: '',\n placeholder: '',\n visible: isVisible(schema, name),\n editable: true,\n } as any;\n\n const fieldAttributes = schema.attributes[name];\n if (isRelation(fieldAttributes)) {\n const { targetModel } = fieldAttributes;\n\n const targetSchema = getTargetSchema(targetModel);\n\n if (targetSchema) {\n edit.mainField = getDefaultMainField(targetSchema);\n }\n }\n\n _.assign(\n edit,\n _.pick(_.get(schema, ['config', 'metadatas', name, 'edit'], {}), [\n 'label',\n 'description',\n 'placeholder',\n 'visible',\n 'editable',\n 'mainField',\n ])\n );\n\n const list = {\n // @ts-expect-error we need to specify these properties\n label: name,\n // @ts-expect-error we need to specify these properties\n searchable: isSearchable(schema, name),\n // @ts-expect-error we need to specify these properties\n sortable: isSortable(schema, name),\n ..._.pick(_.get(schema, ['config', 'metadatas', name, 'list'], {}), [\n 'label',\n 'searchable',\n 'sortable',\n ]),\n };\n\n return { edit, list };\n}\n\n/** Synchronisation functions */\n\nasync function syncMetadatas(configuration: any, schema: any) {\n // clear all keys that do not exist anymore\n if (_.isEmpty(configuration.metadatas)) {\n return createDefaultMetadatas(schema);\n }\n\n // remove old keys\n const metasWithValidKeys = _.pick(configuration.metadatas, Object.keys(schema.attributes));\n\n // add new keys and missing fields\n const metasWithDefaults = _.merge({}, createDefaultMetadatas(schema), metasWithValidKeys);\n\n // clear the invalid mainFields\n const updatedMetas = Object.keys(metasWithDefaults).reduce((acc, key) => {\n const { edit, list } = metasWithDefaults[key];\n const attr = schema.attributes[key];\n\n const updatedMeta = { edit, list };\n\n // update sortable attr\n if (list.sortable && !isSortable(schema, key)) {\n _.set(updatedMeta, ['list', 'sortable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (list.searchable && !isSearchable(schema, key)) {\n _.set(updatedMeta, ['list', 'searchable'], false);\n _.set(acc, [key], updatedMeta);\n }\n\n if (!_.has(edit, 'mainField')) return acc;\n\n // remove mainField if the attribute is not a relation anymore\n if (!isRelation(attr)) {\n _.set(updatedMeta, 'edit', _.omit(edit, ['mainField']));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n // if the mainField is id you can keep it\n if (edit.mainField === 'id') return acc;\n\n // check the mainField in the targetModel\n const targetSchema = getTargetSchema(attr.targetModel);\n\n if (!targetSchema) return acc;\n\n if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {\n _.set(updatedMeta, ['edit', 'mainField'], getDefaultMainField(targetSchema));\n _.set(acc, [key], updatedMeta);\n return acc;\n }\n\n return acc;\n }, {});\n\n return _.assign(metasWithDefaults, updatedMetas);\n}\n\nconst getTargetSchema = (targetModel: any) => {\n return getService('content-types').findContentType(targetModel);\n};\n\nexport { createDefaultMetadatas, syncMetadatas };\n"],"names":["createDefaultMetadatas","schema","Object","keys","attributes","reduce","acc","name","createDefaultMetadata","id","edit","list","label","searchable","sortable","documentId","description","placeholder","visible","isVisible","editable","fieldAttributes","isRelation","targetModel","targetSchema","getTargetSchema","mainField","getDefaultMainField","_","assign","pick","get","isSearchable","isSortable","syncMetadatas","configuration","isEmpty","metadatas","metasWithValidKeys","metasWithDefaults","merge","updatedMetas","key","attr","updatedMeta","set","has","omit","isListable","getService","findContentType"],"mappings":"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"}
@@ -140,6 +140,17 @@ const isDynamicZone = fp.propEq('type', 'dynamiczone');
140
140
  }
141
141
  return populateAcc;
142
142
  }
143
+ if (isMedia(attribute)) {
144
+ if (getDoesAttributeRequireValidation(attribute)) {
145
+ populateAcc.populate = populateAcc.populate || {};
146
+ populateAcc.populate[attributeName] = {
147
+ populate: {
148
+ folder: true
149
+ }
150
+ };
151
+ return populateAcc;
152
+ }
153
+ }
143
154
  if (isComponent(attribute)) {
144
155
  // @ts-expect-error - should be a component
145
156
  const component = attribute.component;