@payloadcms/next 3.68.0-internal-debug.dafc24d → 3.68.0-internal-debug.35482da

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 (386) 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/config.js +1 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +9 -15
  10. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +40 -71
  12. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +65 -59
  14. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  15. package/dist/elements/DocumentHeader/Tabs/index.js +80 -70
  16. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  17. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +16 -23
  18. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  19. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +61 -69
  20. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  21. package/dist/elements/DocumentHeader/index.js +48 -28
  22. package/dist/elements/DocumentHeader/index.js.map +1 -1
  23. package/dist/elements/FormHeader/index.js +30 -16
  24. package/dist/elements/FormHeader/index.js.map +1 -1
  25. package/dist/elements/Logo/index.js +19 -34
  26. package/dist/elements/Logo/index.js.map +1 -1
  27. package/dist/elements/Nav/NavHamburger/index.js +23 -44
  28. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  29. package/dist/elements/Nav/NavWrapper/index.js +28 -54
  30. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  31. package/dist/elements/Nav/SettingsMenuButton/index.js +33 -39
  32. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  33. package/dist/elements/Nav/getNavPrefs.js +27 -22
  34. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  35. package/dist/elements/Nav/index.client.js +97 -118
  36. package/dist/elements/Nav/index.client.js.map +1 -1
  37. package/dist/elements/Nav/index.js +148 -127
  38. package/dist/elements/Nav/index.js.map +1 -1
  39. package/dist/esbuildEntry.d.ts +5 -0
  40. package/dist/esbuildEntry.d.ts.map +1 -0
  41. package/dist/esbuildEntry.js +6 -0
  42. package/dist/esbuildEntry.js.map +1 -0
  43. package/dist/exports/auth.js +1 -0
  44. package/dist/exports/auth.js.map +1 -1
  45. package/dist/exports/client.js +1 -1
  46. package/dist/exports/client.js.map +1 -1
  47. package/dist/exports/layouts.js +1 -0
  48. package/dist/exports/layouts.js.map +1 -1
  49. package/dist/exports/routes.js +1 -0
  50. package/dist/exports/routes.js.map +1 -1
  51. package/dist/exports/rsc.js +1 -0
  52. package/dist/exports/rsc.js.map +1 -1
  53. package/dist/exports/templates.js +1 -0
  54. package/dist/exports/templates.js.map +1 -1
  55. package/dist/exports/utilities.js +7 -12
  56. package/dist/exports/utilities.js.map +1 -1
  57. package/dist/exports/views.js +1 -0
  58. package/dist/exports/views.js.map +1 -1
  59. package/dist/index.js +1 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/layouts/Root/NestProviders.js +21 -20
  62. package/dist/layouts/Root/NestProviders.js.map +1 -1
  63. package/dist/layouts/Root/checkDependencies.js +49 -41
  64. package/dist/layouts/Root/checkDependencies.js.map +1 -1
  65. package/dist/layouts/Root/index.js +128 -103
  66. package/dist/layouts/Root/index.js.map +1 -1
  67. package/dist/prod/styles.css +5 -1
  68. package/dist/routes/graphql/handler.js +114 -122
  69. package/dist/routes/graphql/handler.js.map +1 -1
  70. package/dist/routes/graphql/index.js +1 -0
  71. package/dist/routes/graphql/index.js.map +1 -1
  72. package/dist/routes/graphql/playground.js +24 -23
  73. package/dist/routes/graphql/playground.js.map +1 -1
  74. package/dist/routes/index.js +1 -0
  75. package/dist/routes/index.js.map +1 -1
  76. package/dist/routes/rest/index.js +20 -19
  77. package/dist/routes/rest/index.js.map +1 -1
  78. package/dist/routes/rest/og/image.js +103 -79
  79. package/dist/routes/rest/og/image.js.map +1 -1
  80. package/dist/routes/rest/og/index.js +59 -54
  81. package/dist/routes/rest/og/index.js.map +1 -1
  82. package/dist/templates/Default/NavHamburger/index.js +12 -20
  83. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  84. package/dist/templates/Default/Wrapper/index.js +20 -44
  85. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  86. package/dist/templates/Default/index.js +183 -133
  87. package/dist/templates/Default/index.js.map +1 -1
  88. package/dist/templates/Minimal/index.js +26 -17
  89. package/dist/templates/Minimal/index.js.map +1 -1
  90. package/dist/utilities/getExistingAuthToken.js +3 -2
  91. package/dist/utilities/getExistingAuthToken.js.map +1 -1
  92. package/dist/utilities/getNextRequestI18n.js +12 -13
  93. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  94. package/dist/utilities/getPayloadHMR.js +5 -5
  95. package/dist/utilities/getPayloadHMR.js.map +1 -1
  96. package/dist/utilities/getPreferences.js +27 -22
  97. package/dist/utilities/getPreferences.js.map +1 -1
  98. package/dist/utilities/getRequestLocale.js +13 -14
  99. package/dist/utilities/getRequestLocale.js.map +1 -1
  100. package/dist/utilities/getRequestTheme.js +19 -19
  101. package/dist/utilities/getRequestTheme.js.map +1 -1
  102. package/dist/utilities/getRouteWithoutAdmin.js +3 -5
  103. package/dist/utilities/getRouteWithoutAdmin.js.map +1 -1
  104. package/dist/utilities/getVisibleEntities.js +12 -23
  105. package/dist/utilities/getVisibleEntities.js.map +1 -1
  106. package/dist/utilities/handleAuthRedirect.js +22 -36
  107. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  108. package/dist/utilities/handleServerFunctions.js +32 -39
  109. package/dist/utilities/handleServerFunctions.js.map +1 -1
  110. package/dist/utilities/initReq.js +78 -96
  111. package/dist/utilities/initReq.js.map +1 -1
  112. package/dist/utilities/isCustomAdminView.js +22 -26
  113. package/dist/utilities/isCustomAdminView.js.map +1 -1
  114. package/dist/utilities/isPublicAdminRoute.js +26 -20
  115. package/dist/utilities/isPublicAdminRoute.js.map +1 -1
  116. package/dist/utilities/meta.js +68 -63
  117. package/dist/utilities/meta.js.map +1 -1
  118. package/dist/utilities/selectiveCache.js +25 -26
  119. package/dist/utilities/selectiveCache.js.map +1 -1
  120. package/dist/utilities/setPayloadAuthCookie.js +19 -22
  121. package/dist/utilities/setPayloadAuthCookie.js.map +1 -1
  122. package/dist/utilities/slugify.js +24 -33
  123. package/dist/utilities/slugify.js.map +1 -1
  124. package/dist/utilities/timestamp.js +7 -6
  125. package/dist/utilities/timestamp.js.map +1 -1
  126. package/dist/views/API/LocaleSelector/index.js +17 -39
  127. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  128. package/dist/views/API/RenderJSON/index.js +171 -126
  129. package/dist/views/API/RenderJSON/index.js.map +1 -1
  130. package/dist/views/API/index.client.js +287 -197
  131. package/dist/views/API/index.client.js.map +1 -1
  132. package/dist/views/API/index.js +7 -2
  133. package/dist/views/API/index.js.map +1 -1
  134. package/dist/views/API/metadata.js +18 -23
  135. package/dist/views/API/metadata.js.map +1 -1
  136. package/dist/views/Account/ResetPreferences/index.js +74 -91
  137. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  138. package/dist/views/Account/Settings/LanguageSelector.js +18 -47
  139. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  140. package/dist/views/Account/Settings/index.js +62 -28
  141. package/dist/views/Account/Settings/index.js.map +1 -1
  142. package/dist/views/Account/ToggleTheme/index.js +38 -55
  143. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  144. package/dist/views/Account/index.client.js +16 -32
  145. package/dist/views/Account/index.client.js.map +1 -1
  146. package/dist/views/Account/index.js +144 -155
  147. package/dist/views/Account/index.js.map +1 -1
  148. package/dist/views/Account/metadata.js +8 -12
  149. package/dist/views/Account/metadata.js.map +1 -1
  150. package/dist/views/BrowseByFolder/buildView.js +139 -158
  151. package/dist/views/BrowseByFolder/buildView.js.map +1 -1
  152. package/dist/views/BrowseByFolder/index.js +16 -17
  153. package/dist/views/BrowseByFolder/index.js.map +1 -1
  154. package/dist/views/BrowseByFolder/metadata.js +13 -15
  155. package/dist/views/BrowseByFolder/metadata.js.map +1 -1
  156. package/dist/views/CollectionFolders/buildView.js +123 -143
  157. package/dist/views/CollectionFolders/buildView.js.map +1 -1
  158. package/dist/views/CollectionFolders/index.js +16 -17
  159. package/dist/views/CollectionFolders/index.js.map +1 -1
  160. package/dist/views/CollectionFolders/metadata.js +18 -21
  161. package/dist/views/CollectionFolders/metadata.js.map +1 -1
  162. package/dist/views/CollectionFolders/renderFolderViewSlots.js +58 -61
  163. package/dist/views/CollectionFolders/renderFolderViewSlots.js.map +1 -1
  164. package/dist/views/CollectionTrash/index.js +17 -18
  165. package/dist/views/CollectionTrash/index.js.map +1 -1
  166. package/dist/views/CollectionTrash/metadata.js +18 -21
  167. package/dist/views/CollectionTrash/metadata.js.map +1 -1
  168. package/dist/views/CreateFirstUser/index.client.js +114 -101
  169. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  170. package/dist/views/CreateFirstUser/index.js +87 -81
  171. package/dist/views/CreateFirstUser/index.js.map +1 -1
  172. package/dist/views/CreateFirstUser/metadata.js +8 -12
  173. package/dist/views/CreateFirstUser/metadata.js.map +1 -1
  174. package/dist/views/Dashboard/Default/index.js +176 -152
  175. package/dist/views/Dashboard/Default/index.js.map +1 -1
  176. package/dist/views/Dashboard/index.js +97 -90
  177. package/dist/views/Dashboard/index.js.map +1 -1
  178. package/dist/views/Dashboard/metadata.js +10 -14
  179. package/dist/views/Dashboard/metadata.js.map +1 -1
  180. package/dist/views/Document/getCustomDocumentViewByKey.js +3 -2
  181. package/dist/views/Document/getCustomDocumentViewByKey.js.map +1 -1
  182. package/dist/views/Document/getCustomViewByRoute.js +27 -30
  183. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  184. package/dist/views/Document/getDocPreferences.js +40 -41
  185. package/dist/views/Document/getDocPreferences.js.map +1 -1
  186. package/dist/views/Document/getDocumentData.js +44 -55
  187. package/dist/views/Document/getDocumentData.js.map +1 -1
  188. package/dist/views/Document/getDocumentPermissions.js +77 -80
  189. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  190. package/dist/views/Document/getDocumentView.js +313 -283
  191. package/dist/views/Document/getDocumentView.js.map +1 -1
  192. package/dist/views/Document/getIsLocked.js +66 -66
  193. package/dist/views/Document/getIsLocked.js.map +1 -1
  194. package/dist/views/Document/getMetaBySegment.js +130 -136
  195. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  196. package/dist/views/Document/getVersions.js +204 -194
  197. package/dist/views/Document/getVersions.js.map +1 -1
  198. package/dist/views/Document/handleServerFunction.js +103 -128
  199. package/dist/views/Document/handleServerFunction.js.map +1 -1
  200. package/dist/views/Document/index.js +315 -354
  201. package/dist/views/Document/index.js.map +1 -1
  202. package/dist/views/Document/metadata.js +2 -1
  203. package/dist/views/Document/metadata.js.map +1 -1
  204. package/dist/views/Document/renderDocumentSlots.js +121 -132
  205. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  206. package/dist/views/Edit/index.js +10 -6
  207. package/dist/views/Edit/index.js.map +1 -1
  208. package/dist/views/Edit/metadata.js +36 -46
  209. package/dist/views/Edit/metadata.js.map +1 -1
  210. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +130 -164
  211. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  212. package/dist/views/ForgotPassword/index.js +79 -62
  213. package/dist/views/ForgotPassword/index.js.map +1 -1
  214. package/dist/views/ForgotPassword/metadata.js +8 -12
  215. package/dist/views/ForgotPassword/metadata.js.map +1 -1
  216. package/dist/views/List/createSerializableValue.js +12 -11
  217. package/dist/views/List/createSerializableValue.js.map +1 -1
  218. package/dist/views/List/enrichDocsWithVersionStatus.js +86 -86
  219. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  220. package/dist/views/List/extractRelationshipDisplayValue.js +15 -14
  221. package/dist/views/List/extractRelationshipDisplayValue.js.map +1 -1
  222. package/dist/views/List/extractValueOrRelationshipID.js +16 -15
  223. package/dist/views/List/extractValueOrRelationshipID.js.map +1 -1
  224. package/dist/views/List/handleGroupBy.js +133 -150
  225. package/dist/views/List/handleGroupBy.js.map +1 -1
  226. package/dist/views/List/handleServerFunction.js +96 -119
  227. package/dist/views/List/handleServerFunction.js.map +1 -1
  228. package/dist/views/List/index.js +305 -324
  229. package/dist/views/List/index.js.map +1 -1
  230. package/dist/views/List/metadata.js +17 -20
  231. package/dist/views/List/metadata.js.map +1 -1
  232. package/dist/views/List/renderListViewSlots.js +82 -75
  233. package/dist/views/List/renderListViewSlots.js.map +1 -1
  234. package/dist/views/List/resolveAllFilterOptions.js +43 -45
  235. package/dist/views/List/resolveAllFilterOptions.js.map +1 -1
  236. package/dist/views/List/transformColumnsToSelect.js +9 -8
  237. package/dist/views/List/transformColumnsToSelect.js.map +1 -1
  238. package/dist/views/Login/LoginField/index.js +57 -89
  239. package/dist/views/Login/LoginField/index.js.map +1 -1
  240. package/dist/views/Login/LoginForm/index.js +104 -157
  241. package/dist/views/Login/LoginForm/index.js.map +1 -1
  242. package/dist/views/Login/index.js +82 -85
  243. package/dist/views/Login/index.js.map +1 -1
  244. package/dist/views/Login/metadata.js +8 -12
  245. package/dist/views/Login/metadata.js.map +1 -1
  246. package/dist/views/Logout/LogoutClient.js +83 -119
  247. package/dist/views/Logout/LogoutClient.js.map +1 -1
  248. package/dist/views/Logout/index.js +29 -29
  249. package/dist/views/Logout/index.js.map +1 -1
  250. package/dist/views/Logout/metadata.js +7 -11
  251. package/dist/views/Logout/metadata.js.map +1 -1
  252. package/dist/views/NotFound/index.client.js +71 -82
  253. package/dist/views/NotFound/index.client.js.map +1 -1
  254. package/dist/views/NotFound/index.js +71 -72
  255. package/dist/views/NotFound/index.js.map +1 -1
  256. package/dist/views/NotFound/metadata.js +7 -9
  257. package/dist/views/NotFound/metadata.js.map +1 -1
  258. package/dist/views/ResetPassword/ResetPasswordForm/index.js +94 -107
  259. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  260. package/dist/views/ResetPassword/index.js +93 -73
  261. package/dist/views/ResetPassword/index.js.map +1 -1
  262. package/dist/views/ResetPassword/metadata.js +8 -12
  263. package/dist/views/ResetPassword/metadata.js.map +1 -1
  264. package/dist/views/Root/attachViewActions.js +18 -23
  265. package/dist/views/Root/attachViewActions.js.map +1 -1
  266. package/dist/views/Root/generateCustomViewMetadata.js +19 -21
  267. package/dist/views/Root/generateCustomViewMetadata.js.map +1 -1
  268. package/dist/views/Root/getCustomViewByKey.js +12 -14
  269. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  270. package/dist/views/Root/getCustomViewByRoute.js +31 -42
  271. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  272. package/dist/views/Root/getDocumentViewInfo.js +24 -23
  273. package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
  274. package/dist/views/Root/getRouteData.js +333 -325
  275. package/dist/views/Root/getRouteData.js.map +1 -1
  276. package/dist/views/Root/index.js +247 -269
  277. package/dist/views/Root/index.js.map +1 -1
  278. package/dist/views/Root/isPathMatchingRoute.js +21 -26
  279. package/dist/views/Root/isPathMatchingRoute.js.map +1 -1
  280. package/dist/views/Root/metadata.js +176 -181
  281. package/dist/views/Root/metadata.js.map +1 -1
  282. package/dist/views/Unauthorized/index.js +54 -46
  283. package/dist/views/Unauthorized/index.js.map +1 -1
  284. package/dist/views/Unauthorized/metadata.js +8 -12
  285. package/dist/views/Unauthorized/metadata.js.map +1 -1
  286. package/dist/views/Verify/index.client.js +25 -43
  287. package/dist/views/Verify/index.client.js.map +1 -1
  288. package/dist/views/Verify/index.js +68 -62
  289. package/dist/views/Verify/index.js.map +1 -1
  290. package/dist/views/Verify/metadata.js +8 -12
  291. package/dist/views/Verify/metadata.js.map +1 -1
  292. package/dist/views/Version/Default/SelectedLocalesContext.js +4 -4
  293. package/dist/views/Version/Default/SelectedLocalesContext.js.map +1 -1
  294. package/dist/views/Version/Default/SetStepNav.js +86 -127
  295. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  296. package/dist/views/Version/Default/index.js +380 -236
  297. package/dist/views/Version/Default/index.js.map +1 -1
  298. package/dist/views/Version/Default/types.js +2 -1
  299. package/dist/views/Version/Default/types.js.map +1 -1
  300. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +102 -119
  301. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  302. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +78 -73
  303. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  304. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +363 -408
  305. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  306. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +40 -51
  307. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  308. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +35 -67
  309. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  310. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +59 -56
  311. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  312. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +139 -117
  313. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  314. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js +36 -41
  315. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.js.map +1 -1
  316. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +192 -178
  317. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  318. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +17 -11
  319. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  320. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +48 -73
  321. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  322. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +132 -143
  323. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  324. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +56 -81
  325. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  326. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +251 -210
  327. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  328. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +23 -22
  329. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  330. package/dist/views/Version/RenderFieldsToDiff/index.js +12 -9
  331. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  332. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +213 -228
  333. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  334. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +1005 -826
  335. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -1
  336. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +2 -1
  337. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -1
  338. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +44 -43
  339. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -1
  340. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js +25 -22
  341. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js.map +1 -1
  342. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +32 -36
  343. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  344. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +145 -129
  345. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  346. package/dist/views/Version/Restore/index.js +116 -91
  347. package/dist/views/Version/Restore/index.js.map +1 -1
  348. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +33 -50
  349. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  350. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +170 -226
  351. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  352. package/dist/views/Version/SelectComparison/index.js +73 -50
  353. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  354. package/dist/views/Version/SelectComparison/types.js +2 -1
  355. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  356. package/dist/views/Version/SelectLocales/index.js +34 -32
  357. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  358. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js +104 -95
  359. package/dist/views/Version/VersionPillLabel/VersionPillLabel.js.map +1 -1
  360. package/dist/views/Version/VersionPillLabel/getVersionLabel.js +23 -27
  361. package/dist/views/Version/VersionPillLabel/getVersionLabel.js.map +1 -1
  362. package/dist/views/Version/fetchVersions.js +113 -138
  363. package/dist/views/Version/fetchVersions.js.map +1 -1
  364. package/dist/views/Version/index.js +325 -323
  365. package/dist/views/Version/index.js.map +1 -1
  366. package/dist/views/Version/metadata.js +43 -50
  367. package/dist/views/Version/metadata.js.map +1 -1
  368. package/dist/views/Versions/buildColumns.js +95 -79
  369. package/dist/views/Versions/buildColumns.js.map +1 -1
  370. package/dist/views/Versions/cells/AutosaveCell/index.js +34 -38
  371. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  372. package/dist/views/Versions/cells/CreatedAt/index.js +32 -53
  373. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  374. package/dist/views/Versions/cells/ID/index.js +10 -8
  375. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  376. package/dist/views/Versions/index.client.js +106 -83
  377. package/dist/views/Versions/index.client.js.map +1 -1
  378. package/dist/views/Versions/index.js +140 -140
  379. package/dist/views/Versions/index.js.map +1 -1
  380. package/dist/views/Versions/metadata.js +37 -44
  381. package/dist/views/Versions/metadata.js.map +1 -1
  382. package/dist/views/Versions/types.js +2 -1
  383. package/dist/views/Versions/types.js.map +1 -1
  384. package/dist/withPayload.js +216 -169
  385. package/dist/withPayload.js.map +1 -1
  386. package/package.json +10 -8
