@payloadcms/next 3.0.0-beta.127 → 3.0.0-beta.129

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 (285) hide show
  1. package/dist/cjs/withPayload.cjs +10 -0
  2. package/dist/cjs/withPayload.cjs.map +1 -1
  3. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +1 -1
  4. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +13 -15
  6. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  7. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  8. package/dist/elements/DocumentHeader/Tabs/index.js +9 -14
  9. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  10. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.d.ts.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +13 -28
  12. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  13. package/dist/elements/DocumentHeader/index.d.ts +0 -1
  14. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  15. package/dist/elements/DocumentHeader/index.js +9 -12
  16. package/dist/elements/DocumentHeader/index.js.map +1 -1
  17. package/dist/elements/Logo/index.d.ts.map +1 -1
  18. package/dist/elements/Logo/index.js +5 -6
  19. package/dist/elements/Logo/index.js.map +1 -1
  20. package/dist/elements/Nav/index.client.d.ts +4 -1
  21. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  22. package/dist/elements/Nav/index.client.js +40 -95
  23. package/dist/elements/Nav/index.client.js.map +1 -1
  24. package/dist/elements/Nav/index.d.ts.map +1 -1
  25. package/dist/elements/Nav/index.js +60 -23
  26. package/dist/elements/Nav/index.js.map +1 -1
  27. package/dist/exports/layouts.d.ts +1 -0
  28. package/dist/exports/layouts.d.ts.map +1 -1
  29. package/dist/exports/layouts.js +1 -0
  30. package/dist/exports/layouts.js.map +1 -1
  31. package/dist/exports/utilities.d.ts.map +1 -1
  32. package/dist/exports/utilities.js +1 -0
  33. package/dist/exports/utilities.js.map +1 -1
  34. package/dist/exports/views.d.ts +0 -2
  35. package/dist/exports/views.d.ts.map +1 -1
  36. package/dist/exports/views.js +0 -2
  37. package/dist/exports/views.js.map +1 -1
  38. package/dist/fetchAPI-multipart/isEligibleRequest.js +1 -1
  39. package/dist/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
  40. package/dist/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  41. package/dist/fetchAPI-multipart/processMultipart.js +9 -11
  42. package/dist/fetchAPI-multipart/processMultipart.js.map +1 -1
  43. package/dist/layouts/Root/NestProviders.d.ts +11 -0
  44. package/dist/layouts/Root/NestProviders.d.ts.map +1 -0
  45. package/dist/layouts/Root/NestProviders.js +21 -0
  46. package/dist/layouts/Root/NestProviders.js.map +1 -0
  47. package/dist/layouts/Root/index.d.ts +3 -2
  48. package/dist/layouts/Root/index.d.ts.map +1 -1
  49. package/dist/layouts/Root/index.js +14 -18
  50. package/dist/layouts/Root/index.js.map +1 -1
  51. package/dist/prod/styles.css +1 -1
  52. package/dist/routes/rest/index.d.ts.map +1 -1
  53. package/dist/routes/rest/index.js +0 -10
  54. package/dist/routes/rest/index.js.map +1 -1
  55. package/dist/routes/rest/og/image.d.ts +4 -2
  56. package/dist/routes/rest/og/image.d.ts.map +1 -1
  57. package/dist/routes/rest/og/image.js +7 -3
  58. package/dist/routes/rest/og/image.js.map +1 -1
  59. package/dist/routes/rest/og/index.d.ts.map +1 -1
  60. package/dist/routes/rest/og/index.js +5 -8
  61. package/dist/routes/rest/og/index.js.map +1 -1
  62. package/dist/routes/rest/routeError.d.ts.map +1 -1
  63. package/dist/routes/rest/routeError.js +1 -47
  64. package/dist/routes/rest/routeError.js.map +1 -1
  65. package/dist/templates/Default/index.d.ts +2 -1
  66. package/dist/templates/Default/index.d.ts.map +1 -1
  67. package/dist/templates/Default/index.js +97 -41
  68. package/dist/templates/Default/index.js.map +1 -1
  69. package/dist/utilities/getClientConfig.d.ts +7 -0
  70. package/dist/utilities/getClientConfig.d.ts.map +1 -0
  71. package/dist/utilities/getClientConfig.js +14 -0
  72. package/dist/utilities/getClientConfig.js.map +1 -0
  73. package/dist/utilities/handleServerFunctions.d.ts +3 -0
  74. package/dist/utilities/handleServerFunctions.d.ts.map +1 -0
  75. package/dist/utilities/handleServerFunctions.js +35 -0
  76. package/dist/utilities/handleServerFunctions.js.map +1 -0
  77. package/dist/utilities/initPage/handleAdminPage.d.ts +2 -1
  78. package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -1
  79. package/dist/utilities/initPage/handleAdminPage.js +9 -1
  80. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  81. package/dist/utilities/initPage/index.d.ts.map +1 -1
  82. package/dist/utilities/initPage/index.js +2 -1
  83. package/dist/utilities/initPage/index.js.map +1 -1
  84. package/dist/utilities/initReq.d.ts +1 -1
  85. package/dist/utilities/initReq.d.ts.map +1 -1
  86. package/dist/utilities/initReq.js +3 -2
  87. package/dist/utilities/initReq.js.map +1 -1
  88. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -1
  89. package/dist/views/API/LocaleSelector/index.js +0 -1
  90. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  91. package/dist/views/API/index.client.d.ts.map +1 -1
  92. package/dist/views/API/index.client.js +10 -13
  93. package/dist/views/API/index.client.js.map +1 -1
  94. package/dist/views/Account/Settings/index.js +0 -1
  95. package/dist/views/Account/Settings/index.js.map +1 -1
  96. package/dist/views/Account/index.d.ts.map +1 -1
  97. package/dist/views/Account/index.js +81 -24
  98. package/dist/views/Account/index.js.map +1 -1
  99. package/dist/views/CreateFirstUser/index.client.d.ts +3 -1
  100. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  101. package/dist/views/CreateFirstUser/index.client.js +83 -109
  102. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  103. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  104. package/dist/views/CreateFirstUser/index.js +36 -4
  105. package/dist/views/CreateFirstUser/index.js.map +1 -1
  106. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  107. package/dist/views/Dashboard/Default/index.js +46 -44
  108. package/dist/views/Dashboard/Default/index.js.map +1 -1
  109. package/dist/views/Dashboard/index.d.ts.map +1 -1
  110. package/dist/views/Dashboard/index.js +22 -21
  111. package/dist/views/Dashboard/index.js.map +1 -1
  112. package/dist/views/Document/getDocPreferences.d.ts +11 -0
  113. package/dist/views/Document/getDocPreferences.d.ts.map +1 -0
  114. package/dist/views/Document/getDocPreferences.js +44 -0
  115. package/dist/views/Document/getDocPreferences.js.map +1 -0
  116. package/dist/views/Document/getDocumentData.d.ts +10 -11
  117. package/dist/views/Document/getDocumentData.d.ts.map +1 -1
  118. package/dist/views/Document/getDocumentData.js +35 -47
  119. package/dist/views/Document/getDocumentData.js.map +1 -1
  120. package/dist/views/Document/getIsLocked.d.ts +16 -0
  121. package/dist/views/Document/getIsLocked.d.ts.map +1 -0
  122. package/dist/views/Document/getIsLocked.js +55 -0
  123. package/dist/views/Document/getIsLocked.js.map +1 -0
  124. package/dist/views/Document/getVersions.d.ts +19 -0
  125. package/dist/views/Document/getVersions.d.ts.map +1 -0
  126. package/dist/views/Document/getVersions.js +181 -0
  127. package/dist/views/Document/getVersions.js.map +1 -0
  128. package/dist/views/Document/getViewsFromConfig.d.ts +1 -1
  129. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  130. package/dist/views/Document/getViewsFromConfig.js +18 -19
  131. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  132. package/dist/views/Document/handleServerFunction.d.ts +24 -0
  133. package/dist/views/Document/handleServerFunction.d.ts.map +1 -0
  134. package/dist/views/Document/handleServerFunction.js +156 -0
  135. package/dist/views/Document/handleServerFunction.js.map +1 -0
  136. package/dist/views/Document/index.d.ts +5 -1
  137. package/dist/views/Document/index.d.ts.map +1 -1
  138. package/dist/views/Document/index.js +181 -72
  139. package/dist/views/Document/index.js.map +1 -1
  140. package/dist/views/Document/renderDocumentSlots.d.ts +12 -0
  141. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -0
  142. package/dist/views/Document/renderDocumentSlots.js +92 -0
  143. package/dist/views/Document/renderDocumentSlots.js.map +1 -0
  144. package/dist/views/Edit/index.d.ts +3 -2
  145. package/dist/views/Edit/index.d.ts.map +1 -1
  146. package/dist/views/Edit/index.js +7 -3
  147. package/dist/views/Edit/index.js.map +1 -1
  148. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  149. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +3 -1
  150. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  151. package/dist/views/List/handleServerFunction.d.ts +26 -0
  152. package/dist/views/List/handleServerFunction.d.ts.map +1 -0
  153. package/dist/views/List/handleServerFunction.js +155 -0
  154. package/dist/views/List/handleServerFunction.js.map +1 -0
  155. package/dist/views/List/index.d.ts +12 -2
  156. package/dist/views/List/index.d.ts.map +1 -1
  157. package/dist/views/List/index.js +121 -81
  158. package/dist/views/List/index.js.map +1 -1
  159. package/dist/views/List/renderListViewSlots.d.ts +8 -0
  160. package/dist/views/List/renderListViewSlots.d.ts.map +1 -0
  161. package/dist/views/List/renderListViewSlots.js +44 -0
  162. package/dist/views/List/renderListViewSlots.js.map +1 -0
  163. package/dist/views/LivePreview/Context/sizeReducer.d.ts +1 -1
  164. package/dist/views/LivePreview/Context/sizeReducer.d.ts.map +1 -1
  165. package/dist/views/LivePreview/Context/sizeReducer.js +4 -4
  166. package/dist/views/LivePreview/Context/sizeReducer.js.map +1 -1
  167. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  168. package/dist/views/LivePreview/index.client.js +38 -35
  169. package/dist/views/LivePreview/index.client.js.map +1 -1
  170. package/dist/views/Login/LoginField/index.d.ts.map +1 -1
  171. package/dist/views/Login/LoginField/index.js +3 -1
  172. package/dist/views/Login/LoginField/index.js.map +1 -1
  173. package/dist/views/Login/index.d.ts.map +1 -1
  174. package/dist/views/Login/index.js +25 -19
  175. package/dist/views/Login/index.js.map +1 -1
  176. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts.map +1 -1
  177. package/dist/views/ResetPassword/ResetPasswordForm/index.js +24 -10
  178. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  179. package/dist/views/Root/getViewFromConfig.d.ts +3 -1
  180. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  181. package/dist/views/Root/getViewFromConfig.js +128 -7
  182. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  183. package/dist/views/Root/index.d.ts.map +1 -1
  184. package/dist/views/Root/index.js +22 -11
  185. package/dist/views/Root/index.js.map +1 -1
  186. package/dist/views/Version/Default/index.d.ts.map +1 -1
  187. package/dist/views/Version/Default/index.js +2 -4
  188. package/dist/views/Version/Default/index.js.map +1 -1
  189. package/dist/views/Versions/buildColumns.d.ts +3 -2
  190. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  191. package/dist/views/Versions/buildColumns.js +33 -61
  192. package/dist/views/Versions/buildColumns.js.map +1 -1
  193. package/dist/views/Versions/cells/AutosaveCell/index.d.ts +7 -0
  194. package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
  195. package/dist/views/Versions/cells/AutosaveCell/index.js +48 -37
  196. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  197. package/dist/views/Versions/cells/CreatedAt/index.d.ts +4 -0
  198. package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
  199. package/dist/views/Versions/cells/CreatedAt/index.js +43 -45
  200. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  201. package/dist/views/Versions/cells/ID/index.d.ts +3 -1
  202. package/dist/views/Versions/cells/ID/index.d.ts.map +1 -1
  203. package/dist/views/Versions/cells/ID/index.js +7 -19
  204. package/dist/views/Versions/cells/ID/index.js.map +1 -1
  205. package/dist/views/Versions/index.client.d.ts.map +1 -1
  206. package/dist/views/Versions/index.client.js +53 -51
  207. package/dist/views/Versions/index.client.js.map +1 -1
  208. package/dist/views/Versions/index.d.ts.map +1 -1
  209. package/dist/views/Versions/index.js +3 -2
  210. package/dist/views/Versions/index.js.map +1 -1
  211. package/dist/withPayload.d.ts.map +1 -1
  212. package/dist/withPayload.js +10 -0
  213. package/dist/withPayload.js.map +1 -1
  214. package/license.md +22 -0
  215. package/package.json +16 -7
  216. package/dist/elements/DocumentLocked/index.d.ts +0 -12
  217. package/dist/elements/DocumentLocked/index.d.ts.map +0 -1
  218. package/dist/elements/DocumentLocked/index.js +0 -152
  219. package/dist/elements/DocumentLocked/index.js.map +0 -1
  220. package/dist/elements/DocumentLocked/index.scss +0 -40
  221. package/dist/elements/DocumentTakeOver/index.d.ts +0 -8
  222. package/dist/elements/DocumentTakeOver/index.d.ts.map +0 -1
  223. package/dist/elements/DocumentTakeOver/index.js +0 -98
  224. package/dist/elements/DocumentTakeOver/index.js.map +0 -1
  225. package/dist/elements/DocumentTakeOver/index.scss +0 -39
  226. package/dist/elements/EmailAndUsername/index.d.ts +0 -14
  227. package/dist/elements/EmailAndUsername/index.d.ts.map +0 -1
  228. package/dist/elements/EmailAndUsername/index.js +0 -121
  229. package/dist/elements/EmailAndUsername/index.js.map +0 -1
  230. package/dist/elements/LeaveWithoutSaving/index.d.ts +0 -4
  231. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +0 -1
  232. package/dist/elements/LeaveWithoutSaving/index.js +0 -162
  233. package/dist/elements/LeaveWithoutSaving/index.js.map +0 -1
  234. package/dist/elements/LeaveWithoutSaving/index.scss +0 -39
  235. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts +0 -9
  236. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +0 -1
  237. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +0 -136
  238. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +0 -1
  239. package/dist/routes/rest/buildFormState.d.ts +0 -5
  240. package/dist/routes/rest/buildFormState.d.ts.map +0 -1
  241. package/dist/routes/rest/buildFormState.js +0 -46
  242. package/dist/routes/rest/buildFormState.js.map +0 -1
  243. package/dist/views/Edit/Default/Auth/APIKey.d.ts +0 -6
  244. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +0 -1
  245. package/dist/views/Edit/Default/Auth/APIKey.js +0 -125
  246. package/dist/views/Edit/Default/Auth/APIKey.js.map +0 -1
  247. package/dist/views/Edit/Default/Auth/index.d.ts +0 -5
  248. package/dist/views/Edit/Default/Auth/index.d.ts.map +0 -1
  249. package/dist/views/Edit/Default/Auth/index.js +0 -318
  250. package/dist/views/Edit/Default/Auth/index.js.map +0 -1
  251. package/dist/views/Edit/Default/Auth/index.scss +0 -78
  252. package/dist/views/Edit/Default/Auth/types.d.ts +0 -17
  253. package/dist/views/Edit/Default/Auth/types.d.ts.map +0 -1
  254. package/dist/views/Edit/Default/Auth/types.js +0 -2
  255. package/dist/views/Edit/Default/Auth/types.js.map +0 -1
  256. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts +0 -11
  257. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +0 -1
  258. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +0 -130
  259. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +0 -1
  260. package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts +0 -8
  261. package/dist/views/Edit/Default/SetDocumentTitle/index.d.ts.map +0 -1
  262. package/dist/views/Edit/Default/SetDocumentTitle/index.js +0 -81
  263. package/dist/views/Edit/Default/SetDocumentTitle/index.js.map +0 -1
  264. package/dist/views/Edit/Default/index.d.ts +0 -4
  265. package/dist/views/Edit/Default/index.d.ts.map +0 -1
  266. package/dist/views/Edit/Default/index.js +0 -349
  267. package/dist/views/Edit/Default/index.js.map +0 -1
  268. package/dist/views/Edit/Default/index.scss +0 -23
  269. package/dist/views/Edit/Default/types.d.ts +0 -6
  270. package/dist/views/Edit/Default/types.d.ts.map +0 -1
  271. package/dist/views/Edit/Default/types.js +0 -2
  272. package/dist/views/Edit/Default/types.js.map +0 -1
  273. package/dist/views/Edit/index.client.d.ts +0 -3
  274. package/dist/views/Edit/index.client.d.ts.map +0 -1
  275. package/dist/views/Edit/index.client.js +0 -54
  276. package/dist/views/Edit/index.client.js.map +0 -1
  277. package/dist/views/List/Default/index.d.ts +0 -4
  278. package/dist/views/List/Default/index.d.ts.map +0 -1
  279. package/dist/views/List/Default/index.js +0 -387
  280. package/dist/views/List/Default/index.js.map +0 -1
  281. package/dist/views/List/Default/index.scss +0 -179
  282. package/dist/views/List/Default/types.d.ts +0 -15
  283. package/dist/views/List/Default/types.d.ts.map +0 -1
  284. package/dist/views/List/Default/types.js +0 -2
  285. package/dist/views/List/Default/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fields","globalConfig","schemaPath","serverURL","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","lastUpdateTime","onSave","onSaveFromProps","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","operation","admin","user","userSlug","routes","adminRoute","router","t","previewWindowType","refreshCookieAsync","reportUpdate","docConfig","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","entitySlug","updatedAt","result","toISOString","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","path","includes","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","data","permissions","readOnlyForIncomingUser","slug","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","api","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","children","actions","components","views","edit","livePreview","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n OperationProvider,\n SetViewActions,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from '../Edit/Default/SetDocumentTitle/index.js'\nimport { useLivePreviewContext } from './Context/context.js'\nimport { LivePreviewProvider } from './Context/index.js'\nimport './index.scss'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n apiRoute,\n collectionConfig,\n config,\n fields,\n globalConfig,\n schemaPath,\n serverURL,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n onSave: onSaveFromProps,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [\n collectionSlug,\n globalSlug,\n id,\n isLockingEnabled,\n onSaveFromProps,\n refreshCookieAsync,\n reportUpdate,\n setDocumentIsLocked,\n user,\n userSlug,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n collectionSlug,\n editSessionStartTime,\n globalSlug,\n serverURL,\n apiRoute,\n id,\n isLockingEnabled,\n operation,\n schemaPath,\n getDocPreferences,\n setCurrentEditor,\n setDocumentIsLocked,\n user,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving &&\n !isReadOnlyForIncomingUser && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeDocument}\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={collectionSlug || globalSlug}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <SetViewActions\n actions={\n (collectionConfig || globalConfig)?.admin?.components?.views?.edit?.livePreview?.actions\n }\n />\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","DocumentLocked","DocumentTakeOver","Form","LeaveWithoutSaving","OperationProvider","SetDocumentStepNav","SetDocumentTitle","useAuth","useConfig","useDocumentDrawerContext","useDocumentEvents","useDocumentInfo","useServerFunctions","useTranslation","abortAndIgnore","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","React","Fragment","useCallback","useEffect","useRef","useState","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","collectionConfig","config","fields","globalConfig","schemaPath","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","lastUpdateTime","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","getFormState","onSave","onSaveFromProps","operation","admin","user","userSlug","routes","adminRoute","router","t","previewWindowType","refreshCookieAsync","reportUpdate","docConfig","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","formStateAbortControllerRef","AbortController","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","entitySlug","updatedAt","result","toISOString","onChange","formState","prevFormState","current","controller","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","returnLockStatus","signal","previousOwnerId","lockedUserID","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","path","includes","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","data","permissions","readOnlyForIncomingUser","slug","filter","Boolean","join","forceSidebarWrap","readOnly","schemaPathSegments","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","serverURL","api","apiRoute","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","children","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n DocumentLocked,\n DocumentTakeOver,\n Form,\n LeaveWithoutSaving,\n OperationProvider,\n SetDocumentStepNav,\n SetDocumentTitle,\n useAuth,\n useConfig,\n useDocumentDrawerContext,\n useDocumentEvents,\n useDocumentInfo,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n abortAndIgnore,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useLivePreviewContext } from './Context/context.js'\nimport { LivePreviewProvider } from './Context/index.js'\nimport './index.scss'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n collectionConfig,\n config,\n fields,\n globalConfig,\n schemaPath,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const { getFormState } = useServerFunctions()\n\n const { onSave: onSaveFromProps } = useDocumentDrawerContext()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const formStateAbortControllerRef = useRef(new AbortController())\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [\n collectionSlug,\n globalSlug,\n id,\n isLockingEnabled,\n onSaveFromProps,\n refreshCookieAsync,\n reportUpdate,\n setDocumentIsLocked,\n user,\n userSlug,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(formStateAbortControllerRef.current)\n\n const controller = new AbortController()\n formStateAbortControllerRef.current = controller\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n signal: controller.signal,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPath,\n setDocumentIsLocked,\n user.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n return () => {\n abortAndIgnore(formStateAbortControllerRef.current)\n }\n })\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving &&\n !isReadOnlyForIncomingUser && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={[collectionSlug || globalSlug]}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,SAAS,CAAA;AAIxD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,UAAU,CAAA;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwDhD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,SAAS,CAAA;AAIxD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,UAAU,CAAA;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0DhD,CAAA"}
