@emdash-cms/admin 0.9.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.
Files changed (87) hide show
  1. package/dist/{LocaleDirectionProvider-BGcmv_N7.js → LocaleDirectionProvider-xcSZTLFA.js} +22 -22
  2. package/dist/LocaleDirectionProvider-xcSZTLFA.js.map +1 -0
  3. package/dist/{config-YdN-uv6S.d.ts → config-DJUFU9nY.d.ts} +3 -3
  4. package/dist/{config-YdN-uv6S.d.ts.map → config-DJUFU9nY.d.ts.map} +1 -1
  5. package/dist/index.d.ts +123 -35
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1560 -969
  8. package/dist/index.js.map +1 -1
  9. package/dist/locales/ar/messages.mjs +1 -1
  10. package/dist/locales/de/messages.mjs +1 -1
  11. package/dist/locales/en/messages.mjs +1 -1
  12. package/dist/locales/es-419/messages.mjs +1 -1
  13. package/dist/locales/eu/messages.mjs +1 -1
  14. package/dist/locales/fa/messages.mjs +1 -1
  15. package/dist/locales/fr/messages.mjs +1 -1
  16. package/dist/locales/id/messages.mjs +1 -1
  17. package/dist/locales/index.d.ts +1 -1
  18. package/dist/locales/index.js +1 -1
  19. package/dist/locales/ja/messages.mjs +1 -1
  20. package/dist/locales/ko/messages.mjs +1 -1
  21. package/dist/locales/pl/messages.mjs +1 -1
  22. package/dist/locales/pseudo/messages.mjs +1 -1
  23. package/dist/locales/pt-BR/messages.mjs +1 -1
  24. package/dist/locales/zh-CN/messages.mjs +1 -1
  25. package/dist/locales/zh-TW/messages.mjs +1 -1
  26. package/dist/messages-BLHOmJoS.js +6 -0
  27. package/dist/messages-BLHOmJoS.js.map +1 -0
  28. package/dist/messages-BLPEG0Mx.js +6 -0
  29. package/dist/messages-BLPEG0Mx.js.map +1 -0
  30. package/dist/messages-BYyq7qnh.js +6 -0
  31. package/dist/messages-BYyq7qnh.js.map +1 -0
  32. package/dist/messages-BcI5YTGJ.js +6 -0
  33. package/dist/messages-BcI5YTGJ.js.map +1 -0
  34. package/dist/messages-BpVvs7xa.js +6 -0
  35. package/dist/messages-BpVvs7xa.js.map +1 -0
  36. package/dist/messages-CSs_iEr-.js +6 -0
  37. package/dist/messages-CSs_iEr-.js.map +1 -0
  38. package/dist/messages-CvhBZHPh.js +6 -0
  39. package/dist/messages-CvhBZHPh.js.map +1 -0
  40. package/dist/messages-CyUGKznD.js +6 -0
  41. package/dist/messages-CyUGKznD.js.map +1 -0
  42. package/dist/messages-D7GebqCf.js +6 -0
  43. package/dist/messages-D7GebqCf.js.map +1 -0
  44. package/dist/messages-DDVTav-Y.js +6 -0
  45. package/dist/messages-DDVTav-Y.js.map +1 -0
  46. package/dist/messages-DMBcuYFC.js +6 -0
  47. package/dist/messages-DMBcuYFC.js.map +1 -0
  48. package/dist/messages-DRrZDx80.js +6 -0
  49. package/dist/messages-DRrZDx80.js.map +1 -0
  50. package/dist/messages-aWiCO6Ou.js +6 -0
  51. package/dist/messages-aWiCO6Ou.js.map +1 -0
  52. package/dist/messages-hcBnbmbA.js +6 -0
  53. package/dist/messages-hcBnbmbA.js.map +1 -0
  54. package/dist/messages-wnKLF74l.js +6 -0
  55. package/dist/messages-wnKLF74l.js.map +1 -0
  56. package/package.json +2 -2
  57. package/dist/LocaleDirectionProvider-BGcmv_N7.js.map +0 -1
  58. package/dist/messages-B2njiT3N.js +0 -6
  59. package/dist/messages-B2njiT3N.js.map +0 -1
  60. package/dist/messages-BH4d_eo3.js +0 -6
  61. package/dist/messages-BH4d_eo3.js.map +0 -1
  62. package/dist/messages-BI3LQfHj.js +0 -6
  63. package/dist/messages-BI3LQfHj.js.map +0 -1
  64. package/dist/messages-BLk7kRSt.js +0 -6
  65. package/dist/messages-BLk7kRSt.js.map +0 -1
  66. package/dist/messages-C0fFDufP.js +0 -6
  67. package/dist/messages-C0fFDufP.js.map +0 -1
  68. package/dist/messages-C2W1GOne.js +0 -6
  69. package/dist/messages-C2W1GOne.js.map +0 -1
  70. package/dist/messages-C7bn0sIO.js +0 -6
  71. package/dist/messages-C7bn0sIO.js.map +0 -1
  72. package/dist/messages-CKVC1F84.js +0 -6
  73. package/dist/messages-CKVC1F84.js.map +0 -1
  74. package/dist/messages-D6pXx3hr.js +0 -6
  75. package/dist/messages-D6pXx3hr.js.map +0 -1
  76. package/dist/messages-DQUgrzIz.js +0 -6
  77. package/dist/messages-DQUgrzIz.js.map +0 -1
  78. package/dist/messages-DfGxk-9q.js +0 -6
  79. package/dist/messages-DfGxk-9q.js.map +0 -1
  80. package/dist/messages-Dkb9TndV.js +0 -6
  81. package/dist/messages-Dkb9TndV.js.map +0 -1
  82. package/dist/messages-DzS9GmJY.js +0 -6
  83. package/dist/messages-DzS9GmJY.js.map +0 -1
  84. package/dist/messages-FaHuWwRM.js +0 -6
  85. package/dist/messages-FaHuWwRM.js.map +0 -1
  86. package/dist/messages-lrnW_v3N.js +0 -6
  87. package/dist/messages-lrnW_v3N.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
 
