@payloadcms/ui 3.44.0 → 3.45.0-canary.0

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 (113) hide show
  1. package/dist/elements/Button/index.d.ts.map +1 -1
  2. package/dist/elements/Button/index.js +2 -1
  3. package/dist/elements/Button/index.js.map +1 -1
  4. package/dist/elements/Button/index.scss +2 -2
  5. package/dist/elements/DocumentControls/index.d.ts +1 -0
  6. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  7. package/dist/elements/DocumentControls/index.js +26 -11
  8. package/dist/elements/DocumentControls/index.js.map +1 -1
  9. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  10. package/dist/elements/DocumentFields/index.js.map +1 -1
  11. package/dist/elements/LivePreview/Device/index.d.ts +5 -0
  12. package/dist/elements/LivePreview/Device/index.d.ts.map +1 -0
  13. package/dist/elements/LivePreview/Device/index.js +92 -0
  14. package/dist/elements/LivePreview/Device/index.js.map +1 -0
  15. package/dist/elements/LivePreview/DeviceContainer/index.d.ts +5 -0
  16. package/dist/elements/LivePreview/DeviceContainer/index.d.ts.map +1 -0
  17. package/dist/elements/LivePreview/DeviceContainer/index.js +55 -0
  18. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -0
  19. package/dist/elements/LivePreview/IFrame/index.d.ts +10 -0
  20. package/dist/elements/LivePreview/IFrame/index.d.ts.map +1 -0
  21. package/dist/elements/LivePreview/IFrame/index.js +30 -0
  22. package/dist/elements/LivePreview/IFrame/index.js.map +1 -0
  23. package/dist/elements/LivePreview/IFrame/index.scss +9 -0
  24. package/dist/elements/LivePreview/Toggler/index.d.ts +4 -0
  25. package/dist/elements/LivePreview/Toggler/index.d.ts.map +1 -0
  26. package/dist/elements/LivePreview/Toggler/index.js +30 -0
  27. package/dist/elements/LivePreview/Toggler/index.js.map +1 -0
  28. package/dist/elements/LivePreview/Toggler/index.scss +48 -0
  29. package/dist/elements/LivePreview/Toolbar/Controls/index.d.ts +5 -0
  30. package/dist/elements/LivePreview/Toolbar/Controls/index.d.ts.map +1 -0
  31. package/dist/elements/LivePreview/Toolbar/Controls/index.js +157 -0
  32. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -0
  33. package/dist/elements/LivePreview/Toolbar/Controls/index.scss +61 -0
  34. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts +6 -0
  35. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -0
  36. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +101 -0
  37. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -0
  38. package/dist/elements/LivePreview/Toolbar/SizeInput/index.scss +12 -0
  39. package/dist/elements/LivePreview/Toolbar/index.d.ts +7 -0
  40. package/dist/elements/LivePreview/Toolbar/index.d.ts.map +1 -0
  41. package/dist/elements/LivePreview/Toolbar/index.js +97 -0
  42. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -0
  43. package/dist/elements/LivePreview/Toolbar/index.scss +43 -0
  44. package/dist/elements/LivePreview/ToolbarArea/index.d.ts +6 -0
  45. package/dist/elements/LivePreview/ToolbarArea/index.d.ts.map +1 -0
  46. package/dist/elements/LivePreview/ToolbarArea/index.js +41 -0
  47. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -0
  48. package/dist/elements/LivePreview/ToolbarArea/index.scss +6 -0
  49. package/dist/elements/LivePreview/Window/index.d.ts +5 -0
  50. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -0
  51. package/dist/elements/LivePreview/Window/index.js +182 -0
  52. package/dist/elements/LivePreview/Window/index.js.map +1 -0
  53. package/dist/elements/LivePreview/Window/index.scss +48 -0
  54. package/dist/elements/PreviewButton/index.d.ts +1 -0
  55. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  56. package/dist/elements/PreviewButton/index.js +13 -10
  57. package/dist/elements/PreviewButton/index.js.map +1 -1
  58. package/dist/elements/PreviewButton/index.scss +39 -0
  59. package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -1
  60. package/dist/elements/PreviewButton/usePreviewURL.js +1 -1
  61. package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
  62. package/dist/exports/client/index.d.ts +2 -1
  63. package/dist/exports/client/index.d.ts.map +1 -1
  64. package/dist/exports/client/index.js +22 -22
  65. package/dist/exports/client/index.js.map +4 -4
  66. package/dist/exports/shared/index.js +1 -1
  67. package/dist/exports/shared/index.js.map +2 -2
  68. package/dist/forms/Form/index.d.ts.map +1 -1
  69. package/dist/forms/Form/index.js +1 -1
  70. package/dist/forms/Form/index.js.map +1 -1
  71. package/dist/forms/Form/mergeServerFormState.js +1 -1
  72. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  73. package/dist/hooks/usePopupWindow.d.ts +20 -0
  74. package/dist/hooks/usePopupWindow.d.ts.map +1 -0
  75. package/dist/hooks/usePopupWindow.js +144 -0
  76. package/dist/hooks/usePopupWindow.js.map +1 -0
  77. package/dist/icons/ExternalLink/index.d.ts.map +1 -0
  78. package/dist/icons/ExternalLink/index.js.map +1 -0
  79. package/dist/icons/Eye/index.d.ts +7 -0
  80. package/dist/icons/Eye/index.d.ts.map +1 -0
  81. package/dist/icons/Eye/index.js +28 -0
  82. package/dist/icons/Eye/index.js.map +1 -0
  83. package/dist/icons/Eye/index.scss +20 -0
  84. package/dist/providers/LivePreview/collisionDetection.d.ts +3 -0
  85. package/dist/providers/LivePreview/collisionDetection.d.ts.map +1 -0
  86. package/dist/providers/LivePreview/collisionDetection.js +29 -0
  87. package/dist/providers/LivePreview/collisionDetection.js.map +1 -0
  88. package/dist/providers/LivePreview/context.d.ts +55 -0
  89. package/dist/providers/LivePreview/context.d.ts.map +1 -0
  90. package/dist/providers/LivePreview/context.js +44 -0
  91. package/dist/providers/LivePreview/context.js.map +1 -0
  92. package/dist/providers/LivePreview/index.d.ts +16 -0
  93. package/dist/providers/LivePreview/index.d.ts.map +1 -0
  94. package/dist/providers/LivePreview/index.js +206 -0
  95. package/dist/providers/LivePreview/index.js.map +1 -0
  96. package/dist/providers/LivePreview/index.scss +68 -0
  97. package/dist/providers/LivePreview/sizeReducer.d.ts +20 -0
  98. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -0
  99. package/dist/providers/LivePreview/sizeReducer.js +30 -0
  100. package/dist/providers/LivePreview/sizeReducer.js.map +1 -0
  101. package/dist/styles.css +1 -1
  102. package/dist/utilities/formatDocTitle/index.js +2 -2
  103. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  104. package/dist/views/Edit/index.d.ts.map +1 -1
  105. package/dist/views/Edit/index.js +52 -41
  106. package/dist/views/Edit/index.js.map +1 -1
  107. package/dist/views/Edit/index.scss +39 -1
  108. package/package.json +5 -5
  109. package/dist/graphics/ExternalLink/index.d.ts.map +0 -1
  110. package/dist/graphics/ExternalLink/index.js.map +0 -1
  111. /package/dist/{graphics → icons}/ExternalLink/index.d.ts +0 -0
  112. /package/dist/{graphics → icons}/ExternalLink/index.js +0 -0
  113. /package/dist/{graphics → icons}/ExternalLink/index.scss +0 -0