@@ -19,9 +19,11 @@ export const LoginField = t0 => {
19
19
  let t2;
20
20
  if ($[0] !== t || $[1] !== required) {
21
21
  t2 = _jsx(EmailField, {
22
- autoComplete: "email",
23
22
  field: {
24
23
  name: "email",
24
+ admin: {
25
+ autoComplete: "email"
26
+ },
25
27
  label: t("general:email"),
26
28
  required
27
29
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","EmailField","TextField","useTranslation","email","username","React","LoginField","t0","$","type","required","t1","undefined","t","t2","_jsx","autoComplete","field","name","label","validate","t3","value","options","passesUsername","passesEmail"],"sources":["../../../../src/views/Login/LoginField/index.tsx"],"sourcesContent":["'use client'\nimport type { Validate, ValidateOptions } from 'payload'\n\nimport { EmailField, TextField, useTranslation } from '@payloadcms/ui'\nimport { email, username } from 'payload/shared'\nimport React from 'react'\n\nexport type LoginFieldProps = {\n readonly required?: boolean\n readonly type: 'email' | 'emailOrUsername' | 'username'\n readonly validate?: Validate\n}\n\nexport const LoginField: React.FC<LoginFieldProps> = ({ type, required = true }) => {\n const { t } = useTranslation()\n\n if (type === 'email') {\n return (\n <EmailField\n autoComplete=\"email\"\n field={{\n name: 'email',\n label: t('general:email'),\n required,\n }}\n validate={email}\n />\n )\n }\n\n if (type === 'username') {\n return (\n <TextField\n field={{\n name: 'username',\n label: t('authentication:username'),\n required,\n }}\n validate={username}\n />\n )\n }\n\n if (type === 'emailOrUsername') {\n return (\n <TextField\n field={{\n name: 'username',\n label: t('authentication:emailOrUsername'),\n required,\n }}\n validate={(value, options) => {\n const passesUsername = username(value, options)\n const passesEmail = email(\n value,\n options as ValidateOptions<any, { username?: string }, any, any>,\n )\n\n if (!passesEmail && !passesUsername) {\n return `${t('general:email')}: ${passesEmail} ${t('general:username')}: ${passesUsername}`\n }\n\n return true\n }}\n />\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,UAAU,EAAEC,SAAS,EAAEC,cAAc,QAAQ;AACtD,SAASC,KAAK,EAAEC,QAAQ,QAAQ;AAChC,OAAOC,KAAA,MAAW;AAQlB,OAAO,MAAMC,UAAA,GAAwCC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,IAAA;IAAAC,QAAA,EAAAC;EAAA,IAAAJ,EAAyB;EAAjB,MAAAG,QAAA,GAAAC,EAAe,KAAAC,SAAA,UAAfD,EAAe;EAC3E;IAAAE;EAAA,IAAcX,cAAA;EAAA,IAEVO,IAAA,KAAS;IAAA,IAAAK,EAAA;IAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,QAAA;MAETI,EAAA,GAAAC,IAAA,CAAAf,UAAA;QAAAgB,YAAA,EACe;QAAAC,KAAA;UAAAC,IAAA,EAEL;UAAAC,KAAA,EACCN,CAAA,CAAE;UAAAH;QAAA;QAAAU,QAAA,EAAAjB;MAAA,C;;;;;;;WAJbW,E;;MAYAL,IAAA,KAAS;IAAA,IAAAK,EAAA;IAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,QAAA;MAETI,EAAA,GAAAC,IAAA,CAAAd,SAAA;QAAAgB,KAAA;UAAAC,IAAA,EAEU;UAAAC,KAAA,EACCN,CAAA,CAAE;UAAAH;QAAA;QAAAU,QAAA,EAAAhB;MAAA,C;;;;;;;WAHbU,E;;MAWAL,IAAA,KAAS;IAAA,IAAAK,EAAA;IAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,QAAA;MAAA,IAAAW,EAAA;MAAA,IAAAb,CAAA,QAAAK,CAAA;QAQGQ,EAAA,GAAAA,CAAAC,KAAA,EAAAC,OAAA;UACR,MAAAC,cAAA,GAAuBpB,QAAA,CAASkB,KAAA,EAAOC,OAAA;UACvC,MAAAE,WAAA,GAAoBtB,KAAA,CAClBmB,KAAA,EACAC,OAAA;UAAA,IAGE,CAACE,WAAA,KAAgBD,cAAA;YAAA,OACZ,GAAGX,CAAA,CAAE,qBAAqBY,WAAA,IAAeZ,CAAA,CAAE,wBAAwBW,cAAA,EAAgB;UAAA;UAAA;QAAA;QAI9FhB,CAAA,MAAAK,CAAA;QAAAL,CAAA,OAAAa,EAAA;MAAA;QAAAA,EAAA,GAAAb,CAAA;MAAA;MAlBFM,EAAA,GAAAC,IAAA,CAAAd,SAAA;QAAAgB,KAAA;UAAAC,IAAA,EAEU;UAAAC,KAAA,EACCN,CAAA,CAAE;UAAAH;QAAA;QAAAU,QAAA,EAGDC;MAYV,C;;;;;;;WAlBFP,E;;;CAwBN","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","EmailField","TextField","useTranslation","email","username","React","LoginField","t0","$","type","required","t1","undefined","t","t2","_jsx","field","name","admin","autoComplete","label","validate","t3","value","options","passesUsername","passesEmail"],"sources":["../../../../src/views/Login/LoginField/index.tsx"],"sourcesContent":["'use client'\nimport type { Validate, ValidateOptions } from 'payload'\n\nimport { EmailField, TextField, useTranslation } from '@payloadcms/ui'\nimport { email, username } from 'payload/shared'\nimport React from 'react'\n\nexport type LoginFieldProps = {\n readonly required?: boolean\n readonly type: 'email' | 'emailOrUsername' | 'username'\n readonly validate?: Validate\n}\n\nexport const LoginField: React.FC<LoginFieldProps> = ({ type, required = true }) => {\n const { t } = useTranslation()\n\n if (type === 'email') {\n return (\n <EmailField\n field={{\n name: 'email',\n admin: {\n autoComplete: 'email',\n },\n label: t('general:email'),\n required,\n }}\n validate={email}\n />\n )\n }\n\n if (type === 'username') {\n return (\n <TextField\n field={{\n name: 'username',\n label: t('authentication:username'),\n required,\n }}\n validate={username}\n />\n )\n }\n\n if (type === 'emailOrUsername') {\n return (\n <TextField\n field={{\n name: 'username',\n label: t('authentication:emailOrUsername'),\n required,\n }}\n validate={(value, options) => {\n const passesUsername = username(value, options)\n const passesEmail = email(\n value,\n options as ValidateOptions<any, { username?: string }, any, any>,\n )\n\n if (!passesEmail && !passesUsername) {\n return `${t('general:email')}: ${passesEmail} ${t('general:username')}: ${passesUsername}`\n }\n\n return true\n }}\n />\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,UAAU,EAAEC,SAAS,EAAEC,cAAc,QAAQ;AACtD,SAASC,KAAK,EAAEC,QAAQ,QAAQ;AAChC,OAAOC,KAAA,MAAW;AAQlB,OAAO,MAAMC,UAAA,GAAwCC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,IAAA;IAAAC,QAAA,EAAAC;EAAA,IAAAJ,EAAyB;EAAjB,MAAAG,QAAA,GAAAC,EAAe,KAAAC,SAAA,UAAfD,EAAe;EAC3E;IAAAE;EAAA,IAAcX,cAAA;EAAA,IAEVO,IAAA,KAAS;IAAA,IAAAK,EAAA;IAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,QAAA;MAETI,EAAA,GAAAC,IAAA,CAAAf,UAAA;QAAAgB,KAAA;UAAAC,IAAA,EAEU;UAAAC,KAAA;YAAAC,YAAA,EAEU;UAAA;UAAAC,KAAA,EAETP,CAAA,CAAE;UAAAH;QAAA;QAAAW,QAAA,EAAAlB;MAAA,C;;;;;;;WANbW,E;;MAcAL,IAAA,KAAS;IAAA,IAAAK,EAAA;IAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,QAAA;MAETI,EAAA,GAAAC,IAAA,CAAAd,SAAA;QAAAe,KAAA;UAAAC,IAAA,EAEU;UAAAG,KAAA,EACCP,CAAA,CAAE;UAAAH;QAAA;QAAAW,QAAA,EAAAjB;MAAA,C;;;;;;;WAHbU,E;;MAWAL,IAAA,KAAS;IAAA,IAAAK,EAAA;IAAA,IAAAN,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,QAAA;MAAA,IAAAY,EAAA;MAAA,IAAAd,CAAA,QAAAK,CAAA;QAQGS,EAAA,GAAAA,CAAAC,KAAA,EAAAC,OAAA;UACR,MAAAC,cAAA,GAAuBrB,QAAA,CAASmB,KAAA,EAAOC,OAAA;UACvC,MAAAE,WAAA,GAAoBvB,KAAA,CAClBoB,KAAA,EACAC,OAAA;UAAA,IAGE,CAACE,WAAA,KAAgBD,cAAA;YAAA,OACZ,GAAGZ,CAAA,CAAE,qBAAqBa,WAAA,IAAeb,CAAA,CAAE,wBAAwBY,cAAA,EAAgB;UAAA;UAAA;QAAA;QAI9FjB,CAAA,MAAAK,CAAA;QAAAL,CAAA,OAAAc,EAAA;MAAA;QAAAA,EAAA,GAAAd,CAAA;MAAA;MAlBFM,EAAA,GAAAC,IAAA,CAAAd,SAAA;QAAAe,KAAA;UAAAC,IAAA,EAEU;UAAAG,KAAA,EACCP,CAAA,CAAE;UAAAH;QAAA;QAAAW,QAAA,EAGDC;MAYV,C;;;;;;;WAlBFR,E;;;CAwBN","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAkF9C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyF9C,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { getCreateMappedComponent, RenderComponent } from '@payloadcms/ui/shared';
2
+ import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
3
3
  import { redirect } from 'next/navigation.js';
4
4
  import React, { Fragment } from 'react';
5
5
  import { Logo } from '../../elements/Logo/index.js';
@@ -37,20 +37,6 @@ export const LoginView = ({
37
37
  admin
38
38
  }
39
39
  } = config;
40
- const createMappedComponent = getCreateMappedComponent({
41
- importMap: payload.importMap,
42
- serverProps: {
43
- i18n,
44
- locale,
45
- params,
46
- payload,
47
- permissions,
48
- searchParams,
49
- user
50
- }
51
- });
52
- const mappedBeforeLogins = createMappedComponent(beforeLogin, undefined, undefined, 'beforeLogin');
53
- const mappedAfterLogins = createMappedComponent(afterLogin, undefined, undefined, 'afterLogin');
54
40
  if (user) {
55
41
  redirect(searchParams.redirect || admin);
56
42
  }
@@ -73,15 +59,35 @@ export const LoginView = ({
73
59
  searchParams: searchParams,
74
60
  user: user
75
61
  })
76
- }), /*#__PURE__*/_jsx(RenderComponent, {
77
- mappedComponent: mappedBeforeLogins
62
+ }), /*#__PURE__*/_jsx(RenderServerComponent, {
63
+ Component: beforeLogin,
64
+ importMap: payload.importMap,
65
+ serverProps: {
66
+ i18n,
67
+ locale,
68
+ params,
69
+ payload,
70
+ permissions,
71
+ searchParams,
72
+ user
73
+ }
78
74
  }), !collectionConfig?.auth?.disableLocalStrategy && /*#__PURE__*/_jsx(LoginForm, {
79
75
  prefillEmail: prefillEmail,
80
76
  prefillPassword: prefillPassword,
81
77
  prefillUsername: prefillUsername,
82
78
  searchParams: searchParams
83
- }), /*#__PURE__*/_jsx(RenderComponent, {
84
- mappedComponent: mappedAfterLogins
79
+ }), /*#__PURE__*/_jsx(RenderServerComponent, {
80
+ Component: afterLogin,
81
+ importMap: payload.importMap,
82
+ serverProps: {
83
+ i18n,
84
+ locale,
85
+ params,
86
+ payload,
87
+ permissions,
88
+ searchParams,
89
+ user
90
+ }
85
91
  })]
86
92
  });
87
93
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getCreateMappedComponent","RenderComponent","redirect","React","Fragment","Logo","LoginForm","generateLoginMetadata","loginBaseClass","LoginView","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","admin","components","afterLogin","beforeLogin","userSlug","collections","routes","createMappedComponent","importMap","serverProps","mappedBeforeLogins","undefined","mappedAfterLogins","collectionConfig","find","slug","prefillAutoLogin","autoLogin","prefillOnly","prefillUsername","username","prefillEmail","email","prefillPassword","password","_jsxs","_jsx","className","mappedComponent","auth","disableLocalStrategy"],"sources":["../../../src/views/Login/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { getCreateMappedComponent, RenderComponent } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nimport { Logo } from '../../elements/Logo/index.js'\nimport './index.scss'\nimport { LoginForm } from './LoginForm/index.js'\n\nexport { generateLoginMetadata } from './meta.js'\n\nexport const loginBaseClass = 'login'\n\nexport const LoginView: React.FC<AdminViewProps> = ({ initPageResult, params, searchParams }) => {\n const { locale, permissions, req } = initPageResult\n\n const {\n i18n,\n payload: { config },\n payload,\n user,\n } = req\n\n const {\n admin: { components: { afterLogin, beforeLogin } = {}, user: userSlug },\n collections,\n routes: { admin },\n } = config\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n },\n })\n\n const mappedBeforeLogins = createMappedComponent(beforeLogin, undefined, undefined, 'beforeLogin')\n\n const mappedAfterLogins = createMappedComponent(afterLogin, undefined, undefined, 'afterLogin')\n\n if (user) {\n redirect((searchParams.redirect as string) || admin)\n }\n\n const collectionConfig = collections.find(({ slug }) => slug === userSlug)\n\n const prefillAutoLogin =\n typeof config.admin?.autoLogin === 'object' && config.admin?.autoLogin.prefillOnly\n\n const prefillUsername =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.username\n : undefined\n\n const prefillEmail =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.email\n : undefined\n\n const prefillPassword =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.password\n : undefined\n\n return (\n <Fragment>\n <div className={`${loginBaseClass}__brand`}>\n <Logo\n i18n={i18n}\n locale={locale}\n params={params}\n payload={payload}\n permissions={permissions}\n searchParams={searchParams}\n user={user}\n />\n </div>\n <RenderComponent mappedComponent={mappedBeforeLogins} />\n {!collectionConfig?.auth?.disableLocalStrategy && (\n <LoginForm\n prefillEmail={prefillEmail}\n prefillPassword={prefillPassword}\n prefillUsername={prefillUsername}\n searchParams={searchParams}\n />\n )}\n <RenderComponent mappedComponent={mappedAfterLogins} />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["RenderServerComponent","redirect","React","Fragment","Logo","LoginForm","generateLoginMetadata","loginBaseClass","LoginView","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","admin","components","afterLogin","beforeLogin","userSlug","collections","routes","collectionConfig","find","slug","prefillAutoLogin","autoLogin","prefillOnly","prefillUsername","username","undefined","prefillEmail","email","prefillPassword","password","_jsxs","_jsx","className","Component","importMap","serverProps","auth","disableLocalStrategy"],"sources":["../../../src/views/Login/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { redirect } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nimport { Logo } from '../../elements/Logo/index.js'\nimport './index.scss'\nimport { LoginForm } from './LoginForm/index.js'\n\nexport { generateLoginMetadata } from './meta.js'\n\nexport const loginBaseClass = 'login'\n\nexport const LoginView: React.FC<AdminViewProps> = ({ initPageResult, params, searchParams }) => {\n const { locale, permissions, req } = initPageResult\n\n const {\n i18n,\n payload: { config },\n payload,\n user,\n } = req\n\n const {\n admin: { components: { afterLogin, beforeLogin } = {}, user: userSlug },\n collections,\n routes: { admin },\n } = config\n\n if (user) {\n redirect((searchParams.redirect as string) || admin)\n }\n\n const collectionConfig = collections.find(({ slug }) => slug === userSlug)\n\n const prefillAutoLogin =\n typeof config.admin?.autoLogin === 'object' && config.admin?.autoLogin.prefillOnly\n\n const prefillUsername =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.username\n : undefined\n\n const prefillEmail =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.email\n : undefined\n\n const prefillPassword =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.password\n : undefined\n\n return (\n <Fragment>\n <div className={`${loginBaseClass}__brand`}>\n <Logo\n i18n={i18n}\n locale={locale}\n params={params}\n payload={payload}\n permissions={permissions}\n searchParams={searchParams}\n user={user}\n />\n </div>\n <RenderServerComponent\n Component={beforeLogin}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n {!collectionConfig?.auth?.disableLocalStrategy && (\n <LoginForm\n prefillEmail={prefillEmail}\n prefillPassword={prefillPassword}\n prefillUsername={prefillUsername}\n searchParams={searchParams}\n />\n )}\n <RenderServerComponent\n Component={afterLogin}\n importMap={payload.importMap}\n serverProps={{\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/ResetPassword/ResetPasswordForm/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAeD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAyD5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/ResetPassword/ResetPasswordForm/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAeD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAsE5C,CAAA"}
@@ -19,7 +19,7 @@ const initialState = {
19
19
  }
20
20
  };
21
21
  export const ResetPasswordForm = t0 => {
22
- const $ = _c(10);
22
+ const $ = _c(11);
23
23
  const {
24
24
  token
25
25
  } = t0;
@@ -71,7 +71,7 @@ export const ResetPasswordForm = t0 => {
71
71
  const onSuccess = t5;
72
72
  const t6 = `${serverURL}${apiRoute}/${userSlug}/reset-password`;
73
73
  let t7;
74
- if ($[5] !== i18n || $[6] !== token || $[7] !== t6 || $[8] !== onSuccess) {
74
+ if ($[5] !== i18n || $[6] !== userSlug || $[7] !== token || $[8] !== t6 || $[9] !== onSuccess) {
75
75
  t7 = _jsxs(Form, {
76
76
  action: t6,
77
77
  initialState,
@@ -84,12 +84,25 @@ export const ResetPasswordForm = t0 => {
84
84
  name: "password",
85
85
  label: i18n.t("authentication:newPassword"),
86
86
  required: true
87
- }
87
+ },
88
+ indexPath: "",
89
+ parentPath: "",
90
+ parentSchemaPath: "",
91
+ path: "password",
92
+ schemaPath: `${userSlug}.password`
88
93
  }), _jsx(ConfirmPasswordField, {}), _jsx(HiddenField, {
89
94
  field: {
90
- name: "token"
95
+ name: "token",
96
+ type: "text",
97
+ admin: {
98
+ hidden: true
99
+ }
91
100
  },
92
- forceUsePathFromProps: true,
101
+ indexPath: "",
102
+ parentPath: userSlug,
103
+ parentSchemaPath: userSlug,
104
+ path: "token",
105
+ schemaPath: `${userSlug}.token`,
93
106
  value: token
94
107
  })]
95
108
  }), _jsx(FormSubmit, {
@@ -98,12 +111,13 @@ export const ResetPasswordForm = t0 => {
98
111
  })]
99
112
  });