@@ -1,13 +1,16 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
2
  import { buildVersionFields } from './buildVersionFields.js';
3
3
  import { RenderVersionFieldsToDiff } from './RenderVersionFieldsToDiff.js';
4
- export const RenderDiff = args => {
5
- const {
6
- versionFields
7
- } = buildVersionFields(args);
8
- return /*#__PURE__*/_jsx(RenderVersionFieldsToDiff, {
9
- parent: true,
10
- versionFields: versionFields
11
- });
4
+ export const RenderDiff = (args)=>{
5
+ const { versionFields } = buildVersionFields(args);
6
+ return /*#__PURE__*/ _jsxDEV(RenderVersionFieldsToDiff, {
7
+ parent: true,
8
+ versionFields: versionFields
9
+ }, void 0, false, {
10
+ fileName: "src/views/Version/RenderFieldsToDiff/index.tsx",
11
+ lineNumber: 7,
12
+ columnNumber: 10
13
+ }, this);
12
14
  };
15
+
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["buildVersionFields","RenderVersionFieldsToDiff","RenderDiff","args","versionFields","_jsx","parent"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/index.tsx"],"sourcesContent":["import { buildVersionFields, type BuildVersionFieldsArgs } from './buildVersionFields.js'\nimport { RenderVersionFieldsToDiff } from './RenderVersionFieldsToDiff.js'\n\nexport const RenderDiff = (args: BuildVersionFieldsArgs): React.ReactNode => {\n const { versionFields } = buildVersionFields(args)\n\n return <RenderVersionFieldsToDiff parent={true} versionFields={versionFields} />\n}\n"],"mappings":";AAAA,SAASA,kBAAkB,QAAqC;AAChE,SAASC,yBAAyB,QAAQ;AAE1C,OAAO,MAAMC,UAAA,GAAcC,IAAA;EACzB,MAAM;IAAEC;EAAa,CAAE,GAAGJ,kBAAA,CAAmBG,IAAA;EAE7C,oBAAOE,IAAA,CAACJ,yBAAA;IAA0BK,MAAA,EAAQ;IAAMF,aAAA,EAAeA;;AACjE","ignoreList":[]}
1
+ {"version":3,"sources":["../../../../src/views/Version/RenderFieldsToDiff/index.tsx"],"sourcesContent":["import { buildVersionFields, type BuildVersionFieldsArgs } from './buildVersionFields.js'\nimport { RenderVersionFieldsToDiff } from './RenderVersionFieldsToDiff.js'\n\nexport const RenderDiff = (args: BuildVersionFieldsArgs): React.ReactNode => {\n const { versionFields } = buildVersionFields(args)\n\n return <RenderVersionFieldsToDiff parent={true} versionFields={versionFields} />\n}\n"],"names":["buildVersionFields","RenderVersionFieldsToDiff","RenderDiff","args","versionFields","parent"],"mappings":";AAAA,SAASA,kBAAkB,QAAqC,0BAAyB;AACzF,SAASC,yBAAyB,QAAQ,iCAAgC;AAE1E,OAAO,MAAMC,aAAa,CAACC;IACzB,MAAM,EAAEC,aAAa,EAAE,GAAGJ,mBAAmBG;IAE7C,qBAAO,QAACF;QAA0BI,QAAQ;QAAMD,eAAeA;;;;;;AACjE,EAAC"}
@@ -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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"}