@@ -13,7 +13,7 @@ export const formatDocTitle = ({
13
13
  if (collectionConfig) {
14
14
  const useAsTitle = collectionConfig?.admin?.useAsTitle;
15
15
  if (useAsTitle) {
16
- title = data?.[useAsTitle] || title;
16
+ title = data?.[useAsTitle];
17
17
  if (title) {
18
18
  const fieldConfig = collectionConfig.fields.find(f => 'name' in f && f.name === useAsTitle);
19
19
  const isDate = fieldConfig?.type === 'date';
@@ -32,7 +32,7 @@ export const formatDocTitle = ({
32
32
  title = getTranslation(globalConfig?.label, i18n) || globalConfig?.slug;
33
33
  }
34
34
  // richtext lexical case. We convert the first child of root to plain text
35
- if (isSerializedLexicalEditor(title)) {
35
+ if (title && isSerializedLexicalEditor(title)) {
36
36
  title = formatLexicalDocTitle(title.root.children?.[0]?.children || [], '');
37
37
  }
38
38
  if (!title && isSerializedLexicalEditor(fallback)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","formatDate","formatLexicalDocTitle","isSerializedLexicalEditor","formatDocTitle","collectionConfig","data","dateFormat","dateFormatFromConfig","fallback","globalConfig","i18n","title","useAsTitle","admin","fieldConfig","fields","find","f","name","isDate","type","date","displayFormat","pattern","label","slug","root","children","t"],"sources":["../../../src/utilities/formatDocTitle/index.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n SanitizedConfig,\n TypeWithID,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { formatDate } from './formatDateTitle.js'\nimport { formatLexicalDocTitle, isSerializedLexicalEditor } from './formatLexicalDocTitle.js'\n\nexport const formatDocTitle = ({\n collectionConfig,\n data,\n dateFormat: dateFormatFromConfig,\n fallback,\n globalConfig,\n i18n,\n}: {\n collectionConfig?: ClientCollectionConfig\n data: TypeWithID\n dateFormat: SanitizedConfig['admin']['dateFormat']\n fallback?: object | string\n globalConfig?: ClientGlobalConfig\n i18n: I18n<any, any>\n}): string => {\n let title: string\n\n if (collectionConfig) {\n const useAsTitle = collectionConfig?.admin?.useAsTitle\n\n if (useAsTitle) {\n title = data?.[useAsTitle] || title\n\n if (title) {\n const fieldConfig = collectionConfig.fields.find(\n (f) => 'name' in f && f.name === useAsTitle,\n )\n\n const isDate = fieldConfig?.type === 'date'\n\n if (isDate) {\n const dateFormat =\n ('date' in fieldConfig.admin && fieldConfig?.admin?.date?.displayFormat) ||\n dateFormatFromConfig\n\n title = formatDate({ date: title, i18n, pattern: dateFormat }) || title\n }\n }\n }\n }\n\n if (globalConfig) {\n title = getTranslation(globalConfig?.label, i18n) || globalConfig?.slug\n }\n\n // richtext lexical case. We convert the first child of root to plain text\n if (isSerializedLexicalEditor(title)) {\n title = formatLexicalDocTitle(title.root.children?.[0]?.children || [], '')\n }\n\n if (!title && isSerializedLexicalEditor(fallback)) {\n title = formatLexicalDocTitle(fallback.root.children?.[0]?.children || [], '')\n }\n\n if (!title) {\n title = typeof fallback === 'string' ? fallback : `[${i18n.t('general:untitled')}]`\n }\n\n return title\n}\n"],"mappings":"AAQA,SAASA,cAAc,QAAQ;AAE/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,qBAAqB,EAAEC,yBAAyB,QAAQ;AAEjE,OAAO,MAAMC,cAAA,GAAiBA,CAAC;EAC7BC,gBAAgB;EAChBC,IAAI;EACJC,UAAA,EAAYC,oBAAoB;EAChCC,QAAQ;EACRC,YAAY;EACZC;AAAI,CAQL;EACC,IAAIC,KAAA;EAEJ,IAAIP,gBAAA,EAAkB;IACpB,MAAMQ,UAAA,GAAaR,gBAAA,EAAkBS,KAAA,EAAOD,UAAA;IAE5C,IAAIA,UAAA,EAAY;MACdD,KAAA,GAAQN,IAAA,GAAOO,UAAA,CAAW,IAAID,KAAA;MAE9B,IAAIA,KAAA,EAAO;QACT,MAAMG,WAAA,GAAcV,gBAAA,CAAiBW,MAAM,CAACC,IAAI,CAC7CC,CAAA,IAAM,UAAUA,CAAA,IAAKA,CAAA,CAAEC,IAAI,KAAKN,UAAA;QAGnC,MAAMO,MAAA,GAASL,WAAA,EAAaM,IAAA,KAAS;QAErC,IAAID,MAAA,EAAQ;UACV,MAAMb,UAAA,GACJ,MAAC,IAAUQ,WAAA,CAAYD,KAAK,IAAIC,WAAA,EAAaD,KAAA,EAAOQ,IAAA,EAAMC,aAAA,IAC1Df,oBAAA;UAEFI,KAAA,GAAQX,UAAA,CAAW;YAAEqB,IAAA,EAAMV,KAAA;YAAOD,IAAA;YAAMa,OAAA,EAASjB;UAAW,MAAMK,KAAA;QACpE;MACF;IACF;EACF;EAEA,IAAIF,YAAA,EAAc;IAChBE,KAAA,GAAQZ,cAAA,CAAeU,YAAA,EAAce,KAAA,EAAOd,IAAA,KAASD,YAAA,EAAcgB,IAAA;EACrE;EAEA;EACA,IAAIvB,yBAAA,CAA0BS,KAAA,GAAQ;IACpCA,KAAA,GAAQV,qBAAA,CAAsBU,KAAA,CAAMe,IAAI,CAACC,QAAQ,GAAG,EAAE,EAAEA,QAAA,IAAY,EAAE,EAAE;EAC1E;EAEA,IAAI,CAAChB,KAAA,IAAST,yBAAA,CAA0BM,QAAA,GAAW;IACjDG,KAAA,GAAQV,qBAAA,CAAsBO,QAAA,CAASkB,IAAI,CAACC,QAAQ,GAAG,EAAE,EAAEA,QAAA,IAAY,EAAE,EAAE;EAC7E;EAEA,IAAI,CAAChB,KAAA,EAAO;IACVA,KAAA,GAAQ,OAAOH,QAAA,KAAa,WAAWA,QAAA,GAAW,IAAIE,IAAA,CAAKkB,CAAC,CAAC,sBAAsB;EACrF;EAEA,OAAOjB,KAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","formatDate","formatLexicalDocTitle","isSerializedLexicalEditor","formatDocTitle","collectionConfig","data","dateFormat","dateFormatFromConfig","fallback","globalConfig","i18n","title","useAsTitle","admin","fieldConfig","fields","find","f","name","isDate","type","date","displayFormat","pattern","label","slug","root","children","t"],"sources":["../../../src/utilities/formatDocTitle/index.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n SanitizedConfig,\n TypeWithID,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { formatDate } from './formatDateTitle.js'\nimport { formatLexicalDocTitle, isSerializedLexicalEditor } from './formatLexicalDocTitle.js'\n\nexport const formatDocTitle = ({\n collectionConfig,\n data,\n dateFormat: dateFormatFromConfig,\n fallback,\n globalConfig,\n i18n,\n}: {\n collectionConfig?: ClientCollectionConfig\n data: TypeWithID\n dateFormat: SanitizedConfig['admin']['dateFormat']\n fallback?: object | string\n globalConfig?: ClientGlobalConfig\n i18n: I18n<any, any>\n}): string => {\n let title: string\n\n if (collectionConfig) {\n const useAsTitle = collectionConfig?.admin?.useAsTitle\n\n if (useAsTitle) {\n title = data?.[useAsTitle] as string\n\n if (title) {\n const fieldConfig = collectionConfig.fields.find(\n (f) => 'name' in f && f.name === useAsTitle,\n )\n\n const isDate = fieldConfig?.type === 'date'\n\n if (isDate) {\n const dateFormat =\n ('date' in fieldConfig.admin && fieldConfig?.admin?.date?.displayFormat) ||\n dateFormatFromConfig\n\n title = formatDate({ date: title, i18n, pattern: dateFormat }) || title\n }\n }\n }\n }\n\n if (globalConfig) {\n title = getTranslation(globalConfig?.label, i18n) || globalConfig?.slug\n }\n\n // richtext lexical case. We convert the first child of root to plain text\n if (title && isSerializedLexicalEditor(title)) {\n title = formatLexicalDocTitle(title.root.children?.[0]?.children || [], '')\n }\n\n if (!title && isSerializedLexicalEditor(fallback)) {\n title = formatLexicalDocTitle(fallback.root.children?.[0]?.children || [], '')\n }\n\n if (!title) {\n title = typeof fallback === 'string' ? fallback : `[${i18n.t('general:untitled')}]`\n }\n\n return title\n}\n"],"mappings":"AAQA,SAASA,cAAc,QAAQ;AAE/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,qBAAqB,EAAEC,yBAAyB,QAAQ;AAEjE,OAAO,MAAMC,cAAA,GAAiBA,CAAC;EAC7BC,gBAAgB;EAChBC,IAAI;EACJC,UAAA,EAAYC,oBAAoB;EAChCC,QAAQ;EACRC,YAAY;EACZC;AAAI,CAQL;EACC,IAAIC,KAAA;EAEJ,IAAIP,gBAAA,EAAkB;IACpB,MAAMQ,UAAA,GAAaR,gBAAA,EAAkBS,KAAA,EAAOD,UAAA;IAE5C,IAAIA,UAAA,EAAY;MACdD,KAAA,GAAQN,IAAA,GAAOO,UAAA,CAAW;MAE1B,IAAID,KAAA,EAAO;QACT,MAAMG,WAAA,GAAcV,gBAAA,CAAiBW,MAAM,CAACC,IAAI,CAC7CC,CAAA,IAAM,UAAUA,CAAA,IAAKA,CAAA,CAAEC,IAAI,KAAKN,UAAA;QAGnC,MAAMO,MAAA,GAASL,WAAA,EAAaM,IAAA,KAAS;QAErC,IAAID,MAAA,EAAQ;UACV,MAAMb,UAAA,GACJ,MAAC,IAAUQ,WAAA,CAAYD,KAAK,IAAIC,WAAA,EAAaD,KAAA,EAAOQ,IAAA,EAAMC,aAAA,IAC1Df,oBAAA;UAEFI,KAAA,GAAQX,UAAA,CAAW;YAAEqB,IAAA,EAAMV,KAAA;YAAOD,IAAA;YAAMa,OAAA,EAASjB;UAAW,MAAMK,KAAA;QACpE;MACF;IACF;EACF;EAEA,IAAIF,YAAA,EAAc;IAChBE,KAAA,GAAQZ,cAAA,CAAeU,YAAA,EAAce,KAAA,EAAOd,IAAA,KAASD,YAAA,EAAcgB,IAAA;EACrE;EAEA;EACA,IAAId,KAAA,IAAST,yBAAA,CAA0BS,KAAA,GAAQ;IAC7CA,KAAA,GAAQV,qBAAA,CAAsBU,KAAA,CAAMe,IAAI,CAACC,QAAQ,GAAG,EAAE,EAAEA,QAAA,IAAY,EAAE,EAAE;EAC1E;EAEA,IAAI,CAAChB,KAAA,IAAST,yBAAA,CAA0BM,QAAA,GAAW;IACjDG,KAAA,GAAQV,qBAAA,CAAsBO,QAAA,CAASkB,IAAI,CAACC,QAAQ,GAAG,EAAE,EAAEA,QAAA,IAAY,EAAE,EAAE;EAC7E;EAEA,IAAI,CAAChB,KAAA,EAAO;IACVA,KAAA,GAAQ,OAAOH,QAAA,KAAa,WAAWA,QAAA,GAAW,IAAIE,IAAA,CAAKkB,CAAC,CAAC,sBAAsB;EACrF;EAEA,OAAOjB,KAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,uBAAuB,EAAa,MAAM,SAAS,CAAA;AAI7E,OAAO,KAAsE,MAAM,OAAO,CAAA;AA8B1F,OAAO,cAAc,CAAA;AAQrB,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBA4iBzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,uBAAuB,EAAa,MAAM,SAAS,CAAA;AAI7E,OAAO,KAAsE,MAAM,OAAO,CAAA;AAiC1F,OAAO,cAAc,CAAA;AAOrB,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBAokBzB"}
@@ -11,6 +11,7 @@ import { DocumentFields } from '../../elements/DocumentFields/index.js';
11
11
  import { DocumentLocked } from '../../elements/DocumentLocked/index.js';
12
12
  import { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js';
13
13
  import { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js';
14
+ import { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js';
14
15
  import { Upload } from '../../elements/Upload/index.js';
15
16
  import { Form } from '../../forms/Form/index.js';
16
17
  import { useAuth } from '../../providers/Auth/index.js';
@@ -18,6 +19,7 @@ import { useConfig } from '../../providers/Config/index.js';
18
19
  import { useDocumentEvents } from '../../providers/DocumentEvents/index.js';
19
20
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
20
21
  import { useEditDepth } from '../../providers/EditDepth/index.js';
22
+ import { useLivePreviewContext } from '../../providers/LivePreview/context.js';
21
23
  import { OperationProvider } from '../../providers/Operation/index.js';
22
24
  import { useRouteTransition } from '../../providers/RouteTransition/index.js';
23
25
  import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
@@ -29,8 +31,8 @@ import { handleGoBack } from '../../utilities/handleGoBack.js';
29
31
  import { handleTakeOver } from '../../utilities/handleTakeOver.js';
30
32
  import { Auth } from './Auth/index.js';
31
33
  import { SetDocumentStepNav } from './SetDocumentStepNav/index.js';
32
- import './index.scss';
33
34
  import { SetDocumentTitle } from './SetDocumentTitle/index.js';
35
+ import './index.scss';
34
36
  const baseClass = 'collection-edit';
35
37
  // This component receives props only on _pages_
36
38
  // When rendered within a drawer, props are empty
@@ -125,6 +127,11 @@ export function DefaultEditView({
125
127
  const {
126
128
  startRouteTransition
127
129
  } = useRouteTransition();
130
+ const {
131
+ isLivePreviewEnabled,
132
+ isLivePreviewing,
133
+ previewWindowType
134
+ } = useLivePreviewContext();
128
135
  const abortOnChangeRef = useRef(null);
129
136
  const abortOnSaveRef = useRef(null);
130
137
  const locale = params.get('locale');
@@ -151,13 +158,6 @@ export function DefaultEditView({
151
158
  isLocked: false,
152
159
  user: null
153
160
  });
154
- const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`];
155
- if (globalSlug) {
156
- classes.push(`global-edit--${globalSlug}`);
157
- }
158
- if (collectionSlug) {
159
- classes.push(`collection-edit--${collectionSlug}`);
160
- }
161
161
  const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug]);
162
162
  const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {
163
163
  if (operation === 'create' && auth && !auth.disableLocalStrategy) {
@@ -314,7 +314,7 @@ export function DefaultEditView({
314
314
  const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal && !documentLockStateRef.current?.hasShownLockedModal && !isLockExpired;
315
315
  const isFolderCollection = config.folders && collectionSlug === config.folders?.slug;
316
316
  return /*#__PURE__*/_jsx("main", {
317
- className: classes.filter(Boolean).join(' '),
317
+ className: [baseClass, (id || globalSlug) && `${baseClass}--is-editing`, globalSlug && `global-edit--${globalSlug}`, collectionSlug && `collection-edit--${collectionSlug}`, isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`].filter(Boolean).join(' '),
318
318
  children: /*#__PURE__*/_jsx(OperationProvider, {
319
319
  operation: operation,
320
320
  children: /*#__PURE__*/_jsxs(Form, {
@@ -383,6 +383,7 @@ export function DefaultEditView({
383
383
  hasSavePermission: hasSavePermission,
384
384
  id: id,
385
385
  isEditing: isEditing,
386
+ isInDrawer: isInDrawer,
386
387
  onDelete: onDelete,
387
388
  onDrawerCreateNew: clearDoc,
388
389
  onDuplicate: onDuplicate,
@@ -394,39 +395,49 @@ export function DefaultEditView({
394
395
  redirectAfterDuplicate: redirectAfterDuplicate,
395
396
  slug: collectionConfig?.slug || globalConfig?.slug,
396
397
  user: currentEditor
397
- }), /*#__PURE__*/_jsx(DocumentFields, {
398
- AfterFields: AfterFields,
399
- BeforeFields: BeforeFields || /*#__PURE__*/_jsxs(Fragment, {
400
- children: [auth && /*#__PURE__*/_jsx(Auth, {
401
- className: `${baseClass}__auth`,
402
- collectionSlug: collectionConfig.slug,
403
- disableLocalStrategy: collectionConfig.auth?.disableLocalStrategy,
404
- email: savedDocumentData?.email,
405
- loginWithUsername: auth?.loginWithUsername,
406
- operation: operation,
407
- readOnly: !hasSavePermission,
408
- requirePassword: !id,
409
- setValidateBeforeSubmit: setValidateBeforeSubmit,
410
- useAPIKey: auth.useAPIKey,
411
- username: savedDocumentData?.username,
412
- verify: auth.verify
413
- }), upload && /*#__PURE__*/_jsx(React.Fragment, {
414
- children: /*#__PURE__*/_jsx(UploadControlsProvider, {
415
- children: CustomUpload || /*#__PURE__*/_jsx(Upload, {
398
+ }), /*#__PURE__*/_jsxs("div", {
399
+ className: [`${baseClass}__main-wrapper`, previewWindowType === 'popup' && `${baseClass}--detached`].filter(Boolean).join(' '),
400
+ children: [/*#__PURE__*/_jsxs("div", {
401
+ className: [`${baseClass}__main`, previewWindowType === 'popup' && `${baseClass}__main--popup-open`].filter(Boolean).join(' '),
402
+ children: [/*#__PURE__*/_jsx(DocumentFields, {
403
+ AfterFields: AfterFields,
404
+ BeforeFields: BeforeFields || /*#__PURE__*/_jsxs(Fragment, {
405
+ children: [auth && /*#__PURE__*/_jsx(Auth, {
406
+ className: `${baseClass}__auth`,
416
407
  collectionSlug: collectionConfig.slug,
417
- initialState: initialState,
418
- uploadConfig: upload,
419
- UploadControls: UploadControls
420
- })
421
- })
422
- })]
423
- }),
424
- Description: Description,
425
- docPermissions: docPermissions,
426
- fields: docConfig.fields,
427
- readOnly: isReadOnlyForIncomingUser || !hasSavePermission,
428
- schemaPathSegments: schemaPathSegments
429
- }), AfterDocument]
408
+ disableLocalStrategy: collectionConfig.auth?.disableLocalStrategy,
409
+ email: savedDocumentData?.email,
410
+ loginWithUsername: auth?.loginWithUsername,
411
+ operation: operation,
412
+ readOnly: !hasSavePermission,
413
+ requirePassword: !id,
414
+ setValidateBeforeSubmit: setValidateBeforeSubmit,
415
+ useAPIKey: auth.useAPIKey,
416
+ username: savedDocumentData?.username,
417
+ verify: auth.verify
418
+ }), upload && /*#__PURE__*/_jsx(React.Fragment, {
419
+ children: /*#__PURE__*/_jsx(UploadControlsProvider, {
420
+ children: CustomUpload || /*#__PURE__*/_jsx(Upload, {
421
+ collectionSlug: collectionConfig.slug,
422
+ initialState: initialState,
423
+ uploadConfig: upload,
424
+ UploadControls: UploadControls
425
+ })
426
+ })
427
+ })]
428
+ }),
429
+ Description: Description,
430
+ docPermissions: docPermissions,
431
+ fields: docConfig.fields,
432
+ forceSidebarWrap: isLivePreviewing,
433
+ readOnly: isReadOnlyForIncomingUser || !hasSavePermission,
434
+ schemaPathSegments: schemaPathSegments
435
+ }), AfterDocument]
436
+ }), isLivePreviewEnabled && !isInDrawer && /*#__PURE__*/_jsx(LivePreviewWindow, {
437
+ collectionSlug: collectionSlug,
438
+ globalSlug: globalSlug
439
+ })]
440
+ })]
430
441
  })
431
442
  })
432
443
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","BeforeDocumentControls","Description","EditMenuItems","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","savedDocumentData","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","json","controller","document","doc","result","updatedAt","toISOString","redirectRoute","path","docPreferences","state","data","renderAllFields","returnLockStatus","schemaPath","join","signal","skipValidation","onChange","formState","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","shouldUnlockDocument","some","window","location","pathname","includes","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","isFolderCollection","folders","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","isDocumentForm","method","onSuccess","showDocumentID","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["/* eslint-disable react-compiler/react-compiler -- TODO: fix */\n'use client'\n\nimport type { ClientUser, DocumentViewClientProps, FormState } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport './index.scss'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n savedDocumentData,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\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 autosaveEnabled = Boolean(\n (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave),\n )\n\n const preventLeaveWithoutSaving =\n typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled\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 classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\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 = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: document?.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 incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...json,\n operation,\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n abortOnSaveRef.current = null\n\n return state\n }\n },\n [\n reportUpdate,\n id,\n entitySlug,\n user,\n collectionSlug,\n userSlug,\n incrementVersionCount,\n updateSavedDocumentData,\n onSaveFromContext,\n redirectAfterCreate,\n isEditing,\n depth,\n getDocPermissions,\n globalSlug,\n autosaveEnabled,\n refreshCookieAsync,\n adminRoute,\n locale,\n router,\n resetUploadEdits,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n schemaPathSegments,\n isLockingEnabled,\n setDocumentIsLocked,\n startRouteTransition,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\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 skipValidation: !submitted,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only want to render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Only retain the lock if the user is still viewing the document\n const shouldUnlockDocument = !['preview', 'api', 'versions'].some((path) =>\n window.location.pathname.includes(path),\n )\n if (shouldUnlockDocument) {\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\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 const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\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 !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader drawerSlug={drawerSlug} showDocumentID={!isFolderCollection} />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\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 {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={savedDocumentData}\n disableActions={disableActions || isFolderCollection}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onSave={onSave}\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 redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={savedDocumentData?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={savedDocumentData?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","OperationProvider","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","BeforeDocumentControls","Description","EditMenuItems","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","savedDocumentData","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","isLivePreviewEnabled","isLivePreviewing","previewWindowType","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","json","controller","document","doc","result","updatedAt","toISOString","redirectRoute","path","push","docPreferences","state","data","renderAllFields","returnLockStatus","schemaPath","join","signal","skipValidation","onChange","formState","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","shouldUnlockDocument","some","window","location","pathname","includes","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","isFolderCollection","folders","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","isDocumentForm","method","onSuccess","showDocumentID","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["/* eslint-disable react-compiler/react-compiler -- TODO: fix */\n'use client'\n\nimport type { ClientUser, DocumentViewClientProps, FormState } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n savedDocumentData,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { isLivePreviewEnabled, isLivePreviewing, previewWindowType } = useLivePreviewContext()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\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 autosaveEnabled = Boolean(\n (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave),\n )\n\n const preventLeaveWithoutSaving =\n typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled\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 schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\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 = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: document?.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 incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...json,\n operation,\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n abortOnSaveRef.current = null\n\n return state\n }\n },\n [\n reportUpdate,\n id,\n entitySlug,\n user,\n collectionSlug,\n userSlug,\n incrementVersionCount,\n updateSavedDocumentData,\n onSaveFromContext,\n redirectAfterCreate,\n isEditing,\n depth,\n getDocPermissions,\n globalSlug,\n autosaveEnabled,\n refreshCookieAsync,\n adminRoute,\n locale,\n router,\n resetUploadEdits,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n schemaPathSegments,\n isLockingEnabled,\n setDocumentIsLocked,\n startRouteTransition,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\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 skipValidation: !submitted,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only want to render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Only retain the lock if the user is still viewing the document\n const shouldUnlockDocument = !['preview', 'api', 'versions'].some((path) =>\n window.location.pathname.includes(path),\n )\n if (shouldUnlockDocument) {\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\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 const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\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 !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader drawerSlug={drawerSlug} showDocumentID={!isFolderCollection} />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\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 {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={savedDocumentData}\n disableActions={disableActions || isFolderCollection}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onSave={onSave}\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 redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\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={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={savedDocumentData?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={savedDocumentData?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,10 +2,42 @@
2
2
 
3
3
  @layer payload-default {
4
4
  .collection-edit {
5
- width: 100%;
5
+ --gradient: linear-gradient(to left, rgba(0, 0, 0, 0.04) 0%, transparent 100%);
6
+
7
+ &__main-wrapper {
8
+ width: 100%;
9
+ display: flex;
10
+ }
11
+
12
+ &__main {
13
+ width: 100%;
14
+ container-type: inline-size;
15
+
16
+ &--popup-open {
17
+ width: 100%;
18
+ }
19
+
20
+ &--is-live-previewing {
21
+ width: 40%;
22
+ position: relative;
23
+
24
+ &::after {
25
+ content: ' ';
26
+ position: absolute;
27
+ top: 0;
28
+ right: 0;
29
+ width: calc(var(--base) * 2);
30
+ height: 100%;
31
+ background: var(--gradient);
32
+ pointer-events: none;
33
+ z-index: -1;
34
+ }
35
+ }
36
+ }
6
37
 
7
38
  &__form {
8
39
  height: 100%;
40
+ width: 100%;
9
41
  }
10
42
 
11
43
  &__auth {
@@ -20,4 +52,10 @@
20
52
  }
21
53
  }
22
54
  }
55
+
56
+ html[data-theme='dark'] {
57
+ .collection-edit {
58
+ --gradient: linear-gradient(to left, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
59
+ }
60
+ }
23
61
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.44.0",
3
+ "version": "3.45.0-canary.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -136,7 +136,7 @@
136
136
  "ts-essentials": "10.0.3",
137
137
  "use-context-selector": "2.0.0",
138
138
  "uuid": "10.0.0",
139
- "@payloadcms/translations": "3.44.0"
139
+ "@payloadcms/translations": "3.45.0-canary.0"
140
140
  },
141
141
  "devDependencies": {
142
142
  "@babel/cli": "7.27.2",
@@ -151,14 +151,14 @@
151
151
  "babel-plugin-react-compiler": "19.1.0-rc.2",
152
152
  "esbuild": "0.25.5",
153
153
  "esbuild-sass-plugin": "3.3.1",
154
- "payload": "3.44.0",
155
- "@payloadcms/eslint-config": "3.28.0"
154
+ "@payloadcms/eslint-config": "3.28.0",
155
+ "payload": "3.45.0-canary.0"
156
156
  },
157
157
  "peerDependencies": {
158
158
  "next": "^15.2.3",
159
159
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
160
160
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
161
- "payload": "3.44.0"
161
+ "payload": "3.45.0-canary.0"
162
162
  },
163
163
  "engines": {
164
164
  "node": "^18.20.2 || >=20.9.0"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphics/ExternalLink/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAeA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["React","ExternalLinkIcon","props","className","_jsx","filter","Boolean","join","viewBox","xmlns","d","strokeLinecap"],"sources":["../../../src/graphics/ExternalLink/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport './index.scss'\n\nexport const ExternalLinkIcon: React.FC<{\n className?: string\n}> = (props) => {\n const { className } = props\n return (\n <svg\n className={[className, 'icon icon--externalLink'].filter(Boolean).join(' ')}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M16 10.6667V14.6667C16 15.0203 15.8595 15.3594 15.6095 15.6095C15.3594 15.8595 15.0203 16 14.6667 16H5.33333C4.97971 16 4.64057 15.8595 4.39052 15.6095C4.14048 15.3594 4 15.0203 4 14.6667V5.33333C4 4.97971 4.14048 4.64057 4.39052 4.39052C4.64057 4.14048 4.97971 4 5.33333 4H9.33333M16 4L10 10M16 4H12M16 4V8\"\n strokeLinecap=\"square\"\n />\n </svg>\n )\n}\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,OAAO,MAAMC,gBAAA,GAEPC,KAAA;EACJ,MAAM;IAAEC;EAAS,CAAE,GAAGD,KAAA;EACtB,oBACEE,IAAA,CAAC;IACCD,SAAA,EAAW,CAACA,SAAA,EAAW,0BAA0B,CAACE,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;IACvEC,OAAA,EAAQ;IACRC,KAAA,EAAM;cAEN,aAAAL,IAAA,CAAC;MACCD,SAAA,EAAU;MACVO,CAAA,EAAE;MACFC,aAAA,EAAc;;;AAItB","ignoreList":[]}
File without changes