@payloadcms/next 3.71.0-canary.2 → 3.71.0-internal-debug.dea9d74

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 (446) 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 -211
  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/getFieldsForRowComparison.js +32 -36
  393. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  394. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +145 -129
  395. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  396. package/dist/views/Version/Restore/index.js +117 -93
  397. package/dist/views/Version/Restore/index.js.map +1 -1
  398. package/dist/views/Version/Restore/index.scss +84 -0
  399. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +33 -50
  400. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  401. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +170 -226
  402. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  403. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +18 -0
  404. package/dist/views/Version/SelectComparison/index.js +73 -50
  405. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  406. package/dist/views/Version/SelectComparison/index.scss +9 -0
  407. package/dist/views/Version/SelectComparison/types.js +2 -1
  408. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  409. package/dist/views/Version/SelectLocales/index.js +34 -32
  410. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  411. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +104 -95
  412. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -1
  413. package/dist/views/Version/VersionPillLabel/getVersionLabel.js +23 -27
  414. package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -1
  415. package/dist/views/Version/VersionPillLabel/index.scss +26 -0
  416. package/dist/views/Version/fetchVersions.js +113 -138
  417. package/dist/views/Version/fetchVersions.js.map +1 -1
  418. package/dist/views/Version/index.js +325 -323
  419. package/dist/views/Version/index.js.map +1 -1
  420. package/dist/views/Version/metadata.js +43 -50
  421. package/dist/views/Version/metadata.js.map +1 -1
  422. package/dist/views/Versions/buildColumns.js +95 -79
  423. package/dist/views/Versions/buildColumns.js.map +1 -1
  424. package/dist/views/Versions/cells/AutosaveCell/index.js +34 -38
  425. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  426. package/dist/views/Versions/cells/AutosaveCell/index.scss +9 -0
  427. package/dist/views/Versions/cells/CreatedAt/index.js +32 -53
  428. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  429. package/dist/views/Versions/cells/ID/index.js +10 -8
  430. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  431. package/dist/views/Versions/index.client.js +106 -83
  432. package/dist/views/Versions/index.client.js.map +1 -1
  433. package/dist/views/Versions/index.js +143 -143
  434. package/dist/views/Versions/index.js.map +1 -1
  435. package/dist/views/Versions/index.scss +110 -0
  436. package/dist/views/Versions/metadata.js +37 -44
  437. package/dist/views/Versions/metadata.js.map +1 -1
  438. package/dist/views/Versions/types.js +2 -1
  439. package/dist/views/Versions/types.js.map +1 -1
  440. package/dist/withPayload/withPayload.js +198 -144
  441. package/dist/withPayload/withPayload.js.map +1 -1
  442. package/dist/withPayload/withPayload.utils.js +65 -73
  443. package/dist/withPayload/withPayload.utils.js.map +1 -1
  444. package/dist/withPayload/withPayloadLegacy.js +41 -40
  445. package/dist/withPayload/withPayloadLegacy.js.map +1 -1
  446. package/package.json +6 -6
