@payloadcms/ui 3.57.0-internal.f26caed → 3.57.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 (145) hide show
  1. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FileSidebar/index.js +74 -38
  3. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FileSidebar/index.scss +14 -1
  5. package/dist/elements/BulkUpload/FormsManager/index.d.ts +6 -1
  6. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/index.js +52 -14
  8. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +2 -2
  10. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/reducer.js +5 -5
  12. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  13. package/dist/elements/BulkUpload/index.d.ts +30 -5
  14. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  15. package/dist/elements/BulkUpload/index.js +130 -28
  16. package/dist/elements/BulkUpload/index.js.map +1 -1
  17. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
  18. package/dist/elements/ConfirmationModal/index.js +1 -0
  19. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  20. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  21. package/dist/elements/DocumentLocked/index.js +41 -33
  22. package/dist/elements/DocumentLocked/index.js.map +1 -1
  23. package/dist/elements/DocumentTakeOver/index.d.ts.map +1 -1
  24. package/dist/elements/DocumentTakeOver/index.js +27 -19
  25. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  26. package/dist/elements/Drawer/index.d.ts.map +1 -1
  27. package/dist/elements/Drawer/index.js +1 -0
  28. package/dist/elements/Drawer/index.js.map +1 -1
  29. package/dist/elements/FullscreenModal/index.d.ts.map +1 -1
  30. package/dist/elements/FullscreenModal/index.js +1 -0
  31. package/dist/elements/FullscreenModal/index.js.map +1 -1
  32. package/dist/elements/LivePreview/IFrame/index.d.ts +1 -7
  33. package/dist/elements/LivePreview/IFrame/index.d.ts.map +1 -1
  34. package/dist/elements/LivePreview/IFrame/index.js +39 -18
  35. package/dist/elements/LivePreview/IFrame/index.js.map +1 -1
  36. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  37. package/dist/elements/LivePreview/Window/index.js +135 -61
  38. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  39. package/dist/elements/PublishButton/index.js +1 -1
  40. package/dist/elements/PublishButton/index.js.map +1 -1
  41. package/dist/elements/SearchBar/index.scss +4 -0
  42. package/dist/elements/Status/index.d.ts.map +1 -1
  43. package/dist/elements/Status/index.js +9 -19
  44. package/dist/elements/Status/index.js.map +1 -1
  45. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  46. package/dist/elements/Table/DefaultCell/index.js +20 -14
  47. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  48. package/dist/elements/Thumbnail/index.d.ts +4 -2
  49. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  50. package/dist/elements/Thumbnail/index.js +6 -2
  51. package/dist/elements/Thumbnail/index.js.map +1 -1
  52. package/dist/elements/Thumbnail/index.scss +11 -9
  53. package/dist/elements/Toasts/fieldErrors.js +1 -1
  54. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  55. package/dist/exports/client/index.js +24 -24
  56. package/dist/exports/client/index.js.map +4 -4
  57. package/dist/exports/rsc/index.d.ts +1 -0
  58. package/dist/exports/rsc/index.d.ts.map +1 -1
  59. package/dist/exports/rsc/index.js +1 -0
  60. package/dist/exports/rsc/index.js.map +1 -1
  61. package/dist/exports/shared/index.js +2 -2
  62. package/dist/exports/shared/index.js.map +3 -3
  63. package/dist/fields/Blocks/index.d.ts.map +1 -1
  64. package/dist/fields/Blocks/index.js +36 -16
  65. package/dist/fields/Blocks/index.js.map +1 -1
  66. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  67. package/dist/fields/Relationship/Input.js +1 -5
  68. package/dist/fields/Relationship/Input.js.map +1 -1
  69. package/dist/fields/Upload/Input.js +20 -20
  70. package/dist/fields/Upload/Input.js.map +1 -1
  71. package/dist/forms/Form/index.js +1 -2
  72. package/dist/forms/Form/index.js.map +1 -1
  73. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  74. package/dist/forms/Form/mergeServerFormState.js +8 -0
  75. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  76. package/dist/forms/Form/types.d.ts +2 -2
  77. package/dist/forms/Form/types.d.ts.map +1 -1
  78. package/dist/forms/Form/types.js.map +1 -1
  79. package/dist/forms/RenderFields/RenderField.js +223 -236
  80. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  81. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  82. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +33 -2
  83. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  84. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  85. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  86. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  87. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
  88. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +2 -0
  89. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  90. package/dist/forms/fieldSchemasToFormState/types.d.ts +6 -0
  91. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  92. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  93. package/dist/forms/useField/index.d.ts.map +1 -1
  94. package/dist/forms/useField/index.js +76 -73
  95. package/dist/forms/useField/index.js.map +1 -1
  96. package/dist/forms/useField/types.d.ts +5 -9
  97. package/dist/forms/useField/types.d.ts.map +1 -1
  98. package/dist/forms/useField/types.js.map +1 -1
  99. package/dist/providers/LivePreview/context.d.ts +17 -2
  100. package/dist/providers/LivePreview/context.d.ts.map +1 -1
  101. package/dist/providers/LivePreview/context.js +3 -2
  102. package/dist/providers/LivePreview/context.js.map +1 -1
  103. package/dist/providers/LivePreview/index.d.ts +2 -2
  104. package/dist/providers/LivePreview/index.d.ts.map +1 -1
  105. package/dist/providers/LivePreview/index.js +33 -19
  106. package/dist/providers/LivePreview/index.js.map +1 -1
  107. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  108. package/dist/providers/RouteCache/index.js +62 -25
  109. package/dist/providers/RouteCache/index.js.map +1 -1
  110. package/dist/providers/TableColumns/buildColumnState/index.d.ts +2 -1
  111. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  112. package/dist/providers/TableColumns/buildColumnState/index.js +2 -0
  113. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  114. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +3 -2
  115. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  116. package/dist/providers/TableColumns/buildColumnState/renderCell.js +39 -2
  117. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  118. package/dist/styles.css +1 -1
  119. package/dist/utilities/buildFormState.d.ts +2 -0
  120. package/dist/utilities/buildFormState.d.ts.map +1 -1
  121. package/dist/utilities/buildFormState.js +20 -1
  122. package/dist/utilities/buildFormState.js.map +1 -1
  123. package/dist/utilities/formatAbsoluteURL.d.ts +8 -0
  124. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -0
  125. package/dist/utilities/formatAbsoluteURL.js +15 -0
  126. package/dist/utilities/formatAbsoluteURL.js.map +1 -0
  127. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -1
  128. package/dist/utilities/getFolderResultsComponentAndData.js +0 -4
  129. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  130. package/dist/utilities/handleLivePreview.d.ts +58 -0
  131. package/dist/utilities/handleLivePreview.d.ts.map +1 -0
  132. package/dist/utilities/handleLivePreview.js +96 -0
  133. package/dist/utilities/handleLivePreview.js.map +1 -0
  134. package/dist/utilities/handleTakeOver.d.ts +17 -4
  135. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  136. package/dist/utilities/handleTakeOver.js +18 -2
  137. package/dist/utilities/handleTakeOver.js.map +1 -1
  138. package/dist/utilities/renderTable.d.ts +3 -2
  139. package/dist/utilities/renderTable.d.ts.map +1 -1
  140. package/dist/utilities/renderTable.js +2 -0
  141. package/dist/utilities/renderTable.js.map +1 -1
  142. package/dist/views/Edit/index.d.ts.map +1 -1
  143. package/dist/views/Edit/index.js +48 -13
  144. package/dist/views/Edit/index.js.map +1 -1
  145. package/package.json +5 -5
