Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
9.4 KiB
Plaintext
1 line
9.4 KiB
Plaintext
{"version":3,"file":"index.js","names":["c","_c","useSearchParams","formatAdminURL","React","createContext","use","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","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 { useSearchParams } from 'next/navigation.js'\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'\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 /**\n * We need to set `isLoading` back to false once the locale is detected to be different\n * This happens when the user clicks an anchor link which appends the `?locale=` query param\n * This triggers a client-side navigation, which re-renders the page with the new locale\n * In Next.js, local state is persisted during this type of navigation because components are not unmounted\n */\n if (locale.code !== prevLocale.current.code) {\n setLocaleIsLoading(false)\n }\n\n prevLocale.current = locale\n }, [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":[]} |