@payloadcms/next 3.0.0-beta.77 → 3.0.0-beta.79

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 (261) hide show
  1. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts +3 -1
  2. package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  3. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +16 -3
  4. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  5. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +2 -2
  6. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js.map +1 -1
  7. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -2
  8. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js.map +1 -1
  9. package/dist/elements/DocumentHeader/Tabs/index.d.ts +2 -2
  10. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  11. package/dist/elements/DocumentHeader/Tabs/index.js +27 -17
  12. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/index.scss +0 -1
  14. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts +2 -0
  15. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  16. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +15 -15
  17. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  18. package/dist/elements/DocumentHeader/index.d.ts +2 -2
  19. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  20. package/dist/elements/DocumentHeader/index.js +2 -2
  21. package/dist/elements/DocumentHeader/index.js.map +1 -1
  22. package/dist/elements/DocumentHeader/index.scss +0 -2
  23. package/dist/elements/EmailAndUsername/index.d.ts.map +1 -1
  24. package/dist/elements/EmailAndUsername/index.js +31 -27
  25. package/dist/elements/EmailAndUsername/index.js.map +1 -1
  26. package/dist/elements/LeaveWithoutSaving/index.scss +1 -0
  27. package/dist/elements/Logo/index.d.ts.map +1 -1
  28. package/dist/elements/Logo/index.js +8 -5
  29. package/dist/elements/Logo/index.js.map +1 -1
  30. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  31. package/dist/elements/Nav/index.client.js +4 -7
  32. package/dist/elements/Nav/index.client.js.map +1 -1
  33. package/dist/elements/Nav/index.d.ts.map +1 -1
  34. package/dist/elements/Nav/index.js +21 -27
  35. package/dist/elements/Nav/index.js.map +1 -1
  36. package/dist/elements/Nav/index.scss +17 -7
  37. package/dist/layouts/Root/index.d.ts +5 -4
  38. package/dist/layouts/Root/index.d.ts.map +1 -1
  39. package/dist/layouts/Root/index.js +11 -14
  40. package/dist/layouts/Root/index.js.map +1 -1
  41. package/dist/prod/styles.css +1 -1
  42. package/dist/routes/rest/buildFormState.js +4 -4
  43. package/dist/routes/rest/buildFormState.js.map +1 -1
  44. package/dist/routes/rest/og/image.d.ts +2 -1
  45. package/dist/routes/rest/og/image.d.ts.map +1 -1
  46. package/dist/routes/rest/og/image.js +6 -2
  47. package/dist/routes/rest/og/image.js.map +1 -1
  48. package/dist/routes/rest/og/index.d.ts.map +1 -1
  49. package/dist/routes/rest/og/index.js +7 -3
  50. package/dist/routes/rest/og/index.js.map +1 -1
  51. package/dist/scss/app.scss +5 -5
  52. package/dist/scss/type.scss +1 -0
  53. package/dist/templates/Default/index.d.ts.map +1 -1
  54. package/dist/templates/Default/index.js +16 -23
  55. package/dist/templates/Default/index.js.map +1 -1
  56. package/dist/utilities/getPayloadHMR.d.ts.map +1 -1
  57. package/dist/utilities/getPayloadHMR.js +13 -1
  58. package/dist/utilities/getPayloadHMR.js.map +1 -1
  59. package/dist/utilities/initPage/index.d.ts +1 -1
  60. package/dist/utilities/initPage/index.d.ts.map +1 -1
  61. package/dist/utilities/initPage/index.js +3 -2
  62. package/dist/utilities/initPage/index.js.map +1 -1
  63. package/dist/utilities/initPage/types.d.ts +2 -1
  64. package/dist/utilities/initPage/types.d.ts.map +1 -1
  65. package/dist/utilities/initPage/types.js.map +1 -1
  66. package/dist/views/API/LocaleSelector/index.d.ts +2 -2
  67. package/dist/views/API/LocaleSelector/index.d.ts.map +1 -1
  68. package/dist/views/API/LocaleSelector/index.js +7 -5
  69. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  70. package/dist/views/API/index.client.d.ts.map +1 -1
  71. package/dist/views/API/index.client.js +39 -33
  72. package/dist/views/API/index.client.js.map +1 -1
  73. package/dist/views/API/index.d.ts +2 -2
  74. package/dist/views/API/index.d.ts.map +1 -1
  75. package/dist/views/API/index.js.map +1 -1
  76. package/dist/views/API/index.scss +1 -2
  77. package/dist/views/Account/ToggleTheme/index.d.ts.map +1 -1
  78. package/dist/views/Account/ToggleTheme/index.js +18 -16
  79. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  80. package/dist/views/Account/index.client.d.ts +3 -0
  81. package/dist/views/Account/index.client.d.ts.map +1 -0
  82. package/dist/views/Account/index.client.js +21 -0
  83. package/dist/views/Account/index.client.js.map +1 -0
  84. package/dist/views/Account/index.d.ts.map +1 -1
  85. package/dist/views/Account/index.js +38 -35
  86. package/dist/views/Account/index.js.map +1 -1
  87. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  88. package/dist/views/CreateFirstUser/index.client.js +10 -10
  89. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  90. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  91. package/dist/views/Dashboard/Default/index.js +21 -27
  92. package/dist/views/Dashboard/Default/index.js.map +1 -1
  93. package/dist/views/Dashboard/index.d.ts.map +1 -1
  94. package/dist/views/Dashboard/index.js +23 -26
  95. package/dist/views/Dashboard/index.js.map +1 -1
  96. package/dist/views/Document/getCustomViewByKey.d.ts.map +1 -1
  97. package/dist/views/Document/getCustomViewByKey.js +1 -2
  98. package/dist/views/Document/getCustomViewByKey.js.map +1 -1
  99. package/dist/views/Document/getCustomViewByRoute.js +2 -2
  100. package/dist/views/Document/getCustomViewByRoute.js.map +1 -1
  101. package/dist/views/Document/getViewsFromConfig.d.ts +9 -4
  102. package/dist/views/Document/getViewsFromConfig.d.ts.map +1 -1
  103. package/dist/views/Document/getViewsFromConfig.js +111 -49
  104. package/dist/views/Document/getViewsFromConfig.js.map +1 -1
  105. package/dist/views/Document/index.d.ts.map +1 -1
  106. package/dist/views/Document/index.js +31 -31
  107. package/dist/views/Document/index.js.map +1 -1
  108. package/dist/views/Edit/Default/Auth/APIKey.d.ts +2 -2
  109. package/dist/views/Edit/Default/Auth/APIKey.d.ts.map +1 -1
  110. package/dist/views/Edit/Default/Auth/APIKey.js +34 -7
  111. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  112. package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
  113. package/dist/views/Edit/Default/Auth/index.js +25 -14
  114. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  115. package/dist/views/Edit/Default/SetDocumentStepNav/index.d.ts.map +1 -1
  116. package/dist/views/Edit/Default/SetDocumentStepNav/index.js +1 -1
  117. package/dist/views/Edit/Default/SetDocumentStepNav/index.js.map +1 -1
  118. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  119. package/dist/views/Edit/Default/index.js +15 -17
  120. package/dist/views/Edit/Default/index.js.map +1 -1
  121. package/dist/views/Edit/index.client.d.ts.map +1 -1
  122. package/dist/views/Edit/index.client.js +11 -6
  123. package/dist/views/Edit/index.client.js.map +1 -1
  124. package/dist/views/Edit/index.d.ts +2 -2
  125. package/dist/views/Edit/index.d.ts.map +1 -1
  126. package/dist/views/Edit/index.js.map +1 -1
  127. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  128. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +11 -7
  129. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  130. package/dist/views/List/Default/index.d.ts.map +1 -1
  131. package/dist/views/List/Default/index.js +52 -43
  132. package/dist/views/List/Default/index.js.map +1 -1
  133. package/dist/views/List/Default/index.scss +5 -12
  134. package/dist/views/List/index.d.ts.map +1 -1
  135. package/dist/views/List/index.js +47 -40
  136. package/dist/views/List/index.js.map +1 -1
  137. package/dist/views/List/meta.js +1 -1
  138. package/dist/views/List/meta.js.map +1 -1
  139. package/dist/views/LivePreview/Context/context.d.ts +1 -1
  140. package/dist/views/LivePreview/Context/context.d.ts.map +1 -1
  141. package/dist/views/LivePreview/Context/context.js.map +1 -1
  142. package/dist/views/LivePreview/Context/index.d.ts +3 -3
  143. package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
  144. package/dist/views/LivePreview/Context/index.js.map +1 -1
  145. package/dist/views/LivePreview/index.client.d.ts +3 -3
  146. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  147. package/dist/views/LivePreview/index.client.js +84 -93
  148. package/dist/views/LivePreview/index.client.js.map +1 -1
  149. package/dist/views/LivePreview/index.d.ts +2 -2
  150. package/dist/views/LivePreview/index.d.ts.map +1 -1
  151. package/dist/views/LivePreview/index.js.map +1 -1
  152. package/dist/views/LivePreview/usePopupWindow.d.ts +2 -1
  153. package/dist/views/LivePreview/usePopupWindow.d.ts.map +1 -1
  154. package/dist/views/LivePreview/usePopupWindow.js +1 -1
  155. package/dist/views/LivePreview/usePopupWindow.js.map +1 -1
  156. package/dist/views/Login/LoginField/index.d.ts +3 -3
  157. package/dist/views/Login/LoginField/index.d.ts.map +1 -1
  158. package/dist/views/Login/LoginField/index.js +15 -12
  159. package/dist/views/Login/LoginField/index.js.map +1 -1
  160. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  161. package/dist/views/Login/LoginForm/index.js +6 -4
  162. package/dist/views/Login/LoginForm/index.js.map +1 -1
  163. package/dist/views/Login/index.d.ts.map +1 -1
  164. package/dist/views/Login/index.js +21 -27
  165. package/dist/views/Login/index.js.map +1 -1
  166. package/dist/views/NotFound/index.client.d.ts.map +1 -1
  167. package/dist/views/NotFound/index.client.js +1 -1
  168. package/dist/views/NotFound/index.client.js.map +1 -1
  169. package/dist/views/NotFound/index.d.ts +4 -3
  170. package/dist/views/NotFound/index.d.ts.map +1 -1
  171. package/dist/views/NotFound/index.js +2 -1
  172. package/dist/views/NotFound/index.js.map +1 -1
  173. package/dist/views/ResetPassword/index.client.d.ts +1 -1
  174. package/dist/views/ResetPassword/index.client.d.ts.map +1 -1
  175. package/dist/views/ResetPassword/index.client.js +9 -6
  176. package/dist/views/ResetPassword/index.client.js.map +1 -1
  177. package/dist/views/Root/getCustomViewByRoute.d.ts +3 -2
  178. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  179. package/dist/views/Root/getCustomViewByRoute.js +13 -10
  180. package/dist/views/Root/getCustomViewByRoute.js.map +1 -1
  181. package/dist/views/Root/getViewFromConfig.d.ts +10 -4
  182. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  183. package/dist/views/Root/getViewFromConfig.js +26 -9
  184. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  185. package/dist/views/Root/index.d.ts +6 -5
  186. package/dist/views/Root/index.d.ts.map +1 -1
  187. package/dist/views/Root/index.js +14 -6
  188. package/dist/views/Root/index.js.map +1 -1
  189. package/dist/views/Unauthorized/index.d.ts +2 -2
  190. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  191. package/dist/views/Unauthorized/index.js.map +1 -1
  192. package/dist/views/Version/Default/SetStepNav.d.ts +8 -8
  193. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  194. package/dist/views/Version/Default/SetStepNav.js +7 -7
  195. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  196. package/dist/views/Version/Default/index.d.ts.map +1 -1
  197. package/dist/views/Version/Default/index.js +10 -15
  198. package/dist/views/Version/Default/index.js.map +1 -1
  199. package/dist/views/Version/Default/types.d.ts +7 -7
  200. package/dist/views/Version/Default/types.d.ts.map +1 -1
  201. package/dist/views/Version/Default/types.js.map +1 -1
  202. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +2 -2
  203. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  204. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +20 -20
  205. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  206. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +2 -2
  207. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts.map +1 -1
  208. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +4 -4
  209. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
  210. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +3 -2
  211. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  212. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +3 -3
  213. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  214. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +3 -5
  215. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  216. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +1 -1
  217. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  218. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +3 -5
  219. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  220. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +2 -2
  221. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  222. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +3 -2
  223. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  224. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +1 -1
  225. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  226. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +21 -28
  227. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  228. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +1 -1
  229. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  230. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +15 -15
  231. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  232. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  233. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  234. package/dist/views/Version/RenderFieldsToDiff/index.js +12 -8
  235. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  236. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +9 -9
  237. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  238. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  239. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  240. package/dist/views/Version/Restore/index.js +1 -1
  241. package/dist/views/Version/Restore/index.js.map +1 -1
  242. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  243. package/dist/views/Version/SelectComparison/index.js +1 -1
  244. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  245. package/dist/views/Version/index.d.ts +2 -2
  246. package/dist/views/Version/index.d.ts.map +1 -1
  247. package/dist/views/Version/index.js.map +1 -1
  248. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  249. package/dist/views/Versions/buildColumns.js +40 -16
  250. package/dist/views/Versions/buildColumns.js.map +1 -1
  251. package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
  252. package/dist/views/Versions/cells/CreatedAt/index.js +1 -1
  253. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  254. package/dist/views/Versions/index.client.d.ts +4 -4
  255. package/dist/views/Versions/index.client.d.ts.map +1 -1
  256. package/dist/views/Versions/index.client.js +8 -6
  257. package/dist/views/Versions/index.client.js.map +1 -1
  258. package/dist/views/Versions/index.d.ts +2 -2
  259. package/dist/views/Versions/index.d.ts.map +1 -1
  260. package/dist/views/Versions/index.js.map +1 -1
  261. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { DocumentControls, DocumentFields, Form, OperationProvider, SetViewActions, useAuth, useComponentMap, useConfig, useDocumentEvents, useDocumentInfo, useTranslation } from '@payloadcms/ui';
