@payloadcms/ui 3.55.0-canary.4 → 3.55.0-internal.b47bfce

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 (158) hide show
  1. package/dist/elements/BulkUpload/EditForm/index.js +18 -4
  2. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  3. package/dist/elements/ClipboardAction/index.js +74 -173
  4. package/dist/elements/ClipboardAction/index.js.map +1 -1
  5. package/dist/elements/CodeEditor/CodeEditor.js +67 -155
  6. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  7. package/dist/elements/Collapsible/index.js +7 -15
  8. package/dist/elements/Collapsible/index.js.map +1 -1
  9. package/dist/elements/ConfirmationModal/index.js +8 -44
  10. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  11. package/dist/elements/CopyLocaleData/index.js +89 -97
  12. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  13. package/dist/elements/CopyToClipboard/index.js +2 -22
  14. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  15. package/dist/elements/DeleteMany/index.js +47 -83
  16. package/dist/elements/DeleteMany/index.js.map +1 -1
  17. package/dist/elements/DocumentControls/index.js +27 -55
  18. package/dist/elements/DocumentControls/index.js.map +1 -1
  19. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +2 -10
  20. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  21. package/dist/elements/DocumentDrawer/index.js +47 -99
  22. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  23. package/dist/elements/DocumentFields/index.scss +1 -1
  24. package/dist/elements/Drawer/index.js +23 -57
  25. package/dist/elements/Drawer/index.js.map +1 -1
  26. package/dist/elements/DrawerActionHeader/index.js +3 -21
  27. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  28. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +149 -225
  29. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  30. package/dist/elements/FolderView/FolderFileCard/index.js +19 -27
  31. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  32. package/dist/elements/FolderView/MoveDocToFolder/index.js +12 -23
  33. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  34. package/dist/elements/FullscreenModal/index.js +10 -20
  35. package/dist/elements/FullscreenModal/index.js.map +1 -1
  36. package/dist/elements/ListDrawer/index.js +18 -24
  37. package/dist/elements/ListDrawer/index.js.map +1 -1
  38. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +19 -32
  39. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  40. package/dist/elements/ListHeaderTabs/DefaultListPill.js +15 -8
  41. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -1
  42. package/dist/elements/ListSelection/index.js +11 -27
  43. package/dist/elements/ListSelection/index.js.map +1 -1
  44. package/dist/elements/LivePreview/Window/index.js +68 -139
  45. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  46. package/dist/elements/Loading/index.js +2 -11
  47. package/dist/elements/Loading/index.js.map +1 -1
  48. package/dist/elements/LoadingOverlay/index.js +46 -102
  49. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  50. package/dist/elements/Localizer/LocalizerLabel/index.js +23 -36
  51. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  52. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  53. package/dist/elements/PublishButton/index.js +22 -11
  54. package/dist/elements/PublishButton/index.js.map +1 -1
  55. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +41 -139
  56. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  57. package/dist/elements/RenderIfInViewport/index.d.ts +2 -2
  58. package/dist/elements/RenderIfInViewport/index.d.ts.map +1 -1
  59. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  60. package/dist/elements/SelectRow/index.js +39 -40
  61. package/dist/elements/SelectRow/index.js.map +1 -1
  62. package/dist/elements/ShimmerEffect/index.js +20 -12
  63. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  64. package/dist/elements/SortColumn/index.js +21 -30
  65. package/dist/elements/SortColumn/index.js.map +1 -1
  66. package/dist/elements/Table/DefaultCell/fields/Date/index.js +9 -37
  67. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  68. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +35 -37
  69. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  70. package/dist/elements/Table/DefaultCell/fields/Select/index.js +12 -27
  71. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  72. package/dist/elements/Thumbnail/index.js +35 -75
  73. package/dist/elements/Thumbnail/index.js.map +1 -1
  74. package/dist/elements/ThumbnailCard/index.js +17 -26
  75. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  76. package/dist/elements/Tooltip/index.js +51 -127
  77. package/dist/elements/Tooltip/index.js.map +1 -1
  78. package/dist/elements/Upload/index.js +2 -10
  79. package/dist/elements/Upload/index.js.map +1 -1
  80. package/dist/elements/WhereBuilder/Condition/Select/index.js +31 -44
  81. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  82. package/dist/exports/client/{CodeEditor-MIIBUJZ4.js → CodeEditor-O6BWJHD2.js} +2 -2
  83. package/dist/exports/client/{DatePicker-NMDEHPWL.js → DatePicker-F432AIH3.js} +2 -2
  84. package/dist/exports/client/{chunk-7RGKTZG2.js → chunk-AZDI6MW4.js} +1 -1
  85. package/dist/exports/client/{chunk-7RGKTZG2.js.map → chunk-AZDI6MW4.js.map} +1 -1
  86. package/dist/exports/client/{chunk-Z6O2JA43.js → chunk-FXAFULZQ.js} +6 -6
  87. package/dist/exports/client/{chunk-Z6O2JA43.js.map → chunk-FXAFULZQ.js.map} +3 -3
  88. package/dist/exports/client/index.d.ts +4 -2
  89. package/dist/exports/client/index.d.ts.map +1 -1
  90. package/dist/exports/client/index.js +12 -12
  91. package/dist/exports/client/index.js.map +4 -4
  92. package/dist/exports/rsc/index.d.ts +1 -0
  93. package/dist/exports/rsc/index.d.ts.map +1 -1
  94. package/dist/exports/rsc/index.js +1 -0
  95. package/dist/exports/rsc/index.js.map +1 -1
  96. package/dist/fields/Array/ArrayRow.d.ts +2 -3
  97. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  98. package/dist/fields/Array/ArrayRow.js +13 -23
  99. package/dist/fields/Array/ArrayRow.js.map +1 -1
  100. package/dist/fields/Array/index.js +273 -477
  101. package/dist/fields/Array/index.js.map +1 -1
  102. package/dist/fields/Checkbox/Input.js +2 -19
  103. package/dist/fields/Checkbox/Input.js.map +1 -1
  104. package/dist/fields/FieldError/index.js +30 -29
  105. package/dist/fields/FieldError/index.js.map +1 -1
  106. package/dist/fields/FieldLabel/index.js +12 -64
  107. package/dist/fields/FieldLabel/index.js.map +1 -1
  108. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +45 -103
  109. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  110. package/dist/fields/Relationship/select-components/SingleValue/index.js +29 -44
  111. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  112. package/dist/fields/Row/index.d.ts +1 -3
  113. package/dist/fields/Row/index.d.ts.map +1 -1
  114. package/dist/fields/Select/Input.js +18 -31
  115. package/dist/fields/Select/Input.js.map +1 -1
  116. package/dist/fields/Tabs/Tab/index.js +2 -11
  117. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  118. package/dist/fields/Tabs/index.d.ts +2 -1
  119. package/dist/fields/Tabs/index.d.ts.map +1 -1
  120. package/dist/fields/Tabs/index.js +185 -225
  121. package/dist/fields/Tabs/index.js.map +1 -1
  122. package/dist/fields/Upload/RelationshipContent/index.js +79 -127
  123. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  124. package/dist/forms/RenderFields/RenderField.js +245 -237
  125. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  126. package/dist/forms/RenderFields/types.d.ts +2 -10
  127. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  128. package/dist/forms/RenderFields/types.js.map +1 -1
  129. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts +30 -0
  130. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -0
  131. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +82 -0
  132. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -0
  133. package/dist/forms/useField/index.d.ts +5 -0
  134. package/dist/forms/useField/index.d.ts.map +1 -1
  135. package/dist/forms/useField/index.js +74 -45
  136. package/dist/forms/useField/index.js.map +1 -1
  137. package/dist/hooks/useIntersect.js +35 -53
  138. package/dist/hooks/useIntersect.js.map +1 -1
  139. package/dist/hooks/usePayloadAPI.js +36 -44
  140. package/dist/hooks/usePayloadAPI.js.map +1 -1
  141. package/dist/providers/ServerFunctions/index.d.ts +4 -1
  142. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  143. package/dist/providers/ServerFunctions/index.js +13 -0
  144. package/dist/providers/ServerFunctions/index.js.map +1 -1
  145. package/dist/styles.css +1 -1
  146. package/dist/utilities/traverseForLocalizedFields.d.ts +3 -0
  147. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -0
  148. package/dist/utilities/traverseForLocalizedFields.js +40 -0
  149. package/dist/utilities/traverseForLocalizedFields.js.map +1 -0
  150. package/dist/views/BrowseByFolder/index.js +37 -55
  151. package/dist/views/BrowseByFolder/index.js.map +1 -1
  152. package/dist/views/CollectionFolder/index.js +13 -40
  153. package/dist/views/CollectionFolder/index.js.map +1 -1
  154. package/dist/views/Edit/Auth/index.js +93 -105
  155. package/dist/views/Edit/Auth/index.js.map +1 -1
  156. package/package.json +8 -8
  157. /package/dist/exports/client/{CodeEditor-MIIBUJZ4.js.map → CodeEditor-O6BWJHD2.js.map} +0 -0
  158. /package/dist/exports/client/{DatePicker-NMDEHPWL.js.map → DatePicker-F432AIH3.js.map} +0 -0
