@payloadcms/next 3.70.0 → 3.71.0-internal-debug.80dab4c

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 (448) hide show
  1. package/dist/auth/login.js +52 -58
  2. package/dist/auth/login.js.map +1 -1
  3. package/dist/auth/logout.js +39 -44
  4. package/dist/auth/logout.js.map +1 -1
  5. package/dist/auth/refresh.js +45 -47
  6. package/dist/auth/refresh.js.map +1 -1
  7. package/dist/cjs/withPayload.cjs +61 -23
  8. package/dist/cjs/withPayload.cjs.map +2 -2
  9. package/dist/config.js +1 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +9 -15
  12. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +40 -71
  14. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  15. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +65 -59
  16. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  17. package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +38 -0
  18. package/dist/elements/DocumentHeader/Tabs/index.js +80 -70
  19. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  20. package/dist/elements/DocumentHeader/Tabs/index.scss +54 -0
  21. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +16 -23
  22. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  23. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.scss +9 -0
  24. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +61 -69
  25. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  26. package/dist/elements/DocumentHeader/index.js +48 -28
  27. package/dist/elements/DocumentHeader/index.js.map +1 -1
  28. package/dist/elements/DocumentHeader/index.scss +64 -0
  29. package/dist/elements/FormHeader/index.js +30 -16
  30. package/dist/elements/FormHeader/index.js.map +1 -1
  31. package/dist/elements/FormHeader/index.scss +8 -0
  32. package/dist/elements/Logo/index.js +19 -34
  33. package/dist/elements/Logo/index.js.map +1 -1
  34. package/dist/elements/Nav/NavHamburger/index.js +23 -44
  35. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  36. package/dist/elements/Nav/NavWrapper/index.js +28 -54
  37. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  38. package/dist/elements/Nav/NavWrapper/index.scss +27 -0
  39. package/dist/elements/Nav/SettingsMenuButton/index.js +33 -39
  40. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  41. package/dist/elements/Nav/SettingsMenuButton/index.scss +11 -0
  42. package/dist/elements/Nav/getNavPrefs.js +27 -22
  43. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  44. package/dist/elements/Nav/index.client.js +97 -118
  45. package/dist/elements/Nav/index.client.js.map +1 -1
  46. package/dist/elements/Nav/index.js +148 -127
  47. package/dist/elements/Nav/index.js.map +1 -1
  48. package/dist/elements/Nav/index.scss +173 -0
  49. package/dist/esbuildEntry.d.ts +5 -0
  50. package/dist/esbuildEntry.d.ts.map +1 -0
  51. package/dist/esbuildEntry.js +6 -0
  52. package/dist/esbuildEntry.js.map +1 -0
  53. package/dist/exports/auth.js +1 -0
  54. package/dist/exports/auth.js.map +1 -1
  55. package/dist/exports/client.js +1 -1
  56. package/dist/exports/client.js.map +1 -1
  57. package/dist/exports/layouts.js +1 -0
  58. package/dist/exports/layouts.js.map +1 -1
  59. package/dist/exports/routes.js +1 -0
  60. package/dist/exports/routes.js.map +1 -1
  61. package/dist/exports/rsc.js +1 -0
  62. package/dist/exports/rsc.js.map +1 -1
  63. package/dist/exports/templates.js +1 -0
  64. package/dist/exports/templates.js.map +1 -1
  65. package/dist/exports/utilities.js +7 -12
  66. package/dist/exports/utilities.js.map +1 -1
  67. package/dist/exports/views.js +1 -0
  68. package/dist/exports/views.js.map +1 -1
  69. package/dist/index.js +1 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/layouts/Root/NestProviders.js +21 -20
  72. package/dist/layouts/Root/NestProviders.js.map +1 -1
  73. package/dist/layouts/Root/checkDependencies.js +49 -41
  74. package/dist/layouts/Root/checkDependencies.js.map +1 -1
  75. package/dist/layouts/Root/index.js +128 -103
  76. package/dist/layouts/Root/index.js.map +1 -1
  77. package/dist/prod/styles.css +5 -1
  78. package/dist/routes/graphql/handler.js +114 -122
  79. package/dist/routes/graphql/handler.js.map +1 -1
  80. package/dist/routes/graphql/index.js +1 -0
  81. package/dist/routes/graphql/index.js.map +1 -1
  82. package/dist/routes/graphql/playground.js +28 -27
  83. package/dist/routes/graphql/playground.js.map +1 -1
  84. package/dist/routes/index.js +1 -0
  85. package/dist/routes/index.js.map +1 -1
  86. package/dist/routes/rest/index.js +23 -22
  87. package/dist/routes/rest/index.js.map +1 -1
  88. package/dist/routes/rest/og/image.js +103 -79
  89. package/dist/routes/rest/og/image.js.map +1 -1
  90. package/dist/routes/rest/og/index.js +59 -54
  91. package/dist/routes/rest/og/index.js.map +1 -1
  92. package/dist/templates/Default/NavHamburger/index.js +12 -20
  93. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  94. package/dist/templates/Default/Wrapper/index.js +20 -44
  95. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  96. package/dist/templates/Default/Wrapper/index.scss +58 -0
  97. package/dist/templates/Default/index.js +147 -116
  98. package/dist/templates/Default/index.js.map +1 -1
  99. package/dist/templates/Default/index.scss +79 -0
  100. package/dist/templates/Minimal/index.js +26 -17
  101. package/dist/templates/Minimal/index.js.map +1 -1
  102. package/dist/templates/Minimal/index.scss +30 -0
  103. package/dist/utilities/getExistingAuthToken.js +3 -2
  104. package/dist/utilities/getExistingAuthToken.js.map +1 -1
  105. package/dist/utilities/getNextRequestI18n.js +12 -13
  106. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  107. package/dist/utilities/getPayloadHMR.js +5 -5
  108. package/dist/utilities/getPayloadHMR.js.map +1 -1
  109. package/dist/utilities/getPreferences.js +27 -22
  110. package/dist/utilities/getPreferences.js.map +1 -1
  111. package/dist/utilities/getRequestLocale.js +13 -14
  112. package/dist/utilities/getRequestLocale.js.map +1 -1
  113. package/dist/utilities/getRequestTheme.js +19 -19
  114. package/dist/utilities/getRequestTheme.js.map +1 -1
  115. package/dist/utilities/getRouteWithoutAdmin.js +3 -5
  116. package/dist/utilities/getRouteWithoutAdmin.js.map +1 -1
  117. package/dist/utilities/handleAuthRedirect.js +22 -36
  118. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  119. package/dist/utilities/handleServerFunctions.js +34 -41
  120. package/dist/utilities/handleServerFunctions.js.map +1 -1
  121. package/dist/utilities/initReq.js +78 -96
  122. package/dist/utilities/initReq.js.map +1 -1
  123. package/dist/utilities/isCustomAdminView.js +22 -26
  124. package/dist/utilities/isCustomAdminView.js.map +1 -1
  125. package/dist/utilities/isPublicAdminRoute.js +26 -20
  126. package/dist/utilities/isPublicAdminRoute.js.map +1 -1
  127. package/dist/utilities/meta.js +68 -63
  128. package/dist/utilities/meta.js.map +1 -1
  129. package/dist/utilities/selectiveCache.js +25 -26
  130. package/dist/utilities/selectiveCache.js.map +1 -1
  131. package/dist/utilities/setPayloadAuthCookie.js +19 -22
  132. package/dist/utilities/setPayloadAuthCookie.js.map +1 -1
  133. package/dist/utilities/slugify.js +24 -33
  134. package/dist/utilities/slugify.js.map +1 -1
  135. package/dist/utilities/timestamp.js +7 -6
  136. package/dist/utilities/timestamp.js.map +1 -1
  137. package/dist/views/API/LocaleSelector/index.js +17 -39
  138. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  139. package/dist/views/API/RenderJSON/index.js +171 -126
  140. package/dist/views/API/RenderJSON/index.js.map +1 -1
  141. package/dist/views/API/RenderJSON/index.scss +129 -0
  142. package/dist/views/API/index.client.js +290 -197
  143. package/dist/views/API/index.client.js.map +1 -1
  144. package/dist/views/API/index.js +7 -2
  145. package/dist/views/API/index.js.map +1 -1
  146. package/dist/views/API/index.scss +119 -0
  147. package/dist/views/API/metadata.js +18 -23
  148. package/dist/views/API/metadata.js.map +1 -1
  149. package/dist/views/Account/ResetPreferences/index.js +78 -102
  150. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  151. package/dist/views/Account/Settings/LanguageSelector.js +18 -47
  152. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  153. package/dist/views/Account/Settings/index.js +60 -25
  154. package/dist/views/Account/Settings/index.js.map +1 -1
  155. package/dist/views/Account/Settings/index.scss +48 -0
  156. package/dist/views/Account/ToggleTheme/index.js +38 -55
  157. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  158. package/dist/views/Account/index.client.js +16 -32
  159. package/dist/views/Account/index.client.js.map +1 -1
  160. package/dist/views/Account/index.js +147 -158
  161. package/dist/views/Account/index.js.map +1 -1
  162. package/dist/views/Account/metadata.js +8 -12
  163. package/dist/views/Account/metadata.js.map +1 -1
  164. package/dist/views/BrowseByFolder/buildView.js +138 -157
  165. package/dist/views/BrowseByFolder/buildView.js.map +1 -1
  166. package/dist/views/BrowseByFolder/index.js +16 -16
  167. package/dist/views/BrowseByFolder/index.js.map +1 -1
  168. package/dist/views/BrowseByFolder/metadata.js +13 -15
  169. package/dist/views/BrowseByFolder/metadata.js.map +1 -1
  170. package/dist/views/CollectionFolders/buildView.js +122 -142
  171. package/dist/views/CollectionFolders/buildView.js.map +1 -1
  172. package/dist/views/CollectionFolders/index.js +16 -16
  173. package/dist/views/CollectionFolders/index.js.map +1 -1
  174. package/dist/views/CollectionFolders/metadata.js +18 -21
  175. package/dist/views/CollectionFolders/metadata.js.map +1 -1
  176. package/dist/views/CollectionFolders/renderFolderViewSlots.js +58 -61
  177. package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -1
  178. package/dist/views/CollectionTrash/index.js +17 -17
  179. package/dist/views/CollectionTrash/index.js.map +1 -1
  180. package/dist/views/CollectionTrash/metadata.js +18 -21
  181. package/dist/views/CollectionTrash/metadata.js.map +1 -1
  182. package/dist/views/CreateFirstUser/index.client.js +117 -103
  183. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  184. package/dist/views/CreateFirstUser/index.js +87 -81
  185. package/dist/views/CreateFirstUser/index.js.map +1 -1
  186. package/dist/views/CreateFirstUser/index.scss +21 -0
  187. package/dist/views/CreateFirstUser/metadata.js +8 -12
  188. package/dist/views/CreateFirstUser/metadata.js.map +1 -1
  189. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +147 -138
  190. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  191. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +423 -405
  192. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  193. package/dist/views/Dashboard/Default/ModularDashboard/index.js +72 -75
  194. package/dist/views/Dashboard/Default/ModularDashboard/index.js.map +1 -1
  195. package/dist/views/Dashboard/Default/ModularDashboard/index.scss +316 -0
  196. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +62 -89
  197. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  198. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js +40 -47
  199. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/getDefaultLayoutServerFn.js.map +1 -1
  200. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +64 -65
  201. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  202. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +164 -147
  203. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  204. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js +31 -30
  205. package/dist/views/Dashboard/Default/ModularDashboard/utils/collisionDetection.js.map +1 -1
  206. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +223 -229
  207. package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
  208. package/dist/views/Dashboard/Default/index.js +59 -45
  209. package/dist/views/Dashboard/Default/index.js.map +1 -1
  210. package/dist/views/Dashboard/index.js +46 -42
  211. package/dist/views/Dashboard/index.js.map +1 -1
  212. package/dist/views/Dashboard/metadata.js +10 -14
  213. package/dist/views/Dashboard/metadata.js.map +1 -1
  214. package/dist/views/Document/getCustomDocumentViewByKey.js +3 -2
  215. package/dist/views/Document/getCustomDocumentViewByKey.js.map +1 -1
  216. package/dist/views/Document/getCustomViewByRoute.js +27 -30
  217. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  218. package/dist/views/Document/getDocPreferences.js +40 -41
  219. package/dist/views/Document/getDocPreferences.js.map +1 -1
  220. package/dist/views/Document/getDocumentData.js +44 -55
  221. package/dist/views/Document/getDocumentData.js.map +1 -1
  222. package/dist/views/Document/getDocumentPermissions.js +77 -80
  223. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  224. package/dist/views/Document/getDocumentView.js +313 -283
  225. package/dist/views/Document/getDocumentView.js.map +1 -1
  226. package/dist/views/Document/getIsLocked.js +66 -66
  227. package/dist/views/Document/getIsLocked.js.map +1 -1
  228. package/dist/views/Document/getMetaBySegment.js +130 -136
  229. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  230. package/dist/views/Document/getVersions.js +205 -195
  231. package/dist/views/Document/getVersions.js.map +1 -1
  232. package/dist/views/Document/handleServerFunction.js +103 -128
  233. package/dist/views/Document/handleServerFunction.js.map +1 -1
  234. package/dist/views/Document/index.js +316 -355
  235. package/dist/views/Document/index.js.map +1 -1
  236. package/dist/views/Document/metadata.js +2 -1
  237. package/dist/views/Document/metadata.js.map +1 -1
  238. package/dist/views/Document/renderDocumentSlots.js +121 -132
  239. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  240. package/dist/views/Edit/index.js +10 -6
  241. package/dist/views/Edit/index.js.map +1 -1
  242. package/dist/views/Edit/metadata.js +36 -46
  243. package/dist/views/Edit/metadata.js.map +1 -1
  244. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +130 -164
  245. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  246. package/dist/views/ForgotPassword/index.js +79 -62
  247. package/dist/views/ForgotPassword/index.js.map +1 -1
  248. package/dist/views/ForgotPassword/metadata.js +8 -12
  249. package/dist/views/ForgotPassword/metadata.js.map +1 -1
  250. package/dist/views/List/createSerializableValue.js +12 -11
  251. package/dist/views/List/createSerializableValue.js.map +1 -1
  252. package/dist/views/List/enrichDocsWithVersionStatus.js +86 -86
  253. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  254. package/dist/views/List/extractRelationshipDisplayValue.js +15 -14
  255. package/dist/views/List/extractRelationshipDisplayValue.js.map +1 -1
  256. package/dist/views/List/extractValueOrRelationshipID.js +16 -15
  257. package/dist/views/List/extractValueOrRelationshipID.js.map +1 -1
  258. package/dist/views/List/handleGroupBy.js +133 -150
  259. package/dist/views/List/handleGroupBy.js.map +1 -1
  260. package/dist/views/List/handleServerFunction.js +98 -121
  261. package/dist/views/List/handleServerFunction.js.map +1 -1
  262. package/dist/views/List/index.js +305 -323
  263. package/dist/views/List/index.js.map +1 -1
  264. package/dist/views/List/metadata.js +17 -20
  265. package/dist/views/List/metadata.js.map +1 -1
  266. package/dist/views/List/renderListViewSlots.js +82 -75
  267. package/dist/views/List/renderListViewSlots.js.map +1 -1
  268. package/dist/views/List/resolveAllFilterOptions.js +43 -45
  269. package/dist/views/List/resolveAllFilterOptions.js.map +1 -1
  270. package/dist/views/List/transformColumnsToSelect.js +9 -8
  271. package/dist/views/List/transformColumnsToSelect.js.map +1 -1
  272. package/dist/views/Login/LoginField/index.js +57 -89
  273. package/dist/views/Login/LoginField/index.js.map +1 -1
  274. package/dist/views/Login/LoginForm/index.js +107 -160
  275. package/dist/views/Login/LoginForm/index.js.map +1 -1
  276. package/dist/views/Login/LoginForm/index.scss +10 -0
  277. package/dist/views/Login/index.js +82 -85
  278. package/dist/views/Login/index.js.map +1 -1
  279. package/dist/views/Login/index.scss +10 -0
  280. package/dist/views/Login/metadata.js +8 -12
  281. package/dist/views/Login/metadata.js.map +1 -1
  282. package/dist/views/Logout/LogoutClient.js +84 -120
  283. package/dist/views/Logout/LogoutClient.js.map +1 -1
  284. package/dist/views/Logout/index.js +29 -29
  285. package/dist/views/Logout/index.js.map +1 -1
  286. package/dist/views/Logout/index.scss +25 -0
  287. package/dist/views/Logout/metadata.js +7 -11
  288. package/dist/views/Logout/metadata.js.map +1 -1
  289. package/dist/views/NotFound/index.client.js +71 -82
  290. package/dist/views/NotFound/index.client.js.map +1 -1
  291. package/dist/views/NotFound/index.js +72 -73
  292. package/dist/views/NotFound/index.js.map +1 -1
  293. package/dist/views/NotFound/index.scss +57 -0
  294. package/dist/views/NotFound/metadata.js +7 -9
  295. package/dist/views/NotFound/metadata.js.map +1 -1
  296. package/dist/views/ResetPassword/ResetPasswordForm/index.js +97 -108
  297. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  298. package/dist/views/ResetPassword/index.js +93 -73
  299. package/dist/views/ResetPassword/index.js.map +1 -1
  300. package/dist/views/ResetPassword/index.scss +11 -0
  301. package/dist/views/ResetPassword/metadata.js +8 -12
  302. package/dist/views/ResetPassword/metadata.js.map +1 -1
  303. package/dist/views/Root/attachViewActions.js +18 -23
  304. package/dist/views/Root/attachViewActions.js.map +1 -1
  305. package/dist/views/Root/generateCustomViewMetadata.js +19 -21
  306. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -1
  307. package/dist/views/Root/getCustomViewByKey.js +12 -14
  308. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  309. package/dist/views/Root/getCustomViewByRoute.js +31 -42
  310. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  311. package/dist/views/Root/getDocumentViewInfo.js +24 -23
  312. package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
  313. package/dist/views/Root/getRouteData.js +333 -325
  314. package/dist/views/Root/getRouteData.js.map +1 -1
  315. package/dist/views/Root/index.js +248 -270
  316. package/dist/views/Root/index.js.map +1 -1
  317. package/dist/views/Root/isPathMatchingRoute.js +21 -26
  318. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  319. package/dist/views/Root/metadata.js +176 -181
  320. package/dist/views/Root/metadata.js.map +1 -1
  321. package/dist/views/Unauthorized/index.js +54 -46
  322. package/dist/views/Unauthorized/index.js.map +1 -1
  323. package/dist/views/Unauthorized/index.scss +14 -0
  324. package/dist/views/Unauthorized/metadata.js +8 -12
  325. package/dist/views/Unauthorized/metadata.js.map +1 -1
  326. package/dist/views/Verify/index.client.js +25 -43
  327. package/dist/views/Verify/index.client.js.map +1 -1
  328. package/dist/views/Verify/index.js +69 -64
  329. package/dist/views/Verify/index.js.map +1 -1
  330. package/dist/views/Verify/index.scss +16 -0
  331. package/dist/views/Verify/metadata.js +8 -12
  332. package/dist/views/Verify/metadata.js.map +1 -1
  333. package/dist/views/Version/Default/SelectedLocalesContext.js +4 -4
  334. package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -1
  335. package/dist/views/Version/Default/SetStepNav.js +86 -127
  336. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  337. package/dist/views/Version/Default/index.js +380 -236
  338. package/dist/views/Version/Default/index.js.map +1 -1
  339. package/dist/views/Version/Default/index.scss +170 -0
  340. package/dist/views/Version/Default/types.js +2 -1
  341. package/dist/views/Version/Default/types.js.map +1 -1
  342. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +102 -119
  343. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  344. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.scss +81 -0
  345. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +78 -73
  346. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  347. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +363 -408
  348. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  349. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +40 -51
  350. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  351. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +35 -67
  352. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  353. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.scss +12 -0
  354. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +59 -56
  355. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  356. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.scss +9 -0
  357. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +139 -117
  358. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  359. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +59 -0
  360. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js +36 -41
  361. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js.map +1 -1
  362. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +192 -178
  363. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  364. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +91 -0
  365. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +17 -11
  366. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  367. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +48 -73
  368. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  369. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +4 -0
  370. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +132 -143
  371. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  372. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.scss +9 -0
  373. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +56 -81
  374. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  375. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +4 -0
  376. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +252 -210
  377. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  378. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.scss +121 -0
  379. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +23 -22
  380. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  381. package/dist/views/Version/RenderFieldsToDiff/index.js +12 -9
  382. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  383. package/dist/views/Version/RenderFieldsToDiff/index.scss +24 -0
  384. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +213 -228
  385. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  386. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +1005 -826
  387. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -1
  388. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +2 -1
  389. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -1
  390. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +44 -43
  391. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -1
  392. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js +25 -22
  393. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js.map +1 -1
  394. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +32 -36
  395. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  396. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +145 -129
  397. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  398. package/dist/views/Version/Restore/index.js +117 -93
  399. package/dist/views/Version/Restore/index.js.map +1 -1
  400. package/dist/views/Version/Restore/index.scss +84 -0
  401. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +33 -50
  402. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  403. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +170 -226
  404. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  405. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +18 -0
  406. package/dist/views/Version/SelectComparison/index.js +73 -50
  407. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  408. package/dist/views/Version/SelectComparison/index.scss +9 -0
  409. package/dist/views/Version/SelectComparison/types.js +2 -1
  410. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  411. package/dist/views/Version/SelectLocales/index.js +34 -32
  412. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  413. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +104 -95
  414. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -1
  415. package/dist/views/Version/VersionPillLabel/getVersionLabel.js +23 -27
  416. package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -1
  417. package/dist/views/Version/VersionPillLabel/index.scss +26 -0
  418. package/dist/views/Version/fetchVersions.js +113 -138
  419. package/dist/views/Version/fetchVersions.js.map +1 -1
  420. package/dist/views/Version/index.js +325 -323
  421. package/dist/views/Version/index.js.map +1 -1
  422. package/dist/views/Version/metadata.js +43 -50
  423. package/dist/views/Version/metadata.js.map +1 -1
  424. package/dist/views/Versions/buildColumns.js +95 -79
  425. package/dist/views/Versions/buildColumns.js.map +1 -1
  426. package/dist/views/Versions/cells/AutosaveCell/index.js +34 -38
  427. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  428. package/dist/views/Versions/cells/AutosaveCell/index.scss +9 -0
  429. package/dist/views/Versions/cells/CreatedAt/index.js +32 -53
  430. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  431. package/dist/views/Versions/cells/ID/index.js +10 -8
  432. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  433. package/dist/views/Versions/index.client.js +106 -83
  434. package/dist/views/Versions/index.client.js.map +1 -1
  435. package/dist/views/Versions/index.js +143 -143
  436. package/dist/views/Versions/index.js.map +1 -1
  437. package/dist/views/Versions/index.scss +110 -0
  438. package/dist/views/Versions/metadata.js +37 -44
  439. package/dist/views/Versions/metadata.js.map +1 -1
  440. package/dist/views/Versions/types.js +2 -1
  441. package/dist/views/Versions/types.js.map +1 -1
  442. package/dist/withPayload/withPayload.js +198 -143
  443. package/dist/withPayload/withPayload.js.map +1 -1
  444. package/dist/withPayload/withPayload.utils.js +92 -95
  445. package/dist/withPayload/withPayload.utils.js.map +1 -1
  446. package/dist/withPayload/withPayloadLegacy.js +42 -40
  447. package/dist/withPayload/withPayloadLegacy.js.map +1 -1
  448. package/package.json +7 -7
