@emdash-cms/admin 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{LocaleDirectionProvider-B43-InGI.js → LocaleDirectionProvider-xcSZTLFA.js} +27 -21
- package/dist/LocaleDirectionProvider-xcSZTLFA.js.map +1 -0
- package/dist/{config-h7tWQRka.d.ts → config-DJUFU9nY.d.ts} +3 -3
- package/dist/{config-h7tWQRka.d.ts.map → config-DJUFU9nY.d.ts.map} +1 -1
- package/dist/index.d.ts +186 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2722 -1771
- package/dist/index.js.map +1 -1
- package/dist/locales/ar/messages.mjs +1 -1
- package/dist/locales/de/messages.mjs +1 -1
- package/dist/locales/en/messages.mjs +1 -1
- package/dist/locales/es-419/messages.mjs +1 -1
- package/dist/locales/eu/messages.mjs +1 -1
- package/dist/locales/fa/messages.mjs +1 -1
- package/dist/locales/fr/messages.mjs +1 -1
- package/dist/locales/id/messages.mjs +1 -0
- package/dist/locales/index.d.ts +1 -1
- package/dist/locales/index.js +1 -1
- package/dist/locales/ja/messages.mjs +1 -1
- package/dist/locales/ko/messages.mjs +1 -1
- package/dist/locales/pl/messages.mjs +1 -1
- package/dist/locales/pseudo/messages.mjs +1 -1
- package/dist/locales/pt-BR/messages.mjs +1 -1
- package/dist/locales/zh-CN/messages.mjs +1 -1
- package/dist/locales/zh-TW/messages.mjs +1 -1
- package/dist/messages-BLHOmJoS.js +6 -0
- package/dist/messages-BLHOmJoS.js.map +1 -0
- package/dist/messages-BLPEG0Mx.js +6 -0
- package/dist/messages-BLPEG0Mx.js.map +1 -0
- package/dist/messages-BYyq7qnh.js +6 -0
- package/dist/messages-BYyq7qnh.js.map +1 -0
- package/dist/messages-BcI5YTGJ.js +6 -0
- package/dist/messages-BcI5YTGJ.js.map +1 -0
- package/dist/messages-BpVvs7xa.js +6 -0
- package/dist/messages-BpVvs7xa.js.map +1 -0
- package/dist/messages-CSs_iEr-.js +6 -0
- package/dist/messages-CSs_iEr-.js.map +1 -0
- package/dist/messages-CvhBZHPh.js +6 -0
- package/dist/messages-CvhBZHPh.js.map +1 -0
- package/dist/messages-CyUGKznD.js +6 -0
- package/dist/messages-CyUGKznD.js.map +1 -0
- package/dist/messages-D7GebqCf.js +6 -0
- package/dist/messages-D7GebqCf.js.map +1 -0
- package/dist/messages-DDVTav-Y.js +6 -0
- package/dist/messages-DDVTav-Y.js.map +1 -0
- package/dist/messages-DMBcuYFC.js +6 -0
- package/dist/messages-DMBcuYFC.js.map +1 -0
- package/dist/messages-DRrZDx80.js +6 -0
- package/dist/messages-DRrZDx80.js.map +1 -0
- package/dist/messages-aWiCO6Ou.js +6 -0
- package/dist/messages-aWiCO6Ou.js.map +1 -0
- package/dist/messages-hcBnbmbA.js +6 -0
- package/dist/messages-hcBnbmbA.js.map +1 -0
- package/dist/messages-wnKLF74l.js +6 -0
- package/dist/messages-wnKLF74l.js.map +1 -0
- package/dist/plugins-DUJY_8HN.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -4
- package/dist/LocaleDirectionProvider-B43-InGI.js.map +0 -1
- package/dist/messages-B6ZguVfS.js +0 -6
- package/dist/messages-B6ZguVfS.js.map +0 -1
- package/dist/messages-BOnMi1Vb.js +0 -6
- package/dist/messages-BOnMi1Vb.js.map +0 -1
- package/dist/messages-BZuRVH-D.js +0 -6
- package/dist/messages-BZuRVH-D.js.map +0 -1
- package/dist/messages-Bc_PDiKw.js +0 -6
- package/dist/messages-Bc_PDiKw.js.map +0 -1
- package/dist/messages-Bddg68eH.js +0 -6
- package/dist/messages-Bddg68eH.js.map +0 -1
- package/dist/messages-BoP-RHEG.js +0 -6
- package/dist/messages-BoP-RHEG.js.map +0 -1
- package/dist/messages-C4hNtyU5.js +0 -6
- package/dist/messages-C4hNtyU5.js.map +0 -1
- package/dist/messages-CMwt5Gv-.js +0 -6
- package/dist/messages-CMwt5Gv-.js.map +0 -1
- package/dist/messages-CnliZpid.js +0 -6
- package/dist/messages-CnliZpid.js.map +0 -1
- package/dist/messages-CseAZVO2.js +0 -6
- package/dist/messages-CseAZVO2.js.map +0 -1
- package/dist/messages-DRyNt1qC.js +0 -6
- package/dist/messages-DRyNt1qC.js.map +0 -1
- package/dist/messages-DTehFUkD.js +0 -6
- package/dist/messages-DTehFUkD.js.map +0 -1
- package/dist/messages-DeQMOYvT.js +0 -6
- package/dist/messages-DeQMOYvT.js.map +0 -1
- package/dist/messages-Do3BokvI.js +0 -6
- package/dist/messages-Do3BokvI.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useLingui } from "@lingui/react";
|
|
2
|
-
import * as React from "react";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { DirectionProvider } from "@cloudflare/kumo/primitives";
|
|
5
5
|
|
|
@@ -51,6 +51,11 @@ const LOCALES = [
|
|
|
51
51
|
label: "Deutsch",
|
|
52
52
|
enabled: true
|
|
53
53
|
},
|
|
54
|
+
{
|
|
55
|
+
code: "id",
|
|
56
|
+
label: "Bahasa Indonesia",
|
|
57
|
+
enabled: true
|
|
58
|
+
},
|
|
54
59
|
{
|
|
55
60
|
code: "ja",
|
|
56
61
|
label: "日本語",
|
|
@@ -183,20 +188,21 @@ function resolveLocale(request) {
|
|
|
183
188
|
//#endregion
|
|
184
189
|
//#region src/locales/loadMessages.ts
|
|
185
190
|
const LOCALE_LOADERS = /* @__PURE__ */ Object.assign({
|
|
186
|
-
"./ar/messages.mjs": () => import("./messages-
|
|
187
|
-
"./de/messages.mjs": () => import("./messages-
|
|
188
|
-
"./en/messages.mjs": () => import("./messages-
|
|
189
|
-
"./es-419/messages.mjs": () => import("./messages-
|
|
190
|
-
"./eu/messages.mjs": () => import("./messages-
|
|
191
|
-
"./fa/messages.mjs": () => import("./messages-
|
|
192
|
-
"./fr/messages.mjs": () => import("./messages-
|
|
193
|
-
"./
|
|
194
|
-
"./
|
|
195
|
-
"./
|
|
196
|
-
"./
|
|
197
|
-
"./
|
|
198
|
-
"./
|
|
199
|
-
"./zh-
|
|
191
|
+
"./ar/messages.mjs": () => import("./messages-D7GebqCf.js"),
|
|
192
|
+
"./de/messages.mjs": () => import("./messages-aWiCO6Ou.js"),
|
|
193
|
+
"./en/messages.mjs": () => import("./messages-CSs_iEr-.js"),
|
|
194
|
+
"./es-419/messages.mjs": () => import("./messages-DMBcuYFC.js"),
|
|
195
|
+
"./eu/messages.mjs": () => import("./messages-BcI5YTGJ.js"),
|
|
196
|
+
"./fa/messages.mjs": () => import("./messages-BLPEG0Mx.js"),
|
|
197
|
+
"./fr/messages.mjs": () => import("./messages-DDVTav-Y.js"),
|
|
198
|
+
"./id/messages.mjs": () => import("./messages-BYyq7qnh.js"),
|
|
199
|
+
"./ja/messages.mjs": () => import("./messages-CvhBZHPh.js"),
|
|
200
|
+
"./ko/messages.mjs": () => import("./messages-CyUGKznD.js"),
|
|
201
|
+
"./pl/messages.mjs": () => import("./messages-wnKLF74l.js"),
|
|
202
|
+
"./pseudo/messages.mjs": () => import("./messages-hcBnbmbA.js"),
|
|
203
|
+
"./pt-BR/messages.mjs": () => import("./messages-DRrZDx80.js"),
|
|
204
|
+
"./zh-CN/messages.mjs": () => import("./messages-BLHOmJoS.js"),
|
|
205
|
+
"./zh-TW/messages.mjs": () => import("./messages-BpVvs7xa.js")
|
|
200
206
|
});
|
|
201
207
|
async function loadMessages(locale) {
|
|
202
208
|
const key = `./${locale}/messages.mjs`;
|
|
@@ -219,8 +225,8 @@ function setCookie(code) {
|
|
|
219
225
|
*/
|
|
220
226
|
function useLocale() {
|
|
221
227
|
const { i18n } = useLingui();
|
|
222
|
-
const [locale, setLocaleState] = React.useState(i18n.locale);
|
|
223
|
-
const setLocale = React.useCallback((code) => {
|
|
228
|
+
const [locale, setLocaleState] = React$1.useState(i18n.locale);
|
|
229
|
+
const setLocale = React$1.useCallback((code) => {
|
|
224
230
|
if (code === i18n.locale || !SUPPORTED_LOCALE_CODES.has(code)) return;
|
|
225
231
|
setCookie(code);
|
|
226
232
|
loadMessages(code).then((messages) => i18n.loadAndActivate({
|
|
@@ -230,7 +236,7 @@ function useLocale() {
|
|
|
230
236
|
setCookie(i18n.locale);
|
|
231
237
|
});
|
|
232
238
|
}, [i18n]);
|
|
233
|
-
React.useEffect(() => {
|
|
239
|
+
React$1.useEffect(() => {
|
|
234
240
|
return i18n.on("change", () => {
|
|
235
241
|
setLocaleState(i18n.locale);
|
|
236
242
|
});
|
|
@@ -249,9 +255,9 @@ function useLocale() {
|
|
|
249
255
|
*/
|
|
250
256
|
function LocaleDirectionProvider({ children }) {
|
|
251
257
|
const { locale } = useLocale();
|
|
252
|
-
const dir = React.useMemo(() => getLocaleDir(locale), [locale]);
|
|
258
|
+
const dir = React$1.useMemo(() => getLocaleDir(locale), [locale]);
|
|
253
259
|
/** Sync the direction and lang attributes with the current locale. */
|
|
254
|
-
React.useEffect(() => {
|
|
260
|
+
React$1.useEffect(() => {
|
|
255
261
|
document.documentElement.setAttribute("lang", locale);
|
|
256
262
|
document.documentElement.setAttribute("dir", dir);
|
|
257
263
|
}, [dir, locale]);
|
|
@@ -263,4 +269,4 @@ function LocaleDirectionProvider({ children }) {
|
|
|
263
269
|
|
|
264
270
|
//#endregion
|
|
265
271
|
export { SUPPORTED_LOCALES as a, getLocaleLabel as c, DEFAULT_LOCALE as i, resolveLocale as l, useLocale as n, SUPPORTED_LOCALE_CODES as o, loadMessages as r, getLocaleDir as s, LocaleDirectionProvider as t };
|
|
266
|
-
//# sourceMappingURL=LocaleDirectionProvider-
|
|
272
|
+
//# sourceMappingURL=LocaleDirectionProvider-xcSZTLFA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocaleDirectionProvider-xcSZTLFA.js","names":["React"],"sources":["../src/locales/locales.ts","../src/locales/config.ts","../src/locales/loadMessages.ts","../src/locales/useLocale.ts","../src/locales/LocaleDirectionProvider.tsx"],"sourcesContent":["/**\n * Canonical locale definitions -- the single source of truth.\n *\n * This file is intentionally free of Vite/Astro APIs (`import.meta.env` etc.)\n * so it can be imported from CLI tools (Lingui, Lunaria) running in plain Node.\n *\n * To add a new locale:\n * 1. Add an entry here (with `enabled: false`).\n * 2. Run `pnpm locale:extract` to generate the PO file.\n * 3. Translate the strings in the PO file.\n * 4. Set `enabled: true` once coverage is sufficient.\n *\n * Lingui and Lunaria use all locales (for extraction and tracking).\n * The admin runtime only exposes locales with `enabled: true`.\n */\n\nexport interface LocaleDefinition {\n\t/** BCP 47 locale code (e.g. \"en\", \"pt-BR\"). */\n\tcode: string;\n\t/** Human-readable label in the locale's own language. */\n\tlabel: string;\n\t/** Whether this locale is selectable in the admin UI. */\n\tenabled: boolean;\n\t/** Text direction for this locale. Defaults to \"ltr\" if not specified. */\n\tdir?: \"rtl\" | \"ltr\";\n}\n\n/**\n * All locales that have (or should have) a PO catalog.\n * First entry is the source/default locale.\n */\nexport const LOCALES: LocaleDefinition[] = [\n\t// Source locale first, then alphabetical by English name.\n\t{ code: \"en\", label: \"English\", enabled: true },\n\t{ code: \"ar\", label: \"العربية\", enabled: true, dir: \"rtl\" }, // Arabic\n\t{ code: \"eu\", label: \"Euskara\", enabled: true }, // Basque\n\t{ code: \"zh-CN\", label: \"简体中文\", enabled: true }, // Chinese (Simplified)\n\t{ code: \"zh-TW\", label: \"繁體中文\", enabled: true }, // Chinese (Traditional)\n\t{ code: \"fa\", label: \"فارسی\", enabled: true, dir: \"rtl\" }, // Farsi (also known as Persian)\n\t{ code: \"fr\", label: \"Français\", enabled: true }, // French\n\t{ code: \"de\", label: \"Deutsch\", enabled: true }, // German\n\t{ code: \"id\", label: \"Bahasa Indonesia\", enabled: true }, // Indonesian\n\t{ code: \"ja\", label: \"日本語\", enabled: true }, // Japanese\n\t{ code: \"ko\", label: \"한국어\", enabled: false }, // Korean\n\t{ code: \"pl\", label: \"Polski\", enabled: true }, // Polish\n\t{ code: \"pt-BR\", label: \"Português (Brasil)\", enabled: true }, // Portuguese (Brazil)\n\t{ code: \"es-419\", label: \"Español (Latinoamérica)\", enabled: true }, // Spanish (Latin America)\n\t// Pseudo-locale for i18n testing - never enabled in the admin UI by default.\n\t// Set EMDASH_PSEUDO_LOCALE=1 in .env to expose it in the locale switcher (dev only).\n\t{ code: \"pseudo\", label: \"Pseudo\", enabled: false },\n];\n\n/** The source locale (first entry). */\nexport const SOURCE_LOCALE = LOCALES[0]!;\n\n/** All locale codes (for Lingui extraction / Lunaria tracking). */\nexport const LOCALE_CODES = LOCALES.map((l) => l.code);\n\n/** Target locales -- everything except the source (for Lunaria). */\nexport const TARGET_LOCALES = LOCALES.slice(1);\n\n/** Locales enabled in the admin UI. */\nexport const ENABLED_LOCALES = LOCALES.filter((l) => l.enabled);\n","/**\n * Locale configuration for the admin UI runtime.\n *\n * Locale definitions are in `./locales.ts` -- the single source of truth\n * shared by this file, lingui.config.ts and lunaria.config.ts.\n */\n\nimport { ENABLED_LOCALES, LOCALES, SOURCE_LOCALE } from \"./locales.js\";\n\nexport type { LocaleDefinition as SupportedLocale } from \"./locales.js\";\n\nfunction isValidLocale(code: string): boolean {\n\ttry {\n\t\tconst locale = new Intl.Locale(code);\n\t\treturn locale.baseName !== \"\";\n\t} catch {\n\t\tif (import.meta.env.DEV) {\n\t\t\tthrow new Error(`Invalid locale code: \"${code}\"`);\n\t\t}\n\t\treturn false;\n\t}\n}\n\n// Injected by the EmDash Vite integration from process.env.EMDASH_PSEUDO_LOCALE.\n// Only true in dev when EMDASH_PSEUDO_LOCALE=1 is set.\ndeclare const __EMDASH_PSEUDO_LOCALE__: boolean;\n\n/**\n * The pseudo locale, injected into the supported list only when\n * EMDASH_PSEUDO_LOCALE=1 is set. Never available in production.\n */\nconst PSEUDO_LOCALE =\n\ttypeof __EMDASH_PSEUDO_LOCALE__ !== \"undefined\" && __EMDASH_PSEUDO_LOCALE__\n\t\t? LOCALES.find((l) => l.code === \"pseudo\")\n\t\t: undefined;\n\n/** Available locales at runtime, validated against BCP 47. */\nexport const SUPPORTED_LOCALES = [\n\t...ENABLED_LOCALES.filter((l) => isValidLocale(l.code)),\n\t...(PSEUDO_LOCALE ? [PSEUDO_LOCALE] : []),\n];\n\nexport const SUPPORTED_LOCALE_CODES = new Set(SUPPORTED_LOCALES.map((l) => l.code));\n\nexport const DEFAULT_LOCALE = SOURCE_LOCALE.code;\n\n/** Maps base language codes to supported locales (e.g. \"pt\" -> \"pt-BR\"). */\nconst BASE_LANGUAGE_MAP = new Map<string, string>();\n/** Maps script codes to supported locales (e.g. \"zh-Hant\" -> \"zh-TW\", \"zh-Hans\" -> \"zh-CN\"). */\nconst SCRIPT_LANGUAGE_MAP = new Map<string, string>();\n\nfor (const l of SUPPORTED_LOCALES) {\n\tconst base = l.code.split(\"-\")[0]!.toLowerCase();\n\t// First match wins -- if we have both \"pt\" and \"pt-BR\", exact wins via direct lookup.\n\tif (!BASE_LANGUAGE_MAP.has(base)) {\n\t\tBASE_LANGUAGE_MAP.set(base, l.code);\n\t}\n\n\tconst maximized = new Intl.Locale(l.code).maximize();\n\tif (maximized.script) {\n\t\tconst scriptKey = `${maximized.language}-${maximized.script}`.toLowerCase();\n\t\tif (!SCRIPT_LANGUAGE_MAP.has(scriptKey)) {\n\t\t\tSCRIPT_LANGUAGE_MAP.set(scriptKey, l.code);\n\t\t}\n\t}\n}\n\n/**\n * Find the best matching supported locale for a BCP 47 tag.\n * Canonicalizes via Intl.Locale so case differences (e.g. \"pt-br\" vs \"pt-BR\")\n * don't prevent matching. Supports script codes (zh-Hant -> zh-TW, zh-Hans -> zh-CN)\n * and falls back to base language (pt-PT -> pt-BR).\n */\nfunction matchLocale(tag: string): string | undefined {\n\tconst trimmed = tag.trim();\n\tif (!trimmed) return undefined;\n\tlet canonical: string;\n\ttry {\n\t\tcanonical = new Intl.Locale(trimmed).baseName;\n\t} catch {\n\t\treturn undefined;\n\t}\n\n\t// Exact match (case-insensitive via Intl.Locale)\n\tif (SUPPORTED_LOCALE_CODES.has(canonical)) return canonical;\n\n\t// Try script-based matching (zh-Hant -> zh-TW, zh-Hans -> zh-CN)\n\tconst locale = new Intl.Locale(trimmed);\n\tif (locale.script) {\n\t\tconst scriptKey = `${locale.language}-${locale.script}`.toLowerCase();\n\t\tconst scriptMatch = SCRIPT_LANGUAGE_MAP.get(scriptKey);\n\t\tif (scriptMatch) return scriptMatch;\n\t}\n\n\t// Fallback to base language (pt-PT -> pt-BR)\n\tconst base = canonical.split(\"-\")[0]!.toLowerCase();\n\treturn BASE_LANGUAGE_MAP.get(base);\n}\n\nconst LOCALE_LABELS = new Map(SUPPORTED_LOCALES.map((l) => [l.code, l.label]));\n\n/** Get a display label for a locale code, falling back to uppercase code. */\nexport function getLocaleLabel(code: string): string {\n\treturn LOCALE_LABELS.get(code) ?? code.toUpperCase();\n}\n\nconst LOCALE_DIRS = new Map(SUPPORTED_LOCALES.map((l) => [l.code, l.dir]));\n\n/** Get the text direction for a locale code. Defaults to \"ltr\" if not specified. */\nexport function getLocaleDir(code: string): \"ltr\" | \"rtl\" {\n\treturn LOCALE_DIRS.get(code) ?? \"ltr\";\n}\n\nconst LOCALE_COOKIE_RE = /(?:^|;\\s*)emdash-locale=([^;]+)/;\n\n/**\n * Resolve the admin locale from a Request.\n * Priority: emdash-locale cookie -> Accept-Language -> DEFAULT_LOCALE.\n */\nexport function resolveLocale(request: Request): string {\n\tconst cookieHeader = request.headers.get(\"cookie\") ?? \"\";\n\tconst cookieMatch = cookieHeader.match(LOCALE_COOKIE_RE);\n\tconst cookieLocale = cookieMatch?.[1]?.trim() ?? \"\";\n\n\tif (SUPPORTED_LOCALE_CODES.has(cookieLocale)) return cookieLocale;\n\n\tconst acceptLang = request.headers.get(\"accept-language\") ?? \"\";\n\tfor (const entry of acceptLang.split(\",\")) {\n\t\tconst tag = entry.split(\";\")[0]!.trim();\n\t\tconst matched = matchLocale(tag);\n\t\tif (matched) return matched;\n\t}\n\n\treturn DEFAULT_LOCALE;\n}\n","import type { Messages } from \"@lingui/core\";\n\nimport { DEFAULT_LOCALE } from \"./config.js\";\n\nconst LOCALE_LOADERS = import.meta.glob<{ messages: Messages }>(\"./**/messages.mjs\");\n\nexport async function loadMessages(locale: string): Promise<Messages> {\n\tconst key = `./${locale}/messages.mjs`;\n\tconst fallbackKey = `./${DEFAULT_LOCALE}/messages.mjs`;\n\tconst loader = LOCALE_LOADERS[key] ?? LOCALE_LOADERS[fallbackKey];\n\tif (!loader) {\n\t\tthrow new Error(\n\t\t\t`No locale catalog found for \"${locale}\" or \"${DEFAULT_LOCALE}\". Run \\`pnpm locale:compile\\` to generate catalogs.`,\n\t\t);\n\t}\n\tconst { messages } = await loader();\n\treturn messages;\n}\n","import { useLingui } from \"@lingui/react\";\nimport * as React from \"react\";\n\nimport { SUPPORTED_LOCALE_CODES } from \"./config.js\";\nimport { loadMessages } from \"./loadMessages.js\";\n\nfunction setCookie(code: string) {\n\tconst secure = window.location.protocol === \"https:\" ? \"; Secure\" : \"\";\n\tdocument.cookie = `emdash-locale=${code}; Path=/_emdash; SameSite=Lax; Max-Age=31536000${secure}`;\n}\n\n/**\n * Get the current locale and a function to switch locales.\n * Loads the new catalog dynamically and sets a cookie for server-side persistence.\n */\nexport function useLocale() {\n\tconst { i18n } = useLingui();\n\tconst [locale, setLocaleState] = React.useState(i18n.locale);\n\n\tconst setLocale = React.useCallback(\n\t\t(code: string) => {\n\t\t\tif (code === i18n.locale || !SUPPORTED_LOCALE_CODES.has(code)) return;\n\t\t\tsetCookie(code);\n\t\t\tvoid loadMessages(code)\n\t\t\t\t.then((messages) => i18n.loadAndActivate({ locale: code, messages }))\n\t\t\t\t.catch(() => {\n\t\t\t\t\tsetCookie(i18n.locale);\n\t\t\t\t});\n\t\t},\n\t\t[i18n],\n\t);\n\n\t// Subscribe to i18n change events to trigger re-renders\n\tReact.useEffect(() => {\n\t\tconst unsubscribe = i18n.on(\"change\", () => {\n\t\t\tsetLocaleState(i18n.locale);\n\t\t});\n\t\treturn unsubscribe;\n\t}, [i18n]);\n\n\treturn { locale, setLocale };\n}\n","import { DirectionProvider } from \"@cloudflare/kumo/primitives\";\nimport * as React from \"react\";\n\nimport { getLocaleDir } from \"./config.js\";\nimport { useLocale } from \"./useLocale.js\";\n\ninterface LocaleDirectionProviderProps {\n\tchildren: React.ReactNode;\n}\n\n/**\n * Wraps the app with DirectionProvider and keeps it in sync with the current locale.\n * Automatically updates direction when locale changes via useLocale.\n */\nexport function LocaleDirectionProvider({ children }: LocaleDirectionProviderProps) {\n\tconst { locale } = useLocale();\n\tconst dir = React.useMemo(() => getLocaleDir(locale), [locale]);\n\n\t/** Sync the direction and lang attributes with the current locale. */\n\tReact.useEffect(() => {\n\t\tdocument.documentElement.setAttribute(\"lang\", locale);\n\t\tdocument.documentElement.setAttribute(\"dir\", dir);\n\t}, [dir, locale]);\n\n\treturn <DirectionProvider direction={dir}>{children}</DirectionProvider>;\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Messages } from "@lingui/core";
|
|
2
|
-
import * as React from "react";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/locales/useLocale.d.ts
|
|
@@ -14,7 +14,7 @@ declare function useLocale(): {
|
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/locales/LocaleDirectionProvider.d.ts
|
|
16
16
|
interface LocaleDirectionProviderProps {
|
|
17
|
-
children: React.ReactNode;
|
|
17
|
+
children: React$1.ReactNode;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Wraps the app with DirectionProvider and keeps it in sync with the current locale.
|
|
@@ -70,4 +70,4 @@ declare function getLocaleDir(code: string): "ltr" | "rtl";
|
|
|
70
70
|
declare function resolveLocale(request: Request): string;
|
|
71
71
|
//#endregion
|
|
72
72
|
export { getLocaleLabel as a, loadMessages as c, getLocaleDir as i, LocaleDirectionProvider as l, SUPPORTED_LOCALES as n, resolveLocale as o, SUPPORTED_LOCALE_CODES as r, LocaleDefinition as s, DEFAULT_LOCALE as t, useLocale as u };
|
|
73
|
-
//# sourceMappingURL=config-
|
|
73
|
+
//# sourceMappingURL=config-DJUFU9nY.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-DJUFU9nY.d.ts","names":[],"sources":["../src/locales/useLocale.ts","../src/locales/LocaleDirectionProvider.tsx","../src/locales/loadMessages.ts","../src/locales/locales.ts","../src/locales/config.ts"],"mappings":";;;;;;;;;iBAegB,SAAA,CAAA;;;;;;UCTN,4BAAA;EACT,QAAA,EAAU,OAAA,CAAM,SAAA;AAAA;;ADQjB;;;iBCDgB,uBAAA,CAAA;EAA0B;AAAA,GAAY,4BAAA,GAA4B,kBAAA,CAAA,GAAA,CAAA,OAAA;;;iBCR5D,YAAA,CAAa,MAAA,WAAiB,OAAA,CAAQ,QAAA;;;;;;;;AFS5D;;;;;;;;;;UGCiB,gBAAA;;EAEhB,IAAA;EFZqC;EEcrC,KAAA;EFbyB;EEezB,OAAA;EFfU;EEiBV,GAAA;AAAA;;;;cCaY,iBAAA,EAGZ,gBAAA;AAAA,cAEY,sBAAA,EAAsB,GAAA;AAAA,cAEtB,cAAA;;iBA0DG,cAAA,CAAe,IAAA;;iBAOf,YAAA,CAAa,IAAA;;;AH5GE;;iBGsHf,aAAA,CAAc,OAAA,EAAS,OAAA"}
|