3
+ import { DocumentControls, DocumentFields, Form, OperationProvider, SetViewActions, useAuth, useConfig, useDocumentEvents, useDocumentInfo, useTranslation } from '@payloadcms/ui';
4
4
  import { getFormState } from '@payloadcms/ui/shared';
5
5
  import React, { Fragment, useCallback } from 'react';
6
6
  import { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js';
@@ -11,10 +11,10 @@ import { LivePreviewProvider } from './Context/index.js';
11
11
  import { LivePreview } from './Preview/index.js';
12
12
  import { usePopupWindow } from './usePopupWindow.js';
13
13
  const baseClass = 'live-preview';
14
- const PreviewView = ({ apiRoute, collectionConfig, config, fieldMap, globalConfig, schemaPath, serverURL })=>{
14
+ const PreviewView = ({ apiRoute, collectionConfig, config, fields, globalConfig, schemaPath, serverURL })=>{
15
15
  const { id, AfterDocument, AfterFields, BeforeDocument, BeforeFields, action, apiURL, collectionSlug, disableActions, disableLeaveWithoutSaving, docPermissions, getDocPreferences, globalSlug, hasPublishPermission, hasSavePermission, initialData, initialState, isEditing, isInitializing, onSave: onSaveFromProps } = useDocumentInfo();
16
16
  const operation = id ? 'update' : 'create';
17
- const { admin: { user: userSlug } } = useConfig();
17
+ const { config: { admin: { user: userSlug } } } = useConfig();
18
18
  const { t } = useTranslation();
19
19
  const { previewWindowType } = useLivePreviewContext();
20
20
  const { refreshCookieAsync, user } = useAuth();
@@ -66,110 +66,101 @@ const PreviewView = ({ apiRoute, collectionConfig, config, fieldMap, globalConfi
66
66
  schemaPath,
67
67
  getDocPreferences
68
68
  ]);
69
- return /*#__PURE__*/ _jsx(Fragment, {
70
- children: /*#__PURE__*/ _jsx(OperationProvider, {
71
- operation: operation,
72
- children: /*#__PURE__*/ _jsxs(Form, {
73
- action: action,
74
- className: `${baseClass}__form`,
75
- disabled: !hasSavePermission,
76
- initialState: initialState,
77
- isInitializing: isInitializing,
78
- method: id ? 'PATCH' : 'POST',
79
- onChange: [
80
- onChange
81
- ],
82
- onSuccess: onSave,
83
- children: [
84
- (collectionConfig && !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave) || globalConfig && !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave)) && !disableLeaveWithoutSaving && /*#__PURE__*/ _jsx(LeaveWithoutSaving, {}),
85
- /*#__PURE__*/ _jsx(SetDocumentStepNav, {
86
- collectionSlug: collectionSlug,
87
- globalLabel: globalConfig?.label,
88
- globalSlug: globalSlug,
89
- id: id,
90
- pluralLabel: collectionConfig ? collectionConfig?.labels?.plural : undefined,
91
- useAsTitle: collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined,
92
- view: t('general:livePreview')
93
- }),
94
- /*#__PURE__*/ _jsx(SetDocumentTitle, {
95
- collectionConfig: collectionConfig,
96
- config: config,
97
- fallback: id?.toString() || '',
98
- globalConfig: globalConfig
99
- }),
100
- /*#__PURE__*/ _jsx(DocumentControls, {
101
- apiURL: apiURL,
102
- data: initialData,
103
- disableActions: disableActions,
104
- hasPublishPermission: hasPublishPermission,
105
- hasSavePermission: hasSavePermission,
106
- id: id,
107
- isEditing: isEditing,
108
- permissions: docPermissions,
109
- slug: collectionConfig?.slug || globalConfig?.slug
110
- }),
111
- /*#__PURE__*/ _jsxs("div", {
112
- className: [
113
- baseClass,
114
- previewWindowType === 'popup' && `${baseClass}--detached`
115
- ].filter(Boolean).join(' '),
116
- children: [
117
- /*#__PURE__*/ _jsxs("div", {
118
- className: [
119
- `${baseClass}__main`,
120
- previewWindowType === 'popup' && `${baseClass}__main--popup-open`
121
- ].filter(Boolean).join(' '),
122
- children: [
123
- BeforeDocument,
124
- /*#__PURE__*/ _jsx(DocumentFields, {
125
- AfterFields: AfterFields,
126
- BeforeFields: BeforeFields,
127
- docPermissions: docPermissions,
128
- fieldMap: fieldMap,
129
- forceSidebarWrap: true,
130
- readOnly: !hasSavePermission,
131
- schemaPath: collectionSlug || globalSlug
132
- }),
133
- AfterDocument
134
- ]
135
- }),
136
- /*#__PURE__*/ _jsx(LivePreview, {
137
- collectionSlug: collectionSlug,
138
- globalSlug: globalSlug
139
- })
140
- ]
141
- })
142
- ]
143
- })
69
+ return /*#__PURE__*/ _jsx(OperationProvider, {
70
+ operation: operation,
71
+ children: /*#__PURE__*/ _jsxs(Form, {
72
+ action: action,
73
+ className: `${baseClass}__form`,
74
+ disabled: !hasSavePermission,
75
+ initialState: initialState,
76
+ isInitializing: isInitializing,
77
+ method: id ? 'PATCH' : 'POST',
78
+ onChange: [
79
+ onChange
80
+ ],
81
+ onSuccess: onSave,
82
+ children: [
83
+ (collectionConfig && !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave) || globalConfig && !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave)) && !disableLeaveWithoutSaving && /*#__PURE__*/ _jsx(LeaveWithoutSaving, {}),
84
+ /*#__PURE__*/ _jsx(SetDocumentStepNav, {
85
+ collectionSlug: collectionSlug,
86
+ globalLabel: globalConfig?.label,
87
+ globalSlug: globalSlug,
88
+ id: id,
89
+ pluralLabel: collectionConfig ? collectionConfig?.labels?.plural : undefined,
90
+ useAsTitle: collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined,
91
+ view: t('general:livePreview')
92
+ }),
93
+ /*#__PURE__*/ _jsx(SetDocumentTitle, {
94
+ collectionConfig: collectionConfig,
95
+ config: config,
96
+ fallback: id?.toString() || '',
97
+ globalConfig: globalConfig
98
+ }),
99
+ /*#__PURE__*/ _jsx(DocumentControls, {
100
+ apiURL: apiURL,
101
+ data: initialData,
102
+ disableActions: disableActions,
103
+ hasPublishPermission: hasPublishPermission,
104
+ hasSavePermission: hasSavePermission,
105
+ id: id,
106
+ isEditing: isEditing,
107
+ permissions: docPermissions,
108
+ slug: collectionConfig?.slug || globalConfig?.slug
109
+ }),
110
+ /*#__PURE__*/ _jsxs("div", {
111
+ className: [
112
+ baseClass,
113
+ previewWindowType === 'popup' && `${baseClass}--detached`
114
+ ].filter(Boolean).join(' '),
115
+ children: [
116
+ /*#__PURE__*/ _jsxs("div", {
117
+ className: [
118
+ `${baseClass}__main`,
119
+ previewWindowType === 'popup' && `${baseClass}__main--popup-open`
120
+ ].filter(Boolean).join(' '),
121
+ children: [
122
+ BeforeDocument,
123
+ /*#__PURE__*/ _jsx(DocumentFields, {
124
+ AfterFields: AfterFields,
125
+ BeforeFields: BeforeFields,
126
+ docPermissions: docPermissions,
127
+ fields: fields,
128
+ forceSidebarWrap: true,
129
+ readOnly: !hasSavePermission,
130
+ schemaPath: collectionSlug || globalSlug
131
+ }),
132
+ AfterDocument
133
+ ]
134
+ }),
135
+ /*#__PURE__*/ _jsx(LivePreview, {
136
+ collectionSlug: collectionSlug,
137
+ globalSlug: globalSlug
138
+ })
139
+ ]
140
+ })
141
+ ]
144
142
  })
145
143
  });
146
144
  };
147
145
  export const LivePreviewClient = (props)=>{
148
146
  const { breakpoints, url } = props;
149
147
  const { collectionSlug, globalSlug } = useDocumentInfo();
150
- const config = useConfig();
148
+ const { config, config: { routes: { api: apiRoute }, serverURL }, getEntityConfig } = useConfig();
151
149
  const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({
152
150
  eventType: 'payload-live-preview',
153
151
  url
154
152
  });
155
- const { collections, globals, routes: { api: apiRoute }, serverURL } = config;
156
- const collectionConfig = collectionSlug && collections.find((collection)=>collection.slug === collectionSlug);
157
- const globalConfig = globalSlug && globals.find((global)=>global.slug === globalSlug);
158
- const schemaPath = collectionSlug || globalSlug;
159
- const { getComponentMap } = useComponentMap();
160
- const componentMap = getComponentMap({
161
- collectionSlug,
162
- globalSlug
153
+ const collectionConfig = getEntityConfig({
154
+ collectionSlug
163
155
  });
164
- const { getFieldMap } = useComponentMap();
165
- const fieldMap = getFieldMap({
166
- collectionSlug: collectionConfig?.slug,
167
- globalSlug: globalConfig?.slug
156
+ const globalConfig = getEntityConfig({
157
+ globalSlug
168
158
  });
159
+ const schemaPath = collectionSlug || globalSlug;
169
160
  return /*#__PURE__*/ _jsxs(Fragment, {
170
161
  children: [
171
162
  /*#__PURE__*/ _jsx(SetViewActions, {
172
- actions: componentMap?.actionsMap?.Edit?.LivePreview
163
+ actions: (collectionConfig || globalConfig)?.admin?.components?.views?.edit?.livePreview?.actions
173
164
  }),
174
165
  /*#__PURE__*/ _jsx(LivePreviewProvider, {
175
166
  breakpoints: breakpoints,
@@ -182,7 +173,7 @@ export const LivePreviewClient = (props)=>{
182
173
  apiRoute: apiRoute,
183
174
  collectionConfig: collectionConfig,
184
175
  config: config,
185
- fieldMap: fieldMap,
176
+ fields: (collectionConfig || globalConfig)?.fields,
186
177
  globalConfig: globalConfig,
187
178
  schemaPath: schemaPath,
188
179
  serverURL: serverURL
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientGlobalConfig,\n Data,\n FieldMap,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n OperationProvider,\n SetViewActions,\n useAuth,\n useComponentMap,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React, { Fragment, useCallback } from 'react'\n\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 { LivePreview } from './Preview/index.js'\nimport './index.scss'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n apiRoute: string\n collectionConfig?: ClientCollectionConfig\n config: ClientConfig\n fieldMap: FieldMap\n globalConfig?: ClientGlobalConfig\n schemaPath: string\n serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n apiRoute,\n collectionConfig,\n config,\n fieldMap,\n globalConfig,\n schemaPath,\n serverURL,\n}) => {\n const {\n id,\n AfterDocument,\n AfterFields,\n BeforeDocument,\n BeforeFields,\n action,\n apiURL,\n collectionSlug,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n onSave: onSaveFromProps,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n admin: { user: userSlug },\n } = useConfig()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\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 if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [collectionSlug, id, onSaveFromProps, refreshCookieAsync, reportUpdate, user, userSlug],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const docPreferences = await getDocPreferences()\n\n return getFormState({\n apiRoute,\n body: {\n id,\n docPreferences,\n formState: prevFormState,\n operation,\n schemaPath,\n },\n serverURL,\n })\n },\n [serverURL, apiRoute, id, operation, schemaPath, getDocPreferences],\n )\n\n return (\n <Fragment>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={!hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving && <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 permissions={docPermissions}\n slug={collectionConfig?.slug || globalConfig?.slug}\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 fieldMap={fieldMap}\n forceSidebarWrap\n readOnly={!hasSavePermission}\n schemaPath={collectionSlug || globalSlug}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n </Fragment>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n breakpoints: LivePreviewConfig['breakpoints']\n initialData: Data\n url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const config = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const {\n collections,\n globals,\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const collectionConfig =\n collectionSlug && collections.find((collection) => collection.slug === collectionSlug)\n\n const globalConfig = globalSlug && globals.find((global) => global.slug === globalSlug)\n\n const schemaPath = collectionSlug || globalSlug\n\n const { getComponentMap } = useComponentMap()\n\n const componentMap = getComponentMap({ collectionSlug, globalSlug })\n\n const { getFieldMap } = useComponentMap()\n\n const fieldMap = getFieldMap({\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n })\n\n return (\n <Fragment>\n <SetViewActions actions={componentMap?.actionsMap?.Edit?.LivePreview} />\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 fieldMap={fieldMap}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"names":["DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useComponentMap","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","React","Fragment","useCallback","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fieldMap","globalConfig","schemaPath","serverURL","id","AfterDocument","AfterFields","BeforeDocument","BeforeFields","action","apiURL","collectionSlug","disableActions","disableLeaveWithoutSaving","docPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","onSave","onSaveFromProps","operation","admin","user","userSlug","t","previewWindowType","refreshCookieAsync","reportUpdate","json","entitySlug","updatedAt","result","Date","toISOString","onChange","formState","prevFormState","docPreferences","body","className","disabled","method","onSuccess","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","undefined","useAsTitle","view","fallback","toString","data","permissions","slug","div","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","breakpoints","url","isPopupOpen","openPopupWindow","popupRef","eventType","collections","globals","routes","api","find","collection","global","getComponentMap","componentMap","getFieldMap","actions","actionsMap","Edit","fieldSchema","fields"],"mappings":"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"}
1
+ {"version":3,"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 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 { getFormState } from '@payloadcms/ui/shared'\nimport React, { Fragment, useCallback } from 'react'\n\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 { LivePreview } from './Preview/index.js'\nimport './index.scss'\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 AfterDocument,\n AfterFields,\n BeforeDocument,\n BeforeFields,\n action,\n apiURL,\n collectionSlug,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n onSave: onSaveFromProps,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n },\n } = useConfig()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\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 if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [collectionSlug, id, onSaveFromProps, refreshCookieAsync, reportUpdate, user, userSlug],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const docPreferences = await getDocPreferences()\n\n return getFormState({\n apiRoute,\n body: {\n id,\n docPreferences,\n formState: prevFormState,\n operation,\n schemaPath,\n },\n serverURL,\n })\n },\n [serverURL, apiRoute, id, operation, schemaPath, getDocPreferences],\n )\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={!hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving && <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 permissions={docPermissions}\n slug={collectionConfig?.slug || globalConfig?.slug}\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={!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"],"names":["DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","React","Fragment","useCallback","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fields","globalConfig","schemaPath","serverURL","id","AfterDocument","AfterFields","BeforeDocument","BeforeFields","action","apiURL","collectionSlug","disableActions","disableLeaveWithoutSaving","docPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","onSave","onSaveFromProps","operation","admin","user","userSlug","t","previewWindowType","refreshCookieAsync","reportUpdate","json","entitySlug","updatedAt","result","Date","toISOString","onChange","formState","prevFormState","docPreferences","body","className","disabled","method","onSuccess","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","undefined","useAsTitle","view","fallback","toString","data","permissions","slug","div","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","breakpoints","url","routes","api","getEntityConfig","isPopupOpen","openPopupWindow","popupRef","eventType","actions","components","views","edit","livePreview","fieldSchema"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { EditViewComponent } from 'payload';
1
+ import type { EditViewComponent, PayloadServerReactComponent } from 'payload';
2
2
  import './index.scss';
3
- export declare const LivePreviewView: EditViewComponent;
3
+ export declare const LivePreviewView: PayloadServerReactComponent<EditViewComponent>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAiC,MAAM,SAAS,CAAA;AAM/E,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,eAAe,EAAE,iBAgF7B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,2BAA2B,EAE5B,MAAM,SAAS,CAAA;AAMhB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,eAAe,EAAE,2BAA2B,CAAC,iBAAiB,CAgF1E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/LivePreview/index.tsx"],"sourcesContent":["import type { EditViewComponent, LivePreviewConfig, TypeWithID } from 'payload'\n\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { LivePreviewClient } from './index.client.js'\nimport './index.scss'\n\nexport const LivePreviewView: EditViewComponent = async (props) => {\n const { initPageResult } = props\n\n const {\n collectionConfig,\n docID,\n globalConfig,\n locale,\n req: {\n payload: {\n config: {\n admin: { livePreview: topLevelLivePreviewConfig },\n },\n } = {},\n } = {},\n } = initPageResult\n\n let data: Record<string, unknown> | TypeWithID\n\n try {\n if (collectionConfig) {\n data = await initPageResult.req.payload.findByID({\n id: docID,\n collection: collectionConfig.slug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n })\n }\n\n if (globalConfig) {\n data = await initPageResult.req.payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n })\n }\n } catch (error) {\n notFound()\n }\n\n let livePreviewConfig: LivePreviewConfig = topLevelLivePreviewConfig\n\n if (collectionConfig) {\n livePreviewConfig = {\n ...(livePreviewConfig || {}),\n ...(collectionConfig.admin.livePreview || {}),\n }\n }\n\n if (globalConfig) {\n livePreviewConfig = {\n ...(livePreviewConfig || {}),\n ...(globalConfig.admin.livePreview || {}),\n }\n }\n\n const breakpoints: LivePreviewConfig['breakpoints'] = [\n ...(livePreviewConfig?.breakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ]\n\n const url =\n typeof livePreviewConfig?.url === 'function'\n ? await livePreviewConfig.url({\n collectionConfig,\n data,\n globalConfig,\n locale,\n payload: initPageResult.req.payload,\n })\n : livePreviewConfig?.url\n\n return <LivePreviewClient breakpoints={breakpoints} initialData={data} url={url} />\n}\n"],"names":["notFound","React","LivePreviewClient","LivePreviewView","props","initPageResult","collectionConfig","docID","globalConfig","locale","req","payload","config","admin","livePreview","topLevelLivePreviewConfig","data","findByID","id","collection","slug","depth","draft","fallbackLocale","findGlobal","error","livePreviewConfig","breakpoints","name","height","label","width","url","initialData"],"mappings":";AAEA,SAASA,QAAQ,QAAQ,qBAAoB;AAC7C,OAAOC,WAAW,QAAO;AAEzB,SAASC,iBAAiB,QAAQ,oBAAmB;AAGrD,OAAO,MAAMC,kBAAqC,OAAOC;IACvD,MAAM,EAAEC,cAAc,EAAE,GAAGD;IAE3B,MAAM,EACJE,gBAAgB,EAChBC,KAAK,EACLC,YAAY,EACZC,MAAM,EACNC,KAAK,EACHC,SAAS,EACPC,QAAQ,EACNC,OAAO,EAAEC,aAAaC,yBAAyB,EAAE,EAClD,EACF,GAAG,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,EACP,GAAGV;IAEJ,IAAIW;IAEJ,IAAI;QACF,IAAIV,kBAAkB;YACpBU,OAAO,MAAMX,eAAeK,GAAG,CAACC,OAAO,CAACM,QAAQ,CAAC;gBAC/CC,IAAIX;gBACJY,YAAYb,iBAAiBc,IAAI;gBACjCC,OAAO;gBACPC,OAAO;gBACPC,gBAAgB;YAClB;QACF;QAEA,IAAIf,cAAc;YAChBQ,OAAO,MAAMX,eAAeK,GAAG,CAACC,OAAO,CAACa,UAAU,CAAC;gBACjDJ,MAAMZ,aAAaY,IAAI;gBACvBC,OAAO;gBACPC,OAAO;gBACPC,gBAAgB;YAClB;QACF;IACF,EAAE,OAAOE,OAAO;QACdzB;IACF;IAEA,IAAI0B,oBAAuCX;IAE3C,IAAIT,kBAAkB;QACpBoB,oBAAoB;YAClB,GAAIA,qBAAqB,CAAC,CAAC;YAC3B,GAAIpB,iBAAiBO,KAAK,CAACC,WAAW,IAAI,CAAC,CAAC;QAC9C;IACF;IAEA,IAAIN,cAAc;QAChBkB,oBAAoB;YAClB,GAAIA,qBAAqB,CAAC,CAAC;YAC3B,GAAIlB,aAAaK,KAAK,CAACC,WAAW,IAAI,CAAC,CAAC;QAC1C;IACF;IAEA,MAAMa,cAAgD;WAChDD,mBAAmBC,eAAe,EAAE;QACxC;YACEC,MAAM;YACNC,QAAQ;YACRC,OAAO;YACPC,OAAO;QACT;KACD;IAED,MAAMC,MACJ,OAAON,mBAAmBM,QAAQ,aAC9B,MAAMN,kBAAkBM,GAAG,CAAC;QAC1B1B;QACAU;QACAR;QACAC;QACAE,SAASN,eAAeK,GAAG,CAACC,OAAO;IACrC,KACAe,mBAAmBM;IAEzB,qBAAO,KAAC9B;QAAkByB,aAAaA;QAAaM,aAAajB;QAAMgB,KAAKA;;AAC9E,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/LivePreview/index.tsx"],"sourcesContent":["import type {\n EditViewComponent,\n LivePreviewConfig,\n PayloadServerReactComponent,\n TypeWithID,\n} from 'payload'\n\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { LivePreviewClient } from './index.client.js'\nimport './index.scss'\n\nexport const LivePreviewView: PayloadServerReactComponent<EditViewComponent> = async (props) => {\n const { initPageResult } = props\n\n const {\n collectionConfig,\n docID,\n globalConfig,\n locale,\n req: {\n payload: {\n config: {\n admin: { livePreview: topLevelLivePreviewConfig },\n },\n } = {},\n } = {},\n } = initPageResult\n\n let data: Record<string, unknown> | TypeWithID\n\n try {\n if (collectionConfig) {\n data = await initPageResult.req.payload.findByID({\n id: docID,\n collection: collectionConfig.slug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n })\n }\n\n if (globalConfig) {\n data = await initPageResult.req.payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n })\n }\n } catch (error) {\n notFound()\n }\n\n let livePreviewConfig: LivePreviewConfig = topLevelLivePreviewConfig\n\n if (collectionConfig) {\n livePreviewConfig = {\n ...(livePreviewConfig || {}),\n ...(collectionConfig.admin.livePreview || {}),\n }\n }\n\n if (globalConfig) {\n livePreviewConfig = {\n ...(livePreviewConfig || {}),\n ...(globalConfig.admin.livePreview || {}),\n }\n }\n\n const breakpoints: LivePreviewConfig['breakpoints'] = [\n ...(livePreviewConfig?.breakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ]\n\n const url =\n typeof livePreviewConfig?.url === 'function'\n ? await livePreviewConfig.url({\n collectionConfig,\n data,\n globalConfig,\n locale,\n payload: initPageResult.req.payload,\n })\n : livePreviewConfig?.url\n\n return <LivePreviewClient breakpoints={breakpoints} initialData={data} url={url} />\n}\n"],"names":["notFound","React","LivePreviewClient","LivePreviewView","props","initPageResult","collectionConfig","docID","globalConfig","locale","req","payload","config","admin","livePreview","topLevelLivePreviewConfig","data","findByID","id","collection","slug","depth","draft","fallbackLocale","findGlobal","error","livePreviewConfig","breakpoints","name","height","label","width","url","initialData"],"mappings":";AAOA,SAASA,QAAQ,QAAQ,qBAAoB;AAC7C,OAAOC,WAAW,QAAO;AAEzB,SAASC,iBAAiB,QAAQ,oBAAmB;AAGrD,OAAO,MAAMC,kBAAkE,OAAOC;IACpF,MAAM,EAAEC,cAAc,EAAE,GAAGD;IAE3B,MAAM,EACJE,gBAAgB,EAChBC,KAAK,EACLC,YAAY,EACZC,MAAM,EACNC,KAAK,EACHC,SAAS,EACPC,QAAQ,EACNC,OAAO,EAAEC,aAAaC,yBAAyB,EAAE,EAClD,EACF,GAAG,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,EACP,GAAGV;IAEJ,IAAIW;IAEJ,IAAI;QACF,IAAIV,kBAAkB;YACpBU,OAAO,MAAMX,eAAeK,GAAG,CAACC,OAAO,CAACM,QAAQ,CAAC;gBAC/CC,IAAIX;gBACJY,YAAYb,iBAAiBc,IAAI;gBACjCC,OAAO;gBACPC,OAAO;gBACPC,gBAAgB;YAClB;QACF;QAEA,IAAIf,cAAc;YAChBQ,OAAO,MAAMX,eAAeK,GAAG,CAACC,OAAO,CAACa,UAAU,CAAC;gBACjDJ,MAAMZ,aAAaY,IAAI;gBACvBC,OAAO;gBACPC,OAAO;gBACPC,gBAAgB;YAClB;QACF;IACF,EAAE,OAAOE,OAAO;QACdzB;IACF;IAEA,IAAI0B,oBAAuCX;IAE3C,IAAIT,kBAAkB;QACpBoB,oBAAoB;YAClB,GAAIA,qBAAqB,CAAC,CAAC;YAC3B,GAAIpB,iBAAiBO,KAAK,CAACC,WAAW,IAAI,CAAC,CAAC;QAC9C;IACF;IAEA,IAAIN,cAAc;QAChBkB,oBAAoB;YAClB,GAAIA,qBAAqB,CAAC,CAAC;YAC3B,GAAIlB,aAAaK,KAAK,CAACC,WAAW,IAAI,CAAC,CAAC;QAC1C;IACF;IAEA,MAAMa,cAAgD;WAChDD,mBAAmBC,eAAe,EAAE;QACxC;YACEC,MAAM;YACNC,QAAQ;YACRC,OAAO;YACPC,OAAO;QACT;KACD;IAED,MAAMC,MACJ,OAAON,mBAAmBM,QAAQ,aAC9B,MAAMN,kBAAkBM,GAAG,CAAC;QAC1B1B;QACAU;QACAR;QACAC;QACAE,SAASN,eAAeK,GAAG,CAACC,OAAO;IACrC,KACAe,mBAAmBM;IAEzB,qBAAO,KAAC9B;QAAkByB,aAAaA;QAAaM,aAAajB;QAAMgB,KAAKA;;AAC9E,EAAC"}
@@ -1,3 +1,4 @@
1
+ import type React from 'react';
1
2
  export interface PopupMessage {
2
3
  searchParams: {
3
4
  [key: string]: string | undefined;
@@ -14,6 +15,6 @@ export declare const usePopupWindow: (props: {
14
15
  }) => {
15
16
  isPopupOpen: boolean;
16
17
  openPopupWindow: () => void;
17
- popupRef?: React.MutableRefObject<Window | null>;
18
+ popupRef?: React.RefObject<Window | null>;
18
19
  };
19
20
  //# sourceMappingURL=usePopupWindow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePopupWindow.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/usePopupWindow.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,eAAe,EAAE,MAAM,CAAA;QACvB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,cAAc,UAAW;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,GAAG,EAAE,MAAM,CAAA;CACZ,KAAG;IACF,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAiHjD,CAAA"}
1
+ {"version":3,"file":"usePopupWindow.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/usePopupWindow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,eAAe,EAAE,MAAM,CAAA;QACvB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,cAAc,UAAW;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,GAAG,EAAE,MAAM,CAAA;CACZ,KAAG;IACF,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAmH1C,CAAA"}
@@ -5,7 +5,7 @@ export const usePopupWindow = (props)=>{
5
5
  const { eventType, onMessage, url } = props;
6
6
  const isReceivingMessage = useRef(false);
7
7
  const [isOpen, setIsOpen] = useState(false);
8
- const { serverURL } = useConfig();
8
+ const { config: { serverURL } } = useConfig();
9
9
  const popupRef = useRef(null);
10
10
  // Optionally broadcast messages back out to the parent component
11
11
  useEffect(()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/LivePreview/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport { useConfig } from '@payloadcms/ui'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.MutableRefObject<Window | null>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n const { serverURL } = useConfig()\n const popupRef = useRef<Window | null>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"names":["useConfig","useCallback","useEffect","useRef","useState","usePopupWindow","props","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","serverURL","popupRef","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","openPopupWindow","e","preventDefault","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","key","value","strCopy","v","Math","round","innerHeight","innerWidth","slice","newWindow","open","timer","setInterval","closed","clearInterval","isPopupOpen"],"mappings":"AAAA;AACA,SAASA,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAYhE,OAAO,MAAMC,iBAAiB,CAACC;IAU7B,MAAM,EAAEC,SAAS,EAAEC,SAAS,EAAEC,GAAG,EAAE,GAAGH;IACtC,MAAMI,qBAAqBP,OAAO;IAClC,MAAM,CAACQ,QAAQC,UAAU,GAAGR,SAAS;IACrC,MAAM,EAAES,SAAS,EAAE,GAAGb;IACtB,MAAMc,WAAWX,OAAsB;IAEvC,iEAAiE;IACjED,UAAU;QACR,MAAMa,iBAAiB,OAAOC;YAC5B,IACEA,MAAMC,MAAM,KAAKC,OAAOC,QAAQ,CAACF,MAAM,IACvCD,MAAMC,MAAM,KAAKR,OACjBO,MAAMC,MAAM,KAAKJ,WACjB;gBACA,kGAAkG;gBAClG;YACF;YAEA,IACE,OAAOL,cAAc,cACrBQ,MAAMI,IAAI,EAAEC,SAASd,aACrB,CAACG,mBAAmBY,OAAO,EAC3B;gBACAZ,mBAAmBY,OAAO,GAAG;gBAC7B,MAAMd,UAAUQ,MAAMI,IAAI,EAAEG;gBAC5Bb,mBAAmBY,OAAO,GAAG;YAC/B;QACF;QAEA,IAAIX,UAAUG,SAASQ,OAAO,EAAE;YAC9BJ,OAAOM,gBAAgB,CAAC,WAAWT,gBAAgB;QACrD;QAEA,OAAO;YACLG,OAAOO,mBAAmB,CAAC,WAAWV;QACxC;IACF,GAAG;QAACP;QAAWD;QAAWE;QAAKI;QAAWF;KAAO;IAEjD,8DAA8D;IAC9D,MAAMe,kBAAkBzB,YACtB,CAAC0B;QACC,IAAIA,GAAG;YACLA,EAAEC,cAAc;QAClB;QAEA,MAAMC,WAAW;YACfC,QAAQ;YACRC,MAAM;YACNC,SAAS;YACTC,OAAO;YACPC,SAAS;YACTC,KAAK;YACLC,OAAO;QACT;QAEA,MAAMC,eAAeC,OAAOC,OAAO,CAACV,UACjCW,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,MAAM;YACxB,IAAIC,UAAUH;YACd,IAAIE,UAAU,QAAQ;gBACpB,IAAID,QAAQ,OAAO;oBACjB,MAAMG,IAAIC,KAAKC,KAAK,CAAC7B,OAAO8B,WAAW,GAAG,IAAInB,SAASC,MAAM,GAAG;oBAChEc,WAAW,CAAC,IAAI,EAAEC,EAAE,CAAC,CAAC;gBACxB,OAAO,IAAIH,QAAQ,QAAQ;oBACzB,MAAMG,IAAIC,KAAKC,KAAK,CAAC7B,OAAO+B,UAAU,GAAG,IAAIpB,SAASO,KAAK,GAAG;oBAC9DQ,WAAW,CAAC,KAAK,EAAEC,EAAE,CAAC,CAAC;gBACzB;gBACA,OAAOD;YACT;YAEAA,WAAW,CAAC,EAAEF,IAAI,CAAC,EAAEC,MAAM,CAAC,CAAC;YAC7B,OAAOC;QACT,GAAG,IACFM,KAAK,CAAC,GAAG,CAAC,GAAG,0BAA0B;;QAE1C,MAAMC,YAAYjC,OAAOkC,IAAI,CAAC3C,KAAK,UAAU4B;QAE7CvB,SAASQ,OAAO,GAAG6B;QAEnBvC,UAAU;IACZ,GACA;QAACH;KAAI;IAGP,gGAAgG;IAChG,0EAA0E;IAC1EP,UAAU;QACR,IAAImD;QAEJ,IAAI1C,QAAQ;YACV0C,QAAQC,YAAY;gBAClB,IAAIxC,SAASQ,OAAO,CAACiC,MAAM,EAAE;oBAC3BC,cAAcH;oBACdzC,UAAU;gBACZ;YACF,GAAG;QACL,OAAO;YACL4C,cAAcH;QAChB;QAEA,OAAO;YACL,IAAIA,OAAO;gBACTG,cAAcH;YAChB;QACF;IACF,GAAG;QAAC1C;QAAQG;KAAS;IAErB,OAAO;QACL2C,aAAa9C;QACbe;QACAZ;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/views/LivePreview/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useConfig } from '@payloadcms/ui'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<Window | null>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n const {\n config: { serverURL },\n } = useConfig()\n const popupRef = useRef<Window | null>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"names":["useConfig","useCallback","useEffect","useRef","useState","usePopupWindow","props","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","config","serverURL","popupRef","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","openPopupWindow","e","preventDefault","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","key","value","strCopy","v","Math","round","innerHeight","innerWidth","slice","newWindow","open","timer","setInterval","closed","clearInterval","isPopupOpen"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { Validate } from 'payload';
2
2
  import React from 'react';
3
3
  export type LoginFieldProps = {
4
- required?: boolean;
5
- type: 'email' | 'emailOrUsername' | 'username';
6
- validate?: Validate;
4
+ readonly required?: boolean;
5
+ readonly type: 'email' | 'emailOrUsername' | 'username';
6
+ readonly validate?: Validate;
7
7
  };
8
8
  export declare const LoginField: React.FC<LoginFieldProps>;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -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;AACzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqDhD,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,CAwDhD,CAAA"}
@@ -8,28 +8,31 @@ export const LoginField = ({ type, required = true })=>{
8
8
  if (type === 'email') {
9
9
  return /*#__PURE__*/ _jsx(EmailField, {
10
10
  autoComplete: "email",
11
- label: t('general:email'),
12
- name: "email",
13
- path: "email",
14
- required: required,
11
+ field: {
12
+ name: 'email',
13
+ label: t('general:email'),
14
+ required
15
+ },
15
16
  validate: email
16
17
  });
17
18
  }
18
19
  if (type === 'username') {
19
20
  return /*#__PURE__*/ _jsx(TextField, {
20
- label: t('authentication:username'),
21
- name: "username",
22
- path: "username",
23
- required: required,
21
+ field: {
22
+ name: 'username',
23
+ label: t('authentication:username'),
24
+ required
25
+ },
24
26
  validate: username
25
27
  });
26
28
  }
27
29
  if (type === 'emailOrUsername') {
28
30
  return /*#__PURE__*/ _jsx(TextField, {
29
- label: t('authentication:emailOrUsername'),
30
- name: "username",
31
- path: "username",
32
- required: required,
31
+ field: {
32
+ name: 'username',
33
+ label: t('authentication:emailOrUsername'),
34
+ required
35
+ },
33
36
  validate: (value, options)=>{
34
37
  const passesUsername = username(value, options);
35
38
  const passesEmail = email(value, options);
@@ -1 +1 @@
1
- {"version":3,"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'\nexport type LoginFieldProps = {\n required?: boolean\n type: 'email' | 'emailOrUsername' | 'username'\n validate?: Validate\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 label={t('general:email')}\n name=\"email\"\n path=\"email\"\n required={required}\n validate={email}\n />\n )\n }\n\n if (type === 'username') {\n return (\n <TextField\n label={t('authentication:username')}\n name=\"username\"\n path=\"username\"\n required={required}\n validate={username}\n />\n )\n }\n\n if (type === 'emailOrUsername') {\n return (\n <TextField\n label={t('authentication:emailOrUsername')}\n name=\"username\"\n path=\"username\"\n required={required}\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"],"names":["EmailField","TextField","useTranslation","email","username","React","LoginField","type","required","t","autoComplete","label","name","path","validate","value","options","passesUsername","passesEmail"],"mappings":"AAAA;;AAGA,SAASA,UAAU,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AACtE,SAASC,KAAK,EAAEC,QAAQ,QAAQ,iBAAgB;AAChD,OAAOC,WAAW,QAAO;AAMzB,OAAO,MAAMC,aAAwC,CAAC,EAAEC,IAAI,EAAEC,WAAW,IAAI,EAAE;IAC7E,MAAM,EAAEC,CAAC,EAAE,GAAGP;IAEd,IAAIK,SAAS,SAAS;QACpB,qBACE,KAACP;YACCU,cAAa;YACbC,OAAOF,EAAE;YACTG,MAAK;YACLC,MAAK;YACLL,UAAUA;YACVM,UAAUX;;IAGhB;IAEA,IAAII,SAAS,YAAY;QACvB,qBACE,KAACN;YACCU,OAAOF,EAAE;YACTG,MAAK;YACLC,MAAK;YACLL,UAAUA;YACVM,UAAUV;;IAGhB;IAEA,IAAIG,SAAS,mBAAmB;QAC9B,qBACE,KAACN;YACCU,OAAOF,EAAE;YACTG,MAAK;YACLC,MAAK;YACLL,UAAUA;YACVM,UAAU,CAACC,OAAOC;gBAChB,MAAMC,iBAAiBb,SAASW,OAAOC;gBACvC,MAAME,cAAcf,MAClBY,OACAC;gBAGF,IAAI,CAACE,eAAe,CAACD,gBAAgB;oBACnC,OAAO,CAAC,EAAER,EAAE,iBAAiB,EAAE,EAAES,YAAY,CAAC,EAAET,EAAE,oBAAoB,EAAE,EAAEQ,eAAe,CAAC;gBAC5F;gBAEA,OAAO;YACT;;IAGN;IAEA,OAAO;AACT,EAAC"}
1
+ {"version":3,"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"],"names":["EmailField","TextField","useTranslation","email","username","React","LoginField","type","required","t","autoComplete","field","name","label","validate","value","options","passesUsername","passesEmail"],"mappings":"AAAA;;AAGA,SAASA,UAAU,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AACtE,SAASC,KAAK,EAAEC,QAAQ,QAAQ,iBAAgB;AAChD,OAAOC,WAAW,QAAO;AAQzB,OAAO,MAAMC,aAAwC,CAAC,EAAEC,IAAI,EAAEC,WAAW,IAAI,EAAE;IAC7E,MAAM,EAAEC,CAAC,EAAE,GAAGP;IAEd,IAAIK,SAAS,SAAS;QACpB,qBACE,KAACP;YACCU,cAAa;YACbC,OAAO;gBACLC,MAAM;gBACNC,OAAOJ,EAAE;gBACTD;YACF;YACAM,UAAUX;;IAGhB;IAEA,IAAII,SAAS,YAAY;QACvB,qBACE,KAACN;YACCU,OAAO;gBACLC,MAAM;gBACNC,OAAOJ,EAAE;gBACTD;YACF;YACAM,UAAUV;;IAGhB;IAEA,IAAIG,SAAS,mBAAmB;QAC9B,qBACE,KAACN;YACCU,OAAO;gBACLC,MAAM;gBACNC,OAAOJ,EAAE;gBACTD;YACF;YACAM,UAAU,CAACC,OAAOC;gBAChB,MAAMC,iBAAiBb,SAASW,OAAOC;gBACvC,MAAME,cAAcf,MAClBY,OACAC;gBAGF,IAAI,CAACE,eAAe,CAACD,gBAAgB;oBACnC,OAAO,CAAC,EAAER,EAAE,iBAAiB,EAAE,EAAES,YAAY,CAAC,EAAET,EAAE,oBAAoB,EAAE,EAAEQ,eAAe,CAAC;gBAC5F;gBAEA,OAAO;YACT;;IAGN;IAEA,OAAO;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginForm/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAyEA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginForm/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CA+EA,CAAA"}
@@ -8,7 +8,7 @@ import { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@pay
8
8
  import { formatAdminURL } from '@payloadcms/ui/shared';
9
9
  import { LoginField } from '../LoginField/index.js';
10
10
  export const LoginForm = ({ prefillEmail, prefillPassword, prefillUsername, searchParams })=>{
11
- const config = useConfig();
11
+ const { config } = useConfig();
12
12
  const { admin: { routes: { forgot: forgotRoute }, user: userSlug }, routes: { admin: adminRoute, api: apiRoute } } = config;
13
13
  const collectionConfig = config.collections?.find((collection)=>collection?.slug === userSlug);
14
14
  const { auth: authOptions } = collectionConfig;
@@ -57,9 +57,11 @@ export const LoginForm = ({ prefillEmail, prefillPassword, prefillUsername, sear
57
57
  type: loginType
58
58
  }),
59
59
  /*#__PURE__*/ _jsx(PasswordField, {
60
- label: t('general:password'),
61
- name: "password",
62
- required: true
60
+ field: {
61
+ name: 'password',
62
+ label: t('general:password'),
63
+ required: true
64
+ }
63
65
  })
64
66
  ]
65
67
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const config = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) return 'emailOrUsername'\n if (canLoginWithUsername) return 'username'\n return 'email'\n })\n\n const { t } = useTranslation()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField label={t('general:password')} name=\"password\" required />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","routes","forgot","forgotRoute","user","userSlug","adminRoute","api","apiRoute","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","loginType","useState","t","initialState","password","initialValue","undefined","valid","value","username","email","action","className","disableSuccessStatus","method","redirect","waitForAutocomplete","div","type","label","name","required","href","path","size"],"mappings":"AAAA;;AAEA,OAAOA,gBAAgB,eAAc;AACrC,OAAOC,WAAW,QAAO;AAEzB,MAAMC,YAAY;AAClB,MAAMC,OAAQH,WAAWI,OAAO,IAAIJ;AAIpC,SAASK,IAAI,EAAEC,UAAU,EAAEC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AAC3F,SAASC,cAAc,QAAQ,wBAAuB;AAItD,SAASC,UAAU,QAAQ,yBAAwB;AAGnD,OAAO,MAAMC,YAKR,CAAC,EAAEC,YAAY,EAAEC,eAAe,EAAEC,eAAe,EAAEC,YAAY,EAAE;IACpE,MAAMC,SAAST;IAEf,MAAM,EACJU,OAAO,EACLC,QAAQ,EAAEC,QAAQC,WAAW,EAAE,EAC/BC,MAAMC,QAAQ,EACf,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC7C,GAAGT;IAEJ,MAAMU,mBAAmBV,OAAOW,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASR;IACvF,MAAM,EAAES,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IACvD,MAAMC,oBACJ,CAACF,YAAYC,iBAAiB,IAAID,YAAYC,iBAAiB,CAACE,eAAe;IACjF,MAAMC,uBAAuBJ,YAAYC,iBAAiB;IAE1D,MAAM,CAACI,UAAU,GAAGrC,MAAMsC,QAAQ,CAA0B;QAC1D,IAAIJ,qBAAqBE,sBAAsB,OAAO;QACtD,IAAIA,sBAAsB,OAAO;QACjC,OAAO;IACT;IAEA,MAAM,EAAEG,CAAC,EAAE,GAAG/B;IAEd,MAAMgC,eAA0B;QAC9BC,UAAU;YACRC,cAAc7B,mBAAmB8B;YACjCC,OAAO;YACPC,OAAOhC,mBAAmB8B;QAC5B;IACF;IAEA,IAAIV,mBAAmB;QACrBO,aAAaM,QAAQ,GAAG;YACtBJ,cAAc5B,mBAAmB6B;YACjCC,OAAO;YACPC,OAAO/B,mBAAmB6B;QAC5B;IACF,OAAO;QACLH,aAAaO,KAAK,GAAG;YACnBL,cAAc9B,gBAAgB+B;YAC9BC,OAAO;YACPC,OAAOjC,gBAAgB+B;QACzB;IACF;IAEA,qBACE,MAACvC;QACC4C,QAAQ,CAAC,EAAEvB,SAAS,CAAC,EAAEH,SAAS,MAAM,CAAC;QACvC2B,WAAWhD;QACXiD,oBAAoB;QACpBV,cAAcA;QACdW,QAAO;QACPC,UAAU,OAAOrC,cAAcqC,aAAa,WAAWrC,aAAaqC,QAAQ,GAAG7B;QAC/E8B,mBAAmB;;0BAEnB,MAACC;gBAAIL,WAAW,CAAC,EAAEhD,UAAU,WAAW,CAAC;;kCACvC,KAACS;wBAAW6C,MAAMlB;;kCAClB,KAAC/B;wBAAckD,OAAOjB,EAAE;wBAAqBkB,MAAK;wBAAWC,QAAQ;;;;0BAEvE,KAACxD;gBACCyD,MAAMlD,eAAe;oBACnBc;oBACAqC,MAAMxC;gBACR;0BAECmB,EAAE;;0BAEL,KAAClC;gBAAWwD,MAAK;0BAAStB,EAAE;;;;AAGlC,EAAC"}
1
+ {"version":3,"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) return 'emailOrUsername'\n if (canLoginWithUsername) return 'username'\n return 'email'\n })\n\n const { t } = useTranslation()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"names":["LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","routes","forgot","forgotRoute","user","userSlug","adminRoute","api","apiRoute","collectionConfig","collections","find","collection","slug","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","loginType","useState","t","initialState","password","initialValue","undefined","valid","value","username","email","action","className","disableSuccessStatus","method","redirect","waitForAutocomplete","div","type","field","name","label","required","href","path","size"],"mappings":"AAAA;;AAEA,OAAOA,gBAAgB,eAAc;AACrC,OAAOC,WAAW,QAAO;AAEzB,MAAMC,YAAY;AAClB,MAAMC,OAAQH,WAAWI,OAAO,IAAIJ;AAIpC,SAASK,IAAI,EAAEC,UAAU,EAAEC,aAAa,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AAC3F,SAASC,cAAc,QAAQ,wBAAuB;AAItD,SAASC,UAAU,QAAQ,yBAAwB;AAGnD,OAAO,MAAMC,YAKR,CAAC,EAAEC,YAAY,EAAEC,eAAe,EAAEC,eAAe,EAAEC,YAAY,EAAE;IACpE,MAAM,EAAEC,MAAM,EAAE,GAAGT;IAEnB,MAAM,EACJU,OAAO,EACLC,QAAQ,EAAEC,QAAQC,WAAW,EAAE,EAC/BC,MAAMC,QAAQ,EACf,EACDJ,QAAQ,EAAED,OAAOM,UAAU,EAAEC,KAAKC,QAAQ,EAAE,EAC7C,GAAGT;IAEJ,MAAMU,mBAAmBV,OAAOW,WAAW,EAAEC,KAAK,CAACC,aAAeA,YAAYC,SAASR;IACvF,MAAM,EAAES,MAAMC,WAAW,EAAE,GAAGN;IAC9B,MAAMO,oBAAoBD,YAAYC,iBAAiB;IACvD,MAAMC,oBACJ,CAACF,YAAYC,iBAAiB,IAAID,YAAYC,iBAAiB,CAACE,eAAe;IACjF,MAAMC,uBAAuBJ,YAAYC,iBAAiB;IAE1D,MAAM,CAACI,UAAU,GAAGrC,MAAMsC,QAAQ,CAA0B;QAC1D,IAAIJ,qBAAqBE,sBAAsB,OAAO;QACtD,IAAIA,sBAAsB,OAAO;QACjC,OAAO;IACT;IAEA,MAAM,EAAEG,CAAC,EAAE,GAAG/B;IAEd,MAAMgC,eAA0B;QAC9BC,UAAU;YACRC,cAAc7B,mBAAmB8B;YACjCC,OAAO;YACPC,OAAOhC,mBAAmB8B;QAC5B;IACF;IAEA,IAAIV,mBAAmB;QACrBO,aAAaM,QAAQ,GAAG;YACtBJ,cAAc5B,mBAAmB6B;YACjCC,OAAO;YACPC,OAAO/B,mBAAmB6B;QAC5B;IACF,OAAO;QACLH,aAAaO,KAAK,GAAG;YACnBL,cAAc9B,gBAAgB+B;YAC9BC,OAAO;YACPC,OAAOjC,gBAAgB+B;QACzB;IACF;IAEA,qBACE,MAACvC;QACC4C,QAAQ,CAAC,EAAEvB,SAAS,CAAC,EAAEH,SAAS,MAAM,CAAC;QACvC2B,WAAWhD;QACXiD,oBAAoB;QACpBV,cAAcA;QACdW,QAAO;QACPC,UAAU,OAAOrC,cAAcqC,aAAa,WAAWrC,aAAaqC,QAAQ,GAAG7B;QAC/E8B,mBAAmB;;0BAEnB,MAACC;gBAAIL,WAAW,CAAC,EAAEhD,UAAU,WAAW,CAAC;;kCACvC,KAACS;wBAAW6C,MAAMlB;;kCAClB,KAAC/B;wBACCkD,OAAO;4BACLC,MAAM;4BACNC,OAAOnB,EAAE;4BACToB,UAAU;wBACZ;;;;0BAGJ,KAACzD;gBACC0D,MAAMnD,eAAe;oBACnBc;oBACAsC,MAAMzC;gBACR;0BAECmB,EAAE;;0BAEL,KAAClC;gBAAWyD,MAAK;0BAASvB,EAAE;;;;AAGlC,EAAC"}
@@ -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;AAIvC,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqG9C,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;AAIvC,OAAO,cAAc,CAAA;AAErB,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"}