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

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 (395) hide show
  1. package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
  2. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
  4. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  5. package/dist/admin/components/LeftMenu.js +35 -33
  6. package/dist/admin/components/LeftMenu.js.map +1 -1
  7. package/dist/admin/components/LeftMenu.mjs +37 -35
  8. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  9. package/dist/admin/components/Widgets.js +421 -0
  10. package/dist/admin/components/Widgets.js.map +1 -0
  11. package/dist/admin/components/Widgets.mjs +398 -0
  12. package/dist/admin/components/Widgets.mjs.map +1 -0
  13. package/dist/admin/content-manager.js.map +1 -1
  14. package/dist/admin/content-manager.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionContent.js +24 -3
  16. package/dist/admin/history/components/VersionContent.js.map +1 -1
  17. package/dist/admin/history/components/VersionContent.mjs +25 -4
  18. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  19. package/dist/admin/history/components/VersionHeader.js +6 -0
  20. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  21. package/dist/admin/history/components/VersionHeader.mjs +7 -1
  22. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  23. package/dist/admin/history/pages/History.js +1 -9
  24. package/dist/admin/history/pages/History.js.map +1 -1
  25. package/dist/admin/history/pages/History.mjs +1 -9
  26. package/dist/admin/history/pages/History.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentActions.js +20 -8
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +21 -9
  30. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  31. package/dist/admin/hooks/useDocumentContext.js +57 -0
  32. package/dist/admin/hooks/useDocumentContext.js.map +1 -0
  33. package/dist/admin/hooks/useDocumentContext.mjs +36 -0
  34. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
  35. package/dist/admin/index.js +81 -5
  36. package/dist/admin/index.js.map +1 -1
  37. package/dist/admin/index.mjs +80 -3
  38. package/dist/admin/index.mjs.map +1 -1
  39. package/dist/admin/layout.js +1 -27
  40. package/dist/admin/layout.js.map +1 -1
  41. package/dist/admin/layout.mjs +2 -9
  42. package/dist/admin/layout.mjs.map +1 -1
  43. package/dist/admin/pages/EditView/EditViewPage.js +95 -86
  44. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  45. package/dist/admin/pages/EditView/EditViewPage.mjs +97 -88
  46. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/Blocker.js +18 -0
  48. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
  49. package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
  50. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
  51. package/dist/admin/pages/EditView/components/DocumentActions.js +324 -120
  52. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  53. package/dist/admin/pages/EditView/components/DocumentActions.mjs +331 -127
  54. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
  58. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
  60. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
  62. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
  64. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
  66. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  68. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  70. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
  72. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
  74. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
  76. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
  78. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -4
  80. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -5
  82. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -21
  84. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +25 -23
  86. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
  88. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
  90. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +507 -345
  92. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +507 -347
  94. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +178 -69
  96. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +182 -73
  98. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
  100. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
  102. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
  104. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
  106. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  108. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  110. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
  112. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
  114. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
  116. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
  118. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/InputRenderer.js +23 -17
  120. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/InputRenderer.mjs +23 -17
  122. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/utils/data.js +128 -0
  124. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  125. package/dist/admin/pages/EditView/utils/data.mjs +128 -1
  126. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  127. package/dist/admin/pages/ListView/ListViewPage.js +227 -132
  128. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  129. package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
  130. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  131. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
  132. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  133. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
  134. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  135. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  136. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  137. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  138. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  139. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  140. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  141. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  142. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  143. package/dist/admin/pages/ListView/components/TableActions.js +13 -3
  144. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  145. package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
  146. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  147. package/dist/admin/preview/components/InputPopover.js +189 -0
  148. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  149. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  150. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  151. package/dist/admin/preview/components/PreviewHeader.js +2 -6
  152. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  153. package/dist/admin/preview/components/PreviewHeader.mjs +2 -6
  154. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  155. package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
  156. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  157. package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
  158. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  159. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  160. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  161. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  162. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  163. package/dist/admin/preview/pages/Preview.js +174 -78
  164. package/dist/admin/preview/pages/Preview.js.map +1 -1
  165. package/dist/admin/preview/pages/Preview.mjs +176 -80
  166. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  167. package/dist/admin/preview/utils/constants.js +56 -0
  168. package/dist/admin/preview/utils/constants.js.map +1 -0
  169. package/dist/admin/preview/utils/constants.mjs +52 -0
  170. package/dist/admin/preview/utils/constants.mjs.map +1 -0
  171. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  172. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  173. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  174. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  175. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  176. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  177. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  178. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  179. package/dist/admin/preview/utils/previewScript.js +534 -0
  180. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  181. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  182. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  183. package/dist/admin/services/api.js +4 -1
  184. package/dist/admin/services/api.js.map +1 -1
  185. package/dist/admin/services/api.mjs +4 -1
  186. package/dist/admin/services/api.mjs.map +1 -1
  187. package/dist/admin/services/documents.js +42 -16
  188. package/dist/admin/services/documents.js.map +1 -1
  189. package/dist/admin/services/documents.mjs +42 -16
  190. package/dist/admin/services/documents.mjs.map +1 -1
  191. package/dist/admin/services/homepage.js +30 -0
  192. package/dist/admin/services/homepage.js.map +1 -0
  193. package/dist/admin/services/homepage.mjs +28 -0
  194. package/dist/admin/services/homepage.mjs.map +1 -0
  195. package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
  196. package/dist/admin/src/components/Widgets.d.ts +4 -0
  197. package/dist/admin/src/content-manager.d.ts +0 -3
  198. package/dist/admin/src/exports.d.ts +1 -0
  199. package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
  200. package/dist/admin/src/history/pages/History.d.ts +1 -1
  201. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  202. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
  203. package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
  204. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
  205. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  206. package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
  207. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  208. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
  209. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
  210. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
  211. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
  212. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -2
  213. package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
  214. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  215. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  216. package/dist/admin/src/preview/pages/Preview.d.ts +14 -1
  217. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  218. package/dist/admin/src/preview/utils/constants.d.ts +55 -0
  219. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  220. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  221. package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
  222. package/dist/admin/src/services/api.d.ts +1 -1
  223. package/dist/admin/src/services/components.d.ts +2 -2
  224. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  225. package/dist/admin/src/services/documents.d.ts +23 -17
  226. package/dist/admin/src/services/homepage.d.ts +5 -0
  227. package/dist/admin/src/services/init.d.ts +1 -1
  228. package/dist/admin/src/services/relations.d.ts +2 -2
  229. package/dist/admin/src/services/uid.d.ts +3 -3
  230. package/dist/admin/src/utils/api.d.ts +1 -1
  231. package/dist/admin/src/utils/validation.d.ts +1 -0
  232. package/dist/admin/translations/en.json.js +15 -1
  233. package/dist/admin/translations/en.json.js.map +1 -1
  234. package/dist/admin/translations/en.json.mjs +15 -1
  235. package/dist/admin/translations/en.json.mjs.map +1 -1
  236. package/dist/admin/translations/es.json.js +6 -2
  237. package/dist/admin/translations/es.json.js.map +1 -1
  238. package/dist/admin/translations/es.json.mjs +6 -2
  239. package/dist/admin/translations/es.json.mjs.map +1 -1
  240. package/dist/admin/translations/fr.json.js +11 -2
  241. package/dist/admin/translations/fr.json.js.map +1 -1
  242. package/dist/admin/translations/fr.json.mjs +11 -2
  243. package/dist/admin/translations/fr.json.mjs.map +1 -1
  244. package/dist/admin/translations/ru.json.js +235 -226
  245. package/dist/admin/translations/ru.json.js.map +1 -1
  246. package/dist/admin/translations/ru.json.mjs +230 -226
  247. package/dist/admin/translations/ru.json.mjs.map +1 -1
  248. package/dist/admin/utils/api.js +1 -1
  249. package/dist/admin/utils/api.js.map +1 -1
  250. package/dist/admin/utils/api.mjs +1 -1
  251. package/dist/admin/utils/api.mjs.map +1 -1
  252. package/dist/admin/utils/validation.js +19 -7
  253. package/dist/admin/utils/validation.js.map +1 -1
  254. package/dist/admin/utils/validation.mjs +19 -7
  255. package/dist/admin/utils/validation.mjs.map +1 -1
  256. package/dist/server/controllers/content-types.js +11 -1
  257. package/dist/server/controllers/content-types.js.map +1 -1
  258. package/dist/server/controllers/content-types.mjs +11 -1
  259. package/dist/server/controllers/content-types.mjs.map +1 -1
  260. package/dist/server/controllers/index.js +3 -1
  261. package/dist/server/controllers/index.js.map +1 -1
  262. package/dist/server/controllers/index.mjs +3 -1
  263. package/dist/server/controllers/index.mjs.map +1 -1
  264. package/dist/server/controllers/relations.js +2 -2
  265. package/dist/server/controllers/relations.js.map +1 -1
  266. package/dist/server/controllers/relations.mjs +2 -2
  267. package/dist/server/controllers/relations.mjs.map +1 -1
  268. package/dist/server/controllers/validation/index.js +14 -2
  269. package/dist/server/controllers/validation/index.js.map +1 -1
  270. package/dist/server/controllers/validation/index.mjs +14 -2
  271. package/dist/server/controllers/validation/index.mjs.map +1 -1
  272. package/dist/server/history/services/lifecycles.js +23 -19
  273. package/dist/server/history/services/lifecycles.js.map +1 -1
  274. package/dist/server/history/services/lifecycles.mjs +23 -19
  275. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  276. package/dist/server/homepage/controllers/homepage.js +62 -0
  277. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  278. package/dist/server/homepage/controllers/homepage.mjs +41 -0
  279. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  280. package/dist/server/homepage/controllers/index.js +10 -0
  281. package/dist/server/homepage/controllers/index.js.map +1 -0
  282. package/dist/server/homepage/controllers/index.mjs +8 -0
  283. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  284. package/dist/server/homepage/index.js +14 -0
  285. package/dist/server/homepage/index.js.map +1 -0
  286. package/dist/server/homepage/index.mjs +12 -0
  287. package/dist/server/homepage/index.mjs.map +1 -0
  288. package/dist/server/homepage/routes/homepage.js +36 -0
  289. package/dist/server/homepage/routes/homepage.js.map +1 -0
  290. package/dist/server/homepage/routes/homepage.mjs +34 -0
  291. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  292. package/dist/server/homepage/routes/index.js +13 -0
  293. package/dist/server/homepage/routes/index.js.map +1 -0
  294. package/dist/server/homepage/routes/index.mjs +11 -0
  295. package/dist/server/homepage/routes/index.mjs.map +1 -0
  296. package/dist/server/homepage/services/homepage.js +197 -0
  297. package/dist/server/homepage/services/homepage.js.map +1 -0
  298. package/dist/server/homepage/services/homepage.mjs +195 -0
  299. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  300. package/dist/server/homepage/services/index.js +10 -0
  301. package/dist/server/homepage/services/index.js.map +1 -0
  302. package/dist/server/homepage/services/index.mjs +8 -0
  303. package/dist/server/homepage/services/index.mjs.map +1 -0
  304. package/dist/server/preview/services/preview-config.js +5 -1
  305. package/dist/server/preview/services/preview-config.js.map +1 -1
  306. package/dist/server/preview/services/preview-config.mjs +5 -1
  307. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  308. package/dist/server/preview/services/preview.js +4 -1
  309. package/dist/server/preview/services/preview.js.map +1 -1
  310. package/dist/server/preview/services/preview.mjs +4 -1
  311. package/dist/server/preview/services/preview.mjs.map +1 -1
  312. package/dist/server/routes/index.js +3 -1
  313. package/dist/server/routes/index.js.map +1 -1
  314. package/dist/server/routes/index.mjs +3 -1
  315. package/dist/server/routes/index.mjs.map +1 -1
  316. package/dist/server/services/data-mapper.js +4 -1
  317. package/dist/server/services/data-mapper.js.map +1 -1
  318. package/dist/server/services/data-mapper.mjs +4 -1
  319. package/dist/server/services/data-mapper.mjs.map +1 -1
  320. package/dist/server/services/document-manager.js +8 -1
  321. package/dist/server/services/document-manager.js.map +1 -1
  322. package/dist/server/services/document-manager.mjs +8 -1
  323. package/dist/server/services/document-manager.mjs.map +1 -1
  324. package/dist/server/services/document-metadata.js +3 -1
  325. package/dist/server/services/document-metadata.js.map +1 -1
  326. package/dist/server/services/document-metadata.mjs +3 -1
  327. package/dist/server/services/document-metadata.mjs.map +1 -1
  328. package/dist/server/services/index.js +3 -1
  329. package/dist/server/services/index.js.map +1 -1
  330. package/dist/server/services/index.mjs +3 -1
  331. package/dist/server/services/index.mjs.map +1 -1
  332. package/dist/server/services/utils/configuration/attributes.js +1 -1
  333. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  334. package/dist/server/services/utils/configuration/attributes.mjs +1 -1
  335. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  336. package/dist/server/services/utils/configuration/layouts.js +1 -1
  337. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  338. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  339. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  340. package/dist/server/services/utils/configuration/metadatas.js +8 -0
  341. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  342. package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
  343. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  344. package/dist/server/services/utils/populate.js +11 -0
  345. package/dist/server/services/utils/populate.js.map +1 -1
  346. package/dist/server/services/utils/populate.mjs +11 -0
  347. package/dist/server/services/utils/populate.mjs.map +1 -1
  348. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  349. package/dist/server/src/controllers/index.d.ts.map +1 -1
  350. package/dist/server/src/controllers/validation/index.d.ts +6 -1
  351. package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
  352. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  353. package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
  354. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  355. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  356. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  357. package/dist/server/src/homepage/index.d.ts +23 -0
  358. package/dist/server/src/homepage/index.d.ts.map +1 -0
  359. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  360. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  361. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  362. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  363. package/dist/server/src/homepage/services/homepage.d.ts +14 -0
  364. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  365. package/dist/server/src/homepage/services/index.d.ts +16 -0
  366. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  367. package/dist/server/src/index.d.ts +15 -0
  368. package/dist/server/src/index.d.ts.map +1 -1
  369. package/dist/server/src/preview/services/index.d.ts +1 -0
  370. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  371. package/dist/server/src/preview/services/preview-config.d.ts +1 -0
  372. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  373. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  374. package/dist/server/src/preview/utils.d.ts +1 -0
  375. package/dist/server/src/preview/utils.d.ts.map +1 -1
  376. package/dist/server/src/routes/index.d.ts +1 -0
  377. package/dist/server/src/routes/index.d.ts.map +1 -1
  378. package/dist/server/src/services/data-mapper.d.ts +1 -0
  379. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  380. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  381. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  382. package/dist/server/src/services/index.d.ts +14 -0
  383. package/dist/server/src/services/index.d.ts.map +1 -1
  384. package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
  385. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  386. package/dist/shared/contracts/collection-types.d.ts +0 -1
  387. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  388. package/dist/shared/contracts/homepage.d.ts +38 -0
  389. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  390. package/package.json +12 -10
  391. package/dist/admin/features/DocumentContext.js +0 -71
  392. package/dist/admin/features/DocumentContext.js.map +0 -1
  393. package/dist/admin/features/DocumentContext.mjs +0 -49
  394. package/dist/admin/features/DocumentContext.mjs.map +0 -1
  395. package/dist/admin/src/features/DocumentContext.d.ts +0 -53
