@payloadcms/ui 4.0.0-canary.24 → 4.0.0-canary.26
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/Button/index.css +2 -2
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.css +1 -1
- package/dist/elements/Popup/index.js +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/icons/Edit/index.d.ts +0 -1
- package/dist/icons/Edit/index.d.ts.map +1 -1
- package/dist/icons/Edit/index.js +4 -4
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/providers/Actions/index.d.ts +1 -0
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +43 -11
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +41 -36
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/Default/index.d.ts +1 -0
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +2 -0
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +1 -0
- package/dist/views/Root/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -2,22 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
-
import React, { createContext, use, useState } from 'react';
|
|
5
|
+
import React, { createContext, use, useEffect, useState } from 'react';
|
|
6
|
+
import { useEffectEvent } from '../../hooks/useEffectEvent.js';
|
|
6
7
|
const ActionsContext = /*#__PURE__*/createContext({
|
|
7
8
|
Actions: {},
|
|
8
9
|
setViewActions: () => {}
|
|
9
10
|
});
|
|
10
11
|
export const useActions = () => use(ActionsContext);
|
|
11
12
|
export const ActionsProvider = t0 => {
|
|
12
|
-
const $ = _c(
|
|
13
|
+
const $ = _c(10);
|
|
13
14
|
const {
|
|
14
15
|
Actions,
|
|
15
|
-
children
|
|
16
|
+
children,
|
|
17
|
+
viewKey
|
|
16
18
|
} = t0;
|
|
17
19
|
const [viewActions, setViewActions] = useState(Actions);
|
|
18
20
|
let t1;
|
|
19
|
-
if ($[0] !== Actions
|
|
20
|
-
t1 =
|
|
21
|
+
if ($[0] !== Actions) {
|
|
22
|
+
t1 = () => {
|
|
23
|
+
setViewActions(Actions);
|
|
24
|
+
};
|
|
25
|
+
$[0] = Actions;
|
|
26
|
+
$[1] = t1;
|
|
27
|
+
} else {
|
|
28
|
+
t1 = $[1];
|
|
29
|
+
}
|
|
30
|
+
const resetViewActions = useEffectEvent(t1);
|
|
31
|
+
let t2;
|
|
32
|
+
if ($[2] !== resetViewActions) {
|
|
33
|
+
t2 = () => {
|
|
34
|
+
resetViewActions();
|
|
35
|
+
};
|
|
36
|
+
$[2] = resetViewActions;
|
|
37
|
+
$[3] = t2;
|
|
38
|
+
} else {
|
|
39
|
+
t2 = $[3];
|
|
40
|
+
}
|
|
41
|
+
let t3;
|
|
42
|
+
if ($[4] !== viewKey) {
|
|
43
|
+
t3 = [viewKey];
|
|
44
|
+
$[4] = viewKey;
|
|
45
|
+
$[5] = t3;
|
|
46
|
+
} else {
|
|
47
|
+
t3 = $[5];
|
|
48
|
+
}
|
|
49
|
+
useEffect(t2, t3);
|
|
50
|
+
let t4;
|
|
51
|
+
if ($[6] !== Actions || $[7] !== children || $[8] !== viewActions) {
|
|
52
|
+
t4 = _jsx(ActionsContext, {
|
|
21
53
|
value: {
|
|
22
54
|
Actions: {
|
|
23
55
|
...viewActions,
|
|
@@ -27,13 +59,13 @@ export const ActionsProvider = t0 => {
|
|
|
27
59
|
},
|
|
28
60
|
children
|
|
29
61
|
});
|
|
30
|
-
$[
|
|
31
|
-
$[
|
|
32
|
-
$[
|
|
33
|
-
$[
|
|
62
|
+
$[6] = Actions;
|
|
63
|
+
$[7] = children;
|
|
64
|
+
$[8] = viewActions;
|
|
65
|
+
$[9] = t4;
|
|
34
66
|
} else {
|
|
35
|
-
|
|
67
|
+
t4 = $[9];
|
|
36
68
|
}
|
|
37
|
-
return
|
|
69
|
+
return t4;
|
|
38
70
|
};
|
|
39
71
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useState","ActionsContext","Actions","setViewActions","useActions","ActionsProvider","t0","$","children","viewActions","t1","_jsx","value"],"sources":["../../../src/providers/Actions/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use, useState } from 'react'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => use(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n}> = ({ Actions, children }) => {\n const [viewActions, setViewActions] = useState(Actions)\n\n return (\n <ActionsContext\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,QAAQ,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useEffect","useState","useEffectEvent","ActionsContext","Actions","setViewActions","useActions","ActionsProvider","t0","$","children","viewKey","viewActions","t1","resetViewActions","t2","t3","t4","_jsx","value"],"sources":["../../../src/providers/Actions/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use, useEffect, useState } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => use(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n readonly viewKey?: string\n}> = ({ Actions, children, viewKey }) => {\n const [viewActions, setViewActions] = useState(Actions)\n const resetViewActions = useEffectEvent(() => {\n setViewActions(Actions)\n })\n\n useEffect(() => {\n resetViewActions()\n }, [viewKey])\n\n return (\n <ActionsContext\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAE/D,SAASC,cAAc,QAAQ;AAS/B,MAAMC,cAAA,gBAAiBL,aAAA,CAAkC;EACvDM,OAAA,EAAS,CAAC;EACVC,cAAA,EAAgBA,CAAA,MAAO;AACzB;AAEA,OAAO,MAAMC,UAAA,GAAaA,CAAA,KAAMP,GAAA,CAAII,cAAA;AAEpC,OAAO,MAAMI,eAAA,GAMRC,EAAA;EAAA,MAAAC,CAAA,GAAAb,EAAA;EAAC;IAAAQ,OAAA;IAAAM,QAAA;IAAAC;EAAA,IAAAH,EAA8B;EAClC,OAAAI,WAAA,EAAAP,cAAA,IAAsCJ,QAAA,CAASG,OAAA;EAAA,IAAAS,EAAA;EAAA,IAAAJ,CAAA,QAAAL,OAAA;IACPS,EAAA,GAAAA,CAAA;MACtCR,cAAA,CAAeD,OAAA;IAAA;IACjBK,CAAA,MAAAL,OAAA;IAAAK,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAFA,MAAAK,gBAAA,GAAyBZ,cAAA,CAAeW,EAExC;EAAA,IAAAE,EAAA;EAAA,IAAAN,CAAA,QAAAK,gBAAA;IAEUC,EAAA,GAAAA,CAAA;MACRD,gBAAA;IAAA;IACFL,CAAA,MAAAK,gBAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAA,IAAAO,EAAA;EAAA,IAAAP,CAAA,QAAAE,OAAA;IAAGK,EAAA,IAACL,OAAA;IAAQF,CAAA,MAAAE,OAAA;IAAAF,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAFZT,SAAA,CAAUe,EAEV,EAAGC,EAAS;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAL,OAAA,IAAAK,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAG,WAAA;IAGVK,EAAA,GAAAC,IAAA,CAAAf,cAAA;MAAAgB,KAAA;QAAAf,OAAA;UAAA,GAGSQ,WAAW;UAAA,GACXR;QAAO;QAAAC;MAAA;MAAAK;IAAA,C;;;;;;;;SAJhBO,E;CAYJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Locale/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAA0D,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Locale/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAA0D,MAAM,OAAO,CAAA;AAU9E,eAAO,MAAM,oBAAoB;;4BAEP,OAAO;EAC/B,CAAA;AAcF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;CAAE,CAuF5F,CAAA;AAED,eAAO,MAAM,gBAAgB;;4BAxGH,OAAO;CAwG8B,CAAA;AAE/D;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,MAA4B,CAAA"}
|
|
@@ -8,6 +8,7 @@ import { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js';
|
|
|
8
8
|
import { useAuth } from '../Auth/index.js';
|
|
9
9
|
import { useConfig } from '../Config/index.js';
|
|
10
10
|
import { useSearchParams } from '../RouterAdapter/index.js';
|
|
11
|
+
import { useRouteTransition } from '../RouteTransition/index.js';
|
|
11
12
|
const LocaleContext = /*#__PURE__*/createContext({});
|
|
12
13
|
export const LocaleLoadingContext = /*#__PURE__*/createContext({
|
|
13
14
|
localeIsLoading: false,
|
|
@@ -21,7 +22,7 @@ const fetchPreferences = async (key, baseURL) => await fetch(`${baseURL}/payload
|
|
|
21
22
|
method: 'GET'
|
|
22
23
|
})?.then(res => res.json());
|
|
23
24
|
export const LocaleProvider = t0 => {
|
|
24
|
-
const $ = _c(
|
|
25
|
+
const $ = _c(29);
|
|
25
26
|
const {
|
|
26
27
|
children,
|
|
27
28
|
locale: initialLocaleFromPrefs
|
|
@@ -40,6 +41,9 @@ export const LocaleProvider = t0 => {
|
|
|
40
41
|
const {
|
|
41
42
|
user
|
|
42
43
|
} = useAuth();
|
|
44
|
+
const {
|
|
45
|
+
isTransitioning
|
|
46
|
+
} = useRouteTransition();
|
|
43
47
|
const defaultLocale = localization ? localization.defaultLocale : "en";
|
|
44
48
|
const t4 = useSearchParams();
|
|
45
49
|
let t5;
|
|
@@ -72,36 +76,37 @@ export const LocaleProvider = t0 => {
|
|
|
72
76
|
const prevLocale = useRef(locale);
|
|
73
77
|
let t7;
|
|
74
78
|
let t8;
|
|
75
|
-
if ($[7] !== locale) {
|
|
79
|
+
if ($[7] !== isTransitioning || $[8] !== locale) {
|
|
76
80
|
t7 = () => {
|
|
77
|
-
if (locale.code !== prevLocale.current.code) {
|
|
81
|
+
if (locale.code !== prevLocale.current.code && !isTransitioning) {
|
|
78
82
|
setLocaleIsLoading(false);
|
|
83
|
+
prevLocale.current = locale;
|
|
79
84
|
}
|
|
80
|
-
prevLocale.current = locale;
|
|
81
85
|
};
|
|
82
|
-
t8 = [locale];
|
|
83
|
-
$[7] =
|
|
84
|
-
$[8] =
|
|
85
|
-
$[9] =
|
|
86
|
+
t8 = [isTransitioning, locale];
|
|
87
|
+
$[7] = isTransitioning;
|
|
88
|
+
$[8] = locale;
|
|
89
|
+
$[9] = t7;
|
|
90
|
+
$[10] = t8;
|
|
86
91
|
} else {
|
|
87
|
-
t7 = $[
|
|
88
|
-
t8 = $[
|
|
92
|
+
t7 = $[9];
|
|
93
|
+
t8 = $[10];
|
|
89
94
|
}
|
|
90
95
|
useEffect(t7, t8);
|
|
91
96
|
let t9;
|
|
92
|
-
if ($[
|
|
97
|
+
if ($[11] !== apiRoute) {
|
|
93
98
|
t9 = formatAdminURL({
|
|
94
99
|
apiRoute,
|
|
95
100
|
path: ""
|
|
96
101
|
});
|
|
97
|
-
$[
|
|
98
|
-
$[
|
|
102
|
+
$[11] = apiRoute;
|
|
103
|
+
$[12] = t9;
|
|
99
104
|
} else {
|
|
100
|
-
t9 = $[
|
|
105
|
+
t9 = $[12];
|
|
101
106
|
}
|
|
102
107
|
const fetchURL = t9;
|
|
103
108
|
let t10;
|
|
104
|
-
if ($[
|
|
109
|
+
if ($[13] !== defaultLocale || $[14] !== fetchURL || $[15] !== localeFromParams || $[16] !== localization || $[17] !== user?.id) {
|
|
105
110
|
t10 = () => {
|
|
106
111
|
const resetLocale = async function resetLocale() {
|
|
107
112
|
if (localization && user?.id) {
|
|
@@ -114,31 +119,31 @@ export const LocaleProvider = t0 => {
|
|
|
114
119
|
};
|
|
115
120
|
resetLocale();
|
|
116
121
|
};
|
|
117
|
-
$[
|
|
118
|
-
$[
|
|
119
|
-
$[
|
|
120
|
-
$[
|
|
121
|
-
$[
|
|
122
|
-
$[
|
|
122
|
+
$[13] = defaultLocale;
|
|
123
|
+
$[14] = fetchURL;
|
|
124
|
+
$[15] = localeFromParams;
|
|
125
|
+
$[16] = localization;
|
|
126
|
+
$[17] = user?.id;
|
|
127
|
+
$[18] = t10;
|
|
123
128
|
} else {
|
|
124
|
-
t10 = $[
|
|
129
|
+
t10 = $[18];
|
|
125
130
|
}
|
|
126
131
|
const t11 = user?.id;
|
|
127
132
|
let t12;
|
|
128
|
-
if ($[
|
|
133
|
+
if ($[19] !== defaultLocale || $[20] !== fetchURL || $[21] !== localeFromParams || $[22] !== localization || $[23] !== t11) {
|
|
129
134
|
t12 = [defaultLocale, localization, fetchURL, localeFromParams, t11];
|
|
130
|
-
$[
|
|
131
|
-
$[
|
|
132
|
-
$[
|
|
133
|
-
$[
|
|
134
|
-
$[
|
|
135
|
-
$[
|
|
135
|
+
$[19] = defaultLocale;
|
|
136
|
+
$[20] = fetchURL;
|
|
137
|
+
$[21] = localeFromParams;
|
|
138
|
+
$[22] = localization;
|
|
139
|
+
$[23] = t11;
|
|
140
|
+
$[24] = t12;
|
|
136
141
|
} else {
|
|
137
|
-
t12 = $[
|
|
142
|
+
t12 = $[24];
|
|
138
143
|
}
|
|
139
144
|
useEffect(t10, t12);
|
|
140
145
|
let t13;
|
|
141
|
-
if ($[
|
|
146
|
+
if ($[25] !== children || $[26] !== isLoading || $[27] !== locale) {
|
|
142
147
|
t13 = _jsx(LocaleContext, {
|
|
143
148
|
value: locale,
|
|
144
149
|
children: _jsx(LocaleLoadingContext, {
|
|
@@ -149,12 +154,12 @@ export const LocaleProvider = t0 => {
|
|
|
149
154
|
children
|
|
150
155
|
})
|
|
151
156
|
});
|
|
152
|
-
$[
|
|
153
|
-
$[
|
|
154
|
-
$[
|
|
155
|
-
$[
|
|
157
|
+
$[25] = children;
|
|
158
|
+
$[26] = isLoading;
|
|
159
|
+
$[27] = locale;
|
|
160
|
+
$[28] = t13;
|
|
156
161
|
} else {
|
|
157
|
-
t13 = $[
|
|
162
|
+
t13 = $[28];
|
|
158
163
|
}
|
|
159
164
|
return t13;
|
|
160
165
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","createContext","use","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","useSearchParams","LocaleContext","LocaleLoadingContext","localeIsLoading","setLocaleIsLoading","_","undefined","fetchPreferences","key","baseURL","fetch","credentials","headers","method","then","res","json","LocaleProvider","t0","$","children","locale","initialLocaleFromPrefs","config","t1","localization","t2","routes","t3","api","apiRoute","user","defaultLocale","t4","t5","get","localeFromParams","t6","locales","length","code","setLocale","isLoading","prevLocale","t7","t8","current","t9","path","fetchURL","t10","id","resetLocale","localeToUse","_temp","newLocale","t11","t12","t13","_jsx","value","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'\n\nconst LocaleContext = createContext({} as Locale)\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\n const defaultLocale = localization ? localization.defaultLocale : 'en'\n\n const localeFromParams = useSearchParams().get('locale')\n\n const [locale, setLocale] = React.useState<Locale>(() => {\n if (!localization || (localization && !localization.locales.length)) {\n // TODO: return null V4\n return {} as Locale\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>(locale)\n\n useEffect(() => {\n
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","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","t0","$","children","locale","initialLocaleFromPrefs","config","t1","localization","t2","routes","t3","api","apiRoute","user","isTransitioning","defaultLocale","t4","t5","get","localeFromParams","t6","locales","length","code","setLocale","isLoading","prevLocale","t7","t8","current","t9","path","fetchURL","t10","id","resetLocale","localeToUse","_temp","newLocale","t11","t12","t13","_jsx","value","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({} as Locale)\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>(() => {\n if (!localization || (localization && !localization.locales.length)) {\n // TODO: return null V4\n return {} as Locale\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>(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\n/**\n * TODO: V4\n * The return type of the `useLocale` hook will change in v4. It will return `null | Locale` instead of `false | {} | Locale`.\n */\nexport const useLocale = (): Locale => use(LocaleContext)\n"],"mappings":"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","ignoreList":[]}
|