@@ -10,7 +10,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
10
10
  import './index.scss';
11
11
  const baseClass = 'loading-overlay';
12
12
  export const LoadingOverlay = t0 => {
13
- const $ = _c(11);
13
+ const $ = _c(8);
14
14
  const {
15
15
  animationDuration,
16
16
  loadingText,
@@ -36,15 +36,6 @@ export const LoadingOverlay = t0 => {
36
36
  const t6 = animationDuration || "500ms";
37
37
  let t7;
38
38
  if ($[3] !== loadingText || $[4] !== t || $[5] !== t5 || $[6] !== t6) {
39
- let t8;
40
- if ($[8] !== loadingText || $[9] !== t) {
41
- t8 = loadingText || t("general:loading");
42
- $[8] = loadingText;
43
- $[9] = t;
44
- $[10] = t8;
45
- } else {
46
- t8 = $[10];
47
- }
48
39
  t7 = _jsxs("div", {
49
40
  className: t5,
50
41
  style: {
@@ -65,7 +56,7 @@ export const LoadingOverlay = t0 => {
65
56
  })]
66
57
  }), _jsx("span", {
67
58
  className: `${baseClass}__text`,
68
- children: t8
59
+ children: loadingText || t("general:loading")
69
60
  })]
70
61
  });
71
62
  $[3] = loadingText;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useLoadingOverlay","useFormProcessing","useTranslation","baseClass","LoadingOverlay","t0","$","animationDuration","loadingText","overlayType","show","t1","undefined","t","t2","t3","t4","filter","Boolean","t5","join","t6","t7","t8","_jsxs","className","style","children","_jsx","LoadingOverlayToggle","name","key","type","toggleLoadingOverlay","isLoading","useEffect","FormLoadingOverlayToggle","action","formIsLoading","loadingSuffix","isProcessing","i18n","labels","create","loading","update","trim"],"sources":["../../../src/elements/Loading/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { LoadingOverlayTypes } from '../../elements/LoadingOverlay/types.js'\n\nimport { useLoadingOverlay } from '../../elements/LoadingOverlay/index.js'\nimport { useFormProcessing } from '../../forms/Form/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'loading-overlay'\n\ntype LoadingOverlayProps = {\n animationDuration?: string\n loadingText?: string\n overlayType?: string\n show?: boolean\n}\n\nexport const LoadingOverlay: React.FC<LoadingOverlayProps> = ({\n animationDuration,\n loadingText,\n overlayType,\n show = true,\n}) => {\n const { t } = useTranslation()\n\n return (\n <div\n className={[\n baseClass,\n show ? `${baseClass}--entering` : `${baseClass}--exiting`,\n overlayType ? `${baseClass}--${overlayType}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n animationDuration: animationDuration || '500ms',\n }}\n >\n <div className={`${baseClass}__bars`}>\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n </div>\n\n <span className={`${baseClass}__text`}>{loadingText || t('general:loading')}</span>\n </div>\n )\n}\n\nexport type UseLoadingOverlayToggleProps = {\n loadingText?: string\n name: string\n show: boolean\n type?: LoadingOverlayTypes\n}\nexport const LoadingOverlayToggle: React.FC<UseLoadingOverlayToggleProps> = ({\n name: key,\n type = 'fullscreen',\n loadingText,\n show,\n}) => {\n const { toggleLoadingOverlay } = useLoadingOverlay()\n\n React.useEffect(() => {\n toggleLoadingOverlay({\n type,\n isLoading: show,\n key,\n loadingText: loadingText || undefined,\n })\n\n return () => {\n toggleLoadingOverlay({\n type,\n isLoading: false,\n key,\n })\n }\n }, [show, toggleLoadingOverlay, key, type, loadingText])\n\n return null\n}\n\nexport type FormLoadingOverlayToggleProps = {\n action: 'create' | 'loading' | 'update'\n formIsLoading?: boolean\n loadingSuffix?: string\n name: string\n type?: LoadingOverlayTypes\n}\n\nexport const FormLoadingOverlayToggle: React.FC<FormLoadingOverlayToggleProps> = ({\n name,\n type = 'fullscreen',\n action,\n formIsLoading = false,\n loadingSuffix,\n}) => {\n const isProcessing = useFormProcessing()\n const { i18n, t } = useTranslation()\n\n const labels = {\n create: t('general:creating'),\n loading: t('general:loading'),\n update: t('general:updating'),\n }\n\n return (\n <LoadingOverlayToggle\n loadingText={`${labels[action]} ${\n loadingSuffix ? getTranslation(loadingSuffix, i18n) : ''\n }`.trim()}\n name={name}\n show={formIsLoading || isProcessing}\n type={type}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useLoadingOverlay","useFormProcessing","useTranslation","baseClass","LoadingOverlay","t0","$","animationDuration","loadingText","overlayType","show","t1","undefined","t","t2","t3","t4","filter","Boolean","t5","join","t6","t7","_jsxs","className","style","children","_jsx","LoadingOverlayToggle","name","key","type","toggleLoadingOverlay","isLoading","useEffect","FormLoadingOverlayToggle","action","formIsLoading","loadingSuffix","isProcessing","i18n","labels","create","loading","update","trim"],"sources":["../../../src/elements/Loading/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { LoadingOverlayTypes } from '../../elements/LoadingOverlay/types.js'\n\nimport { useLoadingOverlay } from '../../elements/LoadingOverlay/index.js'\nimport { useFormProcessing } from '../../forms/Form/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'loading-overlay'\n\ntype LoadingOverlayProps = {\n animationDuration?: string\n loadingText?: string\n overlayType?: string\n show?: boolean\n}\n\nexport const LoadingOverlay: React.FC<LoadingOverlayProps> = ({\n animationDuration,\n loadingText,\n overlayType,\n show = true,\n}) => {\n const { t } = useTranslation()\n\n return (\n <div\n className={[\n baseClass,\n show ? `${baseClass}--entering` : `${baseClass}--exiting`,\n overlayType ? `${baseClass}--${overlayType}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n animationDuration: animationDuration || '500ms',\n }}\n >\n <div className={`${baseClass}__bars`}>\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n </div>\n\n <span className={`${baseClass}__text`}>{loadingText || t('general:loading')}</span>\n </div>\n )\n}\n\nexport type UseLoadingOverlayToggleProps = {\n loadingText?: string\n name: string\n show: boolean\n type?: LoadingOverlayTypes\n}\nexport const LoadingOverlayToggle: React.FC<UseLoadingOverlayToggleProps> = ({\n name: key,\n type = 'fullscreen',\n loadingText,\n show,\n}) => {\n const { toggleLoadingOverlay } = useLoadingOverlay()\n\n React.useEffect(() => {\n toggleLoadingOverlay({\n type,\n isLoading: show,\n key,\n loadingText: loadingText || undefined,\n })\n\n return () => {\n toggleLoadingOverlay({\n type,\n isLoading: false,\n key,\n })\n }\n }, [show, toggleLoadingOverlay, key, type, loadingText])\n\n return null\n}\n\nexport type FormLoadingOverlayToggleProps = {\n action: 'create' | 'loading' | 'update'\n formIsLoading?: boolean\n loadingSuffix?: string\n name: string\n type?: LoadingOverlayTypes\n}\n\nexport const FormLoadingOverlayToggle: React.FC<FormLoadingOverlayToggleProps> = ({\n name,\n type = 'fullscreen',\n action,\n formIsLoading = false,\n loadingSuffix,\n}) => {\n const isProcessing = useFormProcessing()\n const { i18n, t } = useTranslation()\n\n const labels = {\n create: t('general:creating'),\n loading: t('general:loading'),\n update: t('general:updating'),\n }\n\n return (\n <LoadingOverlayToggle\n loadingText={`${labels[action]} ${\n loadingSuffix ? getTranslation(loadingSuffix, i18n) : ''\n }`.trim()}\n name={name}\n show={formIsLoading || isProcessing}\n type={type}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import React, { createContext } from 'react';
6
5
  import { LoadingOverlay } from '../../elements/Loading/index.js';
@@ -12,118 +11,63 @@ const Context = /*#__PURE__*/createContext({
12
11
  isOnScreen: false,
13
12
  toggleLoadingOverlay: undefined
14
13
  });
15
- export const LoadingOverlayProvider = t0 => {
16
- const $ = _c(21);
17
- const {
18
- children
19
- } = t0;
14
+ export const LoadingOverlayProvider = ({
15
+ children
16
+ }) => {
20
17
  const {
21
18
  t
22
19
  } = useTranslation();
23
- let t1;
24
- if ($[0] !== t) {
25
- t1 = t("general:loading");
26
- $[0] = t;
27
- $[1] = t1;
28
- } else {
29
- t1 = $[1];
30
- }
31
- const fallbackText = t1;
20
+ const fallbackText = t('general:loading');
32
21
  const [overlays, dispatchOverlay] = React.useReducer(reducer, defaultLoadingOverlayState);
33
- let t2;
34
- if ($[2] !== overlays.isLoading) {
35
- t2 = {
36
- delayBeforeShow: 1000,
37
- inTimeout: animatedDuration,
38
- minShowTime: 500,
39
- outTimeout: animatedDuration,
40
- show: overlays.isLoading
41
- };
42
- $[2] = overlays.isLoading;
43
- $[3] = t2;
44
- } else {
45
- t2 = $[3];
46
- }
47
22
  const {
48
23
  isMounted,
49
24
  isUnmounting,
50
25
  triggerDelayedRender
51
- } = useDelayedRender(t2);
52
- let t3;
53
- if ($[4] !== fallbackText || $[5] !== triggerDelayedRender) {
54
- t3 = t4 => {
55
- const {
56
- type,
57
- isLoading,
58
- key,
59
- loadingText: t5
60
- } = t4;
61
- const loadingText = t5 === undefined ? fallbackText : t5;
62
- if (isLoading) {
63
- triggerDelayedRender();
64
- dispatchOverlay({
65
- type: "add",
66
- payload: {
67
- type,
68
- key,
69
- loadingText
70
- }
71
- });
72
- } else {
73
- dispatchOverlay({
74
- type: "remove",
75
- payload: {
76
- type,
77
- key
78
- }
79
- });
80
- }
81
- };
82
- $[4] = fallbackText;
83
- $[5] = triggerDelayedRender;
84
- $[6] = t3;
85
- } else {
86
- t3 = $[6];
87
- }
88
- const toggleLoadingOverlay = t3;
89
- let t4;
90
- if ($[7] !== children || $[8] !== fallbackText || $[9] !== isMounted || $[10] !== isUnmounting || $[11] !== overlays.loadingText || $[12] !== overlays.overlayType || $[13] !== toggleLoadingOverlay) {
91
- let t5;
92
- if ($[15] !== fallbackText || $[16] !== isMounted || $[17] !== isUnmounting || $[18] !== overlays.loadingText || $[19] !== overlays.overlayType) {
93
- t5 = isMounted && _jsx(LoadingOverlay, {
94
- animationDuration: `${animatedDuration}ms`,
95
- loadingText: overlays.loadingText || fallbackText,
96
- overlayType: overlays.overlayType,
97
- show: !isUnmounting
26
+ } = useDelayedRender({
27
+ delayBeforeShow: 1000,
28
+ inTimeout: animatedDuration,
29
+ minShowTime: 500,
30
+ outTimeout: animatedDuration,
31
+ show: overlays.isLoading
32
+ });
33
+ const toggleLoadingOverlay = React.useCallback(({
34
+ type,
35
+ isLoading,
36
+ key,
37
+ loadingText = fallbackText
38
+ }) => {
39
+ if (isLoading) {
40
+ triggerDelayedRender();
41
+ dispatchOverlay({
42
+ type: 'add',
43
+ payload: {
44
+ type,
45
+ key,
46
+ loadingText
47
+ }
98
48
  });
99
- $[15] = fallbackText;
100
- $[16] = isMounted;
101
- $[17] = isUnmounting;
102
- $[18] = overlays.loadingText;
103
- $[19] = overlays.overlayType;
104
- $[20] = t5;
105
49
  } else {
106
- t5 = $[20];
50
+ dispatchOverlay({
51
+ type: 'remove',
52
+ payload: {
53
+ type,
54
+ key
55
+ }
56
+ });
107
57
  }
108
- t4 = _jsxs(Context, {
109
- value: {
110
- isOnScreen: isMounted,
111
- toggleLoadingOverlay
112
- },
113
- children: [t5, children]
114
- });
115
- $[7] = children;
116
- $[8] = fallbackText;
117
- $[9] = isMounted;
118
- $[10] = isUnmounting;
119
- $[11] = overlays.loadingText;
120
- $[12] = overlays.overlayType;
121
- $[13] = toggleLoadingOverlay;
122
- $[14] = t4;
123
- } else {
124
- t4 = $[14];
125
- }
126
- return t4;
58
+ }, [triggerDelayedRender, fallbackText]);
59
+ return /*#__PURE__*/_jsxs(Context, {
60
+ value: {
61
+ isOnScreen: isMounted,
62
+ toggleLoadingOverlay
63
+ },
64
+ children: [isMounted && /*#__PURE__*/_jsx(LoadingOverlay, {
65
+ animationDuration: `${animatedDuration}ms`,
66
+ loadingText: overlays.loadingText || fallbackText,
67
+ overlayType: overlays.overlayType,
68
+ show: !isUnmounting
69
+ }), children]
70
+ });
127
71
  };
128
72
  export const useLoadingOverlay = () => {
129
73
  const contextHook = React.use(Context);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","createContext","LoadingOverlay","useDelayedRender","useTranslation","defaultLoadingOverlayState","reducer","animatedDuration","Context","isOnScreen","toggleLoadingOverlay","undefined","LoadingOverlayProvider","t0","$","children","t","t1","fallbackText","overlays","dispatchOverlay","useReducer","t2","isLoading","delayBeforeShow","inTimeout","minShowTime","outTimeout","show","isMounted","isUnmounting","triggerDelayedRender","t3","t4","type","key","loadingText","t5","payload","overlayType","_jsx","animationDuration","_jsxs","value","useLoadingOverlay","contextHook","use","Error"],"sources":["../../../src/elements/LoadingOverlay/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext } from 'react'\n\nimport type { LoadingOverlayContext, ToggleLoadingOverlay } from './types.js'\n\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useDelayedRender } from '../../hooks/useDelayedRender.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { defaultLoadingOverlayState, reducer } from './reducer.js'\n\nconst animatedDuration = 250\n\nconst Context = createContext({\n isOnScreen: false,\n toggleLoadingOverlay: undefined,\n})\n\nexport const LoadingOverlayProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const { t } = useTranslation()\n const fallbackText = t('general:loading')\n const [overlays, dispatchOverlay] = React.useReducer(reducer, defaultLoadingOverlayState)\n\n const { isMounted, isUnmounting, triggerDelayedRender } = useDelayedRender({\n delayBeforeShow: 1000,\n inTimeout: animatedDuration,\n minShowTime: 500,\n outTimeout: animatedDuration,\n show: overlays.isLoading,\n })\n\n const toggleLoadingOverlay = React.useCallback<ToggleLoadingOverlay>(\n ({ type, isLoading, key, loadingText = fallbackText }) => {\n if (isLoading) {\n triggerDelayedRender()\n dispatchOverlay({\n type: 'add',\n payload: {\n type,\n key,\n loadingText,\n },\n })\n } else {\n dispatchOverlay({\n type: 'remove',\n payload: {\n type,\n key,\n },\n })\n }\n },\n [triggerDelayedRender, fallbackText],\n )\n\n return (\n <Context\n value={{\n isOnScreen: isMounted,\n toggleLoadingOverlay,\n }}\n >\n {isMounted && (\n <LoadingOverlay\n animationDuration={`${animatedDuration}ms`}\n loadingText={overlays.loadingText || fallbackText}\n overlayType={overlays.overlayType}\n show={!isUnmounting}\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport const useLoadingOverlay = (): LoadingOverlayContext => {\n const contextHook = React.use(Context)\n if (contextHook === undefined) {\n throw new Error('useLoadingOverlay must be used within a LoadingOverlayProvider')\n }\n\n return contextHook\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","createContext","LoadingOverlay","useDelayedRender","useTranslation","defaultLoadingOverlayState","reducer","animatedDuration","Context","isOnScreen","toggleLoadingOverlay","undefined","LoadingOverlayProvider","children","t","fallbackText","overlays","dispatchOverlay","useReducer","isMounted","isUnmounting","triggerDelayedRender","delayBeforeShow","inTimeout","minShowTime","outTimeout","show","isLoading","useCallback","type","key","loadingText","payload","_jsxs","value","_jsx","animationDuration","overlayType","useLoadingOverlay","contextHook","use","Error"],"sources":["../../../src/elements/LoadingOverlay/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext } from 'react'\n\nimport type { LoadingOverlayContext, ToggleLoadingOverlay } from './types.js'\n\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useDelayedRender } from '../../hooks/useDelayedRender.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { defaultLoadingOverlayState, reducer } from './reducer.js'\n\nconst animatedDuration = 250\n\nconst Context = createContext({\n isOnScreen: false,\n toggleLoadingOverlay: undefined,\n})\n\nexport const LoadingOverlayProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const { t } = useTranslation()\n const fallbackText = t('general:loading')\n const [overlays, dispatchOverlay] = React.useReducer(reducer, defaultLoadingOverlayState)\n\n const { isMounted, isUnmounting, triggerDelayedRender } = useDelayedRender({\n delayBeforeShow: 1000,\n inTimeout: animatedDuration,\n minShowTime: 500,\n outTimeout: animatedDuration,\n show: overlays.isLoading,\n })\n\n const toggleLoadingOverlay = React.useCallback<ToggleLoadingOverlay>(\n ({ type, isLoading, key, loadingText = fallbackText }) => {\n if (isLoading) {\n triggerDelayedRender()\n dispatchOverlay({\n type: 'add',\n payload: {\n type,\n key,\n loadingText,\n },\n })\n } else {\n dispatchOverlay({\n type: 'remove',\n payload: {\n type,\n key,\n },\n })\n }\n },\n [triggerDelayedRender, fallbackText],\n )\n\n return (\n <Context\n value={{\n isOnScreen: isMounted,\n toggleLoadingOverlay,\n }}\n >\n {isMounted && (\n <LoadingOverlay\n animationDuration={`${animatedDuration}ms`}\n loadingText={overlays.loadingText || fallbackText}\n overlayType={overlays.overlayType}\n show={!isUnmounting}\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport const useLoadingOverlay = (): LoadingOverlayContext => {\n const contextHook = React.use(Context)\n if (contextHook === undefined) {\n throw new Error('useLoadingOverlay must be used within a LoadingOverlayProvider')\n }\n\n return contextHook\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,IAASC,aAAa,QAAQ;AAIrC,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,cAAc,QAAQ;AAC/B,SAASC,0BAA0B,EAAEC,OAAO,QAAQ;AAEpD,MAAMC,gBAAA,GAAmB;AAEzB,MAAMC,OAAA,gBAAUP,aAAA,CAAc;EAC5BQ,UAAA,EAAY;EACZC,oBAAA,EAAsBC;AACxB;AAEA,OAAO,MAAMC,sBAAA,GAAmEA,CAAC;EAAEC;AAAQ,CAAE;EAC3F,MAAM;IAAEC;EAAC,CAAE,GAAGV,cAAA;EACd,MAAMW,YAAA,GAAeD,CAAA,CAAE;EACvB,MAAM,CAACE,QAAA,EAAUC,eAAA,CAAgB,GAAGjB,KAAA,CAAMkB,UAAU,CAACZ,OAAA,EAASD,0BAAA;EAE9D,MAAM;IAAEc,SAAS;IAAEC,YAAY;IAAEC;EAAoB,CAAE,GAAGlB,gBAAA,CAAiB;IACzEmB,eAAA,EAAiB;IACjBC,SAAA,EAAWhB,gBAAA;IACXiB,WAAA,EAAa;IACbC,UAAA,EAAYlB,gBAAA;IACZmB,IAAA,EAAMV,QAAA,CAASW;EACjB;EAEA,MAAMjB,oBAAA,GAAuBV,KAAA,CAAM4B,WAAW,CAC5C,CAAC;IAAEC,IAAI;IAAEF,SAAS;IAAEG,GAAG;IAAEC,WAAA,GAAchB;EAAY,CAAE;IACnD,IAAIY,SAAA,EAAW;MACbN,oBAAA;MACAJ,eAAA,CAAgB;QACdY,IAAA,EAAM;QACNG,OAAA,EAAS;UACPH,IAAA;UACAC,GAAA;UACAC;QACF;MACF;IACF,OAAO;MACLd,eAAA,CAAgB;QACdY,IAAA,EAAM;QACNG,OAAA,EAAS;UACPH,IAAA;UACAC;QACF;MACF;IACF;EACF,GACA,CAACT,oBAAA,EAAsBN,YAAA,CAAa;EAGtC,oBACEkB,KAAA,CAACzB,OAAA;IACC0B,KAAA,EAAO;MACLzB,UAAA,EAAYU,SAAA;MACZT;IACF;eAECS,SAAA,iBACCgB,IAAA,CAACjC,cAAA;MACCkC,iBAAA,EAAmB,GAAG7B,gBAAA,IAAoB;MAC1CwB,WAAA,EAAaf,QAAA,CAASe,WAAW,IAAIhB,YAAA;MACrCsB,WAAA,EAAarB,QAAA,CAASqB,WAAW;MACjCX,IAAA,EAAM,CAACN;QAGVP,QAAA;;AAGP;AAEA,OAAO,MAAMyB,iBAAA,GAAoBA,CAAA;EAC/B,MAAMC,WAAA,GAAcvC,KAAA,CAAMwC,GAAG,CAAChC,OAAA;EAC9B,IAAI+B,WAAA,KAAgB5B,SAAA,EAAW;IAC7B,MAAM,IAAI8B,KAAA,CAAM;EAClB;EAEA,OAAOF,WAAA;AACT","ignoreList":[]}
@@ -10,7 +10,7 @@ import { useTranslation } from '../../../providers/Translation/index.js';
10
10
  import './index.scss';
11
11
  const baseClass = 'localizer-button';
12
12
  export const LocalizerLabel = props => {
13
- const $ = _c(12);
13
+ const $ = _c(8);
14
14
  const {
15
15
  ariaLabel,
16
16
  className
@@ -21,34 +21,22 @@ export const LocalizerLabel = props => {
21
21
  t
22
22
  } = useTranslation();
23
23
  let t0;
24
- if ($[0] !== ariaLabel || $[1] !== t) {
25
- t0 = ariaLabel || t("general:locale");
26
- $[0] = ariaLabel;
27
- $[1] = t;
28
- $[2] = t0;
29
- } else {
30
- t0 = $[2];
31
- }
32
- let t1;
33
- if ($[3] !== className) {
34
- t1 = [baseClass, className].filter(Boolean);
35
- $[3] = className;
36
- $[4] = t1;
37
- } else {
38
- t1 = $[4];
39
- }
40
- const t2 = t1.join(" ");
41
- const t3 = locale ? locale.code : undefined;
42
- const t4 = `${t("general:locale")}:`;
43
- let t5;
44
- if ($[5] !== i18n || $[6] !== locale.label || $[7] !== t0 || $[8] !== t2 || $[9] !== t3 || $[10] !== t4) {
45
- t5 = _jsxs("div", {
46
- "aria-label": t0,
47
- className: t2,
48
- "data-locale": t3,
24
+ if ($[0] !== ariaLabel || $[1] !== className || $[2] !== i18n || $[3] !== locale || $[4] !== t) {
25
+ let t1;
26
+ if ($[6] !== className) {
27
+ t1 = [baseClass, className].filter(Boolean);
28
+ $[6] = className;
29
+ $[7] = t1;
30
+ } else {
31
+ t1 = $[7];
32
+ }
33
+ t0 = _jsxs("div", {
34
+ "aria-label": ariaLabel || t("general:locale"),
35
+ className: t1.join(" "),
36
+ "data-locale": locale ? locale.code : undefined,
49
37
  children: [_jsxs("div", {
50
38
  className: `${baseClass}__label`,
51
- children: [t4, "\xA0"]
39
+ children: [`${t("general:locale")}:`, "\xA0"]
52
40
  }), _jsxs("div", {
53
41
  className: `${baseClass}__current`,
54
42
  children: [_jsx("span", {
@@ -59,16 +47,15 @@ export const LocalizerLabel = props => {
59
47
  })]
60
48
  })]
61
49
  });
62
- $[5] = i18n;
63
- $[6] = locale.label;
64
- $[7] = t0;
65
- $[8] = t2;
66
- $[9] = t3;
67
- $[10] = t4;
68
- $[11] = t5;
50
+ $[0] = ariaLabel;
51
+ $[1] = className;
52
+ $[2] = i18n;
53
+ $[3] = locale;
54
+ $[4] = t;
55
+ $[5] = t0;
69
56
  } else {
70
- t5 = $[11];
57
+ t0 = $[5];
71
58
  }
72
- return t5;
59
+ return t0;
73
60
  };
74
61
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","ChevronIcon","useLocale","useTranslation","baseClass","LocalizerLabel","props","$","ariaLabel","className","locale","i18n","t","t0","t1","filter","Boolean","t2","join","t3","code","undefined","t4","t5","label","_jsxs","children","_jsx"],"sources":["../../../../src/elements/Localizer/LocalizerLabel/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'localizer-button'\n\nexport const LocalizerLabel: React.FC<{\n ariaLabel?: string\n className?: string\n}> = (props) => {\n const { ariaLabel, className } = props\n const locale = useLocale()\n const { i18n, t } = useTranslation()\n\n return (\n <div\n aria-label={ariaLabel || t('general:locale')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n data-locale={locale ? locale.code : undefined}\n >\n <div className={`${baseClass}__label`}>{`${t('general:locale')}:`}&nbsp;</div>\n <div className={`${baseClass}__current`}>\n <span className={`${baseClass}__current-label`}>\n {`${getTranslation(locale.label, i18n)}`}\n </span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,cAAA,GAGRC,KAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACH;IAAAU,SAAA;IAAAC;EAAA,IAAiCH,KAAA;EACjC,MAAAI,MAAA,GAAeR,SAAA;EACf;IAAAS,IAAA;IAAAC;EAAA,IAAoBT,cAAA;EAAA,IAAAU,EAAA;EAAA,IAAAN,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAK,CAAA;IAIJC,EAAA,GAAAL,SAAA,IAAaI,CAAA,CAAE;IAAAL,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAK,CAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAA,IAAAO,EAAA;EAAA,IAAAP,CAAA,QAAAE,SAAA;IAChBK,EAAA,IAAAV,SAAA,EAAYK,SAAA,EAAAM,MAAA,CAAAC,OAAkB;IAAAT,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAA9B,MAAAU,EAAA,GAAAH,EAA8B,CAAAI,IAAA,CAAc;EAC1C,MAAAC,EAAA,GAAAT,MAAA,GAASA,MAAA,CAAAU,IAAA,GAAAC,SAAc;EAEI,MAAAC,EAAA,MAAGV,CAAA,CAAE,oBAAoB;EAAA,IAAAW,EAAA;EAAA,IAAAhB,CAAA,QAAAI,IAAA,IAAAJ,CAAA,QAAAG,MAAA,CAAAc,KAAA,IAAAjB,CAAA,QAAAM,EAAA,IAAAN,CAAA,QAAAU,EAAA,IAAAV,CAAA,QAAAY,EAAA,IAAAZ,CAAA,SAAAe,EAAA;IALnEC,EAAA,GAAAE,KAAA,CAAC;MAAA,cACaZ,EAAe;MAAAJ,SAAA,EAChBQ,EAA4C;MAAA,eAC1CE,EAAuB;MAAAO,QAAA,GAEpCD,KAAA,CAAC;QAAAhB,SAAA,EAAe,GAAAL,SAAA,SAAqB;QAAAsB,QAAA,GAAGJ,EAAyB,EAAC;MAAA,C,GAClEG,KAAA,CAAC;QAAAhB,SAAA,EAAe,GAAAL,SAAA,WAAuB;QAAAsB,QAAA,GACrCC,IAAA,CAAC;UAAAlB,SAAA,EAAgB,GAAAL,SAAA,iBAA6B;UAAAsB,QAAA,EAC3C,GAAG3B,cAAA,CAAeW,MAAA,CAAAc,KAAA,EAAcb,IAAA;QAAO,C,GAE1CgB,IAAA,CAAA1B,WAAA;UAAAQ,SAAA,EAAwB,GAAAL,SAAA;QAAuB,C;;;;;;;;;;;;;SAVnDmB,E;CAcJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","ChevronIcon","useLocale","useTranslation","baseClass","LocalizerLabel","props","$","ariaLabel","className","locale","i18n","t","t0","t1","filter","Boolean","_jsxs","join","code","undefined","children","_jsx","label"],"sources":["../../../../src/elements/Localizer/LocalizerLabel/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'localizer-button'\n\nexport const LocalizerLabel: React.FC<{\n ariaLabel?: string\n className?: string\n}> = (props) => {\n const { ariaLabel, className } = props\n const locale = useLocale()\n const { i18n, t } = useTranslation()\n\n return (\n <div\n aria-label={ariaLabel || t('general:locale')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n data-locale={locale ? locale.code : undefined}\n >\n <div className={`${baseClass}__label`}>{`${t('general:locale')}:`}&nbsp;</div>\n <div className={`${baseClass}__current`}>\n <span className={`${baseClass}__current-label`}>\n {`${getTranslation(locale.label, i18n)}`}\n </span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,cAAA,GAGRC,KAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACH;IAAAU,SAAA;IAAAC;EAAA,IAAiCH,KAAA;EACjC,MAAAI,MAAA,GAAeR,SAAA;EACf;IAAAS,IAAA;IAAAC;EAAA,IAAoBT,cAAA;EAAA,IAAAU,EAAA;EAAA,IAAAN,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAI,IAAA,IAAAJ,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAK,CAAA;IAAA,IAAAE,EAAA;IAAA,IAAAP,CAAA,QAAAE,SAAA;MAKLK,EAAA,IAAAV,SAAA,EAAYK,SAAA,EAAAM,MAAA,CAAAC,OAAkB;MAAAT,CAAA,MAAAE,SAAA;MAAAF,CAAA,MAAAO,EAAA;IAAA;MAAAA,EAAA,GAAAP,CAAA;IAAA;IAF3CM,EAAA,GAAAI,KAAA,CAAC;MAAA,cACaT,SAAA,IAAaI,CAAA,CAAE;MAAAH,SAAA,EAChBK,EAA8B,CAAAI,IAAA,CAAc;MAAA,eAC1CR,MAAA,GAASA,MAAA,CAAAS,IAAA,GAAAC,SAAc;MAAAC,QAAA,GAEpCJ,KAAA,CAAC;QAAAR,SAAA,EAAe,GAAAL,SAAA,SAAqB;QAAAiB,QAAA,GAAG,GAAGT,CAAA,CAAE,oBAAoB,EAAC;MAAA,C,GAClEK,KAAA,CAAC;QAAAR,SAAA,EAAe,GAAAL,SAAA,WAAuB;QAAAiB,QAAA,GACrCC,IAAA,CAAC;UAAAb,SAAA,EAAgB,GAAAL,SAAA,iBAA6B;UAAAiB,QAAA,EAC3C,GAAGtB,cAAA,CAAeW,MAAA,CAAAa,KAAA,EAAcZ,IAAA;QAAO,C,GAE1CW,IAAA,CAAArB,WAAA;UAAAQ,SAAA,EAAwB,GAAAL,SAAA;QAAuB,C;;;;;;;;;;;;SAVnDS,E;CAcJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAc1C,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,qBA0O3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD,OAAO,KAA2C,MAAM,OAAO,CAAA;AAe/D,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,qBAuP3E"}
@@ -3,7 +3,7 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useModal } from '@faceless-ui/modal';
5
5
  import * as qs from 'qs-esm';
6
- import React, { useCallback } from 'react';
6
+ import React, { useCallback, useEffect, useState } from 'react';
7
7
  import { useForm, useFormModified } from '../../forms/Form/context.js';
8
8
  import { FormSubmit } from '../../forms/Submit/index.js';
9
9
  import { useHotkey } from '../../hooks/useHotkey.js';
@@ -13,6 +13,7 @@ import { useEditDepth } from '../../providers/EditDepth/index.js';
13
13
  import { useLocale } from '../../providers/Locale/index.js';
14
14
  import { useOperation } from '../../providers/Operation/index.js';
15
15
  import { useTranslation } from '../../providers/Translation/index.js';
16
+ import { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js';
16
17
  import { PopupList } from '../Popup/index.js';
17
18
  import { ScheduleDrawer } from './ScheduleDrawer/index.js';
18
19
  export function PublishButton({
@@ -78,6 +79,12 @@ export function PublishButton({
78
79
  // If autosave is enabled the modified will always be true so only conditionally check on modified state
79
80
  const hasAutosave = Boolean(typeof entityConfig?.versions?.drafts === 'object' && entityConfig?.versions?.drafts.autosave);
80
81
  const canSchedulePublish = Boolean(scheduledPublishEnabled && hasPublishPermission && (globalSlug || collectionSlug && id) && (hasAutosave || !modified));
82
+ const [hasLocalizedFields, setHasLocalizedFields] = useState(false);
83
+ useEffect(() => {
84
+ const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields);
85
+ setHasLocalizedFields(hasLocalizedField);
86
+ }, [entityConfig?.fields]);
87
+ const canPublishSpecificLocale = localization && hasLocalizedFields && hasPublishPermission;
81
88
  const operation = useOperation();
82
89
  const disabled = operation === 'update' && !modified;
83
90
  const saveDraft = useCallback(async () => {
@@ -116,20 +123,22 @@ export function PublishButton({
116
123
  void saveDraft();
117
124
  }
118
125
  });
119
- const publish = useCallback(() => {
126
+ const publish = useCallback(async () => {
120
127
  if (uploadStatus === 'uploading') {
121
128
  return;
122
129
  }
123
- void submit({
130
+ const result = await submit({
124
131
  overrides: {
125
132
  _status: 'published'
126
133
  }
127
134
  });
128
- setUnpublishedVersionCount(0);
129
- setMostRecentVersionIsAutosaved(false);
130
- setHasPublishedDoc(true);
135
+ if (result) {
136
+ setUnpublishedVersionCount(0);
137
+ setMostRecentVersionIsAutosaved(false);
138
+ setHasPublishedDoc(true);
139
+ }
131
140
  }, [setHasPublishedDoc, submit, setUnpublishedVersionCount, uploadStatus, setMostRecentVersionIsAutosaved]);
132
- const publishSpecificLocale = useCallback(locale => {
141
+ const publishSpecificLocale = useCallback(async locale => {
133
142
  if (uploadStatus === 'uploading') {
134
143
  return;
135
144
  }
@@ -137,13 +146,15 @@ export function PublishButton({
137
146
  publishSpecificLocale: locale
138
147
  });
139
148
  const action_0 = `${serverURL}${api}${globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}/${id ? `${'/' + id}` : ''}`}${params ? '?' + params : ''}`;
140
- void submit({
149
+ const result_0 = await submit({
141
150
  action: action_0,
142
151
  overrides: {
143
152
  _status: 'published'
144
153
  }
145
154
  });
146
- setHasPublishedDoc(true);
155
+ if (result_0) {
156
+ setHasPublishedDoc(true);
157
+ }
147
158
  }, [api, collectionSlug, globalSlug, id, serverURL, setHasPublishedDoc, submit, uploadStatus]);
148
159
  const publishAll = !localization || localization && localization.defaultLocalePublishOption !== 'active';
149
160
  const activeLocale = localization && localization?.locales.find(locale_0 => typeof locale_0 === 'string' ? locale_0 === localeCode : locale_0.code === localeCode);
@@ -166,7 +177,7 @@ export function PublishButton({
166
177
  enableSubMenu: canSchedulePublish,
167
178
  onClick: defaultPublish,
168
179
  size: "medium",
169
- SubMenuPopupContent: localization || canSchedulePublish ? ({
180
+ SubMenuPopupContent: canPublishSpecificLocale || canSchedulePublish ? ({
170
181
  close
171
182
  }) => {
172
183
  return /*#__PURE__*/_jsxs(React.Fragment, {
@@ -176,7 +187,7 @@ export function PublishButton({
176
187
  onClick: () => [toggleModal(drawerSlug), close()],
177
188
  children: t('version:schedulePublish')
178
189
  })
179
- }, "schedule-publish"), localization && canPublish && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
190
+ }, "schedule-publish"), canPublishSpecificLocale && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
180
191
  children: /*#__PURE__*/_jsx(PopupList.Button, {
181
192
  id: "publish-locale",
182
193
  onClick: secondaryPublish,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","qs","React","useCallback","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","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","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","publish","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 } 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 { 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 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(() => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n void submit({\n overrides: {\n _status: 'published',\n },\n })\n\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }, [\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n (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 void submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n setHasPublishedDoc(true)\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 localization || 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 {localization && canPublish && (\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":"AAAA;;;AAIA,SAASA,QAAQ,QAAQ;AACzB,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAExD,SAASC,OAAO,EAAEC,eAAe,QAAQ;AACzC,SAASC,UAAU,QAAQ;AAC3B,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAE/B,OAAO,SAASC,cAAc;EAAEC,KAAA,EAAOC;AAAS,CAA4B;EAC1E,MAAM;IACJC,EAAE;IACFC,cAAc;IACdC,SAAS;IACTC,UAAU;IACVC,eAAe;IACfC,oBAAoB;IACpBC,kBAAkB;IAClBC,+BAA+B;IAC/BC,0BAA0B;IAC1BC,uBAAuB;IACvBC;EAAY,CACb,GAAGrB,eAAA;EAEJ,MAAM;IAAEsB,MAAM;IAAEC;EAAe,CAAE,GAAGxB,SAAA;EACpC,MAAM;IAAEyB;EAAM,CAAE,GAAG7B,OAAA;EACnB,MAAM8B,QAAA,GAAW7B,eAAA;EACjB,MAAM8B,SAAA,GAAYzB,YAAA;EAClB,MAAM;IAAE0B,IAAA,EAAMC;EAAU,CAAE,GAAG1B,SAAA;EAC7B,MAAM;IAAE2B,WAAW;IAAEC;EAAW,CAAE,GAAGzC,QAAA;EAErC,MAAM0C,UAAA,GAAa,oBAAoBpB,EAAA,EAAI;EAE3C,MAAM;IACJqB,YAAY;IACZC,MAAA,EAAQ;MAAEC;IAAG,CAAE;IACfC;EAAS,CACV,GAAGb,MAAA;EAEJ,MAAM;IAAEc;EAAC,CAAE,GAAGhC,cAAA;EACd,MAAMK,KAAA,GAAQC,SAAA,IAAa0B,CAAA,CAAE;EAE7B,MAAMC,YAAA,GAAe9C,KAAA,CAAM+C,OAAO,CAAC;IACjC,IAAI1B,cAAA,EAAgB;MAClB,OAAOW,eAAA,CAAgB;QAAEX;MAAe;IAC1C;IAEA,IAAIE,UAAA,EAAY;MACd,OAAOS,eAAA,CAAgB;QAAET;MAAW;IACtC;EACF,GAAG,CAACF,cAAA,EAAgBE,UAAA,EAAYS,eAAA,CAAgB;EAEhD,MAAMgB,gBAAA,GAAmBnB,uBAAA,GAA0B;EAEnD,MAAMoB,eAAA,GACJ,OAAOH,YAAA,EAAcI,QAAA,EAAUC,MAAA,KAAW,YAC1CL,YAAA,EAAcI,QAAA,EAAUC,MAAA,CAAOF,eAAA;EAEjC,MAAMG,UAAA,GACJ3B,oBAAA,KACCS,QAAA,IAAYc,gBAAA,IAAoB,CAACxB,eAAc,KAChDM,YAAA,KAAiB;EAEnB,MAAMuB,uBAAA,GAA0BC,OAAA,CAAQL,eAAA;EAExC;EACA,MAAMM,WAAA,GAAcD,OAAA,CAClB,OAAOR,YAAA,EAAcI,QAAA,EAAUC,MAAA,KAAW,YAAYL,YAAA,EAAcI,QAAA,EAAUC,MAAA,CAAOK,QAAA;EAGvF,MAAMC,kBAAA,GAAqBH,OAAA,CACzBD,uBAAA,IACE5B,oBAAA,KACCF,UAAA,IAAeF,cAAA,IAAkBD,EAAE,MACnCmC,WAAA,IAAe,CAACrB,QAAO;EAG5B,MAAM,CAACwB,kBAAA,EAAoBC,qBAAA,CAAsB,GAAGxD,QAAA,CAAS;EAE7DD,SAAA,CAAU;IACR,MAAM0D,iBAAA,GAAoB9C,0BAAA,CAA2BgC,YAAA,EAAce,MAAA;IACnEF,qBAAA,CAAsBC,iBAAA;EACxB,GAAG,CAACd,YAAA,EAAce,MAAA,CAAO;EAEzB,MAAMC,wBAAA,GAA2BrB,YAAA,IAAgBiB,kBAAA,IAAsBjC,oBAAA;EAEvE,MAAMsC,SAAA,GAAYnD,YAAA;EAElB,MAAMoD,QAAA,GAAWD,SAAA,KAAc,YAAY,CAAC7B,QAAA;EAE5C,MAAM+B,SAAA,GAAYhE,WAAA,CAAY;IAC5B,IAAI+D,QAAA,EAAU;MACZ;IACF;IAEA,MAAME,MAAA,GAAS,WAAW7B,UAAA,0CAAoD;IAC9E,IAAI8B,MAAA;IACJ,IAAIC,MAAA,GAAS;IAEb,IAAI/C,cAAA,EAAgB;MAClB8C,MAAA,GAAS,GAAGvB,SAAA,GAAYD,GAAA,IAAOtB,cAAA,GAAiBD,EAAA,GAAK,IAAIA,EAAA,EAAI,GAAG,KAAK8C,MAAA,EAAQ;MAC7E,IAAI9C,EAAA,EAAI;QACNgD,MAAA,GAAS;MACX;IACF;IAEA,IAAI7C,UAAA,EAAY;MACd4C,MAAA,GAAS,GAAGvB,SAAA,GAAYD,GAAA,YAAepB,UAAA,GAAa2C,MAAA,EAAQ;IAC9D;IAEA,MAAMjC,MAAA,CAAO;MACXkC,MAAA;MACAC,MAAA;MACAC,SAAA,EAAW;QACTC,OAAA,EAAS;MACX;MACAC,cAAA,EAAgB;IAClB;EACF,GAAG,CAACtC,MAAA,EAAQZ,cAAA,EAAgBE,UAAA,EAAYqB,SAAA,EAAWD,GAAA,EAAKN,UAAA,EAAYjB,EAAA,EAAI4C,QAAA,CAAS;EAEjFzD,SAAA,CAAU;IAAEiE,UAAA,EAAY;IAAMrC,SAAA;IAAWsC,QAAA,EAAU,CAAC;EAAK,GAAIC,CAAA;IAC3DA,CAAA,CAAEC,cAAc;IAChBD,CAAA,CAAEE,eAAe;IAEjB,IAAIX,SAAA,IAAa3C,SAAA,CAAU4B,QAAQ,EAAEC,MAAA,IAAU7B,SAAA,CAAU4B,QAAQ,EAAEC,MAAA,EAAQK,QAAA,EAAU;MACnF,KAAKS,SAAA;IACP;EACF;EAEA,MAAMY,OAAA,GAAU5E,WAAA,CAAY;IAC1B,IAAI6B,YAAA,KAAiB,aAAa;MAChC;IACF;IAEA,MAAMgD,MAAA,GAAS,MAAM7C,MAAA,CAAO;MAC1BoC,SAAA,EAAW;QACTC,OAAA,EAAS;MACX;IACF;IAEA,IAAIQ,MAAA,EAAQ;MACVlD,0BAAA,CAA2B;MAC3BD,+BAAA,CAAgC;MAChCD,kBAAA,CAAmB;IACrB;EACF,GAAG,CACDA,kBAAA,EACAO,MAAA,EACAL,0BAAA,EACAE,YAAA,EACAH,+BAAA,CACD;EAED,MAAMoD,qBAAA,GAAwB9E,WAAA,CAC5B,MAAO+E,MAAA;IACL,IAAIlD,YAAA,KAAiB,aAAa;MAChC;IACF;IAEA,MAAMmD,MAAA,GAASlF,EAAA,CAAGmF,SAAS,CAAC;MAC1BH,qBAAA,EAAuBC;IACzB;IAEA,MAAMb,QAAA,GAAS,GAAGvB,SAAA,GAAYD,GAAA,GAC5BpB,UAAA,GAAa,YAAYA,UAAA,EAAY,GAAG,IAAIF,cAAA,IAAkBD,EAAA,GAAK,GAAG,MAAMA,EAAA,EAAI,GAAG,IAAI,GACtF6D,MAAA,GAAS,MAAMA,MAAA,GAAS,IAAI;IAE/B,MAAMH,QAAA,GAAS,MAAM7C,MAAA,CAAO;MAC1BkC,MAAA,EAAAA,QAAA;MACAE,SAAA,EAAW;QACTC,OAAA,EAAS;MACX;IACF;IAEA,IAAIQ,QAAA,EAAQ;MACVpD,kBAAA,CAAmB;IACrB;EACF,GACA,CAACiB,GAAA,EAAKtB,cAAA,EAAgBE,UAAA,EAAYH,EAAA,EAAIwB,SAAA,EAAWlB,kBAAA,EAAoBO,MAAA,EAAQH,YAAA,CAAa;EAG5F,MAAMqD,UAAA,GACJ,CAAC1C,YAAA,IAAiBA,YAAA,IAAgBA,YAAA,CAAa2C,0BAA0B,KAAK;EAEhF,MAAMC,YAAA,GACJ5C,YAAA,IACAA,YAAA,EAAc6C,OAAA,CAAQC,IAAA,CAAMP,QAAA,IAC1B,OAAOA,QAAA,KAAW,WAAWA,QAAA,KAAW3C,UAAA,GAAa2C,QAAA,CAAO5C,IAAI,KAAKC,UAAA;EAGzE,MAAMmD,iBAAA,GACJH,YAAA,KACC,OAAOA,YAAA,CAAanE,KAAK,KAAK,WAC3BmE,YAAA,CAAanE,KAAK,GACjBmE,YAAA,CAAanE,KAAK,GAAGmB,UAAA,CAAW,IAAIoD,SAAS;EAEpD,MAAMC,cAAA,GAAiBP,UAAA,GAAaN,OAAA,GAAU,MAAME,qBAAA,CAAsBM,YAAA,CAAajD,IAAI;EAC3F,MAAMuD,YAAA,GAAeR,UAAA,GAAajE,KAAA,GAAQ2B,CAAA,CAAE,qBAAqB;IAAEmC,MAAA,EAAQQ;EAAkB;EAE7F,MAAMI,gBAAA,GAAmBT,UAAA,GAAa,MAAMJ,qBAAA,CAAsBM,YAAA,CAAajD,IAAI,IAAIyC,OAAA;EACvF,MAAMgB,cAAA,GAAiBV,UAAA,GACnBtC,CAAA,CAAE,qBAAqB;IAAEmC,MAAA,EAAQQ;EAAkB,KACnD3C,CAAA,CAAE;EAEN,IAAI,CAACpB,oBAAA,EAAsB;IACzB,OAAO;EACT;EAEA,oBACEqE,KAAA,CAAC9F,KAAA,CAAM+F,QAAQ;4BACbC,IAAA,CAAC1F,UAAA;MACC2F,QAAA,EAAS;MACTjC,QAAA,EAAU,CAACZ,UAAA;MACX8C,aAAA,EAAezC,kBAAA;MACf0C,OAAA,EAAST,cAAA;MACTU,IAAA,EAAK;MACLC,mBAAA,EACEvC,wBAAA,IAA4BL,kBAAA,GACxB,CAAC;QAAE6C;MAAK,CAAE;QACR,oBACER,KAAA,CAAC9F,KAAA,CAAM+F,QAAQ;qBACZtC,kBAAA,iBACCuC,IAAA,CAACjF,SAAA,CAAUwF,WAAW;sBACpB,aAAAP,IAAA,CAACjF,SAAA,CAAUyF,MAAM;cACfpF,EAAA,EAAG;cACH+E,OAAA,EAASA,CAAA,KAAM,CAAC5D,WAAA,CAAYC,UAAA,GAAa8D,KAAA,GAAQ;wBAEhDzD,CAAA,CAAE;;aALoB,qBAS5BiB,wBAAA,iBACCkC,IAAA,CAACjF,SAAA,CAAUwF,WAAW;sBACpB,aAAAP,IAAA,CAACjF,SAAA,CAAUyF,MAAM;cAACpF,EAAA,EAAG;cAAiB+E,OAAA,EAASP,gBAAA;wBAC5CC;;;;MAMb,IACAJ,SAAA;MAENgB,IAAA,EAAK;gBAEJhE,YAAA,GAAekD,YAAA,GAAezE;QAEhCuC,kBAAA,IAAsBnB,WAAA,CAAYE,UAAA,kBACjCwD,IAAA,CAAChF,cAAA;MACC0F,WAAA,EAAa,CAAC1D,gBAAA,GAAmB,cAAc;MAC/C2D,qBAAA,EAAuB,OAAO1D,eAAA,KAAoB,YAAYA,eAAA;MAC9D2D,IAAA,EAAMpE;;;AAKhB","ignoreList":[]}