100
113
  $[5] = i18n;
101
- $[6] = token;
102
- $[7] = t6;
103
- $[8] = onSuccess;
104
- $[9] = t7;
114
+ $[6] = userSlug;
115
+ $[7] = token;
116
+ $[8] = t6;
117
+ $[9] = onSuccess;
118
+ $[10] = t7;
105
119
  } else {
106
- t7 = $[9];
120
+ t7 = $[10];
107
121
  }
108
122
  return t7;
109
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","ConfirmPasswordField","Form","FormSubmit","HiddenField","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","useRouter","React","initialState","initialValue","valid","value","password","ResetPasswordForm","t0","$","token","i18n","config","t1","admin","t2","routes","t3","serverURL","t4","user","userSlug","login","loginRoute","adminRoute","api","apiRoute","history","fetchFullUser","t5","push","path","onSuccess","t6","t7","_jsxs","action","method","children","className","_jsx","field","name","label","t","required","forceUsePathFromProps","size"],"sources":["../../../../src/views/ResetPassword/ResetPasswordForm/index.tsx"],"sourcesContent":["'use client'\nimport {\n ConfirmPasswordField,\n Form,\n FormSubmit,\n HiddenField,\n PasswordField,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport { type FormState } from 'payload'\nimport React from 'react'\n\ntype Args = {\n readonly token: string\n}\n\nconst initialState: FormState = {\n 'confirm-password': {\n initialValue: '',\n valid: false,\n value: '',\n },\n password: {\n initialValue: '',\n valid: false,\n value: '',\n },\n}\n\nexport const ResetPasswordForm: React.FC<Args> = ({ token }) => {\n const i18n = useTranslation()\n const {\n config: {\n admin: {\n routes: { login: loginRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const history = useRouter()\n const { fetchFullUser } = useAuth()\n\n const onSuccess = React.useCallback(async () => {\n const user = await fetchFullUser()\n if (user) {\n history.push(adminRoute)\n } else {\n history.push(\n formatAdminURL({\n adminRoute,\n path: loginRoute,\n }),\n )\n }\n }, [adminRoute, fetchFullUser, history, loginRoute])\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/reset-password`}\n initialState={initialState}\n method=\"POST\"\n onSuccess={onSuccess}\n >\n <div className=\"inputWrap\">\n <PasswordField\n field={{\n name: 'password',\n label: i18n.t('authentication:newPassword'),\n required: true,\n }}\n />\n <ConfirmPasswordField />\n <HiddenField\n field={{\n name: 'token',\n }}\n forceUsePathFromProps\n value={token}\n />\n </div>\n <FormSubmit size=\"large\">{i18n.t('authentication:resetPassword')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SACEC,oBAAoB,EACpBC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,SAAS,EACTC,cAAc,QACT;AACP,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAE1B,OAAOC,KAAA,MAAW;AAMlB,MAAMC,YAAA,GAA0B;EAC9B,oBAAoB;IAClBC,YAAA,EAAc;IACdC,KAAA,EAAO;IACPC,KAAA,EAAO;EACT;EACAC,QAAA,EAAU;IACRH,YAAA,EAAc;IACdC,KAAA,EAAO;IACPC,KAAA,EAAO;EACT;AACF;AAEA,OAAO,MAAME,iBAAA,GAAoCC,EAAA;EAAA,MAAAC,CAAA,GAAAnB,EAAA;EAAC;IAAAoB;EAAA,IAAAF,EAAS;EACzD,MAAAG,IAAA,GAAab,cAAA;EACb;IAAAc,MAAA,EAAAC;EAAA,IASIhB,SAAA;EARM;IAAAiB,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAL,EAOP;EANQ;IAAAG,MAAA,EAAAG,EAAA;IAAAC,IAAA,EAAAC;EAAA,IAAAN,EAGN;EAFS;IAAAO,KAAA,EAAAC;EAAA,IAAAJ,EAAqB;EAGvB;IAAAL,KAAA,EAAAU,UAAA;IAAAC,GAAA,EAAAC;EAAA,IAAAT,EAAoC;EAKhD,MAAAU,OAAA,GAAgB3B,SAAA;EAChB;IAAA4B;EAAA,IAA0BhC,OAAA;EAAA,IAAAiC,EAAA;EAAA,IAAApB,CAAA,QAAAmB,aAAA,IAAAnB,CAAA,QAAAkB,OAAA,IAAAlB,CAAA,QAAAe,UAAA,IAAAf,CAAA,QAAAc,UAAA;IAEUM,EAAA,SAAAA,CAAA;MAClC,MAAAT,IAAA,SAAmBQ,aAAA;MAAA,IACfR,IAAA;QACFO,OAAA,CAAAG,IAAA,CAAaN,UAAA;MAAA;QAEbG,OAAA,CAAAG,IAAA,CACE/B,cAAA;UAAAyB,UAAA;UAAAO,IAAA,EAEQR;QAAA,CACR;MAAA;IAAA;IAGNd,CAAA,MAAAmB,aAAA;IAAAnB,CAAA,MAAAkB,OAAA;IAAAlB,CAAA,MAAAe,UAAA;IAAAf,CAAA,MAAAc,UAAA;IAAAd,CAAA,MAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EAZA,MAAAuB,SAAA,GAAkBH,EAYiC;EAIvC,MAAAI,EAAA,MAAGf,SAAA,GAAYQ,QAAA,IAAYL,QAAA,iBAAyB;EAAA,IAAAa,EAAA;EAAA,IAAAzB,CAAA,QAAAE,IAAA,IAAAF,CAAA,QAAAC,KAAA,IAAAD,CAAA,QAAAwB,EAAA,IAAAxB,CAAA,QAAAuB,SAAA;IAD9DE,EAAA,GAAAC,KAAA,CAAA3C,IAAA;MAAA4C,MAAA,EACUH,EAAoD;MAAA/B,YAAA;MAAAmC,MAAA,EAErD;MAAAL,SAAA;MAAAM,QAAA,GAGPH,KAAA,CAAC;QAAAI,SAAA,EAAc;QAAAD,QAAA,GACbE,IAAA,CAAA7C,aAAA;UAAA8C,KAAA;YAAAC,IAAA,EAEU;YAAAC,KAAA,EACChC,IAAA,CAAAiC,CAAA,CAAO;YAAAC,QAAA;UAAA;QAAA,C,GAIlBL,IAAA,CAAAjD,oBAAA,IAAC,GACDiD,IAAA,CAAA9C,WAAA;UAAA+C,KAAA;YAAAC,IAAA,EAEU;UAAA;UAAAI,qBAAA;UAAAzC,KAAA,EAGDK;QAAA,C;UAGX8B,IAAA,CAAA/C,UAAA;QAAAsD,IAAA,EAAiB;QAAAT,QAAA,EAAS3B,IAAA,CAAAiC,CAAA,CAAO;MAAA,C;;;;;;;;;;SAvBnCV,E;CA0BJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","ConfirmPasswordField","Form","FormSubmit","HiddenField","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","useRouter","React","initialState","initialValue","valid","value","password","ResetPasswordForm","t0","$","token","i18n","config","t1","admin","t2","routes","t3","serverURL","t4","user","userSlug","login","loginRoute","adminRoute","api","apiRoute","history","fetchFullUser","t5","push","path","onSuccess","t6","t7","_jsxs","action","method","children","className","_jsx","field","name","label","t","required","indexPath","parentPath","parentSchemaPath","schemaPath","type","hidden","size"],"sources":["../../../../src/views/ResetPassword/ResetPasswordForm/index.tsx"],"sourcesContent":["'use client'\nimport {\n ConfirmPasswordField,\n Form,\n FormSubmit,\n HiddenField,\n PasswordField,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport { type FormState } from 'payload'\nimport React from 'react'\n\ntype Args = {\n readonly token: string\n}\n\nconst initialState: FormState = {\n 'confirm-password': {\n initialValue: '',\n valid: false,\n value: '',\n },\n password: {\n initialValue: '',\n valid: false,\n value: '',\n },\n}\n\nexport const ResetPasswordForm: React.FC<Args> = ({ token }) => {\n const i18n = useTranslation()\n const {\n config: {\n admin: {\n routes: { login: loginRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const history = useRouter()\n const { fetchFullUser } = useAuth()\n\n const onSuccess = React.useCallback(async () => {\n const user = await fetchFullUser()\n if (user) {\n history.push(adminRoute)\n } else {\n history.push(\n formatAdminURL({\n adminRoute,\n path: loginRoute,\n }),\n )\n }\n }, [adminRoute, fetchFullUser, history, loginRoute])\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/reset-password`}\n initialState={initialState}\n method=\"POST\"\n onSuccess={onSuccess}\n >\n <div className=\"inputWrap\">\n <PasswordField\n field={{\n name: 'password',\n label: i18n.t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath={`${userSlug}.password`}\n />\n <ConfirmPasswordField />\n <HiddenField\n field={{\n name: 'token',\n type: 'text',\n admin: {\n hidden: true,\n },\n }}\n indexPath=\"\"\n parentPath={userSlug}\n parentSchemaPath={userSlug}\n path=\"token\"\n schemaPath={`${userSlug}.token`}\n value={token}\n />\n </div>\n <FormSubmit size=\"large\">{i18n.t('authentication:resetPassword')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SACEC,oBAAoB,EACpBC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,SAAS,EACTC,cAAc,QACT;AACP,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAE1B,OAAOC,KAAA,MAAW;AAMlB,MAAMC,YAAA,GAA0B;EAC9B,oBAAoB;IAClBC,YAAA,EAAc;IACdC,KAAA,EAAO;IACPC,KAAA,EAAO;EACT;EACAC,QAAA,EAAU;IACRH,YAAA,EAAc;IACdC,KAAA,EAAO;IACPC,KAAA,EAAO;EACT;AACF;AAEA,OAAO,MAAME,iBAAA,GAAoCC,EAAA;EAAA,MAAAC,CAAA,GAAAnB,EAAA;EAAC;IAAAoB;EAAA,IAAAF,EAAS;EACzD,MAAAG,IAAA,GAAab,cAAA;EACb;IAAAc,MAAA,EAAAC;EAAA,IASIhB,SAAA;EARM;IAAAiB,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAL,EAOP;EANQ;IAAAG,MAAA,EAAAG,EAAA;IAAAC,IAAA,EAAAC;EAAA,IAAAN,EAGN;EAFS;IAAAO,KAAA,EAAAC;EAAA,IAAAJ,EAAqB;EAGvB;IAAAL,KAAA,EAAAU,UAAA;IAAAC,GAAA,EAAAC;EAAA,IAAAT,EAAoC;EAKhD,MAAAU,OAAA,GAAgB3B,SAAA;EAChB;IAAA4B;EAAA,IAA0BhC,OAAA;EAAA,IAAAiC,EAAA;EAAA,IAAApB,CAAA,QAAAmB,aAAA,IAAAnB,CAAA,QAAAkB,OAAA,IAAAlB,CAAA,QAAAe,UAAA,IAAAf,CAAA,QAAAc,UAAA;IAEUM,EAAA,SAAAA,CAAA;MAClC,MAAAT,IAAA,SAAmBQ,aAAA;MAAA,IACfR,IAAA;QACFO,OAAA,CAAAG,IAAA,CAAaN,UAAA;MAAA;QAEbG,OAAA,CAAAG,IAAA,CACE/B,cAAA;UAAAyB,UAAA;UAAAO,IAAA,EAEQR;QAAA,CACR;MAAA;IAAA;IAGNd,CAAA,MAAAmB,aAAA;IAAAnB,CAAA,MAAAkB,OAAA;IAAAlB,CAAA,MAAAe,UAAA;IAAAf,CAAA,MAAAc,UAAA;IAAAd,CAAA,MAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EAZA,MAAAuB,SAAA,GAAkBH,EAYiC;EAIvC,MAAAI,EAAA,MAAGf,SAAA,GAAYQ,QAAA,IAAYL,QAAA,iBAAyB;EAAA,IAAAa,EAAA;EAAA,IAAAzB,CAAA,QAAAE,IAAA,IAAAF,CAAA,QAAAY,QAAA,IAAAZ,CAAA,QAAAC,KAAA,IAAAD,CAAA,QAAAwB,EAAA,IAAAxB,CAAA,QAAAuB,SAAA;IAD9DE,EAAA,GAAAC,KAAA,CAAA3C,IAAA;MAAA4C,MAAA,EACUH,EAAoD;MAAA/B,YAAA;MAAAmC,MAAA,EAErD;MAAAL,SAAA;MAAAM,QAAA,GAGPH,KAAA,CAAC;QAAAI,SAAA,EAAc;QAAAD,QAAA,GACbE,IAAA,CAAA7C,aAAA;UAAA8C,KAAA;YAAAC,IAAA,EAEU;YAAAC,KAAA,EACChC,IAAA,CAAAiC,CAAA,CAAO;YAAAC,QAAA;UAAA;UAAAC,SAAA,EAGN;UAAAC,UAAA,EACC;UAAAC,gBAAA,EACM;UAAAjB,IAAA,EACZ;UAAAkB,UAAA,EACO,GAAG5B,QAAA;QAAmB,C,GAEpCmB,IAAA,CAAAjD,oBAAA,IAAC,GACDiD,IAAA,CAAA9C,WAAA;UAAA+C,KAAA;YAAAC,IAAA,EAEU;YAAAQ,IAAA,EACA;YAAApC,KAAA;cAAAqC,MAAA;YAAA;UAAA;UAAAL,SAAA,EAKE;UAAAC,UAAA,EACE1B,QAAA;UAAA2B,gBAAA,EACM3B,QAAA;UAAAU,IAAA,EACb;UAAAkB,UAAA,EACO,GAAG5B,QAAA,QAAgB;UAAAhB,KAAA,EACxBK;QAAA,C;UAGX8B,IAAA,CAAA/C,UAAA;QAAA2D,IAAA,EAAiB;QAAAd,QAAA,EAAS3B,IAAA,CAAAiC,CAAA,CAAO;MAAA,C;;;;;;;;;;;SApCnCV,E;CAuCJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { AdminViewComponent, AdminViewProps, ImportMap, SanitizedConfig } from 'payload';
1
+ import type { AdminViewComponent, AdminViewProps, CustomComponent, ImportMap, SanitizedConfig } from 'payload';
2
2
  import type React from 'react';
3
3
  import type { initPage } from '../../utilities/initPage/index.js';
4
4
  export type ViewFromConfig = {
@@ -17,7 +17,9 @@ export declare const getViewFromConfig: ({ adminRoute, config, currentRoute, imp
17
17
  }) => {
18
18
  DefaultView: ViewFromConfig;
19
19
  initPageOptions: Parameters<typeof initPage>[0];
20
+ serverProps: Record<string, unknown>;
20
21
  templateClassName: string;
21
22
  templateType: "default" | "minimal";
23
+ viewActions?: CustomComponent[];
22
24
  };
23
25
  //# sourceMappingURL=getViewFromConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getViewFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Root/getViewFromConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC7F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AA4BjE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACpC,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;CACtC,CAAA;AAYD,eAAO,MAAM,iBAAiB,6EAO3B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,KAAG;IACF,WAAW,EAAE,cAAc,CAAA;IAC3B,eAAe,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,SAAS,GAAG,SAAS,CAAA;CAuJpC,CAAA"}
1
+ {"version":3,"file":"getViewFromConfig.d.ts","sourceRoot":"","sources":["../../../src/views/Root/getViewFromConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EAEf,SAAS,EACT,eAAe,EAChB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AA4BjE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACpC,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;CACtC,CAAA;AA0BD,eAAO,MAAM,iBAAiB,6EAO3B;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,KAAG;IACF,WAAW,EAAE,cAAc,CAAA;IAC3B,eAAe,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,SAAS,GAAG,SAAS,CAAA;IACnC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAA;CAkShC,CAAA"}
@@ -28,6 +28,15 @@ const oneSegmentViews = {
28
28
  logout: LogoutView,
29
29
  unauthorized: UnauthorizedView
30
30
  };
31
+ function getViewActions({
32
+ editConfig,
33
+ viewKey
34
+ }) {
35
+ if (editConfig && viewKey in editConfig && 'actions' in editConfig[viewKey]) {
36
+ return editConfig[viewKey].actions;
37
+ }
38
+ return undefined;
39
+ }
31
40
  export const getViewFromConfig = ({
32
41
  adminRoute,
33
42
  config,
@@ -45,9 +54,29 @@ export const getViewFromConfig = ({
45
54
  route: currentRoute,
46
55
  searchParams
47
56
  };
48
- const [segmentOne, segmentTwo] = segments;
57
+ let viewActions = config?.admin?.components?.actions || [];
58
+ const [segmentOne, segmentTwo, segmentThree, segmentFour, segmentFive] = segments;
49
59
  const isGlobal = segmentOne === 'globals';
50
60
  const isCollection = segmentOne === 'collections';
61
+ let matchedCollection = undefined;
62
+ let matchedGlobal = undefined;
63
+ let serverProps = {};
64
+ if (isCollection) {
65
+ matchedCollection = config.collections.find(({
66
+ slug
67
+ }) => slug === segmentTwo);
68
+ serverProps = {
69
+ collectionConfig: matchedCollection
70
+ };
71
+ }
72
+ if (isGlobal) {
73
+ matchedGlobal = config.globals.find(({
74
+ slug
75
+ }) => slug === segmentTwo);
76
+ serverProps = {
77
+ globalConfig: matchedGlobal
78
+ };
79
+ }
51
80
  switch (segments.length) {
52
81
  case 0:
53
82
  {
@@ -109,20 +138,26 @@ export const getViewFromConfig = ({
109
138
  templateClassName = baseClasses[segmentTwo];
110
139
  templateType = 'minimal';
111
140
  }
112
- if (isCollection) {
141
+ if (isCollection && matchedCollection) {
113
142
  // --> /collections/:collectionSlug
114
143
  ViewToRender = {
115
144
  Component: ListView
116
145
  };
117
146
  templateClassName = `${segmentTwo}-list`;
118
147
  templateType = 'default';
119
- } else if (isGlobal) {
148
+ viewActions = viewActions.concat(matchedCollection.admin.components?.views?.list?.actions);
149
+ } else if (isGlobal && matchedGlobal) {
120
150
  // --> /globals/:globalSlug
121
151
  ViewToRender = {
122
152
  Component: DocumentView
123
153
  };
124
154
  templateClassName = 'global-edit';
125
155
  templateType = 'default';
156
+ // add default view actions
157
+ viewActions = viewActions.concat(getViewActions({
158
+ editConfig: matchedGlobal.admin?.components?.views?.edit,
159
+ viewKey: 'default'
160
+ }));
126
161
  }
127
162
  break;
128
163
  }
@@ -134,19 +169,64 @@ export const getViewFromConfig = ({
134
169
  };
135
170
  templateClassName = 'verify';
136
171
  templateType = 'minimal';
137
- } else if (isCollection) {
172
+ } else if (isCollection && matchedCollection) {
138
173
  // Custom Views
139
174
  // --> /collections/:collectionSlug/:id
175
+ // --> /collections/:collectionSlug/:id/api
140
176
  // --> /collections/:collectionSlug/:id/preview
141
177
  // --> /collections/:collectionSlug/:id/versions
142
178
  // --> /collections/:collectionSlug/:id/versions/:versionId
143
- // --> /collections/:collectionSlug/:id/api
144
179
  ViewToRender = {
145
180
  Component: DocumentView
146
181
  };
147
182
  templateClassName = `collection-default-edit`;
148
183
  templateType = 'default';
149
- } else if (isGlobal) {
184
+ // Adds view actions to the current collection view
185
+ if (matchedCollection.admin?.components?.views?.edit) {
186
+ if ('root' in matchedCollection.admin.components.views.edit) {
187
+ viewActions = viewActions.concat(getViewActions({
188
+ editConfig: matchedCollection.admin?.components?.views?.edit,
189
+ viewKey: 'root'
190
+ }));
191
+ } else {
192
+ if (segmentFive) {
193
+ if (segmentFour === 'versions') {
194
+ // add version view actions
195
+ viewActions = viewActions.concat(getViewActions({
196
+ editConfig: matchedCollection.admin?.components?.views?.edit,
197
+ viewKey: 'version'
198
+ }));
199
+ }
200
+ } else if (segmentFour) {
201
+ if (segmentFour === 'versions') {
202
+ // add versions view actions
203
+ viewActions = viewActions.concat(getViewActions({
204
+ editConfig: matchedCollection.admin?.components?.views.edit,
205
+ viewKey: 'versions'
206
+ }));
207
+ } else if (segmentFour === 'preview') {
208
+ // add livePreview view actions
209
+ viewActions = viewActions.concat(getViewActions({
210
+ editConfig: matchedCollection.admin?.components?.views.edit,
211
+ viewKey: 'livePreview'
212
+ }));
213
+ } else if (segmentFour === 'api') {
214
+ // add api view actions
215
+ viewActions = viewActions.concat(getViewActions({
216
+ editConfig: matchedCollection.admin?.components?.views.edit,
217
+ viewKey: 'api'
218
+ }));
219
+ }
220
+ } else if (segmentThree) {
221
+ // add default view actions
222
+ viewActions = viewActions.concat(getViewActions({
223
+ editConfig: matchedCollection.admin?.components?.views.edit,
224
+ viewKey: 'default'
225
+ }));
226
+ }
227
+ }
228
+ }
229
+ } else if (isGlobal && matchedGlobal) {
150
230
  // Custom Views
151
231
  // --> /globals/:globalSlug/versions
152
232
  // --> /globals/:globalSlug/preview
@@ -157,6 +237,45 @@ export const getViewFromConfig = ({
157
237
  };
158
238
  templateClassName = `global-edit`;
159
239
  templateType = 'default';
240
+ // Adds view actions to the current global view
241
+ if (matchedGlobal.admin?.components?.views?.edit) {
242
+ if ('root' in matchedGlobal.admin.components.views.edit) {
243
+ viewActions = viewActions.concat(getViewActions({
244
+ editConfig: matchedGlobal.admin.components?.views?.edit,
245
+ viewKey: 'root'
246
+ }));
247
+ } else {
248
+ if (segmentFour) {
249
+ if (segmentThree === 'versions') {
250
+ // add version view actions
251
+ viewActions = viewActions.concat(getViewActions({
252
+ editConfig: matchedGlobal.admin?.components?.views?.edit,
253
+ viewKey: 'version'
254
+ }));
255
+ }
256
+ } else if (segmentThree) {
257
+ if (segmentThree === 'versions') {
258
+ // add versions view actions
259
+ viewActions = viewActions.concat(getViewActions({
260
+ editConfig: matchedGlobal.admin?.components?.views?.edit,
261
+ viewKey: 'versions'
262
+ }));
263
+ } else if (segmentThree === 'preview') {
264
+ // add livePreview view actions
265
+ viewActions = viewActions.concat(getViewActions({
266
+ editConfig: matchedGlobal.admin?.components?.views?.edit,
267
+ viewKey: 'livePreview'
268
+ }));
269
+ } else if (segmentThree === 'api') {
270
+ // add api view actions
271
+ viewActions = viewActions.concat(getViewActions({
272
+ editConfig: matchedGlobal.admin?.components?.views?.edit,
273
+ viewKey: 'api'
274
+ }));
275
+ }
276
+ }
277
+ }
278
+ }
160
279
  }
161
280
  break;
162
281
  }
@@ -169,8 +288,10 @@ export const getViewFromConfig = ({
169
288
  return {
170
289
  DefaultView: ViewToRender,
171
290
  initPageOptions,
291
+ serverProps,
172
292
  templateClassName,
173
- templateType
293
+ templateType,
294
+ viewActions: viewActions.reverse()
174
295
  };
175
296
  };
176
297
  //# sourceMappingURL=getViewFromConfig.js.map