@payloadcms/ui 4.0.0-canary.28 → 4.0.0-canary.29
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.
- package/dist/elements/AppHeader/index.js +1 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +2 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +2 -3
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
- package/dist/elements/CopyLocaleData/index.js +8 -9
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +2 -3
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +2 -3
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +2 -3
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +2 -3
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js +2 -3
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +2 -3
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.js +1 -1
- package/dist/elements/LivePreview/Window/index.js.map +1 -1
- package/dist/elements/Localizer/index.js +1 -1
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +8 -30
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +5 -6
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +2 -3
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/RestoreMany/index.d.ts.map +1 -1
- package/dist/elements/RestoreMany/index.js +2 -3
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +2 -3
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +2 -3
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +2 -3
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +2 -3
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
- package/dist/elements/UnpublishButton/index.js +3 -4
- package/dist/elements/UnpublishButton/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +2 -3
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +2 -3
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +2 -3
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js +4 -5
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +2 -3
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +2 -3
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +20 -19
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/Input.spec.js +242 -0
- package/dist/fields/Upload/Input.spec.js.map +1 -0
- package/dist/fields/shared/index.d.ts +1 -1
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +2 -3
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/NullifyField/index.d.ts.map +1 -1
- package/dist/forms/NullifyField/index.js +2 -3
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +2 -3
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +2 -3
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts +1 -5
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +61 -139
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +2 -3
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +5 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +15 -0
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/utilities/getHasScheduledPublish.d.ts +2 -3
- package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
- package/dist/utilities/getHasScheduledPublish.js +2 -5
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.d.ts +8 -1
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +68 -4
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +2 -1
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +2 -3
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +1 -2
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +3 -2
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
- package/dist/views/Version/Default/SetStepNav.js +10 -13
- package/dist/views/Version/Default/SetStepNav.js.map +1 -1
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +12 -13
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js +2 -3
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
- package/package.json +4 -4
|
@@ -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 } from "react/jsx-runtime";
|
|
5
4
|
import { formatAdminURL } from 'payload/shared';
|
|
6
5
|
import React, { createContext, use, useEffect, useRef, useState } from 'react';
|
|
@@ -9,7 +8,7 @@ import { useAuth } from '../Auth/index.js';
|
|
|
9
8
|
import { useConfig } from '../Config/index.js';
|
|
10
9
|
import { useSearchParams } from '../RouterAdapter/index.js';
|
|
11
10
|
import { useRouteTransition } from '../RouteTransition/index.js';
|
|
12
|
-
const LocaleContext = /*#__PURE__*/createContext(
|
|
11
|
+
const LocaleContext = /*#__PURE__*/createContext(null);
|
|
13
12
|
export const LocaleLoadingContext = /*#__PURE__*/createContext({
|
|
14
13
|
localeIsLoading: false,
|
|
15
14
|
setLocaleIsLoading: _ => undefined
|
|
@@ -21,155 +20,78 @@ const fetchPreferences = async (key, baseURL) => await fetch(`${baseURL}/payload
|
|
|
21
20
|
},
|
|
22
21
|
method: 'GET'
|
|
23
22
|
})?.then(res => res.json());
|
|
24
|
-
export const LocaleProvider =
|
|
25
|
-
|
|
23
|
+
export const LocaleProvider = ({
|
|
24
|
+
children,
|
|
25
|
+
/**
|
|
26
|
+
The `locale` prop originates from the root layout, which does not have access to search params
|
|
27
|
+
This component uses the `useSearchParams` hook to get the locale from the URL as precedence over this prop
|
|
28
|
+
This prop does not update as the user navigates the site, because the root layout does not re-render
|
|
29
|
+
*/
|
|
30
|
+
locale: initialLocaleFromPrefs
|
|
31
|
+
}) => {
|
|
26
32
|
const {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
config: {
|
|
34
|
+
localization = false,
|
|
35
|
+
routes: {
|
|
36
|
+
api: apiRoute
|
|
37
|
+
}
|
|
38
|
+
}
|
|
32
39
|
} = useConfig();
|
|
33
|
-
const {
|
|
34
|
-
localization: t2,
|
|
35
|
-
routes: t3
|
|
36
|
-
} = t1;
|
|
37
|
-
const localization = t2 === undefined ? false : t2;
|
|
38
|
-
const {
|
|
39
|
-
api: apiRoute
|
|
40
|
-
} = t3;
|
|
41
40
|
const {
|
|
42
41
|
user
|
|
43
42
|
} = useAuth();
|
|
44
43
|
const {
|
|
45
44
|
isTransitioning
|
|
46
45
|
} = useRouteTransition();
|
|
47
|
-
const defaultLocale = localization ? localization.defaultLocale :
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
t5 = $[1];
|
|
56
|
-
}
|
|
57
|
-
const localeFromParams = t5;
|
|
58
|
-
let t6;
|
|
59
|
-
if ($[2] !== defaultLocale || $[3] !== initialLocaleFromPrefs || $[4] !== localeFromParams || $[5] !== localization) {
|
|
60
|
-
t6 = () => {
|
|
61
|
-
if (!localization || localization && !localization.locales.length) {
|
|
62
|
-
return {};
|
|
63
|
-
}
|
|
64
|
-
return findLocaleFromCode(localization, localeFromParams) || findLocaleFromCode(localization, initialLocaleFromPrefs) || findLocaleFromCode(localization, defaultLocale) || findLocaleFromCode(localization, localization.locales[0].code);
|
|
65
|
-
};
|
|
66
|
-
$[2] = defaultLocale;
|
|
67
|
-
$[3] = initialLocaleFromPrefs;
|
|
68
|
-
$[4] = localeFromParams;
|
|
69
|
-
$[5] = localization;
|
|
70
|
-
$[6] = t6;
|
|
71
|
-
} else {
|
|
72
|
-
t6 = $[6];
|
|
73
|
-
}
|
|
74
|
-
const [locale, setLocale] = React.useState(t6);
|
|
46
|
+
const defaultLocale = localization ? localization.defaultLocale : 'en';
|
|
47
|
+
const localeFromParams = useSearchParams().get('locale');
|
|
48
|
+
const [locale, setLocale] = React.useState(() => {
|
|
49
|
+
if (!localization || localization && !localization.locales.length) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return findLocaleFromCode(localization, localeFromParams) || findLocaleFromCode(localization, initialLocaleFromPrefs) || findLocaleFromCode(localization, defaultLocale) || findLocaleFromCode(localization, localization.locales[0].code);
|
|
53
|
+
});
|
|
75
54
|
const [isLoading, setLocaleIsLoading] = useState(false);
|
|
76
55
|
const prevLocale = useRef(locale);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
path: ""
|
|
101
|
-
});
|
|
102
|
-
$[11] = apiRoute;
|
|
103
|
-
$[12] = t9;
|
|
104
|
-
} else {
|
|
105
|
-
t9 = $[12];
|
|
106
|
-
}
|
|
107
|
-
const fetchURL = t9;
|
|
108
|
-
let t10;
|
|
109
|
-
if ($[13] !== defaultLocale || $[14] !== fetchURL || $[15] !== localeFromParams || $[16] !== localization || $[17] !== user?.id) {
|
|
110
|
-
t10 = () => {
|
|
111
|
-
const resetLocale = async function resetLocale() {
|
|
112
|
-
if (localization && user?.id) {
|
|
113
|
-
const localeToUse = localeFromParams || (await fetchPreferences("locale", fetchURL)?.then(_temp));
|
|
114
|
-
const newLocale = findLocaleFromCode(localization, localeToUse) || findLocaleFromCode(localization, defaultLocale) || findLocaleFromCode(localization, localization?.locales?.[0]?.code);
|
|
115
|
-
if (newLocale) {
|
|
116
|
-
setLocale(newLocale);
|
|
117
|
-
}
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
// Keep fields disabled until the new locale's document state finishes loading.
|
|
58
|
+
if (locale?.code !== prevLocale.current?.code && !isTransitioning) {
|
|
59
|
+
setLocaleIsLoading(false);
|
|
60
|
+
prevLocale.current = locale;
|
|
61
|
+
}
|
|
62
|
+
}, [isTransitioning, locale]);
|
|
63
|
+
const fetchURL = formatAdminURL({
|
|
64
|
+
apiRoute,
|
|
65
|
+
path: ''
|
|
66
|
+
});
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
/**
|
|
69
|
+
* This effect should only run when `localeFromParams` changes, i.e. when the user clicks an anchor link
|
|
70
|
+
* The root layout, which sends the initial locale from prefs, will not re-render as the user navigates the site
|
|
71
|
+
* For this reason, we need to fetch the locale from prefs if the search params clears the `locale` query param
|
|
72
|
+
*/
|
|
73
|
+
async function resetLocale() {
|
|
74
|
+
if (localization && user?.id) {
|
|
75
|
+
const localeToUse = localeFromParams || (await fetchPreferences('locale', fetchURL)?.then(res => res.value));
|
|
76
|
+
const newLocale = findLocaleFromCode(localization, localeToUse) || findLocaleFromCode(localization, defaultLocale) || findLocaleFromCode(localization, localization?.locales?.[0]?.code);
|
|
77
|
+
if (newLocale) {
|
|
78
|
+
setLocale(newLocale);
|
|
118
79
|
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if ($[19] !== defaultLocale || $[20] !== fetchURL || $[21] !== localeFromParams || $[22] !== localization || $[23] !== t11) {
|
|
134
|
-
t12 = [defaultLocale, localization, fetchURL, localeFromParams, t11];
|
|
135
|
-
$[19] = defaultLocale;
|
|
136
|
-
$[20] = fetchURL;
|
|
137
|
-
$[21] = localeFromParams;
|
|
138
|
-
$[22] = localization;
|
|
139
|
-
$[23] = t11;
|
|
140
|
-
$[24] = t12;
|
|
141
|
-
} else {
|
|
142
|
-
t12 = $[24];
|
|
143
|
-
}
|
|
144
|
-
useEffect(t10, t12);
|
|
145
|
-
let t13;
|
|
146
|
-
if ($[25] !== children || $[26] !== isLoading || $[27] !== locale) {
|
|
147
|
-
t13 = _jsx(LocaleContext, {
|
|
148
|
-
value: locale,
|
|
149
|
-
children: _jsx(LocaleLoadingContext, {
|
|
150
|
-
value: {
|
|
151
|
-
localeIsLoading: isLoading,
|
|
152
|
-
setLocaleIsLoading
|
|
153
|
-
},
|
|
154
|
-
children
|
|
155
|
-
})
|
|
156
|
-
});
|
|
157
|
-
$[25] = children;
|
|
158
|
-
$[26] = isLoading;
|
|
159
|
-
$[27] = locale;
|
|
160
|
-
$[28] = t13;
|
|
161
|
-
} else {
|
|
162
|
-
t13 = $[28];
|
|
163
|
-
}
|
|
164
|
-
return t13;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
void resetLocale();
|
|
83
|
+
}, [defaultLocale, localization, fetchURL, localeFromParams, user?.id]);
|
|
84
|
+
return /*#__PURE__*/_jsx(LocaleContext, {
|
|
85
|
+
value: locale,
|
|
86
|
+
children: /*#__PURE__*/_jsx(LocaleLoadingContext, {
|
|
87
|
+
value: {
|
|
88
|
+
localeIsLoading: isLoading,
|
|
89
|
+
setLocaleIsLoading
|
|
90
|
+
},
|
|
91
|
+
children: children
|
|
92
|
+
})
|
|
93
|
+
});
|
|
165
94
|
};
|
|
166
95
|
export const useLocaleLoading = () => use(LocaleLoadingContext);
|
|
167
|
-
/**
|
|
168
|
-
* TODO: V4
|
|
169
|
-
* The return type of the `useLocale` hook will change in v4. It will return `null | Locale` instead of `false | {} | Locale`.
|
|
170
|
-
*/
|
|
171
96
|
export const useLocale = () => use(LocaleContext);
|
|
172
|
-
function _temp(res) {
|
|
173
|
-
return res.value;
|
|
174
|
-
}
|
|
175
97
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["formatAdminURL","React","createContext","use","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","useSearchParams","useRouteTransition","LocaleContext","LocaleLoadingContext","localeIsLoading","setLocaleIsLoading","_","undefined","fetchPreferences","key","baseURL","fetch","credentials","headers","method","then","res","json","LocaleProvider","children","locale","initialLocaleFromPrefs","config","localization","routes","api","apiRoute","user","isTransitioning","defaultLocale","localeFromParams","get","setLocale","locales","length","code","isLoading","prevLocale","current","fetchURL","path","resetLocale","id","localeToUse","value","newLocale","_jsx","useLocaleLoading","useLocale"],"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { createContext, use, useEffect, useRef, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { useSearchParams } from '../RouterAdapter/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nconst LocaleContext = createContext<Locale | null>(null)\n\nexport const LocaleLoadingContext = createContext({\n localeIsLoading: false,\n setLocaleIsLoading: (_: boolean) => undefined,\n})\n\nconst fetchPreferences = async <T extends Record<string, unknown> | string>(\n key: string,\n baseURL: string,\n): Promise<{ id: string; value: T }> =>\n await fetch(`${baseURL}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })?.then((res) => res.json() as Promise<{ id: string; value: T }>)\n\nexport const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Locale['code'] }> = ({\n children,\n /**\n The `locale` prop originates from the root layout, which does not have access to search params\n This component uses the `useSearchParams` hook to get the locale from the URL as precedence over this prop\n This prop does not update as the user navigates the site, because the root layout does not re-render\n */\n locale: initialLocaleFromPrefs,\n}) => {\n const {\n config: {\n localization = false,\n routes: { api: apiRoute },\n },\n } = useConfig()\n\n const { user } = useAuth()\n const { isTransitioning } = useRouteTransition()\n\n const defaultLocale = localization ? localization.defaultLocale : 'en'\n\n const localeFromParams = useSearchParams().get('locale')\n\n const [locale, setLocale] = React.useState<Locale | null>(() => {\n if (!localization || (localization && !localization.locales.length)) {\n return null\n }\n\n return (\n findLocaleFromCode(localization, localeFromParams) ||\n findLocaleFromCode(localization, initialLocaleFromPrefs) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization.locales[0].code)\n )\n })\n\n const [isLoading, setLocaleIsLoading] = useState(false)\n\n const prevLocale = useRef<Locale | null>(locale)\n\n useEffect(() => {\n // Keep fields disabled until the new locale's document state finishes loading.\n if (locale?.code !== prevLocale.current?.code && !isTransitioning) {\n setLocaleIsLoading(false)\n prevLocale.current = locale\n }\n }, [isTransitioning, locale])\n\n const fetchURL = formatAdminURL({\n apiRoute,\n path: '',\n })\n\n useEffect(() => {\n /**\n * This effect should only run when `localeFromParams` changes, i.e. when the user clicks an anchor link\n * The root layout, which sends the initial locale from prefs, will not re-render as the user navigates the site\n * For this reason, we need to fetch the locale from prefs if the search params clears the `locale` query param\n */\n async function resetLocale() {\n if (localization && user?.id) {\n const localeToUse =\n localeFromParams ||\n (await fetchPreferences<Locale['code']>('locale', fetchURL)?.then((res) => res.value))\n\n const newLocale =\n findLocaleFromCode(localization, localeToUse) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization?.locales?.[0]?.code)\n\n if (newLocale) {\n setLocale(newLocale)\n }\n }\n }\n\n void resetLocale()\n }, [defaultLocale, localization, fetchURL, localeFromParams, user?.id])\n\n return (\n <LocaleContext value={locale}>\n <LocaleLoadingContext value={{ localeIsLoading: isLoading, setLocaleIsLoading }}>\n {children}\n </LocaleLoadingContext>\n </LocaleContext>\n )\n}\n\nexport const useLocaleLoading = () => use(LocaleLoadingContext)\n\nexport const useLocale = (): Locale | null => use(LocaleContext)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Selection/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,OAAO,KAAgF,MAAM,OAAO,CAAA;AAQpG,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,KAAK,MAAM,CAAA;IACpD,cAAc,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAChC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3C;;;OAGG;IACH,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAcD,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAElC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAcD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Selection/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,OAAO,KAAgF,MAAM,OAAO,CAAA;AAQpG,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,KAAK,MAAM,CAAA;IACpD,cAAc,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAChC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3C;;;OAGG;IACH,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAcD,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAElC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAcD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqM7C,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,gBAAgC,CAAA"}
|
|
@@ -44,9 +44,8 @@ export const SelectionProvider = ({
|
|
|
44
44
|
const {
|
|
45
45
|
user
|
|
46
46
|
} = useAuth();
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
} = useLocale();
|
|
47
|
+
const currentLocale = useLocale();
|
|
48
|
+
const locale = currentLocale?.code;
|
|
50
49
|
const [selected, setSelected] = useState(() => {
|
|
51
50
|
const rows = new Map();
|
|
52
51
|
docs.forEach(({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","parseSearchParams","useAuth","useListQuery","useLocale","useSearchParams","SelectAllStatus","Context","count","undefined","getQueryParams","additionalParams","getSelectedIds","selectAll","selected","Map","selectedIDs","setSelection","id","toggleAll","totalDocs","reduceActiveSelections","ids","key","value","push","SelectionProvider","children","docs","contextRef","user","code","locale","setSelected","rows","forEach","set","setSelectAll","setCount","searchParams","query","allAvailable","_isLocked","_userEditing","shouldSelect","size","length","doc","find","existingValue","get","isSelected","newMap","additionalWhereParams","where","params","not_equals","in","and","stringify","addQueryPrefix","some","all","_","newCount","current","_jsx","useSelection"],"sources":["../../../src/providers/Selection/index.tsx"],"sourcesContent":["'use client'\nimport type { Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useListQuery } from '../ListQuery/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { useSearchParams } from '../RouterAdapter/index.js'\n\nexport enum SelectAllStatus {\n AllAvailable = 'allAvailable',\n AllInPage = 'allInPage',\n None = 'none',\n Some = 'some',\n}\n\ntype SelectionContext = {\n count: number\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n getQueryParams: (additionalParams?: Where) => string\n getSelectedIds: () => (number | string)[]\n selectAll: SelectAllStatus\n selected: Map<number | string, boolean>\n selectedIDs: (number | string)[]\n setSelection: (id: number | string) => void\n /**\n * Selects all rows on the current page within the current query.\n * If `allAvailable` is true, does not select specific IDs so that the query itself affects all rows across all pages.\n */\n toggleAll: (allAvailable?: boolean) => void\n totalDocs: number\n}\n\nconst Context = createContext({\n count: undefined,\n getQueryParams: (additionalParams?: Where) => '',\n getSelectedIds: () => [],\n selectAll: undefined,\n selected: new Map(),\n selectedIDs: [],\n setSelection: (id: number | string) => {},\n toggleAll: (toggleAll: boolean) => {},\n totalDocs: undefined,\n} satisfies SelectionContext)\n\ntype Props = {\n readonly children: React.ReactNode\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly docs: any[]\n readonly totalDocs: number\n}\n\nconst reduceActiveSelections = (selected: Map<number | string, boolean>): (number | string)[] => {\n const ids = []\n\n for (const [key, value] of selected) {\n if (value) {\n ids.push(key)\n }\n }\n\n return ids\n}\n\nexport const SelectionProvider: React.FC<Props> = ({ children, docs = [], totalDocs }) => {\n const contextRef = useRef({} as SelectionContext)\n const { user } = useAuth()\n\n const { code: locale } = useLocale()\n\n const [selected, setSelected] = useState<SelectionContext['selected']>(() => {\n const rows = new Map()\n\n docs.forEach(({ id }) => {\n rows.set(id, false)\n })\n\n return rows\n })\n\n const [selectAll, setSelectAll] = useState<SelectAllStatus>(SelectAllStatus.None)\n const [count, setCount] = useState(0)\n const searchParams = useSearchParams()\n const { query } = useListQuery()\n\n const toggleAll: SelectionContext['toggleAll'] = useCallback(\n (allAvailable = false) => {\n const rows = new Map()\n if (allAvailable) {\n setSelectAll(SelectAllStatus.AllAvailable)\n\n docs.forEach(({ id, _isLocked, _userEditing }) => {\n if (!_isLocked || _userEditing?.id === user?.id) {\n rows.set(id, true)\n }\n })\n } else if (\n // Reset back to `None` if we previously had any type of selection\n selectAll === SelectAllStatus.AllAvailable ||\n selectAll === SelectAllStatus.AllInPage\n ) {\n setSelectAll(SelectAllStatus.None)\n } else {\n const shouldSelect = selectAll !== SelectAllStatus.Some\n\n docs.forEach(({ id, _isLocked, _userEditing }) => {\n if (!_isLocked || _userEditing?.id === user?.id) {\n rows.set(id, shouldSelect)\n }\n })\n\n // Set selectAll synchronously to avoid race conditions with useEffect\n if (shouldSelect && rows.size > 0) {\n if (rows.size === docs.length) {\n setSelectAll(SelectAllStatus.AllInPage)\n } else {\n setSelectAll(SelectAllStatus.Some)\n }\n } else {\n setSelectAll(SelectAllStatus.None)\n }\n }\n\n setSelected(rows)\n },\n [docs, selectAll, user?.id],\n )\n\n const setSelection: SelectionContext['setSelection'] = useCallback(\n (id) => {\n const doc = docs.find((doc) => doc.id === id)\n\n if (doc?._isLocked && user?.id !== doc?._userEditing.id) {\n return // Prevent selection if the document is locked\n }\n\n const existingValue = selected.get(id)\n const isSelected = typeof existingValue === 'boolean' ? !existingValue : true\n\n const newMap = new Map(selected.set(id, isSelected))\n\n // If previously selected all and now deselecting, adjust status\n if (selectAll === SelectAllStatus.AllAvailable && !isSelected) {\n setSelectAll(SelectAllStatus.Some)\n }\n\n setSelected(newMap)\n },\n [selected, docs, selectAll, user?.id],\n )\n\n const getQueryParams = useCallback(\n (additionalWhereParams?: Where): string => {\n let where: Where\n\n if (selectAll === SelectAllStatus.AllAvailable) {\n const params = parseSearchParams(searchParams)?.where as Where\n\n where = params || {\n id: {\n not_equals: '',\n },\n }\n } else {\n const ids = []\n\n for (const [key, value] of selected) {\n if (value) {\n ids.push(key)\n }\n }\n\n where = {\n id: {\n in: ids,\n },\n }\n }\n\n if (additionalWhereParams) {\n where = {\n and: [{ ...additionalWhereParams }, where],\n }\n }\n\n return qs.stringify(\n {\n locale,\n where,\n },\n { addQueryPrefix: true },\n )\n },\n [selectAll, selected, locale, searchParams],\n )\n\n const getSelectedIds = useCallback(() => reduceActiveSelections(selected), [selected])\n\n useEffect(() => {\n if (selectAll === SelectAllStatus.AllAvailable) {\n return\n }\n let some = false\n let all = true\n\n if (!selected.size) {\n all = false\n some = false\n } else {\n for (const [_, value] of selected) {\n all = all && value\n some = some || value\n }\n }\n\n if (all && selected.size === docs.length) {\n setSelectAll(SelectAllStatus.AllInPage)\n } else if (some) {\n setSelectAll(SelectAllStatus.Some)\n } else {\n setSelectAll(SelectAllStatus.None)\n }\n }, [selectAll, selected, totalDocs, docs])\n\n useEffect(() => {\n let newCount = 0\n\n if (selectAll === SelectAllStatus.AllAvailable) {\n newCount = totalDocs\n } else {\n for (const [_, value] of selected) {\n if (value) {\n newCount++\n }\n }\n }\n\n setCount(newCount)\n }, [selectAll, selected, totalDocs])\n\n useEffect(() => {\n setSelectAll(SelectAllStatus.None)\n setSelected(new Map())\n }, [query])\n\n const selectedIDs = useMemo(() => reduceActiveSelections(selected), [selected])\n\n contextRef.current = {\n count,\n getQueryParams,\n getSelectedIds,\n selectAll,\n selected,\n selectedIDs,\n setSelection,\n toggleAll,\n totalDocs,\n }\n\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const useSelection = (): SelectionContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","parseSearchParams","useAuth","useListQuery","useLocale","useSearchParams","SelectAllStatus","Context","count","undefined","getQueryParams","additionalParams","getSelectedIds","selectAll","selected","Map","selectedIDs","setSelection","id","toggleAll","totalDocs","reduceActiveSelections","ids","key","value","push","SelectionProvider","children","docs","contextRef","user","currentLocale","locale","code","setSelected","rows","forEach","set","setSelectAll","setCount","searchParams","query","allAvailable","_isLocked","_userEditing","shouldSelect","size","length","doc","find","existingValue","get","isSelected","newMap","additionalWhereParams","where","params","not_equals","in","and","stringify","addQueryPrefix","some","all","_","newCount","current","_jsx","useSelection"],"sources":["../../../src/providers/Selection/index.tsx"],"sourcesContent":["'use client'\nimport type { Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useListQuery } from '../ListQuery/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { useSearchParams } from '../RouterAdapter/index.js'\n\nexport enum SelectAllStatus {\n AllAvailable = 'allAvailable',\n AllInPage = 'allInPage',\n None = 'none',\n Some = 'some',\n}\n\ntype SelectionContext = {\n count: number\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n getQueryParams: (additionalParams?: Where) => string\n getSelectedIds: () => (number | string)[]\n selectAll: SelectAllStatus\n selected: Map<number | string, boolean>\n selectedIDs: (number | string)[]\n setSelection: (id: number | string) => void\n /**\n * Selects all rows on the current page within the current query.\n * If `allAvailable` is true, does not select specific IDs so that the query itself affects all rows across all pages.\n */\n toggleAll: (allAvailable?: boolean) => void\n totalDocs: number\n}\n\nconst Context = createContext({\n count: undefined,\n getQueryParams: (additionalParams?: Where) => '',\n getSelectedIds: () => [],\n selectAll: undefined,\n selected: new Map(),\n selectedIDs: [],\n setSelection: (id: number | string) => {},\n toggleAll: (toggleAll: boolean) => {},\n totalDocs: undefined,\n} satisfies SelectionContext)\n\ntype Props = {\n readonly children: React.ReactNode\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly docs: any[]\n readonly totalDocs: number\n}\n\nconst reduceActiveSelections = (selected: Map<number | string, boolean>): (number | string)[] => {\n const ids = []\n\n for (const [key, value] of selected) {\n if (value) {\n ids.push(key)\n }\n }\n\n return ids\n}\n\nexport const SelectionProvider: React.FC<Props> = ({ children, docs = [], totalDocs }) => {\n const contextRef = useRef({} as SelectionContext)\n const { user } = useAuth()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n\n const [selected, setSelected] = useState<SelectionContext['selected']>(() => {\n const rows = new Map()\n\n docs.forEach(({ id }) => {\n rows.set(id, false)\n })\n\n return rows\n })\n\n const [selectAll, setSelectAll] = useState<SelectAllStatus>(SelectAllStatus.None)\n const [count, setCount] = useState(0)\n const searchParams = useSearchParams()\n const { query } = useListQuery()\n\n const toggleAll: SelectionContext['toggleAll'] = useCallback(\n (allAvailable = false) => {\n const rows = new Map()\n if (allAvailable) {\n setSelectAll(SelectAllStatus.AllAvailable)\n\n docs.forEach(({ id, _isLocked, _userEditing }) => {\n if (!_isLocked || _userEditing?.id === user?.id) {\n rows.set(id, true)\n }\n })\n } else if (\n // Reset back to `None` if we previously had any type of selection\n selectAll === SelectAllStatus.AllAvailable ||\n selectAll === SelectAllStatus.AllInPage\n ) {\n setSelectAll(SelectAllStatus.None)\n } else {\n const shouldSelect = selectAll !== SelectAllStatus.Some\n\n docs.forEach(({ id, _isLocked, _userEditing }) => {\n if (!_isLocked || _userEditing?.id === user?.id) {\n rows.set(id, shouldSelect)\n }\n })\n\n // Set selectAll synchronously to avoid race conditions with useEffect\n if (shouldSelect && rows.size > 0) {\n if (rows.size === docs.length) {\n setSelectAll(SelectAllStatus.AllInPage)\n } else {\n setSelectAll(SelectAllStatus.Some)\n }\n } else {\n setSelectAll(SelectAllStatus.None)\n }\n }\n\n setSelected(rows)\n },\n [docs, selectAll, user?.id],\n )\n\n const setSelection: SelectionContext['setSelection'] = useCallback(\n (id) => {\n const doc = docs.find((doc) => doc.id === id)\n\n if (doc?._isLocked && user?.id !== doc?._userEditing.id) {\n return // Prevent selection if the document is locked\n }\n\n const existingValue = selected.get(id)\n const isSelected = typeof existingValue === 'boolean' ? !existingValue : true\n\n const newMap = new Map(selected.set(id, isSelected))\n\n // If previously selected all and now deselecting, adjust status\n if (selectAll === SelectAllStatus.AllAvailable && !isSelected) {\n setSelectAll(SelectAllStatus.Some)\n }\n\n setSelected(newMap)\n },\n [selected, docs, selectAll, user?.id],\n )\n\n const getQueryParams = useCallback(\n (additionalWhereParams?: Where): string => {\n let where: Where\n\n if (selectAll === SelectAllStatus.AllAvailable) {\n const params = parseSearchParams(searchParams)?.where as Where\n\n where = params || {\n id: {\n not_equals: '',\n },\n }\n } else {\n const ids = []\n\n for (const [key, value] of selected) {\n if (value) {\n ids.push(key)\n }\n }\n\n where = {\n id: {\n in: ids,\n },\n }\n }\n\n if (additionalWhereParams) {\n where = {\n and: [{ ...additionalWhereParams }, where],\n }\n }\n\n return qs.stringify(\n {\n locale,\n where,\n },\n { addQueryPrefix: true },\n )\n },\n [selectAll, selected, locale, searchParams],\n )\n\n const getSelectedIds = useCallback(() => reduceActiveSelections(selected), [selected])\n\n useEffect(() => {\n if (selectAll === SelectAllStatus.AllAvailable) {\n return\n }\n let some = false\n let all = true\n\n if (!selected.size) {\n all = false\n some = false\n } else {\n for (const [_, value] of selected) {\n all = all && value\n some = some || value\n }\n }\n\n if (all && selected.size === docs.length) {\n setSelectAll(SelectAllStatus.AllInPage)\n } else if (some) {\n setSelectAll(SelectAllStatus.Some)\n } else {\n setSelectAll(SelectAllStatus.None)\n }\n }, [selectAll, selected, totalDocs, docs])\n\n useEffect(() => {\n let newCount = 0\n\n if (selectAll === SelectAllStatus.AllAvailable) {\n newCount = totalDocs\n } else {\n for (const [_, value] of selected) {\n if (value) {\n newCount++\n }\n }\n }\n\n setCount(newCount)\n }, [selectAll, selected, totalDocs])\n\n useEffect(() => {\n setSelectAll(SelectAllStatus.None)\n setSelected(new Map())\n }, [query])\n\n const selectedIDs = useMemo(() => reduceActiveSelections(selected), [selected])\n\n contextRef.current = {\n count,\n getQueryParams,\n getSelectedIds,\n selectAll,\n selected,\n selectedIDs,\n setSelection,\n toggleAll,\n totalDocs,\n }\n\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const useSelection = (): SelectionContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,13 +5,16 @@ import type { RenderFieldServerFnArgs, RenderFieldServerFnReturnType } from '../
|
|
|
5
5
|
import type { buildFormStateHandler } from '../../utilities/buildFormState.js';
|
|
6
6
|
import type { buildTableStateHandler } from '../../utilities/buildTableState.js';
|
|
7
7
|
import type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js';
|
|
8
|
-
import type { schedulePublishHandler, SchedulePublishHandlerArgs } from '../../utilities/schedulePublishHandler.js';
|
|
8
|
+
import type { getUpcomingScheduledPublishHandler, GetUpcomingScheduledPublishHandlerArgs, schedulePublishHandler, SchedulePublishHandlerArgs } from '../../utilities/schedulePublishHandler.js';
|
|
9
9
|
type GetFormStateClient = (args: {
|
|
10
10
|
signal?: AbortSignal;
|
|
11
11
|
} & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>) => ReturnType<typeof buildFormStateHandler>;
|
|
12
12
|
type SchedulePublishClient = (args: {
|
|
13
13
|
signal?: AbortSignal;
|
|
14
14
|
} & Omit<SchedulePublishHandlerArgs, 'clientConfig' | 'req'>) => ReturnType<typeof schedulePublishHandler>;
|
|
15
|
+
type GetUpcomingScheduledPublishClient = (args: {
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
} & Omit<GetUpcomingScheduledPublishHandlerArgs, 'clientConfig' | 'req'>) => ReturnType<typeof getUpcomingScheduledPublishHandler>;
|
|
15
18
|
type GetTableStateClient = (args: {
|
|
16
19
|
signal?: AbortSignal;
|
|
17
20
|
} & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>) => ReturnType<typeof buildTableStateHandler>;
|
|
@@ -64,6 +67,7 @@ export type ServerFunctionsContextType = {
|
|
|
64
67
|
getDocumentSlots: GetDocumentSlots;
|
|
65
68
|
getFormState: GetFormStateClient;
|
|
66
69
|
getTableState: GetTableStateClient;
|
|
70
|
+
getUpcomingScheduledPublish: GetUpcomingScheduledPublishClient;
|
|
67
71
|
renderDocument: RenderDocumentServerFunctionHookFn;
|
|
68
72
|
schedulePublish: SchedulePublishClient;
|
|
69
73
|
serverFunction: ServerFunctionClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ServerFunctions/index.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ServerFunctions/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,20 @@ export const ServerFunctionsProvider = ({
|
|
|
47
47
|
error
|
|
48
48
|
};
|
|
49
49
|
}, [serverFunction]);
|
|
50
|
+
const getUpcomingScheduledPublish = useCallback(async args => {
|
|
51
|
+
const {
|
|
52
|
+
signal: remoteSignal,
|
|
53
|
+
...rest
|
|
54
|
+
} = args;
|
|
55
|
+
if (remoteSignal?.aborted) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
const result = await serverFunction({
|
|
59
|
+
name: 'get-upcoming-scheduled-publish',
|
|
60
|
+
args: rest
|
|
61
|
+
});
|
|
62
|
+
return remoteSignal?.aborted ? [] : result;
|
|
63
|
+
}, [serverFunction]);
|
|
50
64
|
const getFormState = useCallback(async args => {
|
|
51
65
|
const {
|
|
52
66
|
signal: remoteSignal,
|
|
@@ -175,6 +189,7 @@ export const ServerFunctionsProvider = ({
|
|
|
175
189
|
getDocumentSlots,
|
|
176
190
|
getFormState,
|
|
177
191
|
getTableState,
|
|
192
|
+
getUpcomingScheduledPublish,
|
|
178
193
|
renderDocument,
|
|
179
194
|
schedulePublish,
|
|
180
195
|
serverFunction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","createContext","useCallback","ServerFunctionsContext","undefined","useServerFunctions","context","use","Error","ServerFunctionsProvider","children","serverFunction","getDocumentSlots","args","name","schedulePublish","signal","remoteSignal","rest","aborted","result","_err","console","error","type","doc","value","relationTo","getFormState","fallbackLocale","state","getTableState","renderDocument","copyDataFromLocale","data","_internal_renderField","slugify","switchLanguage","lang","_jsx"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n AdminViewServerPropsOnly,\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentPreferences,\n DocumentSlots,\n FormState,\n Params,\n RenderDocumentVersionsProperties,\n ServerFunction,\n ServerFunctionClient,\n SlugifyServerFunctionArgs,\n} from 'payload'\nimport type { Slugify } from 'payload/shared'\n\nimport React, { createContext, useCallback } from 'react'\n\nimport type {\n RenderFieldServerFnArgs,\n RenderFieldServerFnReturnType,\n} from '../../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport type { buildFormStateHandler } from '../../utilities/buildFormState.js'\nimport type { buildTableStateHandler } from '../../utilities/buildTableState.js'\nimport type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js'\nimport type {\n schedulePublishHandler,\n SchedulePublishHandlerArgs,\n} from '../../utilities/schedulePublishHandler.js'\n\ntype GetFormStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildFormStateHandler>\n\ntype SchedulePublishClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SchedulePublishHandlerArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof schedulePublishHandler>\n\ntype GetTableStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildTableStateHandler>\n\ntype SlugifyClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SlugifyServerFunctionArgs, 'clientConfig' | 'req'>,\n) => ReturnType<Slugify>\n\nexport type RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\ntype RenderDocumentBaseArgs = {\n collectionSlug: string\n disableActions?: boolean\n docID: number | string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n overrideEntityVisibility?: boolean\n paramsOverride?: AdminViewServerPropsOnly['params']\n redirectAfterCreate?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n redirectAfterRestore?: boolean\n searchParams?: Params\n /**\n * Properties specific to the versions view\n */\n versions?: RenderDocumentVersionsProperties\n}\n\nexport type RenderDocumentServerFunction = ServerFunction<\n RenderDocumentBaseArgs,\n Promise<RenderDocumentResult>\n>\n\ntype RenderDocumentServerFunctionHookFn = (\n // No req or importMap - those are augmented by handleServerFunctions\n args: {\n signal?: AbortSignal\n } & RenderDocumentBaseArgs,\n) => Promise<RenderDocumentResult>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n id?: number | string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype RenderFieldClient = (args: RenderFieldServerFnArgs) => Promise<RenderFieldServerFnReturnType>\n\ntype SwitchLanguageClient = (lang: string) => Promise<void>\n\nexport type ServerFunctionsContextType = {\n _internal_renderField: RenderFieldClient\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocumentServerFunctionHookFn\n schedulePublish: SchedulePublishClient\n serverFunction: ServerFunctionClient\n slugify: SlugifyClient\n switchLanguage: SwitchLanguageClient\n}\n\nexport const ServerFunctionsContext = createContext<ServerFunctionsContextType | undefined>(\n undefined,\n)\n\nexport const useServerFunctions = () => {\n const context = React.use(ServerFunctionsContext)\n if (context === undefined) {\n throw new Error('useServerFunctions must be used within a ServerFunctionsProvider')\n }\n return context\n}\n\nexport const ServerFunctionsProvider: React.FC<{\n children: React.ReactNode\n serverFunction: ServerFunctionClient\n}> = ({ children, serverFunction }) => {\n if (!serverFunction) {\n throw new Error('ServerFunctionsProvider requires a serverFunction prop')\n }\n\n const getDocumentSlots = useCallback<GetDocumentSlots>(\n async (args) =>\n await serverFunction({\n name: 'render-document-slots',\n args,\n }),\n [serverFunction],\n )\n\n const schedulePublish = useCallback<SchedulePublishClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args\n\n try {\n if (!remoteSignal?.aborted) {\n const result = await serverFunction({\n name: 'schedule-publish',\n args: { ...rest },\n })\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n let error = `Error scheduling ${rest.type}`\n\n if (rest.doc) {\n error += ` for document with ID ${rest.doc.value} in collection ${rest.doc.relationTo}`\n }\n\n return { error }\n },\n [serverFunction],\n )\n\n const getFormState = useCallback<GetFormStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'form-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildFormStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n return { state: null }\n },\n [serverFunction],\n )\n\n const getTableState = useCallback<GetTableStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'table-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildTableStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n // return { state: args.formState }\n },\n [serverFunction],\n )\n\n const renderDocument = useCallback<RenderDocumentServerFunctionHookFn>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: {\n fallbackLocale: false,\n ...rest,\n } as Parameters<RenderDocumentServerFunctionHookFn>[0],\n })) as Awaited<ReturnType<RenderDocumentServerFunctionHookFn>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const copyDataFromLocale = useCallback<CopyDataFromLocaleClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n const result = (await serverFunction({\n name: 'copy-data-from-locale',\n args: rest,\n })) as Data\n\n if (!remoteSignal?.aborted) {\n return { data: result }\n }\n },\n [serverFunction],\n )\n\n const _internal_renderField = useCallback<RenderFieldClient>(\n async (args) => {\n try {\n const result = (await serverFunction({\n name: 'render-field',\n args,\n })) as RenderFieldServerFnReturnType\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const slugify = useCallback<SlugifyClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'slugify',\n args: { ...rest },\n })) as Awaited<ReturnType<Slugify>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const switchLanguage = useCallback<SwitchLanguageClient>(\n async (lang) => {\n await serverFunction({\n name: 'switch-language',\n args: { lang },\n })\n },\n [serverFunction],\n )\n\n return (\n <ServerFunctionsContext\n value={{\n _internal_renderField,\n copyDataFromLocale,\n getDocumentSlots,\n getFormState,\n getTableState,\n renderDocument,\n schedulePublish,\n serverFunction,\n slugify,\n switchLanguage,\n }}\n >\n {children}\n </ServerFunctionsContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","createContext","useCallback","ServerFunctionsContext","undefined","useServerFunctions","context","use","Error","ServerFunctionsProvider","children","serverFunction","getDocumentSlots","args","name","schedulePublish","signal","remoteSignal","rest","aborted","result","_err","console","error","type","doc","value","relationTo","getUpcomingScheduledPublish","getFormState","fallbackLocale","state","getTableState","renderDocument","copyDataFromLocale","data","_internal_renderField","slugify","switchLanguage","lang","_jsx"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n AdminViewServerPropsOnly,\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentPreferences,\n DocumentSlots,\n FormState,\n Params,\n RenderDocumentVersionsProperties,\n ServerFunction,\n ServerFunctionClient,\n SlugifyServerFunctionArgs,\n} from 'payload'\nimport type { Slugify } from 'payload/shared'\n\nimport React, { createContext, useCallback } from 'react'\n\nimport type {\n RenderFieldServerFnArgs,\n RenderFieldServerFnReturnType,\n} from '../../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport type { buildFormStateHandler } from '../../utilities/buildFormState.js'\nimport type { buildTableStateHandler } from '../../utilities/buildTableState.js'\nimport type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js'\nimport type {\n getUpcomingScheduledPublishHandler,\n GetUpcomingScheduledPublishHandlerArgs,\n schedulePublishHandler,\n SchedulePublishHandlerArgs,\n} from '../../utilities/schedulePublishHandler.js'\n\ntype GetFormStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildFormStateHandler>\n\ntype SchedulePublishClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SchedulePublishHandlerArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof schedulePublishHandler>\n\ntype GetUpcomingScheduledPublishClient = (\n args: {\n signal?: AbortSignal\n } & Omit<GetUpcomingScheduledPublishHandlerArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof getUpcomingScheduledPublishHandler>\n\ntype GetTableStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildTableStateHandler>\n\ntype SlugifyClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SlugifyServerFunctionArgs, 'clientConfig' | 'req'>,\n) => ReturnType<Slugify>\n\nexport type RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\ntype RenderDocumentBaseArgs = {\n collectionSlug: string\n disableActions?: boolean\n docID: number | string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n overrideEntityVisibility?: boolean\n paramsOverride?: AdminViewServerPropsOnly['params']\n redirectAfterCreate?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n redirectAfterRestore?: boolean\n searchParams?: Params\n /**\n * Properties specific to the versions view\n */\n versions?: RenderDocumentVersionsProperties\n}\n\nexport type RenderDocumentServerFunction = ServerFunction<\n RenderDocumentBaseArgs,\n Promise<RenderDocumentResult>\n>\n\ntype RenderDocumentServerFunctionHookFn = (\n // No req or importMap - those are augmented by handleServerFunctions\n args: {\n signal?: AbortSignal\n } & RenderDocumentBaseArgs,\n) => Promise<RenderDocumentResult>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n id?: number | string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype RenderFieldClient = (args: RenderFieldServerFnArgs) => Promise<RenderFieldServerFnReturnType>\n\ntype SwitchLanguageClient = (lang: string) => Promise<void>\n\nexport type ServerFunctionsContextType = {\n _internal_renderField: RenderFieldClient\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n getUpcomingScheduledPublish: GetUpcomingScheduledPublishClient\n renderDocument: RenderDocumentServerFunctionHookFn\n schedulePublish: SchedulePublishClient\n serverFunction: ServerFunctionClient\n slugify: SlugifyClient\n switchLanguage: SwitchLanguageClient\n}\n\nexport const ServerFunctionsContext = createContext<ServerFunctionsContextType | undefined>(\n undefined,\n)\n\nexport const useServerFunctions = () => {\n const context = React.use(ServerFunctionsContext)\n if (context === undefined) {\n throw new Error('useServerFunctions must be used within a ServerFunctionsProvider')\n }\n return context\n}\n\nexport const ServerFunctionsProvider: React.FC<{\n children: React.ReactNode\n serverFunction: ServerFunctionClient\n}> = ({ children, serverFunction }) => {\n if (!serverFunction) {\n throw new Error('ServerFunctionsProvider requires a serverFunction prop')\n }\n\n const getDocumentSlots = useCallback<GetDocumentSlots>(\n async (args) =>\n await serverFunction({\n name: 'render-document-slots',\n args,\n }),\n [serverFunction],\n )\n\n const schedulePublish = useCallback<SchedulePublishClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args\n\n try {\n if (!remoteSignal?.aborted) {\n const result = await serverFunction({\n name: 'schedule-publish',\n args: { ...rest },\n })\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n let error = `Error scheduling ${rest.type}`\n\n if (rest.doc) {\n error += ` for document with ID ${rest.doc.value} in collection ${rest.doc.relationTo}`\n }\n\n return { error }\n },\n [serverFunction],\n )\n\n const getUpcomingScheduledPublish = useCallback<GetUpcomingScheduledPublishClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args\n\n if (remoteSignal?.aborted) {\n return []\n }\n\n const result = (await serverFunction({\n name: 'get-upcoming-scheduled-publish',\n args: rest,\n })) as Awaited<ReturnType<typeof getUpcomingScheduledPublishHandler>>\n\n return remoteSignal?.aborted ? [] : result\n },\n [serverFunction],\n )\n\n const getFormState = useCallback<GetFormStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'form-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildFormStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n return { state: null }\n },\n [serverFunction],\n )\n\n const getTableState = useCallback<GetTableStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'table-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildTableStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n // return { state: args.formState }\n },\n [serverFunction],\n )\n\n const renderDocument = useCallback<RenderDocumentServerFunctionHookFn>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: {\n fallbackLocale: false,\n ...rest,\n } as Parameters<RenderDocumentServerFunctionHookFn>[0],\n })) as Awaited<ReturnType<RenderDocumentServerFunctionHookFn>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const copyDataFromLocale = useCallback<CopyDataFromLocaleClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n const result = (await serverFunction({\n name: 'copy-data-from-locale',\n args: rest,\n })) as Data\n\n if (!remoteSignal?.aborted) {\n return { data: result }\n }\n },\n [serverFunction],\n )\n\n const _internal_renderField = useCallback<RenderFieldClient>(\n async (args) => {\n try {\n const result = (await serverFunction({\n name: 'render-field',\n args,\n })) as RenderFieldServerFnReturnType\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const slugify = useCallback<SlugifyClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'slugify',\n args: { ...rest },\n })) as Awaited<ReturnType<Slugify>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const switchLanguage = useCallback<SwitchLanguageClient>(\n async (lang) => {\n await serverFunction({\n name: 'switch-language',\n args: { lang },\n })\n },\n [serverFunction],\n )\n\n return (\n <ServerFunctionsContext\n value={{\n _internal_renderField,\n copyDataFromLocale,\n getDocumentSlots,\n getFormState,\n getTableState,\n getUpcomingScheduledPublish,\n renderDocument,\n schedulePublish,\n serverFunction,\n slugify,\n switchLanguage,\n }}\n >\n {children}\n </ServerFunctionsContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { Payload, SanitizedCollectionConfig, SanitizedGlobalConfig
|
|
1
|
+
import type { Payload, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload';
|
|
2
2
|
type Args = {
|
|
3
3
|
collectionConfig?: SanitizedCollectionConfig;
|
|
4
4
|
globalConfig?: SanitizedGlobalConfig;
|
|
5
5
|
hasPublishPermission?: boolean;
|
|
6
6
|
id?: number | string;
|
|
7
7
|
payload: Payload;
|
|
8
|
-
user: User;
|
|
9
8
|
};
|
|
10
|
-
export declare const getHasScheduledPublish: ({ id: idArg, collectionConfig, globalConfig, hasPublishPermission, payload,
|
|
9
|
+
export declare const getHasScheduledPublish: ({ id: idArg, collectionConfig, globalConfig, hasPublishPermission, payload, }: Args) => Promise<boolean>;
|
|
11
10
|
export {};
|
|
12
11
|
//# sourceMappingURL=getHasScheduledPublish.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHasScheduledPublish.d.ts","sourceRoot":"","sources":["../../src/utilities/getHasScheduledPublish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"getHasScheduledPublish.d.ts","sourceRoot":"","sources":["../../src/utilities/getHasScheduledPublish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAOxF,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,sBAAsB,kFAMhC,IAAI,KAAG,OAAO,CAAC,OAAO,CA0BxB,CAAA"}
|
|
@@ -6,8 +6,7 @@ export const getHasScheduledPublish = async ({
|
|
|
6
6
|
collectionConfig,
|
|
7
7
|
globalConfig,
|
|
8
8
|
hasPublishPermission,
|
|
9
|
-
payload
|
|
10
|
-
user
|
|
9
|
+
payload
|
|
11
10
|
}) => {
|
|
12
11
|
const entityConfig = collectionConfig || globalConfig;
|
|
13
12
|
const id = sanitizeID(idArg);
|
|
@@ -20,10 +19,8 @@ export const getHasScheduledPublish = async ({
|
|
|
20
19
|
try {
|
|
21
20
|
const {
|
|
22
21
|
totalDocs
|
|
23
|
-
} = await payload.count({
|
|
22
|
+
} = await payload.db.count({
|
|
24
23
|
collection: 'payload-jobs',
|
|
25
|
-
overrideAccess: false,
|
|
26
|
-
user,
|
|
27
24
|
where: buildUpcomingScheduleWhere({
|
|
28
25
|
id,
|
|
29
26
|
collectionSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHasScheduledPublish.js","names":["hasScheduledPublishEnabled","buildUpcomingScheduleWhere","sanitizeID","getHasScheduledPublish","id","idArg","collectionConfig","globalConfig","hasPublishPermission","payload","
|
|
1
|
+
{"version":3,"file":"getHasScheduledPublish.js","names":["hasScheduledPublishEnabled","buildUpcomingScheduleWhere","sanitizeID","getHasScheduledPublish","id","idArg","collectionConfig","globalConfig","hasPublishPermission","payload","entityConfig","collectionSlug","slug","globalSlug","canSchedulePublish","Boolean","totalDocs","db","count","collection","where"],"sources":["../../src/utilities/getHasScheduledPublish.ts"],"sourcesContent":["import type { Payload, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nimport { hasScheduledPublishEnabled } from 'payload/shared'\n\nimport { buildUpcomingScheduleWhere } from '../elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js'\nimport { sanitizeID } from './sanitizeID.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n hasPublishPermission?: boolean\n id?: number | string\n payload: Payload\n}\n\nexport const getHasScheduledPublish = async ({\n id: idArg,\n collectionConfig,\n globalConfig,\n hasPublishPermission,\n payload,\n}: Args): Promise<boolean> => {\n const entityConfig = collectionConfig || globalConfig\n const id = sanitizeID(idArg)\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const canSchedulePublish = Boolean(\n hasScheduledPublishEnabled(entityConfig) &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)),\n )\n\n if (!canSchedulePublish) {\n return false\n }\n\n try {\n const { totalDocs } = await payload.db.count({\n collection: 'payload-jobs',\n where: buildUpcomingScheduleWhere({ id, collectionSlug, globalSlug }),\n })\n\n return totalDocs > 0\n } catch {\n return false\n }\n}\n"],"mappings":"AAEA,SAASA,0BAA0B,QAAQ;AAE3C,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,UAAU,QAAQ;AAU3B,OAAO,MAAMC,sBAAA,GAAyB,MAAAA,CAAO;EAC3CC,EAAA,EAAIC,KAAK;EACTC,gBAAgB;EAChBC,YAAY;EACZC,oBAAoB;EACpBC;AAAO,CACF;EACL,MAAMC,YAAA,GAAeJ,gBAAA,IAAoBC,YAAA;EACzC,MAAMH,EAAA,GAAKF,UAAA,CAAWG,KAAA;EACtB,MAAMM,cAAA,GAAiBL,gBAAA,EAAkBM,IAAA;EACzC,MAAMC,UAAA,GAAaN,YAAA,EAAcK,IAAA;EAEjC,MAAME,kBAAA,GAAqBC,OAAA,CACzBf,0BAAA,CAA2BU,YAAA,KACzBF,oBAAA,KACCK,UAAA,IAAeF,cAAA,IAAkBP,EAAE;EAGxC,IAAI,CAACU,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,IAAI;IACF,MAAM;MAAEE;IAAS,CAAE,GAAG,MAAMP,OAAA,CAAQQ,EAAE,CAACC,KAAK,CAAC;MAC3CC,UAAA,EAAY;MACZC,KAAA,EAAOnB,0BAAA,CAA2B;QAAEG,EAAA;QAAIO,cAAA;QAAgBE;MAAW;IACrE;IAEA,OAAOG,SAAA,GAAY;EACrB,EAAE,MAAM;IACN,OAAO;EACT;AACF","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SchedulePublishTaskInput, ServerFunction } from 'payload';
|
|
2
|
+
import type { UpcomingEvent } from '../elements/PublishButton/ScheduleDrawer/types.js';
|
|
2
3
|
export type SchedulePublishHandlerArgs = {
|
|
3
4
|
date?: Date;
|
|
4
5
|
/**
|
|
@@ -8,5 +9,11 @@ export type SchedulePublishHandlerArgs = {
|
|
|
8
9
|
localeToPublish?: string;
|
|
9
10
|
timezone?: string;
|
|
10
11
|
} & Pick<SchedulePublishTaskInput, 'doc' | 'global' | 'type'>;
|
|
12
|
+
export type GetUpcomingScheduledPublishHandlerArgs = {
|
|
13
|
+
collectionSlug?: string;
|
|
14
|
+
globalSlug?: string;
|
|
15
|
+
id?: number | string;
|
|
16
|
+
};
|
|
17
|
+
export declare const getUpcomingScheduledPublishHandler: ServerFunction<GetUpcomingScheduledPublishHandlerArgs, Promise<UpcomingEvent[]>>;
|
|
11
18
|
export declare const schedulePublishHandler: ServerFunction<SchedulePublishHandlerArgs>;
|
|
12
19
|
//# sourceMappingURL=schedulePublishHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedulePublishHandler.d.ts","sourceRoot":"","sources":["../../src/utilities/schedulePublishHandler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"schedulePublishHandler.d.ts","sourceRoot":"","sources":["../../src/utilities/schedulePublishHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAA;AAKtF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,CAAC,EAAE,IAAI,CAAA;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CAAC,wBAAwB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAA;AAE7D,MAAM,MAAM,sCAAsC,GAAG;IACnD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,kCAAkC,EAAE,cAAc,CAC7D,sCAAsC,EACtC,OAAO,CAAC,aAAa,EAAE,CAAC,CAiDzB,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,0BAA0B,CAyD7E,CAAA"}
|