@@ -4,239 +4,224 @@ import { getFieldsForRowComparison } from './getFieldsForRowComparison.js';
4
4
  /**
5
5
  * Recursively counts the number of changed fields between comparison and
6
6
  * version data for a given set of fields.
7
- */
8
- export function countChangedFields({
9
- config,
10
- fields,
11
- locales,
12
- parentIsLocalized,
13
- valueFrom,
14
- valueTo
15
- }) {
16
- let count = 0;
17
- fields.forEach(field => {
18
- // Don't count the id field since it is not displayed in the UI
19
- if ('name' in field && field.name === 'id') {
20
- return;
21
- }
22
- const fieldType = field.type;
23
- switch (fieldType) {
24
- // Iterable fields are arrays and blocks fields. We iterate over each row and
25
- // count the number of changed fields in each.
26
- case 'array':
27
- case 'blocks':
28
- {
29
- if (locales && fieldShouldBeLocalized({
30
- field,
31
- parentIsLocalized
32
- })) {
33
- locales.forEach(locale => {
34
- const valueFromRows = valueFrom?.[field.name]?.[locale] ?? [];
35
- const valueToRows = valueTo?.[field.name]?.[locale] ?? [];
36
- count += countChangedFieldsInRows({
37
- config,
38
- field,
39
- locales,
40
- parentIsLocalized: parentIsLocalized || field.localized,
41
- valueFromRows,
42
- valueToRows
43
- });
44
- });
45
- } else {
46
- const valueFromRows = valueFrom?.[field.name] ?? [];
47
- const valueToRows = valueTo?.[field.name] ?? [];
48
- count += countChangedFieldsInRows({
49
- config,
50
- field,
51
- locales,
52
- parentIsLocalized: parentIsLocalized || field.localized,
53
- valueFromRows,
54
- valueToRows
55
- });
56
- }
57
- break;
7
+ */ export function countChangedFields({ config, fields, locales, parentIsLocalized, valueFrom, valueTo }) {
8
+ let count = 0;
9
+ fields.forEach((field)=>{
10
+ // Don't count the id field since it is not displayed in the UI
11
+ if ('name' in field && field.name === 'id') {
12
+ return;
58
13
  }
59
- // Regular fields without nested fields.
60
- case 'checkbox':
61
- case 'code':
62
- case 'date':
63
- case 'email':
64
- case 'join':
65
- case 'json':
66
- case 'number':
67
- case 'point':
68
- case 'radio':
69
- case 'relationship':
70
- case 'richText':
71
- case 'select':
72
- case 'text':
73
- case 'textarea':
74
- case 'upload':
75
- {
76
- // Fields that have a name and contain data. We can just check if the data has changed.
77
- if (locales && fieldShouldBeLocalized({
78
- field,
79
- parentIsLocalized
80
- })) {
81
- locales.forEach(locale => {
82
- if (fieldHasChanges(valueTo?.[field.name]?.[locale], valueFrom?.[field.name]?.[locale])) {
83
- count++;
84
- }
85
- });
86
- } else if (fieldHasChanges(valueTo?.[field.name], valueFrom?.[field.name])) {
87
- count++;
88
- }
89
- break;
14
+ const fieldType = field.type;
15
+ switch(fieldType){
16
+ // Iterable fields are arrays and blocks fields. We iterate over each row and
17
+ // count the number of changed fields in each.
18
+ case 'array':
19
+ case 'blocks':
20
+ {
21
+ if (locales && fieldShouldBeLocalized({
22
+ field,
23
+ parentIsLocalized
24
+ })) {
25
+ locales.forEach((locale)=>{
26
+ const valueFromRows = valueFrom?.[field.name]?.[locale] ?? [];
27
+ const valueToRows = valueTo?.[field.name]?.[locale] ?? [];
28
+ count += countChangedFieldsInRows({
29
+ config,
30
+ field,
31
+ locales,
32
+ parentIsLocalized: parentIsLocalized || field.localized,
33
+ valueFromRows,
34
+ valueToRows
35
+ });
36
+ });
37
+ } else {
38
+ const valueFromRows = valueFrom?.[field.name] ?? [];
39
+ const valueToRows = valueTo?.[field.name] ?? [];
40
+ count += countChangedFieldsInRows({
41
+ config,
42
+ field,
43
+ locales,
44
+ parentIsLocalized: parentIsLocalized || field.localized,
45
+ valueFromRows,
46
+ valueToRows
47
+ });
48
+ }
49
+ break;
50
+ }
51
+ // Regular fields without nested fields.
52
+ case 'checkbox':
53
+ case 'code':
54
+ case 'date':
55
+ case 'email':
56
+ case 'join':
57
+ case 'json':
58
+ case 'number':
59
+ case 'point':
60
+ case 'radio':
61
+ case 'relationship':
62
+ case 'richText':
63
+ case 'select':
64
+ case 'text':
65
+ case 'textarea':
66
+ case 'upload':
67
+ {
68
+ // Fields that have a name and contain data. We can just check if the data has changed.
69
+ if (locales && fieldShouldBeLocalized({
70
+ field,
71
+ parentIsLocalized
72
+ })) {
73
+ locales.forEach((locale)=>{
74
+ if (fieldHasChanges(valueTo?.[field.name]?.[locale], valueFrom?.[field.name]?.[locale])) {
75
+ count++;
76
+ }
77
+ });
78
+ } else if (fieldHasChanges(valueTo?.[field.name], valueFrom?.[field.name])) {
79
+ count++;
80
+ }
81
+ break;
82
+ }
83
+ // Fields that have nested fields, but don't nest their fields' data.
84
+ case 'collapsible':
85
+ case 'row':
86
+ {
87
+ count += countChangedFields({
88
+ config,
89
+ fields: field.fields,
90
+ locales,
91
+ parentIsLocalized: parentIsLocalized || field.localized,
92
+ valueFrom,
93
+ valueTo
94
+ });
95
+ break;
96
+ }
97
+ // Fields that have nested fields and nest their fields' data.
98
+ case 'group':
99
+ {
100
+ if (groupHasName(field)) {
101
+ if (locales && fieldShouldBeLocalized({
102
+ field,
103
+ parentIsLocalized
104
+ })) {
105
+ locales.forEach((locale)=>{
106
+ count += countChangedFields({
107
+ config,
108
+ fields: field.fields,
109
+ locales,
110
+ parentIsLocalized: parentIsLocalized || field.localized,
111
+ valueFrom: valueFrom?.[field.name]?.[locale],
112
+ valueTo: valueTo?.[field.name]?.[locale]
113
+ });
114
+ });
115
+ } else {
116
+ count += countChangedFields({
117
+ config,
118
+ fields: field.fields,
119
+ locales,
120
+ parentIsLocalized: parentIsLocalized || field.localized,
121
+ valueFrom: valueFrom?.[field.name],
122
+ valueTo: valueTo?.[field.name]
123
+ });
124
+ }
125
+ } else {
126
+ // Unnamed group field: data is NOT nested under `field.name`
127
+ count += countChangedFields({
128
+ config,
129
+ fields: field.fields,
130
+ locales,
131
+ parentIsLocalized: parentIsLocalized || field.localized,
132
+ valueFrom,
133
+ valueTo
134
+ });
135
+ }
136
+ break;
137
+ }
138
+ // Each tab in a tabs field has nested fields. The fields data may be
139
+ // nested or not depending on the existence of a name property.
140
+ case 'tabs':
141
+ {
142
+ field.tabs.forEach((tab)=>{
143
+ if ('name' in tab && locales && tab.localized) {
144
+ // Named localized tab
145
+ locales.forEach((locale)=>{
146
+ count += countChangedFields({
147
+ config,
148
+ fields: tab.fields,
149
+ locales,
150
+ parentIsLocalized: parentIsLocalized || tab.localized,
151
+ valueFrom: valueFrom?.[tab.name]?.[locale],
152
+ valueTo: valueTo?.[tab.name]?.[locale]
153
+ });
154
+ });
155
+ } else if ('name' in tab) {
156
+ // Named tab
157
+ count += countChangedFields({
158
+ config,
159
+ fields: tab.fields,
160
+ locales,
161
+ parentIsLocalized: parentIsLocalized || tab.localized,
162
+ valueFrom: valueFrom?.[tab.name],
163
+ valueTo: valueTo?.[tab.name]
164
+ });
165
+ } else {
166
+ // Unnamed tab
167
+ count += countChangedFields({
168
+ config,
169
+ fields: tab.fields,
170
+ locales,
171
+ parentIsLocalized: parentIsLocalized || tab.localized,
172
+ valueFrom,
173
+ valueTo
174
+ });
175
+ }
176
+ });
177
+ break;
178
+ }
179
+ // UI fields don't have data and are not displayed in the version view
180
+ // so we can ignore them.
181
+ case 'ui':
182
+ {
183
+ break;
184
+ }
185
+ default:
186
+ {
187
+ const _exhaustiveCheck = fieldType;
188
+ throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`);
189
+ }
90
190
  }
91
- // Fields that have nested fields, but don't nest their fields' data.
92
- case 'collapsible':
93
- case 'row':
94
- {
95
- count += countChangedFields({
191
+ });
192
+ return count;
193
+ }
194
+ export function countChangedFieldsInRows({ config, field, locales, parentIsLocalized, valueFromRows = [], valueToRows = [] }) {
195
+ let count = 0;
196
+ let i = 0;
197
+ while(valueFromRows[i] || valueToRows[i]){
198
+ const valueFromRow = valueFromRows?.[i] || {};
199
+ const valueToRow = valueToRows?.[i] || {};
200
+ const { fields: rowFields } = getFieldsForRowComparison({
201
+ baseVersionField: {
202
+ type: 'text',
203
+ fields: [],
204
+ path: '',
205
+ schemaPath: ''
206
+ },
207
+ // Doesn't matter, as we don't need the versionFields output here
208
+ config,
209
+ field,
210
+ row: i,
211
+ valueFromRow,
212
+ valueToRow
213
+ });
214
+ count += countChangedFields({
96
215
  config,
97
- fields: field.fields,
216
+ fields: rowFields,
98
217
  locales,
99
218
  parentIsLocalized: parentIsLocalized || field.localized,
100
- valueFrom,
101
- valueTo
102
- });
103
- break;
104
- }
105
- // Fields that have nested fields and nest their fields' data.
106
- case 'group':
107
- {
108
- if (groupHasName(field)) {
109
- if (locales && fieldShouldBeLocalized({
110
- field,
111
- parentIsLocalized
112
- })) {
113
- locales.forEach(locale => {
114
- count += countChangedFields({
115
- config,
116
- fields: field.fields,
117
- locales,
118
- parentIsLocalized: parentIsLocalized || field.localized,
119
- valueFrom: valueFrom?.[field.name]?.[locale],
120
- valueTo: valueTo?.[field.name]?.[locale]
121
- });
122
- });
123
- } else {
124
- count += countChangedFields({
125
- config,
126
- fields: field.fields,
127
- locales,
128
- parentIsLocalized: parentIsLocalized || field.localized,
129
- valueFrom: valueFrom?.[field.name],
130
- valueTo: valueTo?.[field.name]
131
- });
132
- }
133
- } else {
134
- // Unnamed group field: data is NOT nested under `field.name`
135
- count += countChangedFields({
136
- config,
137
- fields: field.fields,
138
- locales,
139
- parentIsLocalized: parentIsLocalized || field.localized,
140
- valueFrom,
141
- valueTo
142
- });
143
- }
144
- break;
145
- }
146
- // Each tab in a tabs field has nested fields. The fields data may be
147
- // nested or not depending on the existence of a name property.
148
- case 'tabs':
149
- {
150
- field.tabs.forEach(tab => {
151
- if ('name' in tab && locales && tab.localized) {
152
- // Named localized tab
153
- locales.forEach(locale => {
154
- count += countChangedFields({
155
- config,
156
- fields: tab.fields,
157
- locales,
158
- parentIsLocalized: parentIsLocalized || tab.localized,
159
- valueFrom: valueFrom?.[tab.name]?.[locale],
160
- valueTo: valueTo?.[tab.name]?.[locale]
161
- });
162
- });
163
- } else if ('name' in tab) {
164
- // Named tab
165
- count += countChangedFields({
166
- config,
167
- fields: tab.fields,
168
- locales,
169
- parentIsLocalized: parentIsLocalized || tab.localized,
170
- valueFrom: valueFrom?.[tab.name],
171
- valueTo: valueTo?.[tab.name]
172
- });
173
- } else {
174
- // Unnamed tab
175
- count += countChangedFields({
176
- config,
177
- fields: tab.fields,
178
- locales,
179
- parentIsLocalized: parentIsLocalized || tab.localized,
180
- valueFrom,
181
- valueTo
182
- });
183
- }
184
- });
185
- break;
186
- }
187
- // UI fields don't have data and are not displayed in the version view
188
- // so we can ignore them.
189
- case 'ui':
190
- {
191
- break;
192
- }
193
- default:
194
- {
195
- const _exhaustiveCheck = fieldType;
196
- throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`);
197
- }
219
+ valueFrom: valueFromRow,
220
+ valueTo: valueToRow
221
+ });
222
+ i++;
198
223
  }
199
- });
200
- return count;
201
- }
202
- export function countChangedFieldsInRows({
203
- config,
204
- field,
205
- locales,
206
- parentIsLocalized,
207
- valueFromRows = [],
208
- valueToRows = []
209
- }) {
210
- let count = 0;
211
- let i = 0;
212
- while (valueFromRows[i] || valueToRows[i]) {
213
- const valueFromRow = valueFromRows?.[i] || {};
214
- const valueToRow = valueToRows?.[i] || {};
215
- const {
216
- fields: rowFields
217
- } = getFieldsForRowComparison({
218
- baseVersionField: {
219
- type: 'text',
220
- fields: [],
221
- path: '',
222
- schemaPath: ''
223
- },
224
- config,
225
- field,
226
- row: i,
227
- valueFromRow,
228
- valueToRow
229
- });
230
- count += countChangedFields({
231
- config,
232
- fields: rowFields,
233
- locales,
234
- parentIsLocalized: parentIsLocalized || field.localized,
235
- valueFrom: valueFromRow,
236
- valueTo: valueToRow
237
- });
238
- i++;
239
- }
240
- return count;
224
+ return count;
241
225
  }
226
+
242
227
  //# sourceMappingURL=countChangedFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"countChangedFields.js","names":["fieldShouldBeLocalized","groupHasName","fieldHasChanges","getFieldsForRowComparison","countChangedFields","config","fields","locales","parentIsLocalized","valueFrom","valueTo","count","forEach","field","name","fieldType","type","locale","valueFromRows","valueToRows","countChangedFieldsInRows","localized","tabs","tab","_exhaustiveCheck","Error","String","i","valueFromRow","valueToRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload'\n\nimport { fieldShouldBeLocalized, groupHasName } from 'payload/shared'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n config: ClientConfig\n fields: ClientField[]\n locales: string[] | undefined\n parentIsLocalized: boolean\n valueFrom: unknown\n valueTo: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({\n config,\n fields,\n locales,\n parentIsLocalized,\n valueFrom,\n valueTo,\n}: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n const valueFromRows = valueFrom?.[field.name]?.[locale] ?? []\n const valueToRows = valueTo?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFromRows,\n valueToRows,\n })\n })\n } else {\n const valueFromRows = valueFrom?.[field.name] ?? []\n const valueToRows = valueTo?.[field.name] ?? []\n count += countChangedFieldsInRows({\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFromRows,\n valueToRows,\n })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(valueTo?.[field.name]?.[locale], valueFrom?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(valueTo?.[field.name], valueFrom?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom,\n valueTo,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (groupHasName(field)) {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom: valueFrom?.[field.name]?.[locale],\n valueTo: valueTo?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom: valueFrom?.[field.name],\n valueTo: valueTo?.[field.name],\n })\n }\n } else {\n // Unnamed group field: data is NOT nested under `field.name`\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom,\n valueTo,\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n valueFrom: valueFrom?.[tab.name]?.[locale],\n valueTo: valueTo?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n valueFrom: valueFrom?.[tab.name],\n valueTo: valueTo?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n valueFrom,\n valueTo,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n parentIsLocalized: boolean\n valueFromRows: unknown[]\n valueToRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n config,\n field,\n locales,\n parentIsLocalized,\n valueFromRows = [],\n valueToRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (valueFromRows[i] || valueToRows[i]) {\n const valueFromRow = valueFromRows?.[i] || {}\n const valueToRow = valueToRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n config,\n field,\n row: i,\n valueFromRow,\n valueToRow,\n })\n\n count += countChangedFields({\n config,\n fields: rowFields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom: valueFromRow,\n valueTo: valueToRow,\n })\n\n i++\n }\n return count\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload'\n\nimport { fieldShouldBeLocalized, groupHasName } from 'payload/shared'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n config: ClientConfig\n fields: ClientField[]\n locales: string[] | undefined\n parentIsLocalized: boolean\n valueFrom: unknown\n valueTo: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({\n config,\n fields,\n locales,\n parentIsLocalized,\n valueFrom,\n valueTo,\n}: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n const valueFromRows = valueFrom?.[field.name]?.[locale] ?? []\n const valueToRows = valueTo?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFromRows,\n valueToRows,\n })\n })\n } else {\n const valueFromRows = valueFrom?.[field.name] ?? []\n const valueToRows = valueTo?.[field.name] ?? []\n count += countChangedFieldsInRows({\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFromRows,\n valueToRows,\n })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(valueTo?.[field.name]?.[locale], valueFrom?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(valueTo?.[field.name], valueFrom?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom,\n valueTo,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (groupHasName(field)) {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom: valueFrom?.[field.name]?.[locale],\n valueTo: valueTo?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom: valueFrom?.[field.name],\n valueTo: valueTo?.[field.name],\n })\n }\n } else {\n // Unnamed group field: data is NOT nested under `field.name`\n count += countChangedFields({\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom,\n valueTo,\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n valueFrom: valueFrom?.[tab.name]?.[locale],\n valueTo: valueTo?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n valueFrom: valueFrom?.[tab.name],\n valueTo: valueTo?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n valueFrom,\n valueTo,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n parentIsLocalized: boolean\n valueFromRows: unknown[]\n valueToRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n config,\n field,\n locales,\n parentIsLocalized,\n valueFromRows = [],\n valueToRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (valueFromRows[i] || valueToRows[i]) {\n const valueFromRow = valueFromRows?.[i] || {}\n const valueToRow = valueToRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n config,\n field,\n row: i,\n valueFromRow,\n valueToRow,\n })\n\n count += countChangedFields({\n config,\n fields: rowFields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n valueFrom: valueFromRow,\n valueTo: valueToRow,\n })\n\n i++\n }\n return count\n}\n"],"names":["fieldShouldBeLocalized","groupHasName","fieldHasChanges","getFieldsForRowComparison","countChangedFields","config","fields","locales","parentIsLocalized","valueFrom","valueTo","count","forEach","field","name","fieldType","type","locale","valueFromRows","valueToRows","countChangedFieldsInRows","localized","tabs","tab","_exhaustiveCheck","Error","String","i","valueFromRow","valueToRow","rowFields","baseVersionField","path","schemaPath","row"],"mappings":"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"}