@@ -5,11 +5,12 @@ var React = require('react');
5
5
  var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var reactIntl = require('react-intl');
7
7
  var collections = require('../../../constants/collections.js');
8
- var DocumentContext = require('../../../features/DocumentContext.js');
9
8
  var DocumentRBAC = require('../../../features/DocumentRBAC.js');
10
- var useDocument = require('../../../hooks/useDocument.js');
9
+ var useDocumentContext = require('../../../hooks/useDocumentContext.js');
11
10
  var useDocumentLayout = require('../../../hooks/useDocumentLayout.js');
12
11
  var useLazyComponents = require('../../../hooks/useLazyComponents.js');
12
+ var InputPopover = require('../../../preview/components/InputPopover.js');
13
+ var usePreviewInputManager = require('../../../preview/hooks/usePreviewInputManager.js');
13
14
  var BlocksInput = require('./FormInputs/BlocksInput/BlocksInput.js');
14
15
  var Input = require('./FormInputs/Component/Input.js');
15
16
  var Field = require('./FormInputs/DynamicZone/Field.js');
@@ -44,17 +45,13 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
44
45
  * specifically to be used in the EditView of the content-manager this understands
45
46
  * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific
46
47
  * components such as Blocks / Relations.
47
- */ const InputRenderer = ({ visible, hint: providedHint, document, ...props })=>{
48
- const { model: rootModel } = useDocument.useDoc();
49
- const rootDocumentMeta = DocumentContext.useDocumentContext('DynamicComponent', (state)=>state.rootDocumentMeta);
50
- const { edit: { components: rootComponents } } = useDocumentLayout.useDocumentLayout(rootDocumentMeta.model);
51
- const { edit: { components: relatedComponents } } = useDocumentLayout.useDocumentLayout(document.schema?.uid ?? rootModel);
52
- const components = {
53
- ...rootComponents,
54
- ...relatedComponents
55
- };
48
+ */ const InputRenderer = ({ visible, hint: providedHint, document, ...inputProps })=>{
49
+ const { currentDocumentMeta } = useDocumentContext.useDocumentContext('DynamicComponent');
50
+ const { edit: { components } } = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
56
51
  const collectionType = document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';
57
52
  const isInDynamicZone = Field.useDynamicZone('isInDynamicZone', (state)=>state.isInDynamicZone);
53
+ const isInPreviewPopover = InputPopover.useHasInputPopoverParent();
54
+ const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;
58
55
  const isFormDisabled = strapiAdmin.useForm('InputRenderer', (state)=>state.disabled);
59
56
  const canCreateFields = DocumentRBAC.useDocumentRBAC('InputRenderer', (rbac)=>rbac.canCreateFields);
60
57
  const canReadFields = DocumentRBAC.useDocumentRBAC('InputRenderer', (rbac)=>rbac.canReadFields);
@@ -66,6 +63,12 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
66
63
  }
67
64
  const editableFields = idToCheck ? canUpdateFields : canCreateFields;
68
65
  const readableFields = idToCheck ? canReadFields : canCreateFields;
66
+ // Everything preview related
67
+ const previewProps = usePreviewInputManager.usePreviewInputManager(inputProps.name, inputProps.attribute);
68
+ const props = {
69
+ ...inputProps,
70
+ ...previewProps
71
+ };
69
72
  /**
70
73
  * Component fields are always readable and editable,
71
74
  * however the fields within them may not be.
@@ -83,29 +86,30 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
83
86
  }
84
87
  /**
85
88
  * If the user can't read the field then we don't want to ever render it.
86
- */ if (!canUserReadField && !isInDynamicZone) {
89
+ */ if (!canUserReadField && !shouldIgnorePermissions) {
87
90
  return /*#__PURE__*/ jsxRuntime.jsx(NotAllowed.NotAllowedInput, {
88
91
  hint: hint,
89
92
  ...props
90
93
  });
91
94
  }
92
- const fieldIsDisabled = !canUserEditField && !isInDynamicZone || props.disabled || isFormDisabled;
95
+ const fieldIsDisabled = !canUserEditField && !shouldIgnorePermissions || props.disabled || isFormDisabled;
93
96
  /**
94
97
  * Because a custom field has a unique prop but the type could be confused with either
95
98
  * the useField hook or the type of the field we need to handle it separately and first.
96
99
  */ if (attributeHasCustomFieldProperty(props.attribute)) {
97
100
  const CustomInput = lazyComponentStore[props.attribute.customField];
98
101
  if (CustomInput) {
99
- // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
100
102
  return /*#__PURE__*/ jsxRuntime.jsx(CustomInput, {
101
103
  ...props,
102
104
  ...field,
105
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
103
106
  hint: hint,
104
107
  disabled: fieldIsDisabled
105
108
  });
106
109
  }
107
110
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
108
111
  ...props,
112
+ ...previewProps,
109
113
  hint: hint,
110
114
  // @ts-expect-error – this workaround lets us display that the custom field is missing.
111
115
  type: props.attribute.customField,
@@ -117,9 +121,9 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
117
121
  */ const addedInputTypes = Object.keys(fields);
118
122
  if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {
119
123
  const CustomInput = fields[props.type];
120
- // @ts-expect-error – TODO: fix this type error in the useLibrary hook.
121
124
  return /*#__PURE__*/ jsxRuntime.jsx(CustomInput, {
122
125
  ...props,
126
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
123
127
  hint: hint,
124
128
  disabled: fieldIsDisabled
125
129
  });
@@ -141,8 +145,8 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
141
145
  hint: hint,
142
146
  layout: components[props.attribute.component].layout,
143
147
  disabled: fieldIsDisabled,
144
- children: (inputProps)=>/*#__PURE__*/ jsxRuntime.jsx(InputRenderer, {
145
- ...inputProps
148
+ children: (componentInputProps)=>/*#__PURE__*/ jsxRuntime.jsx(InputRenderer, {
149
+ ...componentInputProps
146
150
  })
147
151
  });
148
152
  case 'dynamiczone':
@@ -176,6 +180,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
176
180
  */ case 'enumeration':
177
181
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
178
182
  ...props,
183
+ ...previewProps,
179
184
  hint: hint,
180
185
  options: props.attribute.enum.map((value)=>({
181
186
  value
@@ -189,6 +194,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
189
194
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
190
195
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.InputRenderer, {
191
196
  ...restProps,
197
+ ...previewProps,
192
198
  hint: hint,
193
199
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
194
200
  type: props.customField ? 'custom-field' : props.type,
@@ -1 +1 @@
1
- {"version":3,"file":"InputRenderer.js","sources":["../../../../../admin/src/pages/EditView/components/InputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentContext } from '../../../features/DocumentContext';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, UseDocument } from '../../../hooks/useDocument';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n document: ReturnType<UseDocument>;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed\n * specifically to be used in the EditView of the content-manager this understands\n * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific\n * components such as Blocks / Relations.\n */\nconst InputRenderer = ({ visible, hint: providedHint, document, ...props }: InputRendererProps) => {\n const { model: rootModel } = useDoc();\n const rootDocumentMeta = useDocumentContext(\n 'DynamicComponent',\n (state) => state.rootDocumentMeta\n );\n const {\n edit: { components: rootComponents },\n } = useDocumentLayout(rootDocumentMeta.model);\n const {\n edit: { components: relatedComponents },\n } = useDocumentLayout(document.schema?.uid ?? rootModel);\n const components = { ...rootComponents, ...relatedComponents };\n\n const collectionType =\n document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = document.document?.documentId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n return <CustomInput {...props} {...field} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n return <CustomInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n return (\n <ComponentInput\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <InputRenderer {...inputProps} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return <DynamicZone {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'relation':\n return <RelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'richtext':\n return <Wysiwyg {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'uid':\n return <UIDInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = !['biginteger', 'integer', 'number', 'dynamiczone', 'component'].includes(\n attribute.type\n )\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n"],"names":["InputRenderer","visible","hint","providedHint","document","props","model","rootModel","useDoc","rootDocumentMeta","useDocumentContext","state","edit","components","rootComponents","useDocumentLayout","relatedComponents","schema","uid","collectionType","kind","isInDynamicZone","useDynamicZone","isFormDisabled","useForm","disabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","documentId","SINGLE_TYPES","editableFields","readableFields","canUserReadField","name","type","canUserEditField","fields","useStrapiApp","app","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","attribute","customField","undefined","useFieldHint","field","useField","_jsx","NotAllowedInput","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","Object","keys","includes","BlocksInput","ComponentInput","layout","component","inputProps","DynamicZone","RelationsInput","Wysiwyg","UIDInput","options","enum","map","value","unique","_unique","mainField","_mainField","restProps","formatMessage","useIntl","maximum","minimum","getMinMax","units","id","defaultMessage","maxValue","Math","max","hasMinAndMax","min","description","unit","divider","br","Number","isNaN","maxLength","minLength","MemoizedInputRenderer","React","memo"],"mappings":"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"}
1
+ {"version":3,"file":"InputRenderer.js","sources":["../../../../../admin/src/pages/EditView/components/InputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { type UseDocument } from '../../../hooks/useDocument';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\nimport { useHasInputPopoverParent } from '../../../preview/components/InputPopover';\nimport { usePreviewInputManager } from '../../../preview/hooks/usePreviewInputManager';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n document: ReturnType<UseDocument>;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed\n * specifically to be used in the EditView of the content-manager this understands\n * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific\n * components such as Blocks / Relations.\n */\nconst InputRenderer = ({\n visible,\n hint: providedHint,\n document,\n ...inputProps\n}: InputRendererProps) => {\n const { currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const collectionType =\n document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n const isInPreviewPopover = useHasInputPopoverParent();\n const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = document.document?.documentId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n // Everything preview related\n const previewProps = usePreviewInputManager(inputProps.name, inputProps.attribute);\n const props = { ...inputProps, ...previewProps };\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !shouldIgnorePermissions) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !shouldIgnorePermissions) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n {...field}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n {...previewProps}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n return (\n <ComponentInput\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(componentInputProps) => <InputRenderer {...componentInputProps} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return <DynamicZone {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'relation':\n return <RelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'richtext':\n return <Wysiwyg {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'uid':\n return <UIDInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n {...previewProps}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n {...previewProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = !['biginteger', 'integer', 'number', 'dynamiczone', 'component'].includes(\n attribute.type\n )\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n"],"names":["InputRenderer","visible","hint","providedHint","document","inputProps","currentDocumentMeta","useDocumentContext","edit","components","useDocumentLayout","model","collectionType","schema","kind","isInDynamicZone","useDynamicZone","state","isInPreviewPopover","useHasInputPopoverParent","shouldIgnorePermissions","isFormDisabled","useForm","disabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","documentId","SINGLE_TYPES","editableFields","readableFields","previewProps","usePreviewInputManager","name","attribute","props","canUserReadField","type","canUserEditField","fields","useStrapiApp","app","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","field","useField","_jsx","NotAllowedInput","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","Object","keys","includes","BlocksInput","ComponentInput","layout","component","componentInputProps","DynamicZone","RelationsInput","Wysiwyg","UIDInput","options","enum","map","value","unique","_unique","mainField","_mainField","restProps","formatMessage","useIntl","maximum","minimum","getMinMax","units","id","defaultMessage","maxValue","Math","max","hasMinAndMax","min","description","unit","divider","br","Number","isNaN","maxLength","minLength","MemoizedInputRenderer","React","memo"],"mappings":"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"}
@@ -3,11 +3,12 @@ import * as React from 'react';
3
3
  import { useForm, useStrapiApp, useField, InputRenderer as InputRenderer$1 } from '@strapi/admin/strapi-admin';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { SINGLE_TYPES } from '../../../constants/collections.mjs';
6
- import { useDocumentContext } from '../../../features/DocumentContext.mjs';
7
6
  import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
8
- import { useDoc } from '../../../hooks/useDocument.mjs';
7
+ import { useDocumentContext } from '../../../hooks/useDocumentContext.mjs';
9
8
  import { useDocumentLayout } from '../../../hooks/useDocumentLayout.mjs';
10
9
  import { useLazyComponents } from '../../../hooks/useLazyComponents.mjs';
10
+ import { useHasInputPopoverParent } from '../../../preview/components/InputPopover.mjs';
11
+ import { usePreviewInputManager } from '../../../preview/hooks/usePreviewInputManager.mjs';
11
12
  import { BlocksInput as MemoizedBlocksInput } from './FormInputs/BlocksInput/BlocksInput.mjs';
12
13
  import { ComponentInput as MemoizedComponentInput } from './FormInputs/Component/Input.mjs';
13
14
  import { useDynamicZone, DynamicZone } from './FormInputs/DynamicZone/Field.mjs';
@@ -23,17 +24,13 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
23
24
  * specifically to be used in the EditView of the content-manager this understands
24
25
  * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific
25
26
  * components such as Blocks / Relations.
26
- */ const InputRenderer = ({ visible, hint: providedHint, document, ...props })=>{
27
- const { model: rootModel } = useDoc();
28
- const rootDocumentMeta = useDocumentContext('DynamicComponent', (state)=>state.rootDocumentMeta);
29
- const { edit: { components: rootComponents } } = useDocumentLayout(rootDocumentMeta.model);
30
- const { edit: { components: relatedComponents } } = useDocumentLayout(document.schema?.uid ?? rootModel);
31
- const components = {
32
- ...rootComponents,
33
- ...relatedComponents
34
- };
27
+ */ const InputRenderer = ({ visible, hint: providedHint, document, ...inputProps })=>{
28
+ const { currentDocumentMeta } = useDocumentContext('DynamicComponent');
29
+ const { edit: { components } } = useDocumentLayout(currentDocumentMeta.model);
35
30
  const collectionType = document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';
36
31
  const isInDynamicZone = useDynamicZone('isInDynamicZone', (state)=>state.isInDynamicZone);
32
+ const isInPreviewPopover = useHasInputPopoverParent();
33
+ const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;
37
34
  const isFormDisabled = useForm('InputRenderer', (state)=>state.disabled);
38
35
  const canCreateFields = useDocumentRBAC('InputRenderer', (rbac)=>rbac.canCreateFields);
39
36
  const canReadFields = useDocumentRBAC('InputRenderer', (rbac)=>rbac.canReadFields);
@@ -45,6 +42,12 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
45
42
  }
46
43
  const editableFields = idToCheck ? canUpdateFields : canCreateFields;
47
44
  const readableFields = idToCheck ? canReadFields : canCreateFields;
45
+ // Everything preview related
46
+ const previewProps = usePreviewInputManager(inputProps.name, inputProps.attribute);
47
+ const props = {
48
+ ...inputProps,
49
+ ...previewProps
50
+ };
48
51
  /**
49
52
  * Component fields are always readable and editable,
50
53
  * however the fields within them may not be.
@@ -62,29 +65,30 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
62
65
  }
63
66
  /**
64
67
  * If the user can't read the field then we don't want to ever render it.
65
- */ if (!canUserReadField && !isInDynamicZone) {
68
+ */ if (!canUserReadField && !shouldIgnorePermissions) {
66
69
  return /*#__PURE__*/ jsx(NotAllowedInput, {
67
70
  hint: hint,
68
71
  ...props
69
72
  });
70
73
  }
71
- const fieldIsDisabled = !canUserEditField && !isInDynamicZone || props.disabled || isFormDisabled;
74
+ const fieldIsDisabled = !canUserEditField && !shouldIgnorePermissions || props.disabled || isFormDisabled;
72
75
  /**
73
76
  * Because a custom field has a unique prop but the type could be confused with either
74
77
  * the useField hook or the type of the field we need to handle it separately and first.
75
78
  */ if (attributeHasCustomFieldProperty(props.attribute)) {
76
79
  const CustomInput = lazyComponentStore[props.attribute.customField];
77
80
  if (CustomInput) {
78
- // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
79
81
  return /*#__PURE__*/ jsx(CustomInput, {
80
82
  ...props,
81
83
  ...field,
84
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
82
85
  hint: hint,
83
86
  disabled: fieldIsDisabled
84
87
  });
85
88
  }
86
89
  return /*#__PURE__*/ jsx(InputRenderer$1, {
87
90
  ...props,
91
+ ...previewProps,
88
92
  hint: hint,
89
93
  // @ts-expect-error – this workaround lets us display that the custom field is missing.
90
94
  type: props.attribute.customField,
@@ -96,9 +100,9 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
96
100
  */ const addedInputTypes = Object.keys(fields);
97
101
  if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {
98
102
  const CustomInput = fields[props.type];
99
- // @ts-expect-error – TODO: fix this type error in the useLibrary hook.
100
103
  return /*#__PURE__*/ jsx(CustomInput, {
101
104
  ...props,
105
+ // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.
102
106
  hint: hint,
103
107
  disabled: fieldIsDisabled
104
108
  });
@@ -120,8 +124,8 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
120
124
  hint: hint,
121
125
  layout: components[props.attribute.component].layout,
122
126
  disabled: fieldIsDisabled,
123
- children: (inputProps)=>/*#__PURE__*/ jsx(InputRenderer, {
124
- ...inputProps
127
+ children: (componentInputProps)=>/*#__PURE__*/ jsx(InputRenderer, {
128
+ ...componentInputProps
125
129
  })
126
130
  });
127
131
  case 'dynamiczone':
@@ -155,6 +159,7 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
155
159
  */ case 'enumeration':
156
160
  return /*#__PURE__*/ jsx(InputRenderer$1, {
157
161
  ...props,
162
+ ...previewProps,
158
163
  hint: hint,
159
164
  options: props.attribute.enum.map((value)=>({
160
165
  value
@@ -168,6 +173,7 @@ import { Wysiwyg as MemoizedWysiwyg } from './FormInputs/Wysiwyg/Field.mjs';
168
173
  const { unique: _unique, mainField: _mainField, ...restProps } = props;
169
174
  return /*#__PURE__*/ jsx(InputRenderer$1, {
170
175
  ...restProps,
176
+ ...previewProps,
171
177
  hint: hint,
172
178
  // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!
173
179
  type: props.customField ? 'custom-field' : props.type,
@@ -1 +1 @@
1
- {"version":3,"file":"InputRenderer.mjs","sources":["../../../../../admin/src/pages/EditView/components/InputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentContext } from '../../../features/DocumentContext';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, UseDocument } from '../../../hooks/useDocument';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n document: ReturnType<UseDocument>;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed\n * specifically to be used in the EditView of the content-manager this understands\n * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific\n * components such as Blocks / Relations.\n */\nconst InputRenderer = ({ visible, hint: providedHint, document, ...props }: InputRendererProps) => {\n const { model: rootModel } = useDoc();\n const rootDocumentMeta = useDocumentContext(\n 'DynamicComponent',\n (state) => state.rootDocumentMeta\n );\n const {\n edit: { components: rootComponents },\n } = useDocumentLayout(rootDocumentMeta.model);\n const {\n edit: { components: relatedComponents },\n } = useDocumentLayout(document.schema?.uid ?? rootModel);\n const components = { ...rootComponents, ...relatedComponents };\n\n const collectionType =\n document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = document.document?.documentId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n return <CustomInput {...props} {...field} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n return <CustomInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n return (\n <ComponentInput\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <InputRenderer {...inputProps} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return <DynamicZone {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'relation':\n return <RelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'richtext':\n return <Wysiwyg {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'uid':\n return <UIDInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = !['biginteger', 'integer', 'number', 'dynamiczone', 'component'].includes(\n attribute.type\n )\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n"],"names":["InputRenderer","visible","hint","providedHint","document","props","model","rootModel","useDoc","rootDocumentMeta","useDocumentContext","state","edit","components","rootComponents","useDocumentLayout","relatedComponents","schema","uid","collectionType","kind","isInDynamicZone","useDynamicZone","isFormDisabled","useForm","disabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","documentId","SINGLE_TYPES","editableFields","readableFields","canUserReadField","name","type","canUserEditField","fields","useStrapiApp","app","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","attribute","customField","undefined","useFieldHint","field","useField","_jsx","NotAllowedInput","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","Object","keys","includes","BlocksInput","ComponentInput","layout","component","inputProps","DynamicZone","RelationsInput","Wysiwyg","UIDInput","options","enum","map","value","unique","_unique","mainField","_mainField","restProps","formatMessage","useIntl","maximum","minimum","getMinMax","units","id","defaultMessage","maxValue","Math","max","hasMinAndMax","min","description","unit","divider","br","Number","isNaN","maxLength","minLength","MemoizedInputRenderer","React","memo"],"mappings":"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"}
1
+ {"version":3,"file":"InputRenderer.mjs","sources":["../../../../../admin/src/pages/EditView/components/InputRenderer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { type UseDocument } from '../../../hooks/useDocument';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../../hooks/useLazyComponents';\nimport { useHasInputPopoverParent } from '../../../preview/components/InputPopover';\nimport { usePreviewInputManager } from '../../../preview/hooks/usePreviewInputManager';\n\nimport { BlocksInput } from './FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from './FormInputs/Component/Input';\nimport { DynamicZone, useDynamicZone } from './FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from './FormInputs/NotAllowed';\nimport { RelationsInput } from './FormInputs/Relations/Relations';\nimport { UIDInput } from './FormInputs/UID';\nimport { Wysiwyg } from './FormInputs/Wysiwyg/Field';\n\nimport type { EditFieldLayout } from '../../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\ntype InputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n document: ReturnType<UseDocument>;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed\n * specifically to be used in the EditView of the content-manager this understands\n * the complete EditFieldLayout and will handle RBAC conditions and rendering CM specific\n * components such as Blocks / Relations.\n */\nconst InputRenderer = ({\n visible,\n hint: providedHint,\n document,\n ...inputProps\n}: InputRendererProps) => {\n const { currentDocumentMeta } = useDocumentContext('DynamicComponent');\n const {\n edit: { components },\n } = useDocumentLayout(currentDocumentMeta.model);\n\n const collectionType =\n document.schema?.kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n const isInPreviewPopover = useHasInputPopoverParent();\n const shouldIgnorePermissions = isInDynamicZone || isInPreviewPopover;\n\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n let idToCheck = document.document?.documentId;\n if (collectionType === SINGLE_TYPES) {\n idToCheck = document?.document?.documentId;\n }\n\n const editableFields = idToCheck ? canUpdateFields : canCreateFields;\n const readableFields = idToCheck ? canReadFields : canCreateFields;\n\n // Everything preview related\n const previewProps = usePreviewInputManager(inputProps.name, inputProps.attribute);\n const props = { ...inputProps, ...previewProps };\n\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n\n // We pass field in case of Custom Fields to keep backward compatibility\n const field = useField(props.name);\n\n if (!visible) {\n return null;\n }\n\n /**\n * If the user can't read the field then we don't want to ever render it.\n */\n if (!canUserReadField && !shouldIgnorePermissions) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !shouldIgnorePermissions) || props.disabled || isFormDisabled;\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n {...field}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n {...previewProps}\n hint={hint}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n return (\n <ComponentInput\n {...props}\n hint={hint}\n layout={components[props.attribute.component].layout}\n disabled={fieldIsDisabled}\n >\n {(componentInputProps) => <InputRenderer {...componentInputProps} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return <DynamicZone {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'relation':\n return <RelationsInput {...props} hint={hint} disabled={fieldIsDisabled} />;\n case 'richtext':\n return <Wysiwyg {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'uid':\n return <UIDInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n {...previewProps}\n hint={hint}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n {...previewProps}\n hint={hint}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nconst useFieldHint = (\n hint: React.ReactNode = undefined,\n attribute: Schema.Attribute.AnyAttribute\n) => {\n const { formatMessage } = useIntl();\n\n const { maximum, minimum } = getMinMax(attribute);\n\n if (!maximum && !minimum) {\n return hint;\n }\n\n const units = !['biginteger', 'integer', 'number', 'dynamiczone', 'component'].includes(\n attribute.type\n )\n ? formatMessage(\n {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n {\n maxValue: Math.max(minimum || 0, maximum || 0),\n }\n )\n : null;\n\n const hasMinAndMax = typeof minimum === 'number' && typeof maximum === 'number';\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: hint,\n unit: units,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: <br />,\n }\n );\n};\n\nconst getMinMax = (attribute: Schema.Attribute.AnyAttribute) => {\n if ('min' in attribute || 'max' in attribute) {\n return {\n maximum: !Number.isNaN(Number(attribute.max)) ? Number(attribute.max) : undefined,\n minimum: !Number.isNaN(Number(attribute.min)) ? Number(attribute.min) : undefined,\n };\n } else if ('maxLength' in attribute || 'minLength' in attribute) {\n return { maximum: attribute.maxLength, minimum: attribute.minLength };\n } else {\n return { maximum: undefined, minimum: undefined };\n }\n};\n\nconst MemoizedInputRenderer = React.memo(InputRenderer);\n\nexport type { InputRendererProps };\nexport { MemoizedInputRenderer as InputRenderer, useFieldHint };\n"],"names":["InputRenderer","visible","hint","providedHint","document","inputProps","currentDocumentMeta","useDocumentContext","edit","components","useDocumentLayout","model","collectionType","schema","kind","isInDynamicZone","useDynamicZone","state","isInPreviewPopover","useHasInputPopoverParent","shouldIgnorePermissions","isFormDisabled","useForm","disabled","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","idToCheck","documentId","SINGLE_TYPES","editableFields","readableFields","previewProps","usePreviewInputManager","name","attribute","props","canUserReadField","type","canUserEditField","fields","useStrapiApp","app","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","field","useField","_jsx","NotAllowedInput","fieldIsDisabled","CustomInput","FormInputRenderer","addedInputTypes","Object","keys","includes","BlocksInput","ComponentInput","layout","component","componentInputProps","DynamicZone","RelationsInput","Wysiwyg","UIDInput","options","enum","map","value","unique","_unique","mainField","_mainField","restProps","formatMessage","useIntl","maximum","minimum","getMinMax","units","id","defaultMessage","maxValue","Math","max","hasMinAndMax","min","description","unit","divider","br","Number","isNaN","maxLength","minLength","MemoizedInputRenderer","React","memo"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
3
4
  var fractionalIndexing = require('fractional-indexing');
4
5
  var pipe = require('lodash/fp/pipe');
5
6
  var attributes = require('../../../constants/attributes.js');
@@ -126,7 +127,134 @@ const BLOCK_LIST_ATTRIBUTE_KEYS = [
126
127
  ])(schema, components), removeNullValues, prepareRelations(schema, components), prepareTempKeys(schema, components));
127
128
  return transformations(document);
128
129
  };
130
+ /**
131
+ * @internal
132
+ * @description Finds the initial value for a component or dynamic zone item (based on its __temp_key__ and not its index).
133
+ * @param initialValue - The initial values object.
134
+ * @param item - The item to find the initial value for.
135
+ * @returns The initial value for the item.
136
+ */ const getItemInitialValue = (initialValue, item)=>{
137
+ if (initialValue && Array.isArray(initialValue)) {
138
+ const matchingInitialItem = initialValue.find((initialItem)=>initialItem.__temp_key__ === item.__temp_key__);
139
+ if (matchingInitialItem) {
140
+ return matchingInitialItem;
141
+ }
142
+ }
143
+ return {};
144
+ };
145
+ /**
146
+ * Removes values from the data object if their corresponding attribute has a
147
+ * visibility condition that evaluates to false.
148
+ *
149
+ * @param {object} schema - The content type schema (with attributes).
150
+ * @param {object} data - The data object to filter based on visibility.
151
+ * @returns {object} A new data object with only visible fields retained.
152
+ */ const handleInvisibleAttributes = (data, { schema, initialValues = {}, components = {} }, path = [], removedAttributes = [])=>{
153
+ if (!schema?.attributes) return {
154
+ data,
155
+ removedAttributes
156
+ };
157
+ const rulesEngine = strapiAdmin.createRulesEngine();
158
+ const result = {};
159
+ for (const [attrName, attrDef] of Object.entries(schema.attributes)){
160
+ const fullPath = [
161
+ ...path,
162
+ attrName
163
+ ].join('.');
164
+ const condition = attrDef?.conditions?.visible;
165
+ const isVisible = condition ? rulesEngine.evaluate(condition, {
166
+ ...data,
167
+ ...result
168
+ }) : true;
169
+ if (!isVisible) {
170
+ removedAttributes.push(fullPath);
171
+ continue;
172
+ }
173
+ const userProvided = Object.prototype.hasOwnProperty.call(data, attrName);
174
+ const currentValue = userProvided ? data[attrName] : undefined;
175
+ const initialValue = initialValues?.[attrName];
176
+ // 🔹 Handle components
177
+ if (attrDef.type === 'component') {
178
+ const compSchema = components[attrDef.component];
179
+ const value = currentValue === undefined ? initialValue : currentValue;
180
+ if (!value) {
181
+ result[attrName] = attrDef.repeatable ? [] : null;
182
+ continue;
183
+ }
184
+ if (attrDef.repeatable && Array.isArray(value)) {
185
+ result[attrName] = value.map((item)=>{
186
+ const componentInitialValue = getItemInitialValue(initialValue, item);
187
+ return handleInvisibleAttributes(item, {
188
+ schema: compSchema,
189
+ initialValues: componentInitialValue,
190
+ components
191
+ }, [
192
+ ...path,
193
+ `${attrName}[${item.__temp_key__}]`
194
+ ], removedAttributes).data;
195
+ });
196
+ } else {
197
+ result[attrName] = handleInvisibleAttributes(value, {
198
+ schema: compSchema,
199
+ initialValues: initialValue ?? {},
200
+ components
201
+ }, [
202
+ ...path,
203
+ attrName
204
+ ], removedAttributes).data;
205
+ }
206
+ continue;
207
+ }
208
+ // 🔸 Handle dynamic zones
209
+ if (attrDef.type === 'dynamiczone') {
210
+ if (!Array.isArray(currentValue)) {
211
+ result[attrName] = [];
212
+ continue;
213
+ }
214
+ result[attrName] = currentValue.map((dzItem)=>{
215
+ const compUID = dzItem?.__component;
216
+ const compSchema = components[compUID];
217
+ const componentInitialValue = getItemInitialValue(initialValue, dzItem);
218
+ const cleaned = handleInvisibleAttributes(dzItem, {
219
+ schema: compSchema,
220
+ initialValues: componentInitialValue,
221
+ components
222
+ }, [
223
+ ...path,
224
+ `${attrName}[${dzItem.__temp_key__}]`
225
+ ], removedAttributes).data;
226
+ // For newly created components, we want to be sure that the id is undefined (in case of reordering items)
227
+ const processedItem = dzItem.id === undefined || dzItem.id === null ? {
228
+ __component: compUID,
229
+ ...cleaned,
230
+ id: undefined
231
+ } : {
232
+ __component: compUID,
233
+ ...cleaned
234
+ };
235
+ return processedItem;
236
+ });
237
+ continue;
238
+ }
239
+ // 🟡 Handle scalar/primitive
240
+ if (currentValue !== undefined) {
241
+ result[attrName] = currentValue;
242
+ } else if (initialValue !== undefined) {
243
+ result[attrName] = initialValue;
244
+ } else {
245
+ if (attrName === 'id' || attrName === 'documentId') {
246
+ continue;
247
+ }
248
+ result[attrName] = null;
249
+ }
250
+ }
251
+ return {
252
+ data: result,
253
+ removedAttributes
254
+ };
255
+ };
129
256
 
257
+ exports.handleInvisibleAttributes = handleInvisibleAttributes;
130
258
  exports.prepareRelations = prepareRelations;
131
259
  exports.prepareTempKeys = prepareTempKeys;
132
260
  exports.removeFieldsThatDontExistOnSchema = removeFieldsThatDontExistOnSchema;