@@ -188,21 +188,21 @@ function resolveLocale(request) {
188
188
  //#endregion
189
189
  //#region src/locales/loadMessages.ts
190
190
  const LOCALE_LOADERS = /* @__PURE__ */ Object.assign({
191
- "./ar/messages.mjs": () => import("./messages-BI3LQfHj.js"),
192
- "./de/messages.mjs": () => import("./messages-D6pXx3hr.js"),
193
- "./en/messages.mjs": () => import("./messages-BH4d_eo3.js"),
194
- "./es-419/messages.mjs": () => import("./messages-DQUgrzIz.js"),
195
- "./eu/messages.mjs": () => import("./messages-B2njiT3N.js"),
196
- "./fa/messages.mjs": () => import("./messages-C0fFDufP.js"),
197
- "./fr/messages.mjs": () => import("./messages-CKVC1F84.js"),
198
- "./id/messages.mjs": () => import("./messages-C7bn0sIO.js"),
199
- "./ja/messages.mjs": () => import("./messages-DfGxk-9q.js"),
200
- "./ko/messages.mjs": () => import("./messages-Dkb9TndV.js"),
201
- "./pl/messages.mjs": () => import("./messages-C2W1GOne.js"),
202
- "./pseudo/messages.mjs": () => import("./messages-FaHuWwRM.js"),
203
- "./pt-BR/messages.mjs": () => import("./messages-DzS9GmJY.js"),
204
- "./zh-CN/messages.mjs": () => import("./messages-BLk7kRSt.js"),
205
- "./zh-TW/messages.mjs": () => import("./messages-lrnW_v3N.js")
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")
206
206
  });
207
207
  async function loadMessages(locale) {
208
208
  const key = `./${locale}/messages.mjs`;
@@ -225,8 +225,8 @@ function setCookie(code) {
225
225
  */
226
226
  function useLocale() {
227
227
  const { i18n } = useLingui();
228
- const [locale, setLocaleState] = React.useState(i18n.locale);
229
- const setLocale = React.useCallback((code) => {
228
+ const [locale, setLocaleState] = React$1.useState(i18n.locale);
229
+ const setLocale = React$1.useCallback((code) => {
230
230
  if (code === i18n.locale || !SUPPORTED_LOCALE_CODES.has(code)) return;
231
231
  setCookie(code);
232
232
  loadMessages(code).then((messages) => i18n.loadAndActivate({
@@ -236,7 +236,7 @@ function useLocale() {
236
236
  setCookie(i18n.locale);
237
237
  });
238
238
  }, [i18n]);
239
- React.useEffect(() => {
239
+ React$1.useEffect(() => {
240
240
  return i18n.on("change", () => {
241
241
  setLocaleState(i18n.locale);
242
242
  });
@@ -255,9 +255,9 @@ function useLocale() {
255
255
  */
256
256
  function LocaleDirectionProvider({ children }) {
257
257
  const { locale } = useLocale();
258
- const dir = React.useMemo(() => getLocaleDir(locale), [locale]);
258
+ const dir = React$1.useMemo(() => getLocaleDir(locale), [locale]);
259
259
  /** Sync the direction and lang attributes with the current locale. */
260
- React.useEffect(() => {
260
+ React$1.useEffect(() => {
261
261
  document.documentElement.setAttribute("lang", locale);
262
262
  document.documentElement.setAttribute("dir", dir);
263
263
  }, [dir, locale]);
@@ -269,4 +269,4 @@ function LocaleDirectionProvider({ children }) {
269
269
 
270
270
  //#endregion
271
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 };
272
- //# sourceMappingURL=LocaleDirectionProvider-BGcmv_N7.js.map
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":";;;;;;;;;;AA+BA,MAAa,UAA8B;CAE1C;EAAE,MAAM;EAAM,OAAO;EAAW,SAAS;EAAM;CAC/C;EAAE,MAAM;EAAM,OAAO;EAAW,SAAS;EAAM,KAAK;EAAO;CAC3D;EAAE,MAAM;EAAM,OAAO;EAAW,SAAS;EAAM;CAC/C;EAAE,MAAM;EAAS,OAAO;EAAQ,SAAS;EAAM;CAC/C;EAAE,MAAM;EAAS,OAAO;EAAQ,SAAS;EAAM;CAC/C;EAAE,MAAM;EAAM,OAAO;EAAS,SAAS;EAAM,KAAK;EAAO;CACzD;EAAE,MAAM;EAAM,OAAO;EAAY,SAAS;EAAM;CAChD;EAAE,MAAM;EAAM,OAAO;EAAW,SAAS;EAAM;CAC/C;EAAE,MAAM;EAAM,OAAO;EAAoB,SAAS;EAAM;CACxD;EAAE,MAAM;EAAM,OAAO;EAAO,SAAS;EAAM;CAC3C;EAAE,MAAM;EAAM,OAAO;EAAO,SAAS;EAAO;CAC5C;EAAE,MAAM;EAAM,OAAO;EAAU,SAAS;EAAM;CAC9C;EAAE,MAAM;EAAS,OAAO;EAAsB,SAAS;EAAM;CAC7D;EAAE,MAAM;EAAU,OAAO;EAA2B,SAAS;EAAM;CAGnE;EAAE,MAAM;EAAU,OAAO;EAAU,SAAS;EAAO;CACnD;;AAGD,MAAa,gBAAgB,QAAQ;;AAGrC,MAAa,eAAe,QAAQ,KAAK,MAAM,EAAE,KAAK;;AAGtD,MAAa,iBAAiB,QAAQ,MAAM,EAAE;;AAG9C,MAAa,kBAAkB,QAAQ,QAAQ,MAAM,EAAE,QAAQ;;;;;;;;;;ACnD/D,SAAS,cAAc,MAAuB;AAC7C,KAAI;AAEH,SADe,IAAI,KAAK,OAAO,KAAK,CACtB,aAAa;SACpB;AACP,MAAI,OAAO,KAAK,IAAI,IACnB,OAAM,IAAI,MAAM,yBAAyB,KAAK,GAAG;AAElD,SAAO;;;;;;;AAYT,MAAM,gBACL,OAAO,6BAA6B,eAAe,2BAChD,QAAQ,MAAM,MAAM,EAAE,SAAS,SAAS,GACxC;;AAGJ,MAAa,oBAAoB,CAChC,GAAG,gBAAgB,QAAQ,MAAM,cAAc,EAAE,KAAK,CAAC,EACvD,GAAI,gBAAgB,CAAC,cAAc,GAAG,EAAE,CACxC;AAED,MAAa,yBAAyB,IAAI,IAAI,kBAAkB,KAAK,MAAM,EAAE,KAAK,CAAC;AAEnF,MAAa,iBAAiB,cAAc;;AAG5C,MAAM,oCAAoB,IAAI,KAAqB;;AAEnD,MAAM,sCAAsB,IAAI,KAAqB;AAErD,KAAK,MAAM,KAAK,mBAAmB;CAClC,MAAM,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC,GAAI,aAAa;AAEhD,KAAI,CAAC,kBAAkB,IAAI,KAAK,CAC/B,mBAAkB,IAAI,MAAM,EAAE,KAAK;CAGpC,MAAM,YAAY,IAAI,KAAK,OAAO,EAAE,KAAK,CAAC,UAAU;AACpD,KAAI,UAAU,QAAQ;EACrB,MAAM,YAAY,GAAG,UAAU,SAAS,GAAG,UAAU,SAAS,aAAa;AAC3E,MAAI,CAAC,oBAAoB,IAAI,UAAU,CACtC,qBAAoB,IAAI,WAAW,EAAE,KAAK;;;;;;;;;AAW7C,SAAS,YAAY,KAAiC;CACrD,MAAM,UAAU,IAAI,MAAM;AAC1B,KAAI,CAAC,QAAS,QAAO;CACrB,IAAI;AACJ,KAAI;AACH,cAAY,IAAI,KAAK,OAAO,QAAQ,CAAC;SAC9B;AACP;;AAID,KAAI,uBAAuB,IAAI,UAAU,CAAE,QAAO;CAGlD,MAAM,SAAS,IAAI,KAAK,OAAO,QAAQ;AACvC,KAAI,OAAO,QAAQ;EAClB,MAAM,YAAY,GAAG,OAAO,SAAS,GAAG,OAAO,SAAS,aAAa;EACrE,MAAM,cAAc,oBAAoB,IAAI,UAAU;AACtD,MAAI,YAAa,QAAO;;CAIzB,MAAM,OAAO,UAAU,MAAM,IAAI,CAAC,GAAI,aAAa;AACnD,QAAO,kBAAkB,IAAI,KAAK;;AAGnC,MAAM,gBAAgB,IAAI,IAAI,kBAAkB,KAAK,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;AAG9E,SAAgB,eAAe,MAAsB;AACpD,QAAO,cAAc,IAAI,KAAK,IAAI,KAAK,aAAa;;AAGrD,MAAM,cAAc,IAAI,IAAI,kBAAkB,KAAK,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;;AAG1E,SAAgB,aAAa,MAA6B;AACzD,QAAO,YAAY,IAAI,KAAK,IAAI;;AAGjC,MAAM,mBAAmB;;;;;AAMzB,SAAgB,cAAc,SAA0B;CAGvD,MAAM,gBAFe,QAAQ,QAAQ,IAAI,SAAS,IAAI,IACrB,MAAM,iBAAiB,GACrB,IAAI,MAAM,IAAI;AAEjD,KAAI,uBAAuB,IAAI,aAAa,CAAE,QAAO;CAErD,MAAM,aAAa,QAAQ,QAAQ,IAAI,kBAAkB,IAAI;AAC7D,MAAK,MAAM,SAAS,WAAW,MAAM,IAAI,EAAE;EAE1C,MAAM,UAAU,YADJ,MAAM,MAAM,IAAI,CAAC,GAAI,MAAM,CACP;AAChC,MAAI,QAAS,QAAO;;AAGrB,QAAO;;;;;ACnIR,MAAM,iBAA4B,uBAAU,OAAA;;CAE5C,2BAAuB,OAAY;;CAEnC,+BAAsB,OAAa;CAClC,2BAAyB,OAAS;CAClC,2BAAyB,OAAA;CACzB,2BAAe,OAAoB;CACnC,2BAAa,OAAA;CACZ,2BAAe,OAAA;CACf,2BAA0B,OAAO;CACjC,2BAAC,OAAA;CACF,+BAAA,OAAA;CACA,8BAA2B,OAAQ;CACnC,8BAAe,OAAA;CAChB,8BAAA,OAAA;;;;;;;;;;;;;ACbA,SAAS,UAAA,MAAuB;;AAEhC,UAAS,SAAU,iBAAc,KAAA,iDAAA;;;;;;AAOjC,SAAgB,YAAS;CACvB,MAAA,EACF,SACM,WAAW;CAChB,MAAO,CAAA,QAAQ,kBAAkB,QAAM,SAAS,KAAK,OAAO;;AAE5D,MAAM,SAAU,KAAE,UAAM,CAAA,uBAAW,IAAA,KAAA,CAAA;AACjC,YAAM,KAAU;AAChB,EAAI,aAAc,KAAM,CAAC,MAAI,aAAA,KAAA,gBAAkC;GAC/D,QAAU;GACV;GACE,CAAA,CAAA,CAAA,YAAe;AACf,aAAW,KAAC,OAAA;IACZ;IACA,CAAC,KAAA,CAAA;AAGJ,SAAA,gBAAA;AAIA;AAFE,kBAAiB,KAAC,OAAO;IACvB;IAEH,CAAA,KAAA,CAAA;AACD,QAAE;EACF;EACE;;;;;;;;;;ACxBJ,SAAgB,wBAAwB,EAAE,YAA0C;CACnF,MAAM,EAAE,WAAW,WAAW;CAC9B,MAAM,MAAMA,QAAM,cAAc,aAAa,OAAO,EAAE,CAAC,OAAO,CAAC;;AAG/D,SAAM,gBAAgB;AACrB,WAAS,gBAAgB,aAAa,QAAQ,OAAO;AACrD,WAAS,gBAAgB,aAAa,OAAO,IAAI;IAC/C,CAAC,KAAK,OAAO,CAAC;AAEjB,QAAO,oBAAC;EAAkB,WAAW;EAAM;GAA6B"}
@@ -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-YdN-uv6S.d.ts.map
73
+ //# sourceMappingURL=config-DJUFU9nY.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-YdN-uv6S.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,KAAA,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"}
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"}