@@ -1,30 +1,51 @@
1
1
  'use client';
2
2
 
3
+ import { c as _c } from "react/compiler-runtime";
3
4
  import { jsx as _jsx } from "react/jsx-runtime";
4
5
  import React from 'react';
5
6
  import { useLivePreviewContext } from '../../../providers/LivePreview/context.js';
6
7
  import './index.scss';
7
8
  const baseClass = 'live-preview-iframe';
8
- export const IFrame = props => {
9
- const {
10
- ref,
11
- setIframeHasLoaded,
12
- url
13
- } = props;
9
+ export const IFrame = () => {
10
+ const $ = _c(8);
14
11
  const {
12
+ iframeRef,
13
+ setLoadedURL,
14
+ url,
15
15
  zoom
16
16
  } = useLivePreviewContext();
17
- return /*#__PURE__*/_jsx("iframe", {
18
- className: baseClass,
19
- onLoad: () => {
20
- setIframeHasLoaded(true);
21
- },
22
- ref: ref,
23
- src: url,
24
- style: {
25
- transform: typeof zoom === 'number' ? `scale(${zoom}) ` : undefined
26
- },
27
- title: url
28
- });
17
+ let t0;
18
+ if ($[0] !== setLoadedURL || $[1] !== url) {
19
+ t0 = () => {
20
+ setLoadedURL(url);
21
+ };
22
+ $[0] = setLoadedURL;
23
+ $[1] = url;
24
+ $[2] = t0;
25
+ } else {
26
+ t0 = $[2];
27
+ }
28
+ const t1 = typeof zoom === "number" ? `scale(${zoom}) ` : undefined;
29
+ let t2;
30
+ if ($[3] !== iframeRef || $[4] !== t0 || $[5] !== t1 || $[6] !== url) {
31
+ t2 = _jsx("iframe", {
32
+ className: baseClass,
33
+ onLoad: t0,
34
+ ref: iframeRef,
35
+ src: url,
36
+ style: {
37
+ transform: t1
38
+ },
39
+ title: url
40
+ }, url);
41
+ $[3] = iframeRef;
42
+ $[4] = t0;
43
+ $[5] = t1;
44
+ $[6] = url;
45
+ $[7] = t2;
46
+ } else {
47
+ t2 = $[7];
48
+ }
49
+ return t2;
29
50
  };
30
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useLivePreviewContext","baseClass","IFrame","props","ref","setIframeHasLoaded","url","zoom","_jsx","className","onLoad","src","style","transform","undefined","title"],"sources":["../../../../src/elements/LivePreview/IFrame/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-iframe'\n\ntype Props = {\n ref: React.RefObject<HTMLIFrameElement>\n setIframeHasLoaded: (value: boolean) => void\n url: string\n}\n\nexport const IFrame: React.FC<Props> = (props) => {\n const { ref, setIframeHasLoaded, url } = props\n\n const { zoom } = useLivePreviewContext()\n\n return (\n <iframe\n className={baseClass}\n onLoad={() => {\n setIframeHasLoaded(true)\n }}\n ref={ref}\n src={url}\n style={{\n transform: typeof zoom === 'number' ? `scale(${zoom}) ` : undefined,\n }}\n title={url}\n />\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,SAASC,qBAAqB,QAAQ;AACtC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAQlB,OAAO,MAAMC,MAAA,GAA2BC,KAAA;EACtC,MAAM;IAAEC,GAAG;IAAEC,kBAAkB;IAAEC;EAAG,CAAE,GAAGH,KAAA;EAEzC,MAAM;IAAEI;EAAI,CAAE,GAAGP,qBAAA;EAEjB,oBACEQ,IAAA,CAAC;IACCC,SAAA,EAAWR,SAAA;IACXS,MAAA,EAAQA,CAAA;MACNL,kBAAA,CAAmB;IACrB;IACAD,GAAA,EAAKA,GAAA;IACLO,GAAA,EAAKL,GAAA;IACLM,KAAA,EAAO;MACLC,SAAA,EAAW,OAAON,IAAA,KAAS,WAAW,SAASA,IAAA,IAAQ,GAAGO;IAC5D;IACAC,KAAA,EAAOT;;AAGb","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useLivePreviewContext","baseClass","IFrame","$","iframeRef","setLoadedURL","url","zoom","t0","t1","undefined","t2","_jsx","className","onLoad","ref","src","style","transform","title"],"sources":["../../../../src/elements/LivePreview/IFrame/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-iframe'\n\nexport const IFrame: React.FC = () => {\n const { iframeRef, setLoadedURL, url, zoom } = useLivePreviewContext()\n\n return (\n <iframe\n className={baseClass}\n key={url}\n onLoad={() => {\n setLoadedURL(url)\n }}\n ref={iframeRef}\n src={url}\n style={{\n transform: typeof zoom === 'number' ? `scale(${zoom}) ` : undefined,\n }}\n title={url}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,SAASC,qBAAqB,QAAQ;AACtC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAAmBA,CAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EAC9B;IAAAM,SAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC;EAAA,IAA+CP,qBAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAL,CAAA,QAAAE,YAAA,IAAAF,CAAA,QAAAG,GAAA;IAMnCE,EAAA,GAAAA,CAAA;MACNH,YAAA,CAAaC,GAAA;IAAA;IACfH,CAAA,MAAAE,YAAA;IAAAF,CAAA,MAAAG,GAAA;IAAAH,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAIa,MAAAM,EAAA,UAAOF,IAAA,KAAS,WAAW,SAASA,IAAA,IAAQ,GAAAG,SAAG;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAK,EAAA,IAAAL,CAAA,QAAAM,EAAA,IAAAN,CAAA,QAAAG,GAAA;IAT9DK,EAAA,GAAAC,IAAA,CAAC;MAAAC,SAAA,EAAAZ,SAAA;MAAAa,MAAA,EAGSN,EAER;MAAAO,GAAA,EACKX,SAAA;MAAAY,GAAA,EACAV,GAAA;MAAAW,KAAA;QAAAC,SAAA,EAEQT;MAA+C;MAAAU,KAAA,EAErDb;IAAA,GATFA,GAAA;IAAAH,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAG,GAAA;IAAAH,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAAA,OAFPQ,EAEO;AAAA,CAYX","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/LivePreview/Window/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,OAAO,KAAoB,MAAM,OAAO,CAAA;AASxC,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA0HrD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/LivePreview/Window/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,OAAO,KAAoB,MAAM,OAAO,CAAA;AAWxC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwHrD,CAAA"}
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
 
3
+ import { c as _c } from "react/compiler-runtime";
3
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
5
  import { reduceFieldsToValues } from 'payload/shared';
5
6
  import React, { useEffect } from 'react';
@@ -10,20 +11,20 @@ import { useLivePreviewContext } from '../../../providers/LivePreview/context.js
10
11
  import { useLocale } from '../../../providers/Locale/index.js';
11
12
  import { ShimmerEffect } from '../../ShimmerEffect/index.js';
12
13
  import { DeviceContainer } from '../Device/index.js';
13
- import './index.scss';
14
14
  import { IFrame } from '../IFrame/index.js';
15
15
  import { LivePreviewToolbar } from '../Toolbar/index.js';
16
+ import './index.scss';
16
17
  const baseClass = 'live-preview-window';
17
18
  export const LivePreviewWindow = props => {
19
+ const $ = _c(49);
18
20
  const {
19
21
  appIsReady,
20
22
  breakpoint,
21
- iframeHasLoaded,
22
23
  iframeRef,
23
24
  isLivePreviewing,
25
+ loadedURL,
24
26
  popupRef,
25
27
  previewWindowType,
26
- setIframeHasLoaded,
27
28
  url
28
29
  } = useLivePreviewContext();
29
30
  const locale = useLocale();
@@ -36,78 +37,151 @@ export const LivePreviewWindow = props => {
36
37
  collectionSlug,
37
38
  globalSlug
38
39
  } = useDocumentInfo();
39
- // For client-side apps, send data through `window.postMessage`
40
- // The preview could either be an iframe embedded on the page
41
- // Or it could be a separate popup window
42
- // We need to transmit data to both accordingly
43
- useEffect(() => {
44
- if (!isLivePreviewing || !appIsReady) {
45
- return;
46
- }
47
- // For performance, do not reduce fields to values until after the iframe or popup has loaded
48
- if (formState) {
49
- const values = reduceFieldsToValues(formState, true);
50
- if (!values.id) {
51
- values.id = id;
40
+ let t0;
41
+ if ($[0] !== appIsReady || $[1] !== collectionSlug || $[2] !== formState || $[3] !== globalSlug || $[4] !== id || $[5] !== iframeRef || $[6] !== isLivePreviewing || $[7] !== locale || $[8] !== mostRecentUpdate || $[9] !== popupRef || $[10] !== previewWindowType || $[11] !== url) {
42
+ t0 = () => {
43
+ if (!isLivePreviewing || !appIsReady) {
44
+ return;
45
+ }
46
+ if (formState) {
47
+ const values = reduceFieldsToValues(formState, true);
48
+ if (!values.id) {
49
+ values.id = id;
50
+ }
51
+ const message = {
52
+ type: "payload-live-preview",
53
+ collectionSlug,
54
+ data: values,
55
+ externallyUpdatedRelationship: mostRecentUpdate,
56
+ globalSlug,
57
+ locale: locale.code
58
+ };
59
+ if (previewWindowType === "popup" && popupRef.current) {
60
+ popupRef.current.postMessage(message, url);
61
+ }
62
+ if (previewWindowType === "iframe" && iframeRef.current) {
63
+ iframeRef.current.contentWindow?.postMessage(message, url);
64
+ }
52
65
  }
53
- const message = {
54
- type: 'payload-live-preview',
55
- collectionSlug,
56
- data: values,
57
- externallyUpdatedRelationship: mostRecentUpdate,
58
- globalSlug,
59
- locale: locale.code
66
+ };
67
+ $[0] = appIsReady;
68
+ $[1] = collectionSlug;
69
+ $[2] = formState;
70
+ $[3] = globalSlug;
71
+ $[4] = id;
72
+ $[5] = iframeRef;
73
+ $[6] = isLivePreviewing;
74
+ $[7] = locale;
75
+ $[8] = mostRecentUpdate;
76
+ $[9] = popupRef;
77
+ $[10] = previewWindowType;
78
+ $[11] = url;
79
+ $[12] = t0;
80
+ } else {
81
+ t0 = $[12];
82
+ }
83
+ let t1;
84
+ if ($[13] !== appIsReady || $[14] !== collectionSlug || $[15] !== formState || $[16] !== globalSlug || $[17] !== id || $[18] !== iframeRef || $[19] !== isLivePreviewing || $[20] !== loadedURL || $[21] !== locale || $[22] !== mostRecentUpdate || $[23] !== popupRef || $[24] !== previewWindowType || $[25] !== url) {
85
+ t1 = [formState, url, collectionSlug, globalSlug, id, previewWindowType, popupRef, appIsReady, iframeRef, mostRecentUpdate, locale, isLivePreviewing, loadedURL];
86
+ $[13] = appIsReady;
87
+ $[14] = collectionSlug;
88
+ $[15] = formState;
89
+ $[16] = globalSlug;
90
+ $[17] = id;
91
+ $[18] = iframeRef;
92
+ $[19] = isLivePreviewing;
93
+ $[20] = loadedURL;
94
+ $[21] = locale;
95
+ $[22] = mostRecentUpdate;
96
+ $[23] = popupRef;
97
+ $[24] = previewWindowType;
98
+ $[25] = url;
99
+ $[26] = t1;
100
+ } else {
101
+ t1 = $[26];
102
+ }
103
+ useEffect(t0, t1);
104
+ let t2;
105
+ if ($[27] !== appIsReady || $[28] !== iframeRef || $[29] !== isLivePreviewing || $[30] !== popupRef || $[31] !== previewWindowType || $[32] !== url) {
106
+ t2 = () => {
107
+ if (!isLivePreviewing || !appIsReady) {
108
+ return;
109
+ }
110
+ const message_0 = {
111
+ type: "payload-document-event"
60
112
  };
61
- // Post message to external popup window
62
- if (previewWindowType === 'popup' && popupRef.current) {
63
- popupRef.current.postMessage(message, url);
113
+ if (previewWindowType === "popup" && popupRef.current) {
114
+ popupRef.current.postMessage(message_0, url);
64
115
  }
65
- // Post message to embedded iframe
66
- if (previewWindowType === 'iframe' && iframeRef.current) {
67
- iframeRef.current.contentWindow?.postMessage(message, url);
116
+ if (previewWindowType === "iframe" && iframeRef.current) {
117
+ iframeRef.current.contentWindow?.postMessage(message_0, url);
68
118
  }
69
- }
70
- }, [formState, url, collectionSlug, globalSlug, iframeHasLoaded, id, previewWindowType, popupRef, appIsReady, iframeRef, setIframeHasLoaded, mostRecentUpdate, locale, isLivePreviewing]);
71
- // To support SSR, we transmit a `window.postMessage` event without a payload
72
- // This is because the event will ultimately trigger a server-side roundtrip
73
- // i.e., save, save draft, autosave, etc. will fire `router.refresh()`
74
- useEffect(() => {
75
- if (!isLivePreviewing || !appIsReady) {
76
- return;
77
- }
78
- const message_0 = {
79
- type: 'payload-document-event'
80
119
  };
81
- // Post message to external popup window
82
- if (previewWindowType === 'popup' && popupRef.current) {
83
- popupRef.current.postMessage(message_0, url);
84
- }
85
- // Post message to embedded iframe
86
- if (previewWindowType === 'iframe' && iframeRef.current) {
87
- iframeRef.current.contentWindow?.postMessage(message_0, url);
88
- }
89
- }, [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing, appIsReady]);
90
- if (previewWindowType === 'iframe') {
91
- return /*#__PURE__*/_jsx("div", {
92
- className: [baseClass, isLivePreviewing && `${baseClass}--is-live-previewing`, breakpoint && breakpoint !== 'responsive' && `${baseClass}--has-breakpoint`].filter(Boolean).join(' '),
93
- children: /*#__PURE__*/_jsxs("div", {
120
+ $[27] = appIsReady;
121
+ $[28] = iframeRef;
122
+ $[29] = isLivePreviewing;
123
+ $[30] = popupRef;
124
+ $[31] = previewWindowType;
125
+ $[32] = url;
126
+ $[33] = t2;
127
+ } else {
128
+ t2 = $[33];
129
+ }
130
+ let t3;
131
+ if ($[34] !== appIsReady || $[35] !== iframeRef || $[36] !== isLivePreviewing || $[37] !== mostRecentUpdate || $[38] !== popupRef || $[39] !== previewWindowType || $[40] !== url) {
132
+ t3 = [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing, appIsReady];
133
+ $[34] = appIsReady;
134
+ $[35] = iframeRef;
135
+ $[36] = isLivePreviewing;
136
+ $[37] = mostRecentUpdate;
137
+ $[38] = popupRef;
138
+ $[39] = previewWindowType;
139
+ $[40] = url;
140
+ $[41] = t3;
141
+ } else {
142
+ t3 = $[41];
143
+ }
144
+ useEffect(t2, t3);
145
+ if (previewWindowType !== "iframe") {
146
+ return null;
147
+ }
148
+ const t4 = isLivePreviewing && `${baseClass}--is-live-previewing`;
149
+ const t5 = breakpoint && breakpoint !== "responsive" && `${baseClass}--has-breakpoint`;
150
+ let t6;
151
+ if ($[42] !== t4 || $[43] !== t5) {
152
+ t6 = [baseClass, t4, t5].filter(Boolean);
153
+ $[42] = t4;
154
+ $[43] = t5;
155
+ $[44] = t6;
156
+ } else {
157
+ t6 = $[44];
158
+ }
159
+ const t7 = t6.join(" ");
160
+ let t8;
161
+ if ($[45] !== props || $[46] !== t7 || $[47] !== url) {
162
+ t8 = _jsx("div", {
163
+ className: t7,
164
+ children: _jsxs("div", {
94
165
  className: `${baseClass}__wrapper`,
95
- children: [/*#__PURE__*/_jsx(LivePreviewToolbar, {
166
+ children: [_jsx(LivePreviewToolbar, {
96
167
  ...props
97
- }), /*#__PURE__*/_jsx("div", {
168
+ }), _jsx("div", {
98
169
  className: `${baseClass}__main`,
99
- children: /*#__PURE__*/_jsx(DeviceContainer, {
100
- children: url ? /*#__PURE__*/_jsx(IFrame, {
101
- ref: iframeRef,
102
- setIframeHasLoaded: setIframeHasLoaded,
103
- url: url
104
- }) : /*#__PURE__*/_jsx(ShimmerEffect, {
170
+ children: _jsx(DeviceContainer, {
171
+ children: url ? _jsx(IFrame, {}) : _jsx(ShimmerEffect, {
105
172
  height: "100%"
106
173
  })
107
174
  })
108
175
  })]
109
176
  })
110
177
  });
178
+ $[45] = props;
179
+ $[46] = t7;
180
+ $[47] = url;
181
+ $[48] = t8;
182
+ } else {
183
+ t8 = $[48];
111
184
  }
185
+ return t8;
112
186
  };
113
187
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["reduceFieldsToValues","React","useEffect","useAllFormFields","useDocumentEvents","useDocumentInfo","useLivePreviewContext","useLocale","ShimmerEffect","DeviceContainer","IFrame","LivePreviewToolbar","baseClass","LivePreviewWindow","props","appIsReady","breakpoint","iframeHasLoaded","iframeRef","isLivePreviewing","popupRef","previewWindowType","setIframeHasLoaded","url","locale","mostRecentUpdate","formState","id","collectionSlug","globalSlug","values","message","type","data","externallyUpdatedRelationship","code","current","postMessage","contentWindow","_jsx","className","filter","Boolean","join","_jsxs","ref","height"],"sources":["../../../../src/elements/LivePreview/Window/index.tsx"],"sourcesContent":["'use client'\n\nimport type { EditViewProps } from 'payload'\n\nimport { reduceFieldsToValues } from 'payload/shared'\nimport React, { useEffect } from 'react'\n\nimport { useAllFormFields } from '../../../forms/Form/context.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { DeviceContainer } from '../Device/index.js'\nimport './index.scss'\nimport { IFrame } from '../IFrame/index.js'\nimport { LivePreviewToolbar } from '../Toolbar/index.js'\n\nconst baseClass = 'live-preview-window'\n\nexport const LivePreviewWindow: React.FC<EditViewProps> = (props) => {\n const {\n appIsReady,\n breakpoint,\n iframeHasLoaded,\n iframeRef,\n isLivePreviewing,\n popupRef,\n previewWindowType,\n setIframeHasLoaded,\n url,\n } = useLivePreviewContext()\n\n const locale = useLocale()\n\n const { mostRecentUpdate } = useDocumentEvents()\n\n const [formState] = useAllFormFields()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n // For client-side apps, send data through `window.postMessage`\n // The preview could either be an iframe embedded on the page\n // Or it could be a separate popup window\n // We need to transmit data to both accordingly\n useEffect(() => {\n if (!isLivePreviewing || !appIsReady) {\n return\n }\n\n // For performance, do not reduce fields to values until after the iframe or popup has loaded\n if (formState) {\n const values = reduceFieldsToValues(formState, true)\n\n if (!values.id) {\n values.id = id\n }\n\n const message = {\n type: 'payload-live-preview',\n collectionSlug,\n data: values,\n externallyUpdatedRelationship: mostRecentUpdate,\n globalSlug,\n locale: locale.code,\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }\n }, [\n formState,\n url,\n collectionSlug,\n globalSlug,\n iframeHasLoaded,\n id,\n previewWindowType,\n popupRef,\n appIsReady,\n iframeRef,\n setIframeHasLoaded,\n mostRecentUpdate,\n locale,\n isLivePreviewing,\n ])\n\n // To support SSR, we transmit a `window.postMessage` event without a payload\n // This is because the event will ultimately trigger a server-side roundtrip\n // i.e., save, save draft, autosave, etc. will fire `router.refresh()`\n useEffect(() => {\n if (!isLivePreviewing || !appIsReady) {\n return\n }\n\n const message = {\n type: 'payload-document-event',\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }, [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing, appIsReady])\n\n if (previewWindowType === 'iframe') {\n return (\n <div\n className={[\n baseClass,\n isLivePreviewing && `${baseClass}--is-live-previewing`,\n breakpoint && breakpoint !== 'responsive' && `${baseClass}--has-breakpoint`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__wrapper`}>\n <LivePreviewToolbar {...props} />\n <div className={`${baseClass}__main`}>\n <DeviceContainer>\n {url ? (\n <IFrame ref={iframeRef} setIframeHasLoaded={setIframeHasLoaded} url={url} />\n ) : (\n <ShimmerEffect height=\"100%\" />\n )}\n </DeviceContainer>\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","reduceFieldsToValues","React","useEffect","useAllFormFields","useDocumentEvents","useDocumentInfo","useLivePreviewContext","useLocale","ShimmerEffect","DeviceContainer","IFrame","LivePreviewToolbar","baseClass","LivePreviewWindow","props","$","appIsReady","breakpoint","iframeRef","isLivePreviewing","loadedURL","popupRef","previewWindowType","url","locale","mostRecentUpdate","formState","id","collectionSlug","globalSlug","t0","values","message","type","data","externallyUpdatedRelationship","code","current","postMessage","contentWindow","t1","t2","message_0","t3","t4","t5","t6","filter","Boolean","t7","join","t8","_jsx","className","children","_jsxs","height"],"sources":["../../../../src/elements/LivePreview/Window/index.tsx"],"sourcesContent":["'use client'\n\nimport type { EditViewProps } from 'payload'\n\nimport { reduceFieldsToValues } from 'payload/shared'\nimport React, { useEffect } from 'react'\n\nimport { useAllFormFields } from '../../../forms/Form/context.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { DeviceContainer } from '../Device/index.js'\nimport { IFrame } from '../IFrame/index.js'\nimport { LivePreviewToolbar } from '../Toolbar/index.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-window'\n\nexport const LivePreviewWindow: React.FC<EditViewProps> = (props) => {\n const {\n appIsReady,\n breakpoint,\n iframeRef,\n isLivePreviewing,\n loadedURL,\n popupRef,\n previewWindowType,\n url,\n } = useLivePreviewContext()\n\n const locale = useLocale()\n\n const { mostRecentUpdate } = useDocumentEvents()\n\n const [formState] = useAllFormFields()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n /**\n * For client-side apps, send data through `window.postMessage`\n * The preview could either be an iframe embedded on the page\n * Or it could be a separate popup window\n * We need to transmit data to both accordingly\n */\n useEffect(() => {\n if (!isLivePreviewing || !appIsReady) {\n return\n }\n\n // For performance, do not reduce fields to values until after the iframe or popup has loaded\n if (formState) {\n const values = reduceFieldsToValues(formState, true)\n\n if (!values.id) {\n values.id = id\n }\n\n const message = {\n type: 'payload-live-preview',\n collectionSlug,\n data: values,\n externallyUpdatedRelationship: mostRecentUpdate,\n globalSlug,\n locale: locale.code,\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }\n }, [\n formState,\n url,\n collectionSlug,\n globalSlug,\n id,\n previewWindowType,\n popupRef,\n appIsReady,\n iframeRef,\n mostRecentUpdate,\n locale,\n isLivePreviewing,\n loadedURL,\n ])\n\n /**\n * To support SSR, we transmit a `window.postMessage` event without a payload\n * This is because the event will ultimately trigger a server-side roundtrip\n * i.e., save, save draft, autosave, etc. will fire `router.refresh()`\n */\n useEffect(() => {\n if (!isLivePreviewing || !appIsReady) {\n return\n }\n\n const message = {\n type: 'payload-document-event',\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }, [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing, appIsReady])\n\n if (previewWindowType !== 'iframe') {\n return null\n }\n\n return (\n <div\n className={[\n baseClass,\n isLivePreviewing && `${baseClass}--is-live-previewing`,\n breakpoint && breakpoint !== 'responsive' && `${baseClass}--has-breakpoint`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__wrapper`}>\n <LivePreviewToolbar {...props} />\n <div className={`${baseClass}__main`}>\n <DeviceContainer>{url ? <IFrame /> : <ShimmerEffect height=\"100%\" />}</DeviceContainer>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -145,7 +145,7 @@ export function PublishButton({
145
145
  const params = qs.stringify({
146
146
  publishSpecificLocale: locale
147
147
  });
148
- const action_0 = `${serverURL}${api}${globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}/${id ? `${'/' + id}` : ''}`}${params ? '?' + params : ''}`;
148
+ const action_0 = `${serverURL}${api}${globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`}${params ? '?' + params : ''}`;
149
149
  const result_0 = await submit({
150
150
  action: action_0,
151
151
  overrides: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","ScheduleDrawer","PublishButton","label","labelProp","id","collectionSlug","docConfig","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","isModalOpen","toggleModal","drawerSlug","localization","routes","api","serverURL","t","entityConfig","useMemo","hasNewerVersions","schedulePublish","versions","drafts","canPublish","scheduledPublishEnabled","Boolean","hasAutosave","autosave","canSchedulePublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","canPublishSpecificLocale","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","publish","result","publishSpecificLocale","locale","params","stringify","publishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","undefined","defaultPublish","defaultLabel","secondaryPublish","secondaryLabel","_jsxs","Fragment","_jsx","buttonId","enableSubMenu","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","type","defaultType","schedulePublishConfig","slug"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport { ScheduleDrawer } from './ScheduleDrawer/index.js'\n\nexport function PublishButton({ label: labelProp }: PublishButtonClientProps) {\n const {\n id,\n collectionSlug,\n docConfig,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const { isModalOpen, toggleModal } = useModal()\n\n const drawerSlug = `schedule-publish-${id}`\n\n const {\n localization,\n routes: { api },\n serverURL,\n } = config\n\n const { t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const schedulePublish =\n typeof entityConfig?.versions?.drafts === 'object' &&\n entityConfig?.versions?.drafts.schedulePublish\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const scheduledPublishEnabled = Boolean(schedulePublish)\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = Boolean(\n typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.autosave,\n )\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const canPublishSpecificLocale = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = `${serverURL}${api}/globals/${globalSlug}${search}`\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [submit, collectionSlug, globalSlug, serverURL, api, localeCode, id, disabled])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && docConfig.versions?.drafts && docConfig.versions?.drafts?.autosave) {\n void saveDraft()\n }\n })\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const result = await submit({\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify({\n publishSpecificLocale: locale,\n })\n\n const action = `${serverURL}${api}${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}/${id ? `${'/' + id}` : ''}`\n }${params ? '?' + params : ''}`\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setHasPublishedDoc(true)\n }\n },\n [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus],\n )\n\n const publishAll =\n !localization || (localization && localization.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel =\n activeLocale &&\n (typeof activeLocale.label === 'string'\n ? activeLocale.label\n : (activeLocale.label?.[localeCode] ?? undefined))\n\n const defaultPublish = publishAll ? publish : () => publishSpecificLocale(activeLocale.code)\n const defaultLabel = publishAll ? label : t('version:publishIn', { locale: activeLocaleLabel })\n\n const secondaryPublish = publishAll ? () => publishSpecificLocale(activeLocale.code) : publish\n const secondaryLabel = publishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n enableSubMenu={canSchedulePublish}\n onClick={defaultPublish}\n size=\"medium\"\n SubMenuPopupContent={\n canPublishSpecificLocale || canSchedulePublish\n ? ({ close }) => {\n return (\n <React.Fragment>\n {canSchedulePublish && (\n <PopupList.ButtonGroup key=\"schedule-publish\">\n <PopupList.Button\n id=\"schedule-publish\"\n onClick={() => [toggleModal(drawerSlug), close()]}\n >\n {t('version:schedulePublish')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n {canPublishSpecificLocale && (\n <PopupList.ButtonGroup>\n <PopupList.Button id=\"publish-locale\" onClick={secondaryPublish}>\n {secondaryLabel}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {localization ? defaultLabel : label}\n </FormSubmit>\n {canSchedulePublish && isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={typeof schedulePublish === 'object' && schedulePublish}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","ScheduleDrawer","PublishButton","label","labelProp","id","collectionSlug","docConfig","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","isModalOpen","toggleModal","drawerSlug","localization","routes","api","serverURL","t","entityConfig","useMemo","hasNewerVersions","schedulePublish","versions","drafts","canPublish","scheduledPublishEnabled","Boolean","hasAutosave","autosave","canSchedulePublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","canPublishSpecificLocale","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","publish","result","publishSpecificLocale","locale","params","stringify","publishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","undefined","defaultPublish","defaultLabel","secondaryPublish","secondaryLabel","_jsxs","Fragment","_jsx","buttonId","enableSubMenu","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","type","defaultType","schedulePublishConfig","slug"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport { ScheduleDrawer } from './ScheduleDrawer/index.js'\n\nexport function PublishButton({ label: labelProp }: PublishButtonClientProps) {\n const {\n id,\n collectionSlug,\n docConfig,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const { isModalOpen, toggleModal } = useModal()\n\n const drawerSlug = `schedule-publish-${id}`\n\n const {\n localization,\n routes: { api },\n serverURL,\n } = config\n\n const { t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const schedulePublish =\n typeof entityConfig?.versions?.drafts === 'object' &&\n entityConfig?.versions?.drafts.schedulePublish\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const scheduledPublishEnabled = Boolean(schedulePublish)\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = Boolean(\n typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.autosave,\n )\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const canPublishSpecificLocale = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${localeCode}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = `${serverURL}${api}/globals/${globalSlug}${search}`\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [submit, collectionSlug, globalSlug, serverURL, api, localeCode, id, disabled])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && docConfig.versions?.drafts && docConfig.versions?.drafts?.autosave) {\n void saveDraft()\n }\n })\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const result = await submit({\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify({\n publishSpecificLocale: locale,\n })\n\n const action = `${serverURL}${api}${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params ? '?' + params : ''}`\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setHasPublishedDoc(true)\n }\n },\n [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus],\n )\n\n const publishAll =\n !localization || (localization && localization.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel =\n activeLocale &&\n (typeof activeLocale.label === 'string'\n ? activeLocale.label\n : (activeLocale.label?.[localeCode] ?? undefined))\n\n const defaultPublish = publishAll ? publish : () => publishSpecificLocale(activeLocale.code)\n const defaultLabel = publishAll ? label : t('version:publishIn', { locale: activeLocaleLabel })\n\n const secondaryPublish = publishAll ? () => publishSpecificLocale(activeLocale.code) : publish\n const secondaryLabel = publishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n enableSubMenu={canSchedulePublish}\n onClick={defaultPublish}\n size=\"medium\"\n SubMenuPopupContent={\n canPublishSpecificLocale || canSchedulePublish\n ? ({ close }) => {\n return (\n <React.Fragment>\n {canSchedulePublish && (\n <PopupList.ButtonGroup key=\"schedule-publish\">\n <PopupList.Button\n id=\"schedule-publish\"\n onClick={() => [toggleModal(drawerSlug), close()]}\n >\n {t('version:schedulePublish')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n {canPublishSpecificLocale && (\n <PopupList.ButtonGroup>\n <PopupList.Button id=\"publish-locale\" onClick={secondaryPublish}>\n {secondaryLabel}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {localization ? defaultLabel : label}\n </FormSubmit>\n {canSchedulePublish && isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={typeof schedulePublish === 'object' && schedulePublish}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -18,6 +18,10 @@
18
18
  grid-template-columns: auto 1fr auto;
19
19
  }
20
20
 
21
+ &:has(.popup--active) {
22
+ z-index: 1;
23
+ }
24
+
21
25
  .icon--search {
22
26
  grid-column: 1/2;
23
27
  grid-row: 1/2;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Status/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAW1C,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAkN1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Status/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAW1C,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EA4M1B,CAAA"}
@@ -23,7 +23,6 @@ export const Status = () => {
23
23
  hasPublishedDoc,
24
24
  incrementVersionCount,
25
25
  isTrashed,
26
- savedDocumentData: doc,
27
26
  setHasPublishedDoc,
28
27
  setMostRecentVersionIsAutosaved,
29
28
  setUnpublishedVersionCount,
@@ -38,8 +37,7 @@ export const Status = () => {
38
37
  api
39
38
  },
40
39
  serverURL
41
- },
42
- getEntityConfig
40
+ }
43
41
  } = useConfig();
44
42
  const {
45
43
  reset: resetForm
@@ -53,21 +51,13 @@ export const Status = () => {
53
51
  } = useTranslation();
54
52
  const unPublishModalSlug = `confirm-un-publish-${id}`;
55
53
  const revertModalSlug = `confirm-revert-${id}`;
56
- let statusToRender = 'draft';
57
- const collectionConfig = getEntityConfig({
58
- collectionSlug
59
- });
60
- const globalConfig = getEntityConfig({
61
- globalSlug
62
- });
63
- const docConfig = collectionConfig || globalConfig;
64
- const autosaveEnabled = typeof docConfig?.versions?.drafts === 'object' ? docConfig.versions.drafts.autosave : false;
65
- if (autosaveEnabled) {
66
- if (hasPublishedDoc) {
67
- statusToRender = unpublishedVersionCount > 0 ? 'changed' : 'published';
68
- }
69
- } else {
70
- statusToRender = doc._status || 'draft';
54
+ let statusToRender;
55
+ if (unpublishedVersionCount > 0 && hasPublishedDoc) {
56
+ statusToRender = 'changed';
57
+ } else if (!hasPublishedDoc) {
58
+ statusToRender = 'draft';
59
+ } else if (hasPublishedDoc && unpublishedVersionCount <= 0) {
60
+ statusToRender = 'published';
71
61
  }
72
62
  const displayStatusKey = isTrashed ? hasPublishedDoc ? 'previouslyPublished' : 'previouslyDraft' : statusToRender;
73
63
  const performAction = useCallback(async action => {
@@ -164,7 +154,7 @@ export const Status = () => {
164
154
  modalSlug: unPublishModalSlug,
165
155
  onConfirm: () => performAction('unpublish')
166
156
  })]
167
- }), (!isTrashed && canUpdate && statusToRender === 'changed' || statusToRender === 'draft') && /*#__PURE__*/_jsxs(React.Fragment, {
157
+ }), !isTrashed && canUpdate && hasPublishedDoc && statusToRender === 'changed' && /*#__PURE__*/_jsxs(React.Fragment, {
168
158
  children: [" — ", /*#__PURE__*/_jsx(Button, {
169
159
  buttonStyle: "none",
170
160
  className: `${baseClass}__action`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","React","useCallback","toast","useForm","useConfig","useDocumentInfo","useLocale","useTranslation","requests","Button","ConfirmationModal","baseClass","Status","id","collectionSlug","docPermissions","globalSlug","hasPublishedDoc","incrementVersionCount","isTrashed","savedDocumentData","doc","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","toggleModal","config","routes","api","serverURL","getEntityConfig","reset","resetForm","code","locale","i18n","t","unPublishModalSlug","revertModalSlug","statusToRender","collectionConfig","globalConfig","docConfig","autosaveEnabled","versions","drafts","autosave","_status","displayStatusKey","performAction","action","url","method","body","publishedDoc","get","headers","language","then","res","json","JSON","stringify","status","data","result","success","message","errors","error","err","canUpdate","update","_jsx","className","title","_jsxs","Fragment","buttonStyle","onClick","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/Status/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const {\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n hasPublishedDoc,\n incrementVersionCount,\n isTrashed,\n savedDocumentData: doc,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { toggleModal } = useModal()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const unPublishModalSlug = `confirm-un-publish-${id}`\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published' = 'draft'\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const docConfig = collectionConfig || globalConfig\n const autosaveEnabled =\n typeof docConfig?.versions?.drafts === 'object' ? docConfig.versions.drafts.autosave : false\n\n if (autosaveEnabled) {\n if (hasPublishedDoc) {\n statusToRender = unpublishedVersionCount > 0 ? 'changed' : 'published'\n }\n } else {\n statusToRender = doc._status || 'draft'\n }\n const displayStatusKey = isTrashed\n ? hasPublishedDoc\n ? 'previouslyPublished'\n : 'previouslyDraft'\n : statusToRender\n\n const performAction = useCallback(\n async (action: 'revert' | 'unpublish') => {\n let url\n let method\n let body\n\n if (action === 'unpublish') {\n body = {\n _status: 'draft',\n }\n }\n\n if (collectionSlug) {\n url = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'patch'\n }\n\n if (globalSlug) {\n url = `${serverURL}${api}/globals/${globalSlug}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'post'\n }\n\n if (action === 'revert') {\n const publishedDoc = await requests\n .get(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n\n body = publishedDoc\n }\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(false)\n\n if (action === 'unpublish') {\n setHasPublishedDoc(false)\n } else if (action === 'revert') {\n setUnpublishedVersionCount(0)\n }\n } else {\n try {\n const json = await res.json()\n if (json.errors?.[0]?.message) {\n toast.error(json.errors[0].message)\n } else if (json.error) {\n toast.error(json.error)\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n toast.error(t('error:unPublishingDocument'))\n }\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n i18n.language,\n incrementVersionCount,\n locale,\n resetForm,\n serverURL,\n setUnpublishedVersionCount,\n setMostRecentVersionIsAutosaved,\n t,\n setHasPublishedDoc,\n ],\n )\n\n const canUpdate = docPermissions?.update\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${displayStatusKey}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${displayStatusKey}`)}</span>\n {!isTrashed && canUpdate && statusToRender === 'published' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id={`action-unpublish`}\n onClick={() => toggleModal(unPublishModalSlug)}\n >\n {t('version:unpublish')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToUnpublish')}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={unPublishModalSlug}\n onConfirm={() => performAction('unpublish')}\n />\n </React.Fragment>\n )}\n {((!isTrashed && canUpdate && statusToRender === 'changed') ||\n statusToRender === 'draft') && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToRevertToPublished')}\n confirmingLabel={t('version:reverting')}\n heading={t('version:confirmRevertToSaved')}\n modalSlug={revertModalSlug}\n onConfirm={() => performAction('revert')}\n />\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;;AACA,SAASA,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,QAAQ;AACnC,SAASC,KAAK,QAAQ;AAEtB,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,MAAM,QAAQ;AACvB,SAASC,iBAAiB,QAAQ;AAClC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAAmBA,CAAA;EAC9B,MAAM;IACJC,EAAE;IACFC,cAAc;IACdC,cAAc;IACdC,UAAU;IACVC,eAAe;IACfC,qBAAqB;IACrBC,SAAS;IACTC,iBAAA,EAAmBC,GAAG;IACtBC,kBAAkB;IAClBC,+BAA+B;IAC/BC,0BAA0B;IAC1BC;EAAuB,CACxB,GAAGpB,eAAA;EAEJ,MAAM;IAAEqB;EAAW,CAAE,GAAG3B,QAAA;EAExB,MAAM;IACJ4B,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG,CAAE;MACfC;IAAS,CACV;IACDC;EAAe,CAChB,GAAG3B,SAAA;EAEJ,MAAM;IAAE4B,KAAA,EAAOC;EAAS,CAAE,GAAG9B,OAAA;EAC7B,MAAM;IAAE+B,IAAA,EAAMC;EAAM,CAAE,GAAG7B,SAAA;EACzB,MAAM;IAAE8B,IAAI;IAAEC;EAAC,CAAE,GAAG9B,cAAA;EAEpB,MAAM+B,kBAAA,GAAqB,sBAAsBzB,EAAA,EAAI;EACrD,MAAM0B,eAAA,GAAkB,kBAAkB1B,EAAA,EAAI;EAE9C,IAAI2B,cAAA,GAAoD;EAExD,MAAMC,gBAAA,GAAmBV,eAAA,CAAgB;IAAEjB;EAAe;EAC1D,MAAM4B,YAAA,GAAeX,eAAA,CAAgB;IAAEf;EAAW;EAElD,MAAM2B,SAAA,GAAYF,gBAAA,IAAoBC,YAAA;EACtC,MAAME,eAAA,GACJ,OAAOD,SAAA,EAAWE,QAAA,EAAUC,MAAA,KAAW,WAAWH,SAAA,CAAUE,QAAQ,CAACC,MAAM,CAACC,QAAQ,GAAG;EAEzF,IAAIH,eAAA,EAAiB;IACnB,IAAI3B,eAAA,EAAiB;MACnBuB,cAAA,GAAiBf,uBAAA,GAA0B,IAAI,YAAY;IAC7D;EACF,OAAO;IACLe,cAAA,GAAiBnB,GAAA,CAAI2B,OAAO,IAAI;EAClC;EACA,MAAMC,gBAAA,GAAmB9B,SAAA,GACrBF,eAAA,GACE,wBACA,oBACFuB,cAAA;EAEJ,MAAMU,aAAA,GAAgBjD,WAAA,CACpB,MAAOkD,MAAA;IACL,IAAIC,GAAA;IACJ,IAAIC,MAAA;IACJ,IAAIC,IAAA;IAEJ,IAAIH,MAAA,KAAW,aAAa;MAC1BG,IAAA,GAAO;QACLN,OAAA,EAAS;MACX;IACF;IAEA,IAAIlC,cAAA,EAAgB;MAClBsC,GAAA,GAAM,GAAGtB,SAAA,GAAYD,GAAA,IAAOf,cAAA,IAAkBD,EAAA,WAAasB,MAAA,+BAAqC;MAChGkB,MAAA,GAAS;IACX;IAEA,IAAIrC,UAAA,EAAY;MACdoC,GAAA,GAAM,GAAGtB,SAAA,GAAYD,GAAA,YAAeb,UAAA,WAAqBmB,MAAA,+BAAqC;MAC9FkB,MAAA,GAAS;IACX;IAEA,IAAIF,MAAA,KAAW,UAAU;MACvB,MAAMI,YAAA,GAAe,MAAM/C,QAAA,CACxBgD,GAAG,CAACJ,GAAA,EAAK;QACRK,OAAA,EAAS;UACP,mBAAmBrB,IAAA,CAAKsB,QAAQ;UAChC,gBAAgB;QAClB;MACF,GACCC,IAAI,CAAEC,GAAA,IAAQA,GAAA,CAAIC,IAAI;MAEzBP,IAAA,GAAOC,YAAA;IACT;IAEA,MAAMK,KAAA,GAAM,MAAMpD,QAAQ,CAAC6C,MAAA,CAAO,CAACD,GAAA,EAAK;MACtCE,IAAA,EAAMQ,IAAA,CAAKC,SAAS,CAACT,IAAA;MACrBG,OAAA,EAAS;QACP,mBAAmBrB,IAAA,CAAKsB,QAAQ;QAChC,gBAAgB;MAClB;IACF;IAEA,IAAIE,KAAA,CAAII,MAAM,KAAK,KAAK;MACtB,IAAIC,IAAA;MACJ,MAAMJ,IAAA,GAAO,MAAMD,KAAA,CAAIC,IAAI;MAE3B,IAAI7C,UAAA,EAAY;QACdiD,IAAA,GAAOJ,IAAA,CAAKK,MAAM;MACpB,OAAO,IAAIpD,cAAA,EAAgB;QACzBmD,IAAA,GAAOJ,IAAA,CAAKxC,GAAG;MACjB;MAEA;MACAY,SAAA,CAAUgC,IAAA;MACV/D,KAAA,CAAMiE,OAAO,CAACN,IAAA,CAAKO,OAAO;MAC1BlD,qBAAA;MACAK,+BAAA,CAAgC;MAEhC,IAAI4B,MAAA,KAAW,aAAa;QAC1B7B,kBAAA,CAAmB;MACrB,OAAO,IAAI6B,MAAA,KAAW,UAAU;QAC9B3B,0BAAA,CAA2B;MAC7B;IACF,OAAO;MACL,IAAI;QACF,MAAMqC,MAAA,GAAO,MAAMD,KAAA,CAAIC,IAAI;QAC3B,IAAIA,MAAA,CAAKQ,MAAM,GAAG,EAAE,EAAED,OAAA,EAAS;UAC7BlE,KAAA,CAAMoE,KAAK,CAACT,MAAA,CAAKQ,MAAM,CAAC,EAAE,CAACD,OAAO;QACpC,OAAO,IAAIP,MAAA,CAAKS,KAAK,EAAE;UACrBpE,KAAA,CAAMoE,KAAK,CAACT,MAAA,CAAKS,KAAK;QACxB,OAAO;UACLpE,KAAA,CAAMoE,KAAK,CAACjC,CAAA,CAAE;QAChB;QACA;MACF,EAAE,OAAOkC,GAAA,EAAK;QACZrE,KAAA,CAAMoE,KAAK,CAACjC,CAAA,CAAE;MAChB;IACF;EACF,GACA,CACER,GAAA,EACAf,cAAA,EACAE,UAAA,EACAH,EAAA,EACAuB,IAAA,CAAKsB,QAAQ,EACbxC,qBAAA,EACAiB,MAAA,EACAF,SAAA,EACAH,SAAA,EACAN,0BAAA,EACAD,+BAAA,EACAc,CAAA,EACAf,kBAAA,CACD;EAGH,MAAMkD,SAAA,GAAYzD,cAAA,EAAgB0D,MAAA;EAElC,IAAIjC,cAAA,EAAgB;IAClB,oBACEkC,IAAA,CAAC;MACCC,SAAA,EAAWhE,SAAA;MACXiE,KAAA,EAAO,GAAGvC,CAAA,CAAE,sBAAsBA,CAAA,CAAE,WAAWY,gBAAA,EAAkB,GAAG;gBAEpE,aAAA4B,KAAA,CAAC;QAAIF,SAAA,EAAW,GAAGhE,SAAA,cAAuB;gCACxCkE,KAAA,CAAC;UAAKF,SAAA,EAAW,GAAGhE,SAAA,SAAkB;qBAAG0B,CAAA,CAAE,mBAAkB;yBAC7DqC,IAAA,CAAC;UAAKC,SAAA,EAAW,GAAGhE,SAAA,SAAkB;oBAAG0B,CAAA,CAAE,WAAWY,gBAAA,EAAkB;YACvE,CAAC9B,SAAA,IAAaqD,SAAA,IAAahC,cAAA,KAAmB,4BAC7CqC,KAAA,CAAC7E,KAAA,CAAM8E,QAAQ;qBAAC,O,aAEdJ,IAAA,CAACjE,MAAA;YACCsE,WAAA,EAAY;YACZJ,SAAA,EAAW,GAAGhE,SAAA,UAAmB;YACjCE,EAAA,EAAI,kBAAkB;YACtBmE,OAAA,EAASA,CAAA,KAAMtD,WAAA,CAAYY,kBAAA;sBAE1BD,CAAA,CAAE;2BAELqC,IAAA,CAAChE,iBAAA;YACC4C,IAAA,EAAMjB,CAAA,CAAE;YACR4C,eAAA,EAAiB5C,CAAA,CAAE;YACnB6C,OAAA,EAAS7C,CAAA,CAAE;YACX8C,SAAA,EAAW7C,kBAAA;YACX8C,SAAA,EAAWA,CAAA,KAAMlC,aAAA,CAAc;;YAInC,EAAE/B,SAAA,IAAaqD,SAAA,IAAahC,cAAA,KAAmB,aAC/CA,cAAA,KAAmB,OAAM,kBACzBqC,KAAA,CAAC7E,KAAA,CAAM8E,QAAQ;qBAAC,O,aAEdJ,IAAA,CAACjE,MAAA;YACCsE,WAAA,EAAY;YACZJ,SAAA,EAAW,GAAGhE,SAAA,UAAmB;YACjCE,EAAA,EAAG;YACHmE,OAAA,EAASA,CAAA,KAAMtD,WAAA,CAAYa,eAAA;sBAE1BF,CAAA,CAAE;2BAELqC,IAAA,CAAChE,iBAAA;YACC4C,IAAA,EAAMjB,CAAA,CAAE;YACR4C,eAAA,EAAiB5C,CAAA,CAAE;YACnB6C,OAAA,EAAS7C,CAAA,CAAE;YACX8C,SAAA,EAAW5C,eAAA;YACX6C,SAAA,EAAWA,CAAA,KAAMlC,aAAA,CAAc;;;;;EAO7C;EAEA,OAAO;AACT","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","React","useCallback","toast","useForm","useConfig","useDocumentInfo","useLocale","useTranslation","requests","Button","ConfirmationModal","baseClass","Status","id","collectionSlug","docPermissions","globalSlug","hasPublishedDoc","incrementVersionCount","isTrashed","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","toggleModal","config","routes","api","serverURL","reset","resetForm","code","locale","i18n","t","unPublishModalSlug","revertModalSlug","statusToRender","displayStatusKey","performAction","action","url","method","body","_status","publishedDoc","get","headers","language","then","res","json","JSON","stringify","status","data","result","doc","success","message","errors","error","err","canUpdate","update","_jsx","className","title","_jsxs","Fragment","buttonStyle","onClick","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/Status/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const {\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n hasPublishedDoc,\n incrementVersionCount,\n isTrashed,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { toggleModal } = useModal()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const unPublishModalSlug = `confirm-un-publish-${id}`\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published'\n\n if (unpublishedVersionCount > 0 && hasPublishedDoc) {\n statusToRender = 'changed'\n } else if (!hasPublishedDoc) {\n statusToRender = 'draft'\n } else if (hasPublishedDoc && unpublishedVersionCount <= 0) {\n statusToRender = 'published'\n }\n\n const displayStatusKey = isTrashed\n ? hasPublishedDoc\n ? 'previouslyPublished'\n : 'previouslyDraft'\n : statusToRender\n\n const performAction = useCallback(\n async (action: 'revert' | 'unpublish') => {\n let url\n let method\n let body\n\n if (action === 'unpublish') {\n body = {\n _status: 'draft',\n }\n }\n\n if (collectionSlug) {\n url = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'patch'\n }\n\n if (globalSlug) {\n url = `${serverURL}${api}/globals/${globalSlug}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'post'\n }\n\n if (action === 'revert') {\n const publishedDoc = await requests\n .get(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n\n body = publishedDoc\n }\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(false)\n\n if (action === 'unpublish') {\n setHasPublishedDoc(false)\n } else if (action === 'revert') {\n setUnpublishedVersionCount(0)\n }\n } else {\n try {\n const json = await res.json()\n if (json.errors?.[0]?.message) {\n toast.error(json.errors[0].message)\n } else if (json.error) {\n toast.error(json.error)\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n toast.error(t('error:unPublishingDocument'))\n }\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n i18n.language,\n incrementVersionCount,\n locale,\n resetForm,\n serverURL,\n setUnpublishedVersionCount,\n setMostRecentVersionIsAutosaved,\n t,\n setHasPublishedDoc,\n ],\n )\n\n const canUpdate = docPermissions?.update\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${displayStatusKey}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${displayStatusKey}`)}</span>\n {!isTrashed && canUpdate && statusToRender === 'published' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id={`action-unpublish`}\n onClick={() => toggleModal(unPublishModalSlug)}\n >\n {t('version:unpublish')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToUnpublish')}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={unPublishModalSlug}\n onConfirm={() => performAction('unpublish')}\n />\n </React.Fragment>\n )}\n {!isTrashed &&\n canUpdate &&\n hasPublishedDoc &&\n statusToRender === 'changed' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToRevertToPublished')}\n confirmingLabel={t('version:reverting')}\n heading={t('version:confirmRevertToSaved')}\n modalSlug={revertModalSlug}\n onConfirm={() => performAction('revert')}\n />\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}