@@ -9,431 +9,386 @@ import { diffComponents } from './fields/index.js';
9
9
  *
10
10
  * Here, the server is responsible for traversing through the document data and building up this
11
11
  * version state object.
12
- */
13
- export const buildVersionFields = ({
14
- clientSchemaMap,
15
- customDiffComponents,
16
- entitySlug,
17
- fields,
18
- fieldsPermissions,
19
- i18n,
20
- modifiedOnly,
21
- nestingLevel = 0,
22
- parentIndexPath,
23
- parentIsLocalized,
24
- parentPath,
25
- parentSchemaPath,
26
- req,
27
- selectedLocales,
28
- versionFromSiblingData,
29
- versionToSiblingData
30
- }) => {
31
- const versionFields = [];
32
- let fieldIndex = -1;
33
- for (const field of fields) {
34
- fieldIndex++;
35
- if (fieldIsID(field)) {
36
- continue;
37
- }
38
- const {
39
- indexPath,
40
- path,
41
- schemaPath
42
- } = getFieldPaths({
43
- field,
44
- index: fieldIndex,
45
- parentIndexPath,
46
- parentPath,
47
- parentSchemaPath
48
- });
49
- const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath);
50
- if (!clientField) {
51
- req.payload.logger.error({
52
- clientFieldKey: entitySlug + '.' + schemaPath,
53
- clientSchemaMapKeys: Array.from(clientSchemaMap.keys()),
54
- msg: 'No client field found for ' + entitySlug + '.' + schemaPath,
55
- parentPath,
56
- parentSchemaPath,
57
- path,
58
- schemaPath
59
- });
60
- throw new Error('No client field found for ' + entitySlug + '.' + schemaPath);
61
- }
62
- const versionField = {};
63
- const isLocalized = fieldShouldBeLocalized({
64
- field,
65
- parentIsLocalized
66
- });
67
- const fieldName = 'name' in field ? field.name : null;
68
- const valueFrom = fieldName ? versionFromSiblingData?.[fieldName] : versionFromSiblingData;
69
- const valueTo = fieldName ? versionToSiblingData?.[fieldName] : versionToSiblingData;
70
- if (isLocalized) {
71
- versionField.fieldByLocale = {};
72
- for (const locale of selectedLocales) {
73
- const localizedVersionField = buildVersionField({
74
- clientField: clientField,
75
- clientSchemaMap,
76
- customDiffComponents,
77
- entitySlug,
78
- field,
79
- i18n,
80
- indexPath,
81
- locale,
82
- modifiedOnly,
83
- nestingLevel,
84
- parentFieldsPermissions: fieldsPermissions,
85
- parentIsLocalized: true,
86
- parentPath,
87
- parentSchemaPath,
88
- path,
89
- req,
90
- schemaPath,
91
- selectedLocales,
92
- valueFrom: valueFrom?.[locale],
93
- valueTo: valueTo?.[locale]
12
+ */ export const buildVersionFields = ({ clientSchemaMap, customDiffComponents, entitySlug, fields, fieldsPermissions, i18n, modifiedOnly, nestingLevel = 0, parentIndexPath, parentIsLocalized, parentPath, parentSchemaPath, req, selectedLocales, versionFromSiblingData, versionToSiblingData })=>{
13
+ const versionFields = [];
14
+ let fieldIndex = -1;
15
+ for (const field of fields){
16
+ fieldIndex++;
17
+ if (fieldIsID(field)) {
18
+ continue;
19
+ }
20
+ const { indexPath, path, schemaPath } = getFieldPaths({
21
+ field,
22
+ index: fieldIndex,
23
+ parentIndexPath,
24
+ parentPath,
25
+ parentSchemaPath
94
26
  });
95
- if (localizedVersionField) {
96
- versionField.fieldByLocale[locale] = localizedVersionField;
27
+ const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath);
28
+ if (!clientField) {
29
+ req.payload.logger.error({
30
+ clientFieldKey: entitySlug + '.' + schemaPath,
31
+ clientSchemaMapKeys: Array.from(clientSchemaMap.keys()),
32
+ msg: 'No client field found for ' + entitySlug + '.' + schemaPath,
33
+ parentPath,
34
+ parentSchemaPath,
35
+ path,
36
+ schemaPath
37
+ });
38
+ throw new Error('No client field found for ' + entitySlug + '.' + schemaPath);
39
+ }
40
+ const versionField = {};
41
+ const isLocalized = fieldShouldBeLocalized({
42
+ field,
43
+ parentIsLocalized
44
+ });
45
+ const fieldName = 'name' in field ? field.name : null;
46
+ const valueFrom = fieldName ? versionFromSiblingData?.[fieldName] : versionFromSiblingData;
47
+ const valueTo = fieldName ? versionToSiblingData?.[fieldName] : versionToSiblingData;
48
+ if (isLocalized) {
49
+ versionField.fieldByLocale = {};
50
+ for (const locale of selectedLocales){
51
+ const localizedVersionField = buildVersionField({
52
+ clientField: clientField,
53
+ clientSchemaMap,
54
+ customDiffComponents,
55
+ entitySlug,
56
+ field,
57
+ i18n,
58
+ indexPath,
59
+ locale,
60
+ modifiedOnly,
61
+ nestingLevel,
62
+ parentFieldsPermissions: fieldsPermissions,
63
+ parentIsLocalized: true,
64
+ parentPath,
65
+ parentSchemaPath,
66
+ path,
67
+ req,
68
+ schemaPath,
69
+ selectedLocales,
70
+ valueFrom: valueFrom?.[locale],
71
+ valueTo: valueTo?.[locale]
72
+ });
73
+ if (localizedVersionField) {
74
+ versionField.fieldByLocale[locale] = localizedVersionField;
75
+ }
76
+ }
77
+ } else {
78
+ const baseVersionField = buildVersionField({
79
+ clientField: clientField,
80
+ clientSchemaMap,
81
+ customDiffComponents,
82
+ entitySlug,
83
+ field,
84
+ i18n,
85
+ indexPath,
86
+ modifiedOnly,
87
+ nestingLevel,
88
+ parentFieldsPermissions: fieldsPermissions,
89
+ parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
90
+ parentPath,
91
+ parentSchemaPath,
92
+ path,
93
+ req,
94
+ schemaPath,
95
+ selectedLocales,
96
+ valueFrom,
97
+ valueTo
98
+ });
99
+ if (baseVersionField) {
100
+ versionField.field = baseVersionField;
101
+ }
102
+ }
103
+ if (versionField.field || versionField.fieldByLocale && Object.keys(versionField.fieldByLocale).length) {
104
+ versionFields.push(versionField);
97
105
  }
98
- }
99
- } else {
100
- const baseVersionField = buildVersionField({
101
- clientField: clientField,
102
- clientSchemaMap,
103
- customDiffComponents,
104
- entitySlug,
105
- field,
106
- i18n,
107
- indexPath,
108
- modifiedOnly,
109
- nestingLevel,
110
- parentFieldsPermissions: fieldsPermissions,
111
- parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
112
- parentPath,
113
- parentSchemaPath,
114
- path,
115
- req,
116
- schemaPath,
117
- selectedLocales,
118
- valueFrom,
119
- valueTo
120
- });
121
- if (baseVersionField) {
122
- versionField.field = baseVersionField;
123
- }
124
- }
125
- if (versionField.field || versionField.fieldByLocale && Object.keys(versionField.fieldByLocale).length) {
126
- versionFields.push(versionField);
127
106
  }
128
- }
129
- return {
130
- versionFields
131
- };
107
+ return {
108
+ versionFields
109
+ };
132
110
  };
133
- const buildVersionField = ({
134
- clientField,
135
- clientSchemaMap,
136
- customDiffComponents,
137
- entitySlug,
138
- field,
139
- i18n,
140
- indexPath,
141
- locale,
142
- modifiedOnly,
143
- nestingLevel,
144
- parentFieldsPermissions,
145
- parentIsLocalized,
146
- parentPath,
147
- parentSchemaPath,
148
- path,
149
- req,
150
- schemaPath,
151
- selectedLocales,
152
- valueFrom,
153
- valueTo
154
- }) => {
155
- let hasReadPermission = false;
156
- let fieldPermissions = undefined;
157
- if (typeof parentFieldsPermissions === 'boolean') {
158
- hasReadPermission = parentFieldsPermissions;
159
- fieldPermissions = parentFieldsPermissions;
160
- } else {
161
- if ('name' in field) {
162
- fieldPermissions = parentFieldsPermissions?.[field.name];
163
- if (typeof fieldPermissions === 'boolean') {
164
- hasReadPermission = fieldPermissions;
165
- } else if (typeof fieldPermissions?.read === 'boolean') {
166
- hasReadPermission = fieldPermissions.read;
167
- }
111
+ const buildVersionField = ({ clientField, clientSchemaMap, customDiffComponents, entitySlug, field, i18n, indexPath, locale, modifiedOnly, nestingLevel, parentFieldsPermissions, parentIsLocalized, parentPath, parentSchemaPath, path, req, schemaPath, selectedLocales, valueFrom, valueTo })=>{
112
+ let hasReadPermission = false;
113
+ let fieldPermissions = undefined;
114
+ if (typeof parentFieldsPermissions === 'boolean') {
115
+ hasReadPermission = parentFieldsPermissions;
116
+ fieldPermissions = parentFieldsPermissions;
168
117
  } else {
169
- // If the field is unnamed and parentFieldsPermissions is an object, its sub-fields will decide their read permissions state.
170
- // As far as this field is concerned, we are allowed to read it, as we need to reach its sub-fields to determine their read permissions.
171
- hasReadPermission = true;
172
- }
173
- }
174
- if (!hasReadPermission) {
175
- // HasReadPermission is only valid if the field has a name. E.g. for a tabs field it would incorrectly return `false`.
176
- return null;
177
- }
178
- if (modifiedOnly && dequal(valueFrom, valueTo)) {
179
- return null;
180
- }
181
- let CustomComponent = customDiffComponents?.[field.type];
182
- if (field?.type === 'richText') {
183
- if (!field?.editor) {
184
- throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor
185
- ;
186
- }
187
- if (typeof field?.editor === 'function') {
188
- throw new Error('Attempted to access unsanitized rich text editor.');
189
- }
190
- if (field.editor.CellComponent) {
191
- CustomComponent = field.editor.DiffComponent;
192
- }
193
- }
194
- if (field?.admin?.components?.Diff) {
195
- CustomComponent = field.admin.components.Diff;
196
- }
197
- const DefaultComponent = diffComponents?.[field.type];
198
- const baseVersionField = {
199
- type: field.type,
200
- fields: [],
201
- path,
202
- schemaPath
203
- };
204
- if (field.type === 'tabs' && 'tabs' in field) {
205
- baseVersionField.tabs = [];
206
- let tabIndex = -1;
207
- for (const tab of field.tabs) {
208
- tabIndex++;
209
- const isNamedTab = tabHasName(tab);
210
- const tabAsField = {
211
- ...tab,
212
- type: 'tab'
213
- };
214
- const {
215
- indexPath: tabIndexPath,
216
- path: tabPath,
217
- schemaPath: tabSchemaPath
218
- } = getFieldPaths({
219
- field: tabAsField,
220
- index: tabIndex,
221
- parentIndexPath: indexPath,
222
- parentPath,
223
- parentSchemaPath
224
- });
225
- let tabFieldsPermissions = undefined;
226
- // The tabs field does not have its own permissions as it's unnamed => use parentFieldsPermissions
227
- if (typeof parentFieldsPermissions === 'boolean') {
228
- tabFieldsPermissions = parentFieldsPermissions;
229
- } else {
230
- if ('name' in tab) {
231
- const tabPermissions = parentFieldsPermissions?.[tab.name];
232
- if (typeof tabPermissions === 'boolean') {
233
- tabFieldsPermissions = tabPermissions;
234
- } else {
235
- tabFieldsPermissions = tabPermissions?.fields;
236
- }
118
+ if ('name' in field) {
119
+ fieldPermissions = parentFieldsPermissions?.[field.name];
120
+ if (typeof fieldPermissions === 'boolean') {
121
+ hasReadPermission = fieldPermissions;
122
+ } else if (typeof fieldPermissions?.read === 'boolean') {
123
+ hasReadPermission = fieldPermissions.read;
124
+ }
237
125
  } else {
238
- tabFieldsPermissions = parentFieldsPermissions;
126
+ // If the field is unnamed and parentFieldsPermissions is an object, its sub-fields will decide their read permissions state.
127
+ // As far as this field is concerned, we are allowed to read it, as we need to reach its sub-fields to determine their read permissions.
128
+ hasReadPermission = true;
239
129
  }
240
- }
241
- const tabVersion = {
242
- name: 'name' in tab ? tab.name : null,
243
- fields: buildVersionFields({
244
- clientSchemaMap,
245
- customDiffComponents,
246
- entitySlug,
247
- fields: tab.fields,
248
- fieldsPermissions: tabFieldsPermissions,
249
- i18n,
250
- modifiedOnly,
251
- nestingLevel: nestingLevel + 1,
252
- parentIndexPath: isNamedTab ? '' : tabIndexPath,
253
- parentIsLocalized: parentIsLocalized || tab.localized,
254
- parentPath: isNamedTab ? tabPath : 'name' in field ? path : parentPath,
255
- parentSchemaPath: isNamedTab ? tabSchemaPath : 'name' in field ? schemaPath : parentSchemaPath,
256
- req,
257
- selectedLocales,
258
- versionFromSiblingData: 'name' in tab ? valueFrom?.[tab.name] : valueFrom,
259
- versionToSiblingData: 'name' in tab ? valueTo?.[tab.name] : valueTo
260
- }).versionFields,
261
- label: typeof tab.label === 'function' ? tab.label({
262
- i18n,
263
- t: i18n.t
264
- }) : tab.label
265
- };
266
- if (tabVersion?.fields?.length) {
267
- baseVersionField.tabs.push(tabVersion);
268
- }
269
130
  }
270
- if (modifiedOnly && !baseVersionField.tabs.length) {
271
- return null;
131
+ if (!hasReadPermission) {
132
+ // HasReadPermission is only valid if the field has a name. E.g. for a tabs field it would incorrectly return `false`.
133
+ return null;
272
134
  }
273
- } else if ('fields' in field) {
274
- let subFieldsPermissions = undefined;
275
- if ('name' in field && typeof fieldPermissions !== 'undefined') {
276
- // Named fields like arrays
277
- subFieldsPermissions = typeof fieldPermissions === 'boolean' ? fieldPermissions : fieldPermissions.fields;
278
- } else {
279
- // Unnamed fields like collapsible and row inherit directly from parent permissions
280
- subFieldsPermissions = parentFieldsPermissions;
135
+ if (modifiedOnly && dequal(valueFrom, valueTo)) {
136
+ return null;
281
137
  }
282
- if (field.type === 'array' && (valueTo || valueFrom)) {
283
- const maxLength = Math.max(Array.isArray(valueTo) ? valueTo.length : 0, Array.isArray(valueFrom) ? valueFrom.length : 0);
284
- baseVersionField.rows = [];
285
- for (let i = 0; i < maxLength; i++) {
286
- const fromRow = Array.isArray(valueFrom) && valueFrom?.[i] || {};
287
- const toRow = Array.isArray(valueTo) && valueTo?.[i] || {};
288
- const versionFields = buildVersionFields({
289
- clientSchemaMap,
290
- customDiffComponents,
291
- entitySlug,
292
- fields: field.fields,
293
- fieldsPermissions: subFieldsPermissions,
294
- i18n,
295
- modifiedOnly,
296
- nestingLevel: nestingLevel + 1,
297
- parentIndexPath: 'name' in field ? '' : indexPath,
298
- parentIsLocalized: parentIsLocalized || field.localized,
299
- parentPath: ('name' in field ? path : parentPath) + '.' + i,
300
- parentSchemaPath: 'name' in field ? schemaPath : parentSchemaPath,
301
- req,
302
- selectedLocales,
303
- versionFromSiblingData: fromRow,
304
- versionToSiblingData: toRow
305
- }).versionFields;
306
- if (versionFields?.length) {
307
- baseVersionField.rows[i] = versionFields;
138
+ let CustomComponent = customDiffComponents?.[field.type];
139
+ if (field?.type === 'richText') {
140
+ if (!field?.editor) {
141
+ throw new MissingEditorProp(field);
142
+ }
143
+ // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor
144
+ if (typeof field?.editor === 'function') {
145
+ throw new Error('Attempted to access unsanitized rich text editor.');
146
+ }
147
+ if (field.editor.CellComponent) {
148
+ CustomComponent = field.editor.DiffComponent;
308
149
  }
309
- }
310
- if (!baseVersionField.rows?.length && modifiedOnly) {
311
- return null;
312
- }
313
- } else {
314
- baseVersionField.fields = buildVersionFields({
315
- clientSchemaMap,
316
- customDiffComponents,
317
- entitySlug,
318
- fields: field.fields,
319
- fieldsPermissions: subFieldsPermissions,
320
- i18n,
321
- modifiedOnly,
322
- nestingLevel: field.type !== 'row' ? nestingLevel + 1 : nestingLevel,
323
- parentIndexPath: 'name' in field ? '' : indexPath,
324
- parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
325
- parentPath: 'name' in field ? path : parentPath,
326
- parentSchemaPath: 'name' in field ? schemaPath : parentSchemaPath,
327
- req,
328
- selectedLocales,
329
- versionFromSiblingData: valueFrom,
330
- versionToSiblingData: valueTo
331
- }).versionFields;
332
- if (modifiedOnly && !baseVersionField.fields?.length) {
333
- return null;
334
- }
335
150
  }
336
- } else if (field.type === 'blocks') {
337
- baseVersionField.rows = [];
338
- const maxLength = Math.max(Array.isArray(valueTo) ? valueTo.length : 0, Array.isArray(valueFrom) ? valueFrom.length : 0);
339
- for (let i = 0; i < maxLength; i++) {
340
- const fromRow = Array.isArray(valueFrom) && valueFrom?.[i] || {};
341
- const toRow = Array.isArray(valueTo) && valueTo?.[i] || {};
342
- const blockSlugToMatch = toRow?.blockType ?? fromRow?.blockType;
343
- const toBlock = req.payload.blocks[blockSlugToMatch] ?? (field.blockReferences ?? field.blocks).find(block => typeof block !== 'string' && block.slug === blockSlugToMatch);
344
- let fields = [];
345
- if (toRow.blockType === fromRow.blockType) {
346
- fields = toBlock.fields;
347
- } else {
348
- const fromBlockSlugToMatch = toRow?.blockType ?? fromRow?.blockType;
349
- const fromBlock = req.payload.blocks[fromBlockSlugToMatch] ?? (field.blockReferences ?? field.blocks).find(block => typeof block !== 'string' && block.slug === fromBlockSlugToMatch);
350
- if (fromBlock) {
351
- fields = getUniqueListBy([...toBlock.fields, ...fromBlock.fields], 'name');
151
+ if (field?.admin?.components?.Diff) {
152
+ CustomComponent = field.admin.components.Diff;
153
+ }
154
+ const DefaultComponent = diffComponents?.[field.type];
155
+ const baseVersionField = {
156
+ type: field.type,
157
+ fields: [],
158
+ path,
159
+ schemaPath
160
+ };
161
+ if (field.type === 'tabs' && 'tabs' in field) {
162
+ baseVersionField.tabs = [];
163
+ let tabIndex = -1;
164
+ for (const tab of field.tabs){
165
+ tabIndex++;
166
+ const isNamedTab = tabHasName(tab);
167
+ const tabAsField = {
168
+ ...tab,
169
+ type: 'tab'
170
+ };
171
+ const { indexPath: tabIndexPath, path: tabPath, schemaPath: tabSchemaPath } = getFieldPaths({
172
+ field: tabAsField,
173
+ index: tabIndex,
174
+ parentIndexPath: indexPath,
175
+ parentPath,
176
+ parentSchemaPath
177
+ });
178
+ let tabFieldsPermissions = undefined;
179
+ // The tabs field does not have its own permissions as it's unnamed => use parentFieldsPermissions
180
+ if (typeof parentFieldsPermissions === 'boolean') {
181
+ tabFieldsPermissions = parentFieldsPermissions;
182
+ } else {
183
+ if ('name' in tab) {
184
+ const tabPermissions = parentFieldsPermissions?.[tab.name];
185
+ if (typeof tabPermissions === 'boolean') {
186
+ tabFieldsPermissions = tabPermissions;
187
+ } else {
188
+ tabFieldsPermissions = tabPermissions?.fields;
189
+ }
190
+ } else {
191
+ tabFieldsPermissions = parentFieldsPermissions;
192
+ }
193
+ }
194
+ const tabVersion = {
195
+ name: 'name' in tab ? tab.name : null,
196
+ fields: buildVersionFields({
197
+ clientSchemaMap,
198
+ customDiffComponents,
199
+ entitySlug,
200
+ fields: tab.fields,
201
+ fieldsPermissions: tabFieldsPermissions,
202
+ i18n,
203
+ modifiedOnly,
204
+ nestingLevel: nestingLevel + 1,
205
+ parentIndexPath: isNamedTab ? '' : tabIndexPath,
206
+ parentIsLocalized: parentIsLocalized || tab.localized,
207
+ parentPath: isNamedTab ? tabPath : 'name' in field ? path : parentPath,
208
+ parentSchemaPath: isNamedTab ? tabSchemaPath : 'name' in field ? schemaPath : parentSchemaPath,
209
+ req,
210
+ selectedLocales,
211
+ versionFromSiblingData: 'name' in tab ? valueFrom?.[tab.name] : valueFrom,
212
+ versionToSiblingData: 'name' in tab ? valueTo?.[tab.name] : valueTo
213
+ }).versionFields,
214
+ label: typeof tab.label === 'function' ? tab.label({
215
+ i18n,
216
+ t: i18n.t
217
+ }) : tab.label
218
+ };
219
+ if (tabVersion?.fields?.length) {
220
+ baseVersionField.tabs.push(tabVersion);
221
+ }
222
+ }
223
+ if (modifiedOnly && !baseVersionField.tabs.length) {
224
+ return null;
225
+ }
226
+ } else // At this point, we are dealing with a `row`, `collapsible`, array`, etc
227
+ if ('fields' in field) {
228
+ let subFieldsPermissions = undefined;
229
+ if ('name' in field && typeof fieldPermissions !== 'undefined') {
230
+ // Named fields like arrays
231
+ subFieldsPermissions = typeof fieldPermissions === 'boolean' ? fieldPermissions : fieldPermissions.fields;
352
232
  } else {
353
- fields = toBlock.fields;
233
+ // Unnamed fields like collapsible and row inherit directly from parent permissions
234
+ subFieldsPermissions = parentFieldsPermissions;
354
235
  }
355
- }
356
- let blockFieldsPermissions = undefined;
357
- // fieldPermissions will be set here, as the blocks field has a name
358
- if (typeof fieldPermissions === 'boolean') {
359
- blockFieldsPermissions = fieldPermissions;
360
- } else if (typeof fieldPermissions?.blocks === 'boolean') {
361
- blockFieldsPermissions = fieldPermissions.blocks;
362
- } else {
363
- const permissionsBlockSpecific = fieldPermissions?.blocks?.[blockSlugToMatch];
364
- if (typeof permissionsBlockSpecific === 'boolean') {
365
- blockFieldsPermissions = permissionsBlockSpecific;
236
+ if (field.type === 'array' && (valueTo || valueFrom)) {
237
+ const maxLength = Math.max(Array.isArray(valueTo) ? valueTo.length : 0, Array.isArray(valueFrom) ? valueFrom.length : 0);
238
+ baseVersionField.rows = [];
239
+ for(let i = 0; i < maxLength; i++){
240
+ const fromRow = Array.isArray(valueFrom) && valueFrom?.[i] || {};
241
+ const toRow = Array.isArray(valueTo) && valueTo?.[i] || {};
242
+ const versionFields = buildVersionFields({
243
+ clientSchemaMap,
244
+ customDiffComponents,
245
+ entitySlug,
246
+ fields: field.fields,
247
+ fieldsPermissions: subFieldsPermissions,
248
+ i18n,
249
+ modifiedOnly,
250
+ nestingLevel: nestingLevel + 1,
251
+ parentIndexPath: 'name' in field ? '' : indexPath,
252
+ parentIsLocalized: parentIsLocalized || field.localized,
253
+ parentPath: ('name' in field ? path : parentPath) + '.' + i,
254
+ parentSchemaPath: 'name' in field ? schemaPath : parentSchemaPath,
255
+ req,
256
+ selectedLocales,
257
+ versionFromSiblingData: fromRow,
258
+ versionToSiblingData: toRow
259
+ }).versionFields;
260
+ if (versionFields?.length) {
261
+ baseVersionField.rows[i] = versionFields;
262
+ }
263
+ }
264
+ if (!baseVersionField.rows?.length && modifiedOnly) {
265
+ return null;
266
+ }
366
267
  } else {
367
- blockFieldsPermissions = permissionsBlockSpecific?.fields;
268
+ baseVersionField.fields = buildVersionFields({
269
+ clientSchemaMap,
270
+ customDiffComponents,
271
+ entitySlug,
272
+ fields: field.fields,
273
+ fieldsPermissions: subFieldsPermissions,
274
+ i18n,
275
+ modifiedOnly,
276
+ nestingLevel: field.type !== 'row' ? nestingLevel + 1 : nestingLevel,
277
+ parentIndexPath: 'name' in field ? '' : indexPath,
278
+ parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
279
+ parentPath: 'name' in field ? path : parentPath,
280
+ parentSchemaPath: 'name' in field ? schemaPath : parentSchemaPath,
281
+ req,
282
+ selectedLocales,
283
+ versionFromSiblingData: valueFrom,
284
+ versionToSiblingData: valueTo
285
+ }).versionFields;
286
+ if (modifiedOnly && !baseVersionField.fields?.length) {
287
+ return null;
288
+ }
289
+ }
290
+ } else if (field.type === 'blocks') {
291
+ baseVersionField.rows = [];
292
+ const maxLength = Math.max(Array.isArray(valueTo) ? valueTo.length : 0, Array.isArray(valueFrom) ? valueFrom.length : 0);
293
+ for(let i = 0; i < maxLength; i++){
294
+ const fromRow = Array.isArray(valueFrom) && valueFrom?.[i] || {};
295
+ const toRow = Array.isArray(valueTo) && valueTo?.[i] || {};
296
+ const blockSlugToMatch = toRow?.blockType ?? fromRow?.blockType;
297
+ const toBlock = req.payload.blocks[blockSlugToMatch] ?? (field.blockReferences ?? field.blocks).find((block)=>typeof block !== 'string' && block.slug === blockSlugToMatch);
298
+ let fields = [];
299
+ if (toRow.blockType === fromRow.blockType) {
300
+ fields = toBlock.fields;
301
+ } else {
302
+ const fromBlockSlugToMatch = toRow?.blockType ?? fromRow?.blockType;
303
+ const fromBlock = req.payload.blocks[fromBlockSlugToMatch] ?? (field.blockReferences ?? field.blocks).find((block)=>typeof block !== 'string' && block.slug === fromBlockSlugToMatch);
304
+ if (fromBlock) {
305
+ fields = getUniqueListBy([
306
+ ...toBlock.fields,
307
+ ...fromBlock.fields
308
+ ], 'name');
309
+ } else {
310
+ fields = toBlock.fields;
311
+ }
312
+ }
313
+ let blockFieldsPermissions = undefined;
314
+ // fieldPermissions will be set here, as the blocks field has a name
315
+ if (typeof fieldPermissions === 'boolean') {
316
+ blockFieldsPermissions = fieldPermissions;
317
+ } else if (typeof fieldPermissions?.blocks === 'boolean') {
318
+ blockFieldsPermissions = fieldPermissions.blocks;
319
+ } else {
320
+ const permissionsBlockSpecific = fieldPermissions?.blocks?.[blockSlugToMatch];
321
+ if (typeof permissionsBlockSpecific === 'boolean') {
322
+ blockFieldsPermissions = permissionsBlockSpecific;
323
+ } else {
324
+ blockFieldsPermissions = permissionsBlockSpecific?.fields;
325
+ }
326
+ }
327
+ const versionFields = buildVersionFields({
328
+ clientSchemaMap,
329
+ customDiffComponents,
330
+ entitySlug,
331
+ fields,
332
+ fieldsPermissions: blockFieldsPermissions,
333
+ i18n,
334
+ modifiedOnly,
335
+ nestingLevel: nestingLevel + 1,
336
+ parentIndexPath: 'name' in field ? '' : indexPath,
337
+ parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
338
+ parentPath: ('name' in field ? path : parentPath) + '.' + i,
339
+ parentSchemaPath: ('name' in field ? schemaPath : parentSchemaPath) + '.' + toBlock.slug,
340
+ req,
341
+ selectedLocales,
342
+ versionFromSiblingData: fromRow,
343
+ versionToSiblingData: toRow
344
+ }).versionFields;
345
+ if (versionFields?.length) {
346
+ baseVersionField.rows[i] = versionFields;
347
+ }
348
+ }
349
+ if (!baseVersionField.rows?.length && modifiedOnly) {
350
+ return null;
368
351
  }
369
- }
370
- const versionFields = buildVersionFields({
371
- clientSchemaMap,
372
- customDiffComponents,
373
- entitySlug,
374
- fields,
375
- fieldsPermissions: blockFieldsPermissions,
376
- i18n,
377
- modifiedOnly,
378
- nestingLevel: nestingLevel + 1,
379
- parentIndexPath: 'name' in field ? '' : indexPath,
380
- parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
381
- parentPath: ('name' in field ? path : parentPath) + '.' + i,
382
- parentSchemaPath: ('name' in field ? schemaPath : parentSchemaPath) + '.' + toBlock.slug,
383
- req,
384
- selectedLocales,
385
- versionFromSiblingData: fromRow,
386
- versionToSiblingData: toRow
387
- }).versionFields;
388
- if (versionFields?.length) {
389
- baseVersionField.rows[i] = versionFields;
390
- }
391
352
  }
392
- if (!baseVersionField.rows?.length && modifiedOnly) {
393
- return null;
353
+ const clientDiffProps = {
354
+ baseVersionField: {
355
+ ...baseVersionField,
356
+ CustomComponent: undefined
357
+ },
358
+ /**
359
+ * TODO: Change to valueFrom in 4.0
360
+ */ comparisonValue: valueFrom,
361
+ /**
362
+ * @deprecated remove in 4.0. Each field should handle its own diffing logic
363
+ */ diffMethod: 'diffWordsWithSpace',
364
+ field: clientField,
365
+ fieldPermissions: typeof fieldPermissions === 'undefined' ? parentFieldsPermissions : fieldPermissions,
366
+ parentIsLocalized,
367
+ nestingLevel: nestingLevel ? nestingLevel : undefined,
368
+ /**
369
+ * TODO: Change to valueTo in 4.0
370
+ */ versionValue: valueTo
371
+ };
372
+ if (locale) {
373
+ clientDiffProps.locale = locale;
394
374
  }
395
- }
396
- const clientDiffProps = {
397
- baseVersionField: {
398
- ...baseVersionField,
399
- CustomComponent: undefined
400
- },
401
- /**
402
- * TODO: Change to valueFrom in 4.0
403
- */
404
- comparisonValue: valueFrom,
405
- /**
406
- * @deprecated remove in 4.0. Each field should handle its own diffing logic
407
- */
408
- diffMethod: 'diffWordsWithSpace',
409
- field: clientField,
410
- fieldPermissions: typeof fieldPermissions === 'undefined' ? parentFieldsPermissions : fieldPermissions,
411
- parentIsLocalized,
412
- nestingLevel: nestingLevel ? nestingLevel : undefined,
413
- /**
414
- * TODO: Change to valueTo in 4.0
415
- */
416
- versionValue: valueTo
417
- };
418
- if (locale) {
419
- clientDiffProps.locale = locale;
420
- }
421
- const serverDiffProps = {
422
- ...clientDiffProps,
423
- clientField,
424
- field,
425
- i18n,
426
- req,
427
- selectedLocales
428
- };
429
- baseVersionField.CustomComponent = RenderServerComponent({
430
- clientProps: clientDiffProps,
431
- Component: CustomComponent,
432
- Fallback: DefaultComponent,
433
- importMap: req.payload.importMap,
434
- key: 'diff component',
435
- serverProps: serverDiffProps
436
- });
437
- return baseVersionField;
375
+ const serverDiffProps = {
376
+ ...clientDiffProps,
377
+ clientField,
378
+ field,
379
+ i18n,
380
+ req,
381
+ selectedLocales
382
+ };
383
+ baseVersionField.CustomComponent = RenderServerComponent({
384
+ clientProps: clientDiffProps,
385
+ Component: CustomComponent,
386
+ Fallback: DefaultComponent,
387
+ importMap: req.payload.importMap,
388
+ key: 'diff component',
389
+ serverProps: serverDiffProps
390
+ });
391
+ return baseVersionField;
438
392
  };
393
+
439
394
  //# sourceMappingURL=buildVersionFields.js.map