gt-react 11.4.2 → 11.4.4

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.
@@ -4,7 +4,7 @@ import { GtInternalRuntimeTranslateJsx, GtInternalRuntimeTranslateString, I18nCa
4
4
  import { useCustomMapping, useDefaultLocale, useEnableI18n, useFormatLocales, useGT, useInternalLocaleSelector, useInternalRegionSelector, useLocale, useLocaleDirection, useLocaleProperties, useLocales, useMessages, useRegion, useSetEnableI18n, useSetLocale, useSetLocale as useSetLocale$1, useSetRegion, useSetRegion as useSetRegion$1, useTranslations } from "@generaltranslation/react-core/hooks";
5
5
  import { Branch, Currency, DateTime, Derive, GtInternalTranslateJsx, GtInternalVar, I18nStore as I18nStore$1, InternalGTProvider, InternalLocaleSelector, InternalRegionSelector, Num, Plural, RelativeTime, T, Var } from "@generaltranslation/react-core/components";
6
6
  import { jsx } from "react/jsx-runtime";
7
- import { useMemo, useRef } from "react";
7
+ import { useCallback, useEffect, useRef } from "react";
8
8
  //#region src/i18n-cache/BrowserI18nCache.ts
9
9
  let localStorageCacheModulePromise;
10
10
  /**
@@ -99,16 +99,10 @@ function readBrowserLocale(localeCookieName) {
99
99
  */
100
100
  var BrowserConditionStore = class {
101
101
  constructor(config) {
102
- this.pending = {};
103
102
  this.getLocale = () => {
104
- if (this.serverConditions !== void 0) return this.serverConditions.locale;
105
103
  return getBrowserLocale(this.customGetLocale);
106
104
  };
107
105
  this.setLocale = (locale) => {
108
- if (this.serverConditions !== void 0) {
109
- locale = getI18nConfig().resolveSupportedLocale(locale);
110
- this.pending.locale = locale;
111
- }
112
106
  this.updateLocale(locale);
113
107
  setCookieValue({
114
108
  cookieName: defaultResetLocaleCookieName,
@@ -117,13 +111,11 @@ var BrowserConditionStore = class {
117
111
  this.reload();
118
112
  };
119
113
  this.getRegion = () => {
120
- if (this.serverConditions !== void 0) return this.serverConditions.region;
121
114
  const cookieRegion = getCookieValue$1({ cookieName: getI18nConfig().getRegionCookieName() });
122
115
  if (cookieRegion) return cookieRegion;
123
116
  return this.customGetRegion?.();
124
117
  };
125
118
  this.setRegion = (region) => {
126
- if (this.serverConditions !== void 0) this.pending.region = region;
127
119
  this.updateRegion(region);
128
120
  this.reload();
129
121
  };
@@ -133,7 +125,6 @@ var BrowserConditionStore = class {
133
125
  return cookieEnableI18n === "true";
134
126
  };
135
127
  this.setEnableI18n = (enableI18n) => {
136
- if (this.serverConditions !== void 0) this.pending.enableI18n = enableI18n;
137
128
  this.updateEnableI18n(enableI18n);
138
129
  this.reload();
139
130
  };
@@ -162,17 +153,13 @@ var BrowserConditionStore = class {
162
153
  region: this.getRegion(),
163
154
  enableI18n: this.getEnableI18n()
164
155
  };
165
- this.customReload(this.serverConditions !== void 0 ? {
166
- ...state,
167
- ...this.pending
168
- } : state);
156
+ this.customReload(state);
169
157
  };
170
158
  const i18nConfig = getI18nConfig();
171
159
  this.customReload = config._reload ?? (() => typeof window !== "undefined" ? window.location.reload() : void 0);
172
160
  this.customGetLocale = config._getLocale;
173
161
  this.customGetRegion = config._getRegion;
174
162
  this.customGetEnableI18n = config._getEnableI18n;
175
- this.serverConditions = config._serverConditions;
176
163
  setCookieValue({
177
164
  cookieName: i18nConfig.getLocaleCookieName(),
178
165
  value: i18nConfig.resolveSupportedLocale(config.locale)
@@ -191,7 +178,7 @@ function getBrowserLocale(getLocale) {
191
178
  return i18nConfig.resolveSupportedLocale(candidates);
192
179
  }
193
180
  //#endregion
194
- //#region ../core/dist/unwrapApiResult-BzGfPw75.mjs
181
+ //#region ../core/dist/diagnostics-DKA2SkZB.mjs
195
182
  function ensureSentence(text) {
196
183
  const trimmed = text.trim();
197
184
  if (!trimmed) return "";
@@ -253,14 +240,6 @@ const { getConditionStore: getBrowserConditionStore, setConditionStore: setBrows
253
240
  * initializeGT() apply here without being threaded through provider props.
254
241
  */
255
242
  function createOrUpdateBrowserConditionStore(config) {
256
- if (config._serverConditions !== void 0) {
257
- const conditionStore = new BrowserConditionStore({
258
- ...config,
259
- locale: config._serverConditions.locale
260
- });
261
- setBrowserConditionStore(conditionStore);
262
- return conditionStore;
263
- }
264
243
  const locale = determineLocale(config);
265
244
  const region = determineRegion(config);
266
245
  const enableI18n = determineEnableI18n(config);
@@ -497,28 +476,105 @@ function RegionSelector({ regions: _regions, customMapping, prioritizeCurrentLoc
497
476
  }
498
477
  //#endregion
499
478
  //#region src/provider/BrowserGTProvider.tsx
500
- /**
501
- * Consumes snapshot from server
502
- * Implementation for client-side only
503
- */
479
+ /** Client-side provider for server-rendered applications. */
504
480
  function BrowserGTProvider(props) {
505
- const conditionStore = useMemo(() => {
506
- return createOrUpdateBrowserConditionStore(props);
481
+ const i18nConfig = getI18nConfig();
482
+ const { locale, region } = props;
483
+ const enableI18n = props.enableI18n ?? true;
484
+ const reload = useCallback((next) => {
485
+ if (props._reload) props._reload(next);
486
+ else if (typeof window !== "undefined") window.location.reload();
487
+ }, [props._reload]);
488
+ const setLocale = useCallback((nextLocale) => {
489
+ const resolvedLocale = i18nConfig.resolveSupportedLocale(nextLocale);
490
+ setCookieValue({
491
+ cookieName: i18nConfig.getLocaleCookieName(),
492
+ value: resolvedLocale
493
+ });
494
+ setCookieValue({
495
+ cookieName: defaultResetLocaleCookieName,
496
+ value: "true"
497
+ });
498
+ reload({
499
+ locale: resolvedLocale,
500
+ region,
501
+ enableI18n
502
+ });
507
503
  }, [
508
- props.locale,
509
- props.region,
510
- props.enableI18n,
511
- props._reload,
512
- props._serverConditions
504
+ i18nConfig,
505
+ region,
506
+ enableI18n,
507
+ reload
513
508
  ]);
514
- const i18nStoreRef = useRef(null);
515
- if (i18nStoreRef.current == null) i18nStoreRef.current = new I18nStore$1();
509
+ const setRegion = useCallback((nextRegion) => {
510
+ setCookieValue({
511
+ cookieName: i18nConfig.getRegionCookieName(),
512
+ value: nextRegion ?? ""
513
+ });
514
+ reload({
515
+ locale,
516
+ region: nextRegion,
517
+ enableI18n
518
+ });
519
+ }, [
520
+ i18nConfig,
521
+ locale,
522
+ enableI18n,
523
+ reload
524
+ ]);
525
+ const setEnableI18n = useCallback((nextEnableI18n) => {
526
+ setCookieValue({
527
+ cookieName: i18nConfig.getEnableI18nCookieName(),
528
+ value: nextEnableI18n ? "true" : "false"
529
+ });
530
+ reload({
531
+ locale,
532
+ region,
533
+ enableI18n: nextEnableI18n
534
+ });
535
+ }, [
536
+ i18nConfig,
537
+ locale,
538
+ region,
539
+ reload
540
+ ]);
541
+ useEffect(() => {
542
+ setCookieValue({
543
+ cookieName: i18nConfig.getLocaleCookieName(),
544
+ value: locale
545
+ });
546
+ if (region !== void 0) setCookieValue({
547
+ cookieName: i18nConfig.getRegionCookieName(),
548
+ value: region
549
+ });
550
+ setCookieValue({
551
+ cookieName: i18nConfig.getEnableI18nCookieName(),
552
+ value: enableI18n ? "true" : "false"
553
+ });
554
+ }, [
555
+ i18nConfig,
556
+ locale,
557
+ region,
558
+ enableI18n,
559
+ props.translations
560
+ ]);
561
+ const i18nStore = useI18nStore();
516
562
  return /* @__PURE__ */ jsx(InternalGTProvider, {
517
563
  ...props,
518
- conditionStore,
519
- i18nStore: i18nStoreRef.current
564
+ locale,
565
+ region,
566
+ enableI18n,
567
+ setLocale,
568
+ setRegion,
569
+ setEnableI18n,
570
+ i18nStore
520
571
  });
521
572
  }
573
+ function useI18nStore() {
574
+ const i18nStoreRef = useRef(null);
575
+ if (i18nStoreRef.current == null) i18nStoreRef.current = new I18nStore$1();
576
+ return i18nStoreRef.current;
577
+ }
522
578
  //#endregion
523
579
  //#region src/index.client.ts
524
580
  async function Tx(_props) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.mjs","names":["getI18nConfig","getCookieValue","getCookieValueFromString","getCookieValue","getCookieValue","getCookieValue","getTranslationsSnapshot","useSetLocale","useSetRegion","useSetLocale","I18nStore"],"sources":["../src/i18n-cache/BrowserI18nCache.ts","../src/condition-store/cookies.ts","../src/condition-store/readBrowserLocale.ts","../src/condition-store/BrowserConditionStore.ts","../../core/dist/unwrapApiResult-BzGfPw75.mjs","../src/condition-store/singleton-operations.ts","../src/condition-store/createBrowserConditionStore.ts","../src/setup/runtimeCredentials.ts","../src/setup/initializeGTSPA.ts","../src/setup/initializeGTSRAClient.ts","../src/functions/parseLocale.ts","../src/components/useLocaleSelector.ts","../src/components/useRegionSelector.ts","../src/components/LocaleSelector.tsx","../src/components/RegionSelector.tsx","../src/provider/BrowserGTProvider.tsx","../src/index.client.ts"],"sourcesContent":["import type {\n I18nCacheConstructorParams,\n TranslationsLoader,\n} from 'gt-i18n/internal/types';\nimport { getI18nConfig, I18nCache } from 'gt-i18n/internal';\nimport type { HtmlTagOptions } from './types';\nimport type { Translation } from 'gt-i18n/types';\n\ntype LocalStorageTranslationCache =\n import('./LocalStorageTranslationCache').LocalStorageTranslationCache;\ntype LocalStorageCachePromises = Record<\n string,\n Promise<LocalStorageTranslationCache>\n>;\n\n// Lazily import the development-only cache so bundlers can keep it out of the initial client chunk.\n// `??=` saves the first import promise, so all cache instances reuse the same lazy module load.\nlet localStorageCacheModulePromise:\n | Promise<typeof import('./LocalStorageTranslationCache')>\n | undefined;\n\n/**\n * The configuration for the BrowserI18nCache\n */\nexport type BrowserI18nCacheParams = I18nCacheConstructorParams & {\n htmlTagOptions?: HtmlTagOptions;\n};\n\n/**\n * I18nCache implementation for Browser.\n */\nexport class BrowserI18nCache extends I18nCache<Translation> {\n /** Whether dev hot reload JSX (Suspense-based <T>) is active */\n private _devHotReloadJsx = false;\n\n constructor(config: BrowserI18nCacheParams) {\n // Must be initialized before super()\n // Keep accepting htmlTagOptions without passing it to the translation cache.\n const { htmlTagOptions: _htmlTagOptions, ...managerConfig } = config;\n const localStorageCaches: LocalStorageCachePromises = {};\n const i18nConfig = getI18nConfig();\n const devHotReloadEnabled =\n !!config.loadTranslations && i18nConfig.isDevHotReloadEnabled();\n const projectId = i18nConfig.getProjectId()!;\n const loadTranslations = devHotReloadEnabled\n ? wrapLoaderWithLocalStorage(\n config.loadTranslations!,\n projectId,\n localStorageCaches\n )\n : config.loadTranslations;\n\n // Initialize the I18nCache\n super({\n ...managerConfig,\n loadTranslations,\n });\n\n this._devHotReloadJsx = devHotReloadEnabled;\n\n // For dev hot reload, we need to write the translations to the localStorage cache\n if (devHotReloadEnabled) {\n this.onTranslationsCacheMiss = ({ locale, hash, translation }) => {\n void getOrCreateLocalStorageCache(localStorageCaches, {\n locale,\n projectId,\n }).then((cache) => cache.write(hash, translation));\n };\n }\n }\n\n /**\n * Whether dev hot reload JSX (Suspense-based <T>) is active\n */\n isDevHotReloadJsx(): boolean {\n return this._devHotReloadJsx;\n }\n}\n\n// ===== Helper Functions ===== //\n\n/**\n * Wraps a translation loader to merge localStorage translations in dev mode.\n * On each call: runs the original loader, seeds a LocalStorageTranslationCache\n * with the result (loader wins over stale localStorage), and returns the merged\n * translations — preserving runtime tx() translations from previous sessions.\n *\n * TODO: this should be moved to wrapping in I18nStore\n */\nfunction wrapLoaderWithLocalStorage(\n originalLoader: TranslationsLoader,\n projectId: string,\n localStorageCaches: LocalStorageCachePromises\n) {\n return async (locale: string) => {\n const loaderTranslations = await originalLoader(locale);\n const cache = await getOrCreateLocalStorageCache(localStorageCaches, {\n locale,\n projectId,\n init: loaderTranslations as Record<string, Translation>,\n });\n return cache.getInternalCache();\n };\n}\nfunction getOrCreateLocalStorageCache(\n localStorageCaches: LocalStorageCachePromises,\n params: {\n locale: string;\n projectId: string;\n init?: Record<string, Translation>;\n }\n): Promise<LocalStorageTranslationCache> {\n // `||=` saves the first promise for this locale, so concurrent calls reuse one cache instance.\n return (localStorageCaches[params.locale] ||= loadLocalStorageCache().then(\n ({ LocalStorageTranslationCache }) =>\n new LocalStorageTranslationCache(params)\n ));\n}\n\nfunction loadLocalStorageCache() {\n return (localStorageCacheModulePromise ??=\n import('./LocalStorageTranslationCache'));\n}\n","import { getCookieValue as getCookieValueFromString } from 'gt-i18n/internal';\n\n/**\n * Minimally parses a cookie value for a given cookie name\n * @param cookieName - The name of the cookie\n * @returns The locale from the cookie or undefined if not found or invalid\n */\nexport function getCookieValue({\n cookieName,\n}: {\n cookieName: string;\n}): string | undefined {\n if (typeof document === 'undefined') return undefined;\n return getCookieValueFromString(document.cookie, cookieName);\n}\n\n/**\n * Sets a cookie value for a given cookie name\n * @param cookieName - The name of the cookie\n * @param value - The value to set\n * @returns The value that was set\n */\nexport function setCookieValue({\n cookieName,\n value,\n}: {\n cookieName: string;\n value: string;\n}): void {\n if (typeof document === 'undefined') return;\n document.cookie = `${cookieName}=${value};path=/`;\n}\n","import { getCookieValue } from './cookies';\n\nexport function readBrowserLocale(localeCookieName: string): string[] {\n const candidates = [];\n // (1) Check cookie\n\n const cookieLocale = getCookieValue({\n cookieName: localeCookieName,\n });\n if (cookieLocale) candidates.push(cookieLocale);\n\n // (2) Check navigator locales\n const navigatorLocales = navigator?.languages || [];\n candidates.push(...navigatorLocales);\n\n return candidates;\n}\n","import {\n defaultResetLocaleCookieName,\n getI18nConfig,\n} from '@generaltranslation/react-core/pure';\nimport type { WritableConditionStoreParams } from 'gt-i18n/internal';\nimport { getCookieValue, setCookieValue } from './cookies';\nimport { readBrowserLocale } from './readBrowserLocale';\nimport { GetEnableI18n, GetLocale, GetRegion } from '../i18n-cache/types';\nimport {\n LocaleCandidates,\n WritableConditionStoreInterface,\n} from 'gt-i18n/internal/types';\n\ntype SerializedBrowserConditionStoreState = {\n locale: string;\n region: string | undefined;\n enableI18n: boolean;\n};\nexport type ReloadType = (state: SerializedBrowserConditionStoreState) => void;\n\n/**\n * The configuration for the BrowserConditionStore\n * @param {GetLocale} getLocale - The function to get the locale\n */\nexport type BrowserConditionStoreParams = WritableConditionStoreParams & {\n _getLocale?: GetLocale;\n _getRegion?: GetRegion;\n _getEnableI18n?: GetEnableI18n;\n _reload?: ReloadType;\n /** App Router only: authoritative conditions supplied by this server render. */\n _serverConditions?: {\n locale: string;\n region?: string;\n enableI18n?: boolean;\n };\n};\n\n/**\n * Condition store implementation for Browser.\n */\nexport class BrowserConditionStore implements WritableConditionStoreInterface {\n private customReload: ReloadType;\n private customGetLocale?: GetLocale;\n private customGetRegion?: GetRegion;\n private customGetEnableI18n?: GetEnableI18n;\n private serverConditions?: BrowserConditionStoreParams['_serverConditions'];\n private pending: Partial<SerializedBrowserConditionStoreState> = {};\n\n constructor(config: BrowserConditionStoreParams) {\n const i18nConfig = getI18nConfig();\n this.customReload =\n config._reload ??\n (() =>\n typeof window !== 'undefined' ? window.location.reload() : undefined);\n this.customGetLocale = config._getLocale;\n this.customGetRegion = config._getRegion;\n this.customGetEnableI18n = config._getEnableI18n;\n this.serverConditions = config._serverConditions;\n setCookieValue({\n cookieName: i18nConfig.getLocaleCookieName(),\n value: i18nConfig.resolveSupportedLocale(config.locale),\n });\n if (config.region !== undefined) {\n setCookieValue({\n cookieName: i18nConfig.getRegionCookieName(),\n value: config.region,\n });\n }\n this.updateEnableI18n(config.enableI18n ?? true);\n }\n\n getLocale = (): string => {\n if (this.serverConditions !== undefined)\n return this.serverConditions.locale;\n return getBrowserLocale(this.customGetLocale);\n };\n\n setLocale = (locale: LocaleCandidates): void => {\n if (this.serverConditions !== undefined) {\n locale = getI18nConfig().resolveSupportedLocale(locale);\n this.pending.locale = locale;\n }\n this.updateLocale(locale);\n setCookieValue({\n cookieName: defaultResetLocaleCookieName,\n value: 'true',\n });\n this.reload();\n };\n\n getRegion = (): string | undefined => {\n if (this.serverConditions !== undefined)\n return this.serverConditions.region;\n const cookieRegion = getCookieValue({\n cookieName: getI18nConfig().getRegionCookieName(),\n });\n if (cookieRegion) return cookieRegion;\n return this.customGetRegion?.();\n };\n\n setRegion = (region: string | undefined): void => {\n if (this.serverConditions !== undefined) this.pending.region = region;\n this.updateRegion(region);\n this.reload();\n };\n\n getEnableI18n = (): boolean => {\n // App Router does not resolve this preference on the server yet, so retain\n // its existing client behavior rather than accepting the server's true.\n const cookieEnableI18n = getCookieValue({\n cookieName: getI18nConfig().getEnableI18nCookieName(),\n });\n if (cookieEnableI18n === undefined) {\n return this.customGetEnableI18n?.() ?? true;\n }\n return cookieEnableI18n === 'true';\n };\n\n setEnableI18n = (enableI18n: boolean): void => {\n if (this.serverConditions !== undefined)\n this.pending.enableI18n = enableI18n;\n this.updateEnableI18n(enableI18n);\n this.reload();\n };\n\n /**\n * Soft locale update\n */\n updateLocale = (locale: LocaleCandidates): void => {\n const i18nConfig = getI18nConfig();\n setCookieValue({\n cookieName: i18nConfig.getLocaleCookieName(),\n value: i18nConfig.resolveSupportedLocale(locale),\n });\n };\n\n /**\n * Soft region update\n */\n updateRegion = (region: string | undefined): void => {\n setCookieValue({\n cookieName: getI18nConfig().getRegionCookieName(),\n value: region ?? '',\n });\n };\n\n /**\n * Soft enableI18n update\n */\n updateEnableI18n = (enableI18n: boolean): void => {\n setCookieValue({\n cookieName: getI18nConfig().getEnableI18nCookieName(),\n value: enableI18n ? 'true' : 'false',\n });\n };\n\n /**\n * Condition store updates come from either the server or the client.\n * Trigger this reload when we update a value in the condition store from\n * the client.\n */\n reload = (): void => {\n const state = {\n locale: this.getLocale(),\n region: this.getRegion(),\n enableI18n: this.getEnableI18n(),\n };\n this.customReload(\n this.serverConditions !== undefined\n ? { ...state, ...this.pending }\n : state\n );\n };\n}\n\nfunction getBrowserLocale(getLocale?: GetLocale): string {\n const i18nConfig = getI18nConfig();\n const candidates = readBrowserLocale(i18nConfig.getLocaleCookieName());\n if (getLocale) candidates.push(getLocale());\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n","import { t as ApiError } from \"./ApiError-CUKcz3YS.mjs\";\n//#region src/settings/settings.ts\nconst libraryDefaultLocale = \"en\";\nconst defaultTimeout = 6e4;\n//#endregion\n//#region src/logging/diagnostics.ts\nfunction ensureSentence(text) {\n\tconst trimmed = text.trim();\n\tif (!trimmed) return \"\";\n\treturn /[.!?)]$/.test(trimmed) ? trimmed : `${trimmed}.`;\n}\nfunction stripSentence(text) {\n\tconst trimmed = text.trim();\n\tlet end = trimmed.length;\n\twhile (end > 0) {\n\t\tconst char = trimmed[end - 1];\n\t\tif (char !== \".\" && char !== \"!\" && char !== \"?\") break;\n\t\tend -= 1;\n\t}\n\treturn trimmed.slice(0, end);\n}\nfunction formatDetails(details) {\n\tif (!details) return \"\";\n\tconst detailText = Array.isArray(details) ? details.join(\", \") : details;\n\tif (!detailText.trim()) return \"\";\n\treturn ensureSentence(`Details: ${detailText}`);\n}\nfunction formatDiagnosticErrorDetails(error) {\n\tif (error == null) return void 0;\n\treturn String(error);\n}\nfunction createDiagnosticMessage({ source, severity, whatHappened, reassurance, why, fix, wayOut, details, docsUrl }) {\n\tconst prefix = source ? severity ? `${source} ${severity}:` : `${source}:` : severity ? `${severity}:` : \"\";\n\tconst whatAndWhy = why ? `${stripSentence(whatHappened)} because ${stripSentence(why)}` : whatHappened;\n\tconst shouldCombineWayOut = !!fix && !!wayOut && /^[a-z]/.test(stripSentence(wayOut));\n\tconst messageParts = [\n\t\twhatAndWhy,\n\t\treassurance,\n\t\tshouldCombineWayOut ? `${stripSentence(fix)}, or ${stripSentence(wayOut)}` : fix,\n\t\tshouldCombineWayOut ? void 0 : wayOut,\n\t\tformatDetails(details)\n\t].filter((part) => !!part).map(ensureSentence);\n\tif (docsUrl) messageParts.push(`Learn more: ${docsUrl}`);\n\tconst message = messageParts.join(\" \");\n\treturn prefix ? `${prefix} ${message}` : message;\n}\n//#endregion\n//#region src/settings/settingsUrls.ts\nconst defaultCacheUrl = \"https://cdn.gtx.dev\";\nconst defaultBaseUrl = \"https://api.gtx.dev\";\nconst defaultRuntimeApiUrl = \"https://api.gtx.dev\";\n//#endregion\n//#region src/translate/utils/unwrapApiResult.ts\nfunction isErrorResult(error) {\n\treturn typeof error === \"object\" && error !== null && \"error\" in error && typeof error.error === \"string\";\n}\nfunction hasDecodedError(result) {\n\treturn isErrorResult(result.error) || typeof result.error === \"string\";\n}\n/**\n* Unwraps a `@generaltranslation/api` SDK result, returning its data or\n* throwing an `ApiError` built from the failed response.\n*/\nfunction unwrapApiResult(result) {\n\tif (result.data !== void 0) return result.data;\n\tif (result.response) {\n\t\tconst details = isErrorResult(result.error) ? result.error.error : typeof result.error === \"string\" ? result.error : result.response.statusText;\n\t\tthrow new ApiError(details, result.response.status, details);\n\t}\n\tthrow result.error;\n}\n//#endregion\nexport { defaultCacheUrl as a, formatDiagnosticErrorDetails as c, defaultBaseUrl as i, defaultTimeout as l, isErrorResult as n, defaultRuntimeApiUrl as o, unwrapApiResult as r, createDiagnosticMessage as s, hasDecodedError as t, libraryDefaultLocale as u };\n\n//# sourceMappingURL=unwrapApiResult-BzGfPw75.mjs.map","import { createDiagnosticMessage } from 'generaltranslation/internal';\nimport {\n createConditionStoreSingleton,\n ReadonlyConditionStore,\n} from 'gt-i18n/internal';\nimport { BrowserConditionStore } from './BrowserConditionStore';\n\n// Both singletons below are typed views of the same global slot (namespace\n// 'i18n', key 'conditionStore'), so there is a single uninitialized state and\n// one message describes it for both getters.\nconst conditionStoreNotInitializedError = createDiagnosticMessage({\n source: 'gt-react',\n severity: 'Error',\n whatHappened: 'Cannot read GT runtime context before it has been initialized',\n why: 'the internal ConditionStore singleton is unavailable',\n fix: 'Call initializeGT() (or initializeGTSPA() in SPA apps) before rendering and add a <GTProvider> at the root of your component tree.',\n});\n\nexport const {\n setConditionStore: setReadonlyConditionStore,\n isConditionStoreInitialized: isReadonlyConditionStoreInitialized,\n} = createConditionStoreSingleton<ReadonlyConditionStore>(\n conditionStoreNotInitializedError\n);\n\nexport const {\n getConditionStore: getBrowserConditionStore,\n setConditionStore: setBrowserConditionStore,\n isConditionStoreInitialized: isBrowserConditionStoreInitialized,\n} = createConditionStoreSingleton<BrowserConditionStore>(\n conditionStoreNotInitializedError\n);\n","import type { LocaleCandidates } from 'gt-i18n/internal';\nimport { getI18nConfig } from '@generaltranslation/react-core/pure';\nimport {\n BrowserConditionStore,\n BrowserConditionStoreParams,\n} from './BrowserConditionStore';\nimport { readBrowserLocale } from './readBrowserLocale';\nimport { getCookieValue } from './cookies';\nimport {\n getBrowserConditionStore,\n isBrowserConditionStoreInitialized,\n setBrowserConditionStore,\n} from './singleton-operations';\n\nexport type CreateBrowserConditionStoreParams = Omit<\n BrowserConditionStoreParams,\n 'locale' | 'enableI18n'\n> & {\n locale?: LocaleCandidates;\n enableI18n?: boolean;\n};\n\n/**\n * Factory to create a BrowserConditionStore for Singleton\n *\n * This exists so we can keep the locale param as required in the constructor\n *\n * Server-provided props are the first candidates for hydration consistency.\n * Cookies fill in missing values to persist state across page reloads.\n *\n * Cookie names come from the I18nConfig singleton so custom names passed to\n * initializeGT() apply here without being threaded through provider props.\n */\nexport function createOrUpdateBrowserConditionStore(\n config: CreateBrowserConditionStoreParams\n) {\n if (config._serverConditions !== undefined) {\n const conditionStore = new BrowserConditionStore({\n ...config,\n locale: config._serverConditions.locale,\n });\n setBrowserConditionStore(conditionStore);\n return conditionStore;\n }\n\n const locale = determineLocale(config);\n const region = determineRegion(config);\n const enableI18n = determineEnableI18n(config);\n\n if (isBrowserConditionStoreInitialized()) {\n // This represents an update from server\n const conditionStore = getBrowserConditionStore();\n conditionStore.updateLocale(locale);\n if (region !== undefined) conditionStore.updateRegion(region);\n conditionStore.updateEnableI18n(enableI18n);\n return conditionStore;\n }\n\n const conditionStore = new BrowserConditionStore({\n ...config,\n locale,\n region,\n enableI18n,\n });\n setBrowserConditionStore(conditionStore);\n return conditionStore;\n}\n\nfunction determineLocale({\n _getLocale: getLocale,\n locale,\n}: CreateBrowserConditionStoreParams): string {\n const i18nConfig = getI18nConfig();\n const candidates = [];\n if (locale) {\n candidates.push(...(Array.isArray(locale) ? locale : [locale]));\n }\n if (getLocale) candidates.push(getLocale());\n candidates.push(...readBrowserLocale(i18nConfig.getLocaleCookieName()));\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n\nfunction determineRegion({\n _getRegion: getRegion,\n region,\n}: CreateBrowserConditionStoreParams): string | undefined {\n const cookieRegion = getCookieValue({\n cookieName: getI18nConfig().getRegionCookieName(),\n });\n return cookieRegion || getRegion?.() || region;\n}\n\nfunction determineEnableI18n({\n enableI18n,\n _getEnableI18n: getEnableI18n,\n}: CreateBrowserConditionStoreParams): boolean {\n if (enableI18n !== undefined) return enableI18n;\n\n const cookieEnableI18n = getCookieValue({\n cookieName: getI18nConfig().getEnableI18nCookieName(),\n });\n if (cookieEnableI18n === undefined) {\n return getEnableI18n?.() ?? true;\n }\n return cookieEnableI18n === 'true';\n}\n","import { getRuntimeEnvironment } from 'gt-i18n/internal';\nimport type { I18nConfigParams } from 'gt-i18n/internal/types';\n\ntype RuntimeCredentials = Pick<I18nConfigParams, 'projectId' | 'devApiKey'>;\ntype RuntimeEnv = {\n DEV?: boolean;\n VITE_GT_PROJECT_ID?: string;\n VITE_GT_DEV_API_KEY?: string;\n};\n\nexport function addRuntimeCredentials<T extends RuntimeCredentials>(\n config: T\n): T {\n const credentials = getRuntimeCredentials();\n return {\n ...config,\n projectId: config.projectId || credentials.projectId,\n devApiKey: config.devApiKey || credentials.devApiKey,\n };\n}\n\nfunction getRuntimeCredentials(): RuntimeCredentials {\n return {\n projectId:\n readImportMetaVite(\n () =>\n (\n import.meta as ImportMeta & {\n env?: RuntimeEnv;\n }\n ).env?.VITE_GT_PROJECT_ID\n ) || readProcessEnvViteProjectId(),\n devApiKey:\n getRuntimeEnvironment() === 'development'\n ? readImportMetaVite(() =>\n (import.meta as ImportMeta & { env?: RuntimeEnv }).env?.DEV\n ? (import.meta as ImportMeta & { env?: RuntimeEnv }).env\n ?.VITE_GT_DEV_API_KEY\n : undefined\n ) || readProcessEnvViteDevApiKey()\n : undefined,\n };\n}\n\nfunction readImportMetaVite(\n readValue: () => string | undefined\n): string | undefined {\n try {\n return normalizeEnvValue(readValue());\n } catch {\n return undefined;\n }\n}\n\nfunction readProcessEnvViteProjectId(): string | undefined {\n try {\n return normalizeEnvValue(process.env.VITE_GT_PROJECT_ID);\n } catch {\n return undefined;\n }\n}\n\nfunction readProcessEnvViteDevApiKey(): string | undefined {\n try {\n return normalizeEnvValue(process.env.VITE_GT_DEV_API_KEY);\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeEnvValue(value: string | undefined): string | undefined {\n return value || undefined;\n}\n","import {\n getTranslationsSnapshot,\n I18nStore,\n setI18nStore,\n setReactI18nCache,\n getReadonlyConditionStore,\n initializeI18nConfig,\n} from '@generaltranslation/react-core/pure';\nimport type { I18nConfigParams } from '@generaltranslation/react-core/pure';\nimport { BrowserI18nCache } from '../i18n-cache/BrowserI18nCache';\nimport type { BrowserI18nCacheParams } from '../i18n-cache/BrowserI18nCache';\nimport {\n createOrUpdateBrowserConditionStore,\n CreateBrowserConditionStoreParams,\n} from '../condition-store/createBrowserConditionStore';\nimport { addRuntimeCredentials } from './runtimeCredentials';\n\nexport type InitializeGTSPAParams = I18nConfigParams &\n BrowserI18nCacheParams &\n CreateBrowserConditionStoreParams;\n\n/**\n * Initialize GT for an SPA\n * - i18nCache\n * - conditionStore\n * - i18nStore\n *\n * This is SPA for browser runtime\n */\nexport async function initializeGTSPA(config: InitializeGTSPAParams) {\n const runtimeConfig = addRuntimeCredentials(config);\n initializeI18nConfig(runtimeConfig, 'SPA');\n\n const i18nCache = new BrowserI18nCache(runtimeConfig);\n setReactI18nCache(i18nCache);\n\n createOrUpdateBrowserConditionStore(runtimeConfig);\n\n const i18nStore = new I18nStore();\n setI18nStore(i18nStore);\n\n // Block until translations are loaded\n await getTranslationsSnapshot(getReadonlyConditionStore().getLocale());\n}\n","import {\n internalInitializeGTSRA,\n type ReactInitializeGTParams,\n} from '@generaltranslation/react-core/pure';\nimport { addRuntimeCredentials } from './runtimeCredentials';\n\nexport type InitializeGTClientParams = ReactInitializeGTParams;\n\n/**\n * Initialize GT for client-side rendering.\n */\nexport function initializeGTSRAClient(config: InitializeGTClientParams): void {\n internalInitializeGTSRA(\n addRuntimeCredentials({\n cacheExpiryTime: null,\n ...config,\n })\n );\n}\n","import { getI18nConfig } from '@generaltranslation/react-core/pure';\nimport { getCookieValue, parseAcceptLanguage } from 'gt-i18n/internal';\n\ntype RequestWithHeaders = Pick<Request, 'headers'>;\n\n/**\n * Resolve the user's locale from a Web Request.\n *\n * The configured locale cookie takes precedence over the Accept-Language\n * header. If neither contains a supported locale, the configured default\n * locale is returned.\n *\n * This is intended for incoming server requests. A Request created in the\n * browser does not automatically include document cookies or Accept-Language.\n */\nexport function parseLocale(request: RequestWithHeaders): string {\n const i18nConfig = getI18nConfig();\n const candidates: string[] = [];\n const cookieLocale = getCookieValue(\n request.headers.get('cookie'),\n i18nConfig.getLocaleCookieName()\n );\n\n if (cookieLocale) {\n candidates.push(cookieLocale);\n }\n\n candidates.push(\n ...parseAcceptLanguage(request.headers.get('accept-language'))\n );\n\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n","import {\n useInternalLocaleSelector,\n useSetLocale,\n} from '@generaltranslation/react-core/hooks';\n\n/**\n * Gets the list of properties for using a locale selector.\n * Provides locale management utilities for the application.\n *\n * @param locales an optional list of locales to use for the drop down. These locales must be a subset of the locales provided by the `<GTProvider>` context. When not provided, the list of locales from the `<GTProvider>` context is used.\n *\n * @returns {Object} An object containing locale-related utilities:\n * @returns {string} return.locale - The currently selected locale.\n * @returns {string[]} return.locales - The list of all available locales.\n * @returns {function} return.setLocale - Function to update the current locale.\n * @returns {(locale: string) => LocaleProperties} return.getLocaleProperties - Function to retrieve properties for a given locale.\n */\nexport function useLocaleSelector(locales?: string[]) {\n const setLocale = useSetLocale();\n return { setLocale, ...useInternalLocaleSelector(locales) };\n}\n","import {\n useInternalRegionSelector,\n useSetLocale,\n useSetRegion,\n} from '@generaltranslation/react-core/hooks';\nimport type { InternalRegionSelectorOptions } from '@generaltranslation/react-core/hooks';\n\n/**\n * Gets the list of properties for using a region selector.\n * Provides region management utilities for the application.\n *\n * @param {Object} [options] - Optional configuration object.\n * @param {string[]} [options.regions] - An optional array of ISO 3166 region codes to display. If not provided, regions are inferred from supported locales.\n * @param {Object} [options.customMapping] - Optional mapping to override region display names, emojis, or associated locales.\n * @param {boolean} [options.prioritizeCurrentLocaleRegion=true] - If true, the region corresponding to the current locale is prioritized in the list.\n * @param {boolean} [options.sortRegionsAlphabetically=true] - If true, regions are sorted alphabetically by display name.\n *\n * @returns {Object} An object containing region-related utilities:\n * @returns {string | undefined} return.region - The currently selected region code.\n * @returns {function} return.setRegion - Function to update the current region.\n * @returns {string[]} return.regions - The ordered list of available region codes.\n * @returns {Map<string, RegionData>} return.regionData - Map of region codes to their display data (name, emoji, locale).\n * @returns {string} return.locale - The current locale.\n * @returns {function} return.setLocale - Function to update the current locale.\n */\nexport function useRegionSelector(options?: InternalRegionSelectorOptions) {\n const setRegion = useSetRegion();\n const setLocale = useSetLocale();\n return { setRegion, setLocale, ...useInternalRegionSelector(options) };\n}\n","import type React from 'react';\nimport { InternalLocaleSelector } from '@generaltranslation/react-core/components';\nimport { CustomMapping } from 'generaltranslation/types';\nimport { useLocaleSelector } from './useLocaleSelector';\n\n/**\n * A dropdown component that allows users to select a locale.\n * @param {string[]} [locales] - An optional list of locales to use for the dropdown. If not provided, the list of locales from the `<GTProvider>` context is used.\n * @param {object} [customNames] - (deprecated) An optional object to map locales to custom names. Use `customMapping` instead.\n * @param {CustomMapping} [customMapping] - An optional object to map locales to custom display names, emojis, or other properties.\n * @returns {React.ReactElement | null} The rendered locale dropdown component or null to prevent rendering.\n */\nexport function LocaleSelector({\n locales: _locales,\n ...props\n}: LocaleSelectorProps): React.JSX.Element | null {\n // Get locale selector properties\n const { locale, locales, getLocaleProperties, setLocale } =\n useLocaleSelector(_locales);\n\n return (\n <InternalLocaleSelector\n locale={locale}\n locales={locales}\n setLocale={setLocale}\n getLocaleProperties={getLocaleProperties}\n {...props}\n />\n );\n}\n\nexport type LocaleSelectorProps = {\n locales?: string[];\n customNames?: { [key: string]: string };\n customMapping?: CustomMapping;\n [key: string]: any;\n};\n","import type React from 'react';\nimport type { ReactNode } from 'react';\nimport { InternalRegionSelector } from '@generaltranslation/react-core/components';\nimport { useRegionSelector } from './useRegionSelector';\n\n/**\n * A dropdown component that allows users to select a region.\n * @param {string[]} [regions] - An optional array of ISO 3166 region codes to display. If not provided, regions are inferred from the supported locales in the `<GTProvider>` context.\n * @param {React.ReactNode} [placeholder] - Optional placeholder node to display as the first option when no region is selected.\n * @param {object} [customMapping] - An optional object to map region codes to custom display names, emojis, or associated locales.\n * @param {boolean} [prioritizeCurrentLocaleRegion] - If true, the region corresponding to the current locale is prioritized in the list.\n * @param {boolean} [sortRegionsAlphabetically] - If true, regions are sorted alphabetically by display name.\n * @param {boolean} [asLocaleSelector=false] - If true, selecting a region will also update the locale to the region's associated locale.\n * @returns {React.ReactElement | null} The rendered region dropdown component or null to prevent rendering.\n *\n * @example\n * ```tsx\n * <RegionSelector\n * regions={['US', 'CA']}\n * customMapping={{ US: { name: \"United States\", emoji: \"🇺🇸\" } }}\n * placeholder=\"Select a region\"\n * />\n * ```\n */\nexport function RegionSelector({\n regions: _regions,\n customMapping,\n prioritizeCurrentLocaleRegion,\n sortRegionsAlphabetically,\n asLocaleSelector = false,\n ...props\n}: RegionSelectorProps): React.JSX.Element | null {\n // Get region selector properties\n const { region, regions, regionData, locale, setRegion, setLocale } =\n useRegionSelector({\n regions: _regions,\n customMapping,\n prioritizeCurrentLocaleRegion,\n sortRegionsAlphabetically,\n });\n\n const changeRegion = (region: string) => {\n if (asLocaleSelector) {\n const regionLocale = regionData.get(region)?.locale;\n // setRegion reloads the page; update the locale cookie first\n if (regionLocale && locale !== regionLocale) setLocale(regionLocale);\n }\n setRegion(region);\n };\n\n return (\n <InternalRegionSelector\n region={region}\n regions={regions}\n regionData={regionData}\n setRegion={changeRegion}\n {...props}\n />\n );\n}\n\nexport type RegionSelectorProps = {\n regions?: string[];\n placeholder?: ReactNode;\n customMapping?: {\n [region: string]:\n | string\n | { name?: string; emoji?: string; locale?: string };\n };\n prioritizeCurrentLocaleRegion?: boolean;\n sortRegionsAlphabetically?: boolean;\n asLocaleSelector?: boolean;\n [key: string]: any;\n};\n","import {\n I18nStore,\n InternalGTProvider,\n} from '@generaltranslation/react-core/components';\nimport { useMemo, useRef } from 'react';\nimport type { SharedGTProviderProps } from './GTProviderProps';\nimport { createOrUpdateBrowserConditionStore } from '../condition-store/createBrowserConditionStore';\n\n/**\n * Consumes snapshot from server\n * Implementation for client-side only\n */\nexport function BrowserGTProvider(props: SharedGTProviderProps) {\n const conditionStore = useMemo(() => {\n return createOrUpdateBrowserConditionStore(props);\n }, [\n props.locale,\n props.region,\n props.enableI18n,\n props._reload,\n // A rejected App Router locale switch can return the same locale as before.\n // Reconcile that new server result, but leave client-only rerenders alone.\n props._serverConditions,\n ]);\n\n const i18nStoreRef = useRef<I18nStore | null>(null);\n if (i18nStoreRef.current == null) {\n i18nStoreRef.current = new I18nStore();\n }\n\n return (\n <InternalGTProvider\n {...props}\n conditionStore={conditionStore}\n i18nStore={i18nStoreRef.current}\n />\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { TxProps } from './utils/TxProps';\n\nexport { initializeGTSPA } from './setup/initializeGTSPA';\nexport { initializeGTSRAClient as initializeGT } from './setup/initializeGTSRAClient';\nexport { createOrUpdateBrowserConditionStore } from './condition-store/createBrowserConditionStore';\nexport { parseLocale } from './functions/parseLocale';\nexport { useLocaleSelector } from './components/useLocaleSelector';\nexport { useRegionSelector } from './components/useRegionSelector';\n\n// ===== Components ===== //\nexport { LocaleSelector } from './components/LocaleSelector';\nexport { RegionSelector } from './components/RegionSelector';\nexport { BrowserGTProvider as GTProvider } from './provider/BrowserGTProvider';\n\n// ===== Components ===== //\nexport {\n Branch,\n Plural,\n Derive,\n GtInternalTranslateJsx,\n GtInternalVar,\n T,\n Currency,\n DateTime,\n RelativeTime,\n Var,\n Num,\n} from '@generaltranslation/react-core/components';\n\nexport async function Tx(_props: TxProps): Promise<ReactNode> {\n throw new Error('Tx is only supported via RSC');\n}\n\n// ===== Hooks ===== //\nexport {\n useLocale,\n useRegion,\n useCustomMapping,\n useDefaultLocale,\n useEnableI18n,\n useLocales,\n useFormatLocales,\n useGT,\n useMessages,\n useTranslations,\n useLocaleDirection,\n useLocaleProperties,\n useSetLocale,\n useSetRegion,\n useSetEnableI18n,\n} from '@generaltranslation/react-core/hooks';\n\n// ===== Functions ===== //\nexport {\n msg,\n decodeMsg,\n decodeOptions,\n derive,\n declareVar,\n decodeVars,\n mFallback,\n gtFallback,\n getFormatLocales,\n getDefaultLocale,\n getLocaleProperties,\n getLocales,\n resolveCanonicalLocale,\n getReactI18nCache,\n getTranslationsSnapshot,\n getVersionId,\n createRenderPipeline,\n setReactI18nCache,\n t,\n} from '@generaltranslation/react-core/pure';\n\nexport type {\n RenderPipeline,\n RenderPreparedT,\n} from '@generaltranslation/react-core/pure';\n\nexport type { SharedGTProviderProps } from './provider/GTProviderProps';\nexport {\n GtInternalRuntimeTranslateJsx,\n GtInternalRuntimeTranslateString,\n} from 'gt-i18n/internal';\nexport type {\n GTTranslationOptions,\n RuntimeTranslationOptions,\n} from 'gt-i18n/types';\nexport type {\n SyncResolutionFunction,\n SyncResolutionFunctionWithFallback,\n} from 'gt-i18n/types';\n\n// ===== Singletons ===== //\nexport {\n ReactI18nCache,\n type ReactI18nCacheParams,\n} from '@generaltranslation/react-core/pure';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.client.mjs","names":["getI18nConfig","getCookieValue","getCookieValueFromString","getCookieValue","getCookieValue","getCookieValue","getTranslationsSnapshot","useSetLocale","useSetRegion","useSetLocale","I18nStore"],"sources":["../src/i18n-cache/BrowserI18nCache.ts","../src/condition-store/cookies.ts","../src/condition-store/readBrowserLocale.ts","../src/condition-store/BrowserConditionStore.ts","../../core/dist/diagnostics-DKA2SkZB.mjs","../src/condition-store/singleton-operations.ts","../src/condition-store/createBrowserConditionStore.ts","../src/setup/runtimeCredentials.ts","../src/setup/initializeGTSPA.ts","../src/setup/initializeGTSRAClient.ts","../src/functions/parseLocale.ts","../src/components/useLocaleSelector.ts","../src/components/useRegionSelector.ts","../src/components/LocaleSelector.tsx","../src/components/RegionSelector.tsx","../src/provider/BrowserGTProvider.tsx","../src/index.client.ts"],"sourcesContent":["import type {\n I18nCacheConstructorParams,\n TranslationsLoader,\n} from 'gt-i18n/internal/types';\nimport { getI18nConfig, I18nCache } from 'gt-i18n/internal';\nimport type { HtmlTagOptions } from './types';\nimport type { Translation } from 'gt-i18n/types';\n\ntype LocalStorageTranslationCache =\n import('./LocalStorageTranslationCache').LocalStorageTranslationCache;\ntype LocalStorageCachePromises = Record<\n string,\n Promise<LocalStorageTranslationCache>\n>;\n\n// Lazily import the development-only cache so bundlers can keep it out of the initial client chunk.\n// `??=` saves the first import promise, so all cache instances reuse the same lazy module load.\nlet localStorageCacheModulePromise:\n | Promise<typeof import('./LocalStorageTranslationCache')>\n | undefined;\n\n/**\n * The configuration for the BrowserI18nCache\n */\nexport type BrowserI18nCacheParams = I18nCacheConstructorParams & {\n htmlTagOptions?: HtmlTagOptions;\n};\n\n/**\n * I18nCache implementation for Browser.\n */\nexport class BrowserI18nCache extends I18nCache<Translation> {\n /** Whether dev hot reload JSX (Suspense-based <T>) is active */\n private _devHotReloadJsx = false;\n\n constructor(config: BrowserI18nCacheParams) {\n // Must be initialized before super()\n // Keep accepting htmlTagOptions without passing it to the translation cache.\n const { htmlTagOptions: _htmlTagOptions, ...managerConfig } = config;\n const localStorageCaches: LocalStorageCachePromises = {};\n const i18nConfig = getI18nConfig();\n const devHotReloadEnabled =\n !!config.loadTranslations && i18nConfig.isDevHotReloadEnabled();\n const projectId = i18nConfig.getProjectId()!;\n const loadTranslations = devHotReloadEnabled\n ? wrapLoaderWithLocalStorage(\n config.loadTranslations!,\n projectId,\n localStorageCaches\n )\n : config.loadTranslations;\n\n // Initialize the I18nCache\n super({\n ...managerConfig,\n loadTranslations,\n });\n\n this._devHotReloadJsx = devHotReloadEnabled;\n\n // For dev hot reload, we need to write the translations to the localStorage cache\n if (devHotReloadEnabled) {\n this.onTranslationsCacheMiss = ({ locale, hash, translation }) => {\n void getOrCreateLocalStorageCache(localStorageCaches, {\n locale,\n projectId,\n }).then((cache) => cache.write(hash, translation));\n };\n }\n }\n\n /**\n * Whether dev hot reload JSX (Suspense-based <T>) is active\n */\n isDevHotReloadJsx(): boolean {\n return this._devHotReloadJsx;\n }\n}\n\n// ===== Helper Functions ===== //\n\n/**\n * Wraps a translation loader to merge localStorage translations in dev mode.\n * On each call: runs the original loader, seeds a LocalStorageTranslationCache\n * with the result (loader wins over stale localStorage), and returns the merged\n * translations — preserving runtime tx() translations from previous sessions.\n *\n * TODO: this should be moved to wrapping in I18nStore\n */\nfunction wrapLoaderWithLocalStorage(\n originalLoader: TranslationsLoader,\n projectId: string,\n localStorageCaches: LocalStorageCachePromises\n) {\n return async (locale: string) => {\n const loaderTranslations = await originalLoader(locale);\n const cache = await getOrCreateLocalStorageCache(localStorageCaches, {\n locale,\n projectId,\n init: loaderTranslations as Record<string, Translation>,\n });\n return cache.getInternalCache();\n };\n}\nfunction getOrCreateLocalStorageCache(\n localStorageCaches: LocalStorageCachePromises,\n params: {\n locale: string;\n projectId: string;\n init?: Record<string, Translation>;\n }\n): Promise<LocalStorageTranslationCache> {\n // `||=` saves the first promise for this locale, so concurrent calls reuse one cache instance.\n return (localStorageCaches[params.locale] ||= loadLocalStorageCache().then(\n ({ LocalStorageTranslationCache }) =>\n new LocalStorageTranslationCache(params)\n ));\n}\n\nfunction loadLocalStorageCache() {\n return (localStorageCacheModulePromise ??=\n import('./LocalStorageTranslationCache'));\n}\n","import { getCookieValue as getCookieValueFromString } from 'gt-i18n/internal';\n\n/**\n * Minimally parses a cookie value for a given cookie name\n * @param cookieName - The name of the cookie\n * @returns The locale from the cookie or undefined if not found or invalid\n */\nexport function getCookieValue({\n cookieName,\n}: {\n cookieName: string;\n}): string | undefined {\n if (typeof document === 'undefined') return undefined;\n return getCookieValueFromString(document.cookie, cookieName);\n}\n\n/**\n * Sets a cookie value for a given cookie name\n * @param cookieName - The name of the cookie\n * @param value - The value to set\n * @returns The value that was set\n */\nexport function setCookieValue({\n cookieName,\n value,\n}: {\n cookieName: string;\n value: string;\n}): void {\n if (typeof document === 'undefined') return;\n document.cookie = `${cookieName}=${value};path=/`;\n}\n","import { getCookieValue } from './cookies';\n\nexport function readBrowserLocale(localeCookieName: string): string[] {\n const candidates = [];\n // (1) Check cookie\n\n const cookieLocale = getCookieValue({\n cookieName: localeCookieName,\n });\n if (cookieLocale) candidates.push(cookieLocale);\n\n // (2) Check navigator locales\n const navigatorLocales = navigator?.languages || [];\n candidates.push(...navigatorLocales);\n\n return candidates;\n}\n","import {\n defaultResetLocaleCookieName,\n getI18nConfig,\n} from '@generaltranslation/react-core/pure';\nimport type { WritableConditionStoreParams } from 'gt-i18n/internal';\nimport { getCookieValue, setCookieValue } from './cookies';\nimport { readBrowserLocale } from './readBrowserLocale';\nimport { GetEnableI18n, GetLocale, GetRegion } from '../i18n-cache/types';\nimport {\n LocaleCandidates,\n WritableConditionStoreInterface,\n} from 'gt-i18n/internal/types';\n\ntype SerializedBrowserConditionStoreState = {\n locale: string;\n region: string | undefined;\n enableI18n: boolean;\n};\nexport type ReloadType = (state: SerializedBrowserConditionStoreState) => void;\n\n/**\n * The configuration for the BrowserConditionStore\n * @param {GetLocale} getLocale - The function to get the locale\n */\nexport type BrowserConditionStoreParams = WritableConditionStoreParams & {\n _getLocale?: GetLocale;\n _getRegion?: GetRegion;\n _getEnableI18n?: GetEnableI18n;\n _reload?: ReloadType;\n};\n\n/**\n * Condition store implementation for Browser.\n */\nexport class BrowserConditionStore implements WritableConditionStoreInterface {\n private customReload: ReloadType;\n private customGetLocale?: GetLocale;\n private customGetRegion?: GetRegion;\n private customGetEnableI18n?: GetEnableI18n;\n\n constructor(config: BrowserConditionStoreParams) {\n const i18nConfig = getI18nConfig();\n this.customReload =\n config._reload ??\n (() =>\n typeof window !== 'undefined' ? window.location.reload() : undefined);\n this.customGetLocale = config._getLocale;\n this.customGetRegion = config._getRegion;\n this.customGetEnableI18n = config._getEnableI18n;\n setCookieValue({\n cookieName: i18nConfig.getLocaleCookieName(),\n value: i18nConfig.resolveSupportedLocale(config.locale),\n });\n if (config.region !== undefined) {\n setCookieValue({\n cookieName: i18nConfig.getRegionCookieName(),\n value: config.region,\n });\n }\n this.updateEnableI18n(config.enableI18n ?? true);\n }\n\n getLocale = (): string => {\n return getBrowserLocale(this.customGetLocale);\n };\n\n setLocale = (locale: LocaleCandidates): void => {\n this.updateLocale(locale);\n setCookieValue({\n cookieName: defaultResetLocaleCookieName,\n value: 'true',\n });\n this.reload();\n };\n\n getRegion = (): string | undefined => {\n const cookieRegion = getCookieValue({\n cookieName: getI18nConfig().getRegionCookieName(),\n });\n if (cookieRegion) return cookieRegion;\n return this.customGetRegion?.();\n };\n\n setRegion = (region: string | undefined): void => {\n this.updateRegion(region);\n this.reload();\n };\n\n getEnableI18n = (): boolean => {\n // App Router does not resolve this preference on the server yet, so retain\n // its existing client behavior rather than accepting the server's true.\n const cookieEnableI18n = getCookieValue({\n cookieName: getI18nConfig().getEnableI18nCookieName(),\n });\n if (cookieEnableI18n === undefined) {\n return this.customGetEnableI18n?.() ?? true;\n }\n return cookieEnableI18n === 'true';\n };\n\n setEnableI18n = (enableI18n: boolean): void => {\n this.updateEnableI18n(enableI18n);\n this.reload();\n };\n\n /**\n * Soft locale update\n */\n updateLocale = (locale: LocaleCandidates): void => {\n const i18nConfig = getI18nConfig();\n setCookieValue({\n cookieName: i18nConfig.getLocaleCookieName(),\n value: i18nConfig.resolveSupportedLocale(locale),\n });\n };\n\n /**\n * Soft region update\n */\n updateRegion = (region: string | undefined): void => {\n setCookieValue({\n cookieName: getI18nConfig().getRegionCookieName(),\n value: region ?? '',\n });\n };\n\n /**\n * Soft enableI18n update\n */\n updateEnableI18n = (enableI18n: boolean): void => {\n setCookieValue({\n cookieName: getI18nConfig().getEnableI18nCookieName(),\n value: enableI18n ? 'true' : 'false',\n });\n };\n\n /**\n * Condition store updates come from either the server or the client.\n * Trigger this reload when we update a value in the condition store from\n * the client.\n */\n reload = (): void => {\n const state = {\n locale: this.getLocale(),\n region: this.getRegion(),\n enableI18n: this.getEnableI18n(),\n };\n this.customReload(state);\n };\n}\n\nfunction getBrowserLocale(getLocale?: GetLocale): string {\n const i18nConfig = getI18nConfig();\n const candidates = readBrowserLocale(i18nConfig.getLocaleCookieName());\n if (getLocale) candidates.push(getLocale());\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n","//#region src/logging/diagnostics.ts\nfunction ensureSentence(text) {\n\tconst trimmed = text.trim();\n\tif (!trimmed) return \"\";\n\treturn /[.!?)]$/.test(trimmed) ? trimmed : `${trimmed}.`;\n}\nfunction stripSentence(text) {\n\tconst trimmed = text.trim();\n\tlet end = trimmed.length;\n\twhile (end > 0) {\n\t\tconst char = trimmed[end - 1];\n\t\tif (char !== \".\" && char !== \"!\" && char !== \"?\") break;\n\t\tend -= 1;\n\t}\n\treturn trimmed.slice(0, end);\n}\nfunction formatDetails(details) {\n\tif (!details) return \"\";\n\tconst detailText = Array.isArray(details) ? details.join(\", \") : details;\n\tif (!detailText.trim()) return \"\";\n\treturn ensureSentence(`Details: ${detailText}`);\n}\nfunction formatDiagnosticErrorDetails(error) {\n\tif (error == null) return void 0;\n\treturn String(error);\n}\nfunction createDiagnosticMessage({ source, severity, whatHappened, reassurance, why, fix, wayOut, details, docsUrl }) {\n\tconst prefix = source ? severity ? `${source} ${severity}:` : `${source}:` : severity ? `${severity}:` : \"\";\n\tconst whatAndWhy = why ? `${stripSentence(whatHappened)} because ${stripSentence(why)}` : whatHappened;\n\tconst shouldCombineWayOut = !!fix && !!wayOut && /^[a-z]/.test(stripSentence(wayOut));\n\tconst messageParts = [\n\t\twhatAndWhy,\n\t\treassurance,\n\t\tshouldCombineWayOut ? `${stripSentence(fix)}, or ${stripSentence(wayOut)}` : fix,\n\t\tshouldCombineWayOut ? void 0 : wayOut,\n\t\tformatDetails(details)\n\t].filter((part) => !!part).map(ensureSentence);\n\tif (docsUrl) messageParts.push(`Learn more: ${docsUrl}`);\n\tconst message = messageParts.join(\" \");\n\treturn prefix ? `${prefix} ${message}` : message;\n}\n//#endregion\nexport { formatDiagnosticErrorDetails as n, createDiagnosticMessage as t };\n\n//# sourceMappingURL=diagnostics-DKA2SkZB.mjs.map","import { createDiagnosticMessage } from 'generaltranslation/internal';\nimport {\n createConditionStoreSingleton,\n ReadonlyConditionStore,\n} from 'gt-i18n/internal';\nimport { BrowserConditionStore } from './BrowserConditionStore';\n\n// Both singletons below are typed views of the same global slot (namespace\n// 'i18n', key 'conditionStore'), so there is a single uninitialized state and\n// one message describes it for both getters.\nconst conditionStoreNotInitializedError = createDiagnosticMessage({\n source: 'gt-react',\n severity: 'Error',\n whatHappened: 'Cannot read GT runtime context before it has been initialized',\n why: 'the internal ConditionStore singleton is unavailable',\n fix: 'Call initializeGT() (or initializeGTSPA() in SPA apps) before rendering and add a <GTProvider> at the root of your component tree.',\n});\n\nexport const {\n setConditionStore: setReadonlyConditionStore,\n isConditionStoreInitialized: isReadonlyConditionStoreInitialized,\n} = createConditionStoreSingleton<ReadonlyConditionStore>(\n conditionStoreNotInitializedError\n);\n\nexport const {\n getConditionStore: getBrowserConditionStore,\n setConditionStore: setBrowserConditionStore,\n isConditionStoreInitialized: isBrowserConditionStoreInitialized,\n} = createConditionStoreSingleton<BrowserConditionStore>(\n conditionStoreNotInitializedError\n);\n","import type { LocaleCandidates } from 'gt-i18n/internal';\nimport { getI18nConfig } from '@generaltranslation/react-core/pure';\nimport {\n BrowserConditionStore,\n BrowserConditionStoreParams,\n} from './BrowserConditionStore';\nimport { readBrowserLocale } from './readBrowserLocale';\nimport { getCookieValue } from './cookies';\nimport {\n getBrowserConditionStore,\n isBrowserConditionStoreInitialized,\n setBrowserConditionStore,\n} from './singleton-operations';\n\nexport type CreateBrowserConditionStoreParams = Omit<\n BrowserConditionStoreParams,\n 'locale' | 'enableI18n'\n> & {\n locale?: LocaleCandidates;\n enableI18n?: boolean;\n};\n\n/**\n * Factory to create a BrowserConditionStore for Singleton\n *\n * This exists so we can keep the locale param as required in the constructor\n *\n * Server-provided props are the first candidates for hydration consistency.\n * Cookies fill in missing values to persist state across page reloads.\n *\n * Cookie names come from the I18nConfig singleton so custom names passed to\n * initializeGT() apply here without being threaded through provider props.\n */\nexport function createOrUpdateBrowserConditionStore(\n config: CreateBrowserConditionStoreParams\n) {\n const locale = determineLocale(config);\n const region = determineRegion(config);\n const enableI18n = determineEnableI18n(config);\n\n if (isBrowserConditionStoreInitialized()) {\n // This represents an update from server\n const conditionStore = getBrowserConditionStore();\n conditionStore.updateLocale(locale);\n if (region !== undefined) conditionStore.updateRegion(region);\n conditionStore.updateEnableI18n(enableI18n);\n return conditionStore;\n }\n\n const conditionStore = new BrowserConditionStore({\n ...config,\n locale,\n region,\n enableI18n,\n });\n setBrowserConditionStore(conditionStore);\n return conditionStore;\n}\n\nfunction determineLocale({\n _getLocale: getLocale,\n locale,\n}: CreateBrowserConditionStoreParams): string {\n const i18nConfig = getI18nConfig();\n const candidates = [];\n if (locale) {\n candidates.push(...(Array.isArray(locale) ? locale : [locale]));\n }\n if (getLocale) candidates.push(getLocale());\n candidates.push(...readBrowserLocale(i18nConfig.getLocaleCookieName()));\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n\nfunction determineRegion({\n _getRegion: getRegion,\n region,\n}: CreateBrowserConditionStoreParams): string | undefined {\n const cookieRegion = getCookieValue({\n cookieName: getI18nConfig().getRegionCookieName(),\n });\n return cookieRegion || getRegion?.() || region;\n}\n\nfunction determineEnableI18n({\n enableI18n,\n _getEnableI18n: getEnableI18n,\n}: CreateBrowserConditionStoreParams): boolean {\n if (enableI18n !== undefined) return enableI18n;\n\n const cookieEnableI18n = getCookieValue({\n cookieName: getI18nConfig().getEnableI18nCookieName(),\n });\n if (cookieEnableI18n === undefined) {\n return getEnableI18n?.() ?? true;\n }\n return cookieEnableI18n === 'true';\n}\n","import { getRuntimeEnvironment } from 'gt-i18n/internal';\nimport type { I18nConfigParams } from 'gt-i18n/internal/types';\n\ntype RuntimeCredentials = Pick<I18nConfigParams, 'projectId' | 'devApiKey'>;\ntype RuntimeEnv = {\n DEV?: boolean;\n VITE_GT_PROJECT_ID?: string;\n VITE_GT_DEV_API_KEY?: string;\n};\n\nexport function addRuntimeCredentials<T extends RuntimeCredentials>(\n config: T\n): T {\n const credentials = getRuntimeCredentials();\n return {\n ...config,\n projectId: config.projectId || credentials.projectId,\n devApiKey: config.devApiKey || credentials.devApiKey,\n };\n}\n\nfunction getRuntimeCredentials(): RuntimeCredentials {\n return {\n projectId:\n readImportMetaVite(\n () =>\n (\n import.meta as ImportMeta & {\n env?: RuntimeEnv;\n }\n ).env?.VITE_GT_PROJECT_ID\n ) || readProcessEnvViteProjectId(),\n devApiKey:\n getRuntimeEnvironment() === 'development'\n ? readImportMetaVite(() =>\n (import.meta as ImportMeta & { env?: RuntimeEnv }).env?.DEV\n ? (import.meta as ImportMeta & { env?: RuntimeEnv }).env\n ?.VITE_GT_DEV_API_KEY\n : undefined\n ) || readProcessEnvViteDevApiKey()\n : undefined,\n };\n}\n\nfunction readImportMetaVite(\n readValue: () => string | undefined\n): string | undefined {\n try {\n return normalizeEnvValue(readValue());\n } catch {\n return undefined;\n }\n}\n\nfunction readProcessEnvViteProjectId(): string | undefined {\n try {\n return normalizeEnvValue(process.env.VITE_GT_PROJECT_ID);\n } catch {\n return undefined;\n }\n}\n\nfunction readProcessEnvViteDevApiKey(): string | undefined {\n try {\n return normalizeEnvValue(process.env.VITE_GT_DEV_API_KEY);\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeEnvValue(value: string | undefined): string | undefined {\n return value || undefined;\n}\n","import {\n getTranslationsSnapshot,\n I18nStore,\n setI18nStore,\n setReactI18nCache,\n getReadonlyConditionStore,\n initializeI18nConfig,\n} from '@generaltranslation/react-core/pure';\nimport type { I18nConfigParams } from '@generaltranslation/react-core/pure';\nimport { BrowserI18nCache } from '../i18n-cache/BrowserI18nCache';\nimport type { BrowserI18nCacheParams } from '../i18n-cache/BrowserI18nCache';\nimport {\n createOrUpdateBrowserConditionStore,\n CreateBrowserConditionStoreParams,\n} from '../condition-store/createBrowserConditionStore';\nimport { addRuntimeCredentials } from './runtimeCredentials';\n\nexport type InitializeGTSPAParams = I18nConfigParams &\n BrowserI18nCacheParams &\n CreateBrowserConditionStoreParams;\n\n/**\n * Initialize GT for an SPA\n * - i18nCache\n * - conditionStore\n * - i18nStore\n *\n * This is SPA for browser runtime\n */\nexport async function initializeGTSPA(config: InitializeGTSPAParams) {\n const runtimeConfig = addRuntimeCredentials(config);\n initializeI18nConfig(runtimeConfig, 'SPA');\n\n const i18nCache = new BrowserI18nCache(runtimeConfig);\n setReactI18nCache(i18nCache);\n\n createOrUpdateBrowserConditionStore(runtimeConfig);\n\n const i18nStore = new I18nStore();\n setI18nStore(i18nStore);\n\n // Block until translations are loaded\n await getTranslationsSnapshot(getReadonlyConditionStore().getLocale());\n}\n","import {\n internalInitializeGTSRA,\n type ReactInitializeGTParams,\n} from '@generaltranslation/react-core/pure';\nimport { addRuntimeCredentials } from './runtimeCredentials';\n\nexport type InitializeGTClientParams = ReactInitializeGTParams;\n\n/**\n * Initialize GT for client-side rendering.\n */\nexport function initializeGTSRAClient(config: InitializeGTClientParams): void {\n internalInitializeGTSRA(\n addRuntimeCredentials({\n cacheExpiryTime: null,\n ...config,\n })\n );\n}\n","import { getI18nConfig } from '@generaltranslation/react-core/pure';\nimport { getCookieValue, parseAcceptLanguage } from 'gt-i18n/internal';\n\ntype RequestWithHeaders = Pick<Request, 'headers'>;\n\n/**\n * Resolve the user's locale from a Web Request.\n *\n * The configured locale cookie takes precedence over the Accept-Language\n * header. If neither contains a supported locale, the configured default\n * locale is returned.\n *\n * This is intended for incoming server requests. A Request created in the\n * browser does not automatically include document cookies or Accept-Language.\n */\nexport function parseLocale(request: RequestWithHeaders): string {\n const i18nConfig = getI18nConfig();\n const candidates: string[] = [];\n const cookieLocale = getCookieValue(\n request.headers.get('cookie'),\n i18nConfig.getLocaleCookieName()\n );\n\n if (cookieLocale) {\n candidates.push(cookieLocale);\n }\n\n candidates.push(\n ...parseAcceptLanguage(request.headers.get('accept-language'))\n );\n\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n","import {\n useInternalLocaleSelector,\n useSetLocale,\n} from '@generaltranslation/react-core/hooks';\n\n/**\n * Gets the list of properties for using a locale selector.\n * Provides locale management utilities for the application.\n *\n * @param locales an optional list of locales to use for the drop down. These locales must be a subset of the locales provided by the `<GTProvider>` context. When not provided, the list of locales from the `<GTProvider>` context is used.\n *\n * @returns {Object} An object containing locale-related utilities:\n * @returns {string} return.locale - The currently selected locale.\n * @returns {string[]} return.locales - The list of all available locales.\n * @returns {function} return.setLocale - Function to update the current locale.\n * @returns {(locale: string) => LocaleProperties} return.getLocaleProperties - Function to retrieve properties for a given locale.\n */\nexport function useLocaleSelector(locales?: string[]) {\n const setLocale = useSetLocale();\n return { setLocale, ...useInternalLocaleSelector(locales) };\n}\n","import {\n useInternalRegionSelector,\n useSetLocale,\n useSetRegion,\n} from '@generaltranslation/react-core/hooks';\nimport type { InternalRegionSelectorOptions } from '@generaltranslation/react-core/hooks';\n\n/**\n * Gets the list of properties for using a region selector.\n * Provides region management utilities for the application.\n *\n * @param {Object} [options] - Optional configuration object.\n * @param {string[]} [options.regions] - An optional array of ISO 3166 region codes to display. If not provided, regions are inferred from supported locales.\n * @param {Object} [options.customMapping] - Optional mapping to override region display names, emojis, or associated locales.\n * @param {boolean} [options.prioritizeCurrentLocaleRegion=true] - If true, the region corresponding to the current locale is prioritized in the list.\n * @param {boolean} [options.sortRegionsAlphabetically=true] - If true, regions are sorted alphabetically by display name.\n *\n * @returns {Object} An object containing region-related utilities:\n * @returns {string | undefined} return.region - The currently selected region code.\n * @returns {function} return.setRegion - Function to update the current region.\n * @returns {string[]} return.regions - The ordered list of available region codes.\n * @returns {Map<string, RegionData>} return.regionData - Map of region codes to their display data (name, emoji, locale).\n * @returns {string} return.locale - The current locale.\n * @returns {function} return.setLocale - Function to update the current locale.\n */\nexport function useRegionSelector(options?: InternalRegionSelectorOptions) {\n const setRegion = useSetRegion();\n const setLocale = useSetLocale();\n return { setRegion, setLocale, ...useInternalRegionSelector(options) };\n}\n","import type React from 'react';\nimport { InternalLocaleSelector } from '@generaltranslation/react-core/components';\nimport { CustomMapping } from 'generaltranslation/types';\nimport { useLocaleSelector } from './useLocaleSelector';\n\n/**\n * A dropdown component that allows users to select a locale.\n * @param {string[]} [locales] - An optional list of locales to use for the dropdown. If not provided, the list of locales from the `<GTProvider>` context is used.\n * @param {object} [customNames] - (deprecated) An optional object to map locales to custom names. Use `customMapping` instead.\n * @param {CustomMapping} [customMapping] - An optional object to map locales to custom display names, emojis, or other properties.\n * @returns {React.ReactElement | null} The rendered locale dropdown component or null to prevent rendering.\n */\nexport function LocaleSelector({\n locales: _locales,\n ...props\n}: LocaleSelectorProps): React.JSX.Element | null {\n // Get locale selector properties\n const { locale, locales, getLocaleProperties, setLocale } =\n useLocaleSelector(_locales);\n\n return (\n <InternalLocaleSelector\n locale={locale}\n locales={locales}\n setLocale={setLocale}\n getLocaleProperties={getLocaleProperties}\n {...props}\n />\n );\n}\n\nexport type LocaleSelectorProps = {\n locales?: string[];\n customNames?: { [key: string]: string };\n customMapping?: CustomMapping;\n [key: string]: any;\n};\n","import type React from 'react';\nimport type { ReactNode } from 'react';\nimport { InternalRegionSelector } from '@generaltranslation/react-core/components';\nimport { useRegionSelector } from './useRegionSelector';\n\n/**\n * A dropdown component that allows users to select a region.\n * @param {string[]} [regions] - An optional array of ISO 3166 region codes to display. If not provided, regions are inferred from the supported locales in the `<GTProvider>` context.\n * @param {React.ReactNode} [placeholder] - Optional placeholder node to display as the first option when no region is selected.\n * @param {object} [customMapping] - An optional object to map region codes to custom display names, emojis, or associated locales.\n * @param {boolean} [prioritizeCurrentLocaleRegion] - If true, the region corresponding to the current locale is prioritized in the list.\n * @param {boolean} [sortRegionsAlphabetically] - If true, regions are sorted alphabetically by display name.\n * @param {boolean} [asLocaleSelector=false] - If true, selecting a region will also update the locale to the region's associated locale.\n * @returns {React.ReactElement | null} The rendered region dropdown component or null to prevent rendering.\n *\n * @example\n * ```tsx\n * <RegionSelector\n * regions={['US', 'CA']}\n * customMapping={{ US: { name: \"United States\", emoji: \"🇺🇸\" } }}\n * placeholder=\"Select a region\"\n * />\n * ```\n */\nexport function RegionSelector({\n regions: _regions,\n customMapping,\n prioritizeCurrentLocaleRegion,\n sortRegionsAlphabetically,\n asLocaleSelector = false,\n ...props\n}: RegionSelectorProps): React.JSX.Element | null {\n // Get region selector properties\n const { region, regions, regionData, locale, setRegion, setLocale } =\n useRegionSelector({\n regions: _regions,\n customMapping,\n prioritizeCurrentLocaleRegion,\n sortRegionsAlphabetically,\n });\n\n const changeRegion = (region: string) => {\n if (asLocaleSelector) {\n const regionLocale = regionData.get(region)?.locale;\n // setRegion reloads the page; update the locale cookie first\n if (regionLocale && locale !== regionLocale) setLocale(regionLocale);\n }\n setRegion(region);\n };\n\n return (\n <InternalRegionSelector\n region={region}\n regions={regions}\n regionData={regionData}\n setRegion={changeRegion}\n {...props}\n />\n );\n}\n\nexport type RegionSelectorProps = {\n regions?: string[];\n placeholder?: ReactNode;\n customMapping?: {\n [region: string]:\n | string\n | { name?: string; emoji?: string; locale?: string };\n };\n prioritizeCurrentLocaleRegion?: boolean;\n sortRegionsAlphabetically?: boolean;\n asLocaleSelector?: boolean;\n [key: string]: any;\n};\n","import {\n I18nStore,\n InternalGTProvider,\n} from '@generaltranslation/react-core/components';\nimport {\n defaultResetLocaleCookieName,\n getI18nConfig,\n} from '@generaltranslation/react-core/pure';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { SharedGTProviderProps } from './GTProviderProps';\nimport { setCookieValue } from '../condition-store/cookies';\n\ntype Conditions = Parameters<NonNullable<SharedGTProviderProps['_reload']>>[0];\n\n/** Client-side provider for server-rendered applications. */\nexport function BrowserGTProvider(props: SharedGTProviderProps) {\n const i18nConfig = getI18nConfig();\n const { locale, region } = props;\n const enableI18n = props.enableI18n ?? true;\n const reload = useCallback(\n (next: Conditions) => {\n if (props._reload) props._reload(next);\n else if (typeof window !== 'undefined') window.location.reload();\n },\n [props._reload]\n );\n const setLocale = useCallback(\n (nextLocale: string) => {\n const resolvedLocale = i18nConfig.resolveSupportedLocale(nextLocale);\n setCookieValue({\n cookieName: i18nConfig.getLocaleCookieName(),\n value: resolvedLocale,\n });\n setCookieValue({\n cookieName: defaultResetLocaleCookieName,\n value: 'true',\n });\n reload({ locale: resolvedLocale, region, enableI18n });\n },\n [i18nConfig, region, enableI18n, reload]\n );\n const setRegion = useCallback(\n (nextRegion: string | undefined) => {\n setCookieValue({\n cookieName: i18nConfig.getRegionCookieName(),\n value: nextRegion ?? '',\n });\n reload({ locale, region: nextRegion, enableI18n });\n },\n [i18nConfig, locale, enableI18n, reload]\n );\n const setEnableI18n = useCallback(\n (nextEnableI18n: boolean) => {\n setCookieValue({\n cookieName: i18nConfig.getEnableI18nCookieName(),\n value: nextEnableI18n ? 'true' : 'false',\n });\n reload({ locale, region, enableI18n: nextEnableI18n });\n },\n [i18nConfig, locale, region, reload]\n );\n\n useEffect(() => {\n setCookieValue({\n cookieName: i18nConfig.getLocaleCookieName(),\n value: locale,\n });\n if (region !== undefined) {\n setCookieValue({\n cookieName: i18nConfig.getRegionCookieName(),\n value: region,\n });\n }\n setCookieValue({\n cookieName: i18nConfig.getEnableI18nCookieName(),\n value: enableI18n ? 'true' : 'false',\n });\n }, [i18nConfig, locale, region, enableI18n, props.translations]);\n\n const i18nStore = useI18nStore();\n\n return (\n <InternalGTProvider\n {...props}\n locale={locale}\n region={region}\n enableI18n={enableI18n}\n setLocale={setLocale}\n setRegion={setRegion}\n setEnableI18n={setEnableI18n}\n i18nStore={i18nStore}\n />\n );\n}\n\nfunction useI18nStore(): I18nStore {\n const i18nStoreRef = useRef<I18nStore | null>(null);\n if (i18nStoreRef.current == null) {\n i18nStoreRef.current = new I18nStore();\n }\n return i18nStoreRef.current;\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { TxProps } from './utils/TxProps';\n\nexport { initializeGTSPA } from './setup/initializeGTSPA';\nexport { initializeGTSRAClient as initializeGT } from './setup/initializeGTSRAClient';\nexport { createOrUpdateBrowserConditionStore } from './condition-store/createBrowserConditionStore';\nexport { parseLocale } from './functions/parseLocale';\nexport { useLocaleSelector } from './components/useLocaleSelector';\nexport { useRegionSelector } from './components/useRegionSelector';\n\n// ===== Components ===== //\nexport { LocaleSelector } from './components/LocaleSelector';\nexport { RegionSelector } from './components/RegionSelector';\nexport { BrowserGTProvider as GTProvider } from './provider/BrowserGTProvider';\n\n// ===== Components ===== //\nexport {\n Branch,\n Plural,\n Derive,\n GtInternalTranslateJsx,\n GtInternalVar,\n T,\n Currency,\n DateTime,\n RelativeTime,\n Var,\n Num,\n} from '@generaltranslation/react-core/components';\n\nexport async function Tx(_props: TxProps): Promise<ReactNode> {\n throw new Error('Tx is only supported via RSC');\n}\n\n// ===== Hooks ===== //\nexport {\n useLocale,\n useRegion,\n useCustomMapping,\n useDefaultLocale,\n useEnableI18n,\n useLocales,\n useFormatLocales,\n useGT,\n useMessages,\n useTranslations,\n useLocaleDirection,\n useLocaleProperties,\n useSetLocale,\n useSetRegion,\n useSetEnableI18n,\n} from '@generaltranslation/react-core/hooks';\n\n// ===== Functions ===== //\nexport {\n msg,\n decodeMsg,\n decodeOptions,\n derive,\n declareVar,\n decodeVars,\n mFallback,\n gtFallback,\n getFormatLocales,\n getDefaultLocale,\n getLocaleProperties,\n getLocales,\n resolveCanonicalLocale,\n getReactI18nCache,\n getTranslationsSnapshot,\n getVersionId,\n createRenderPipeline,\n setReactI18nCache,\n t,\n} from '@generaltranslation/react-core/pure';\n\nexport type {\n RenderPipeline,\n RenderPreparedT,\n} from '@generaltranslation/react-core/pure';\n\nexport type { SharedGTProviderProps } from './provider/GTProviderProps';\nexport {\n GtInternalRuntimeTranslateJsx,\n GtInternalRuntimeTranslateString,\n} from 'gt-i18n/internal';\nexport type {\n GTTranslationOptions,\n RuntimeTranslationOptions,\n} from 'gt-i18n/types';\nexport type {\n SyncResolutionFunction,\n SyncResolutionFunctionWithFallback,\n} from 'gt-i18n/types';\n\n// ===== Singletons ===== //\nexport {\n ReactI18nCache,\n type ReactI18nCacheParams,\n} from '@generaltranslation/react-core/pure';\n"],"mappings":"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"}
@@ -24,7 +24,7 @@ function parseLocale(request) {
24
24
  return i18nConfig.resolveSupportedLocale(candidates);
25
25
  }
26
26
  //#endregion
27
- //#region ../core/dist/unwrapApiResult-BzGfPw75.mjs
27
+ //#region ../core/dist/diagnostics-DKA2SkZB.mjs
28
28
  function ensureSentence(text) {
29
29
  const trimmed = text.trim();
30
30
  if (!trimmed) return "";
@@ -1 +1 @@
1
- {"version":3,"file":"index.rsc.cjs","names":[],"sources":["../src/functions/parseLocale.ts","../../core/dist/unwrapApiResult-BzGfPw75.mjs","../src/index.rsc.ts"],"sourcesContent":["import { getI18nConfig } from '@generaltranslation/react-core/pure';\nimport { getCookieValue, parseAcceptLanguage } from 'gt-i18n/internal';\n\ntype RequestWithHeaders = Pick<Request, 'headers'>;\n\n/**\n * Resolve the user's locale from a Web Request.\n *\n * The configured locale cookie takes precedence over the Accept-Language\n * header. If neither contains a supported locale, the configured default\n * locale is returned.\n *\n * This is intended for incoming server requests. A Request created in the\n * browser does not automatically include document cookies or Accept-Language.\n */\nexport function parseLocale(request: RequestWithHeaders): string {\n const i18nConfig = getI18nConfig();\n const candidates: string[] = [];\n const cookieLocale = getCookieValue(\n request.headers.get('cookie'),\n i18nConfig.getLocaleCookieName()\n );\n\n if (cookieLocale) {\n candidates.push(cookieLocale);\n }\n\n candidates.push(\n ...parseAcceptLanguage(request.headers.get('accept-language'))\n );\n\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n","import { t as ApiError } from \"./ApiError-CUKcz3YS.mjs\";\n//#region src/settings/settings.ts\nconst libraryDefaultLocale = \"en\";\nconst defaultTimeout = 6e4;\n//#endregion\n//#region src/logging/diagnostics.ts\nfunction ensureSentence(text) {\n\tconst trimmed = text.trim();\n\tif (!trimmed) return \"\";\n\treturn /[.!?)]$/.test(trimmed) ? trimmed : `${trimmed}.`;\n}\nfunction stripSentence(text) {\n\tconst trimmed = text.trim();\n\tlet end = trimmed.length;\n\twhile (end > 0) {\n\t\tconst char = trimmed[end - 1];\n\t\tif (char !== \".\" && char !== \"!\" && char !== \"?\") break;\n\t\tend -= 1;\n\t}\n\treturn trimmed.slice(0, end);\n}\nfunction formatDetails(details) {\n\tif (!details) return \"\";\n\tconst detailText = Array.isArray(details) ? details.join(\", \") : details;\n\tif (!detailText.trim()) return \"\";\n\treturn ensureSentence(`Details: ${detailText}`);\n}\nfunction formatDiagnosticErrorDetails(error) {\n\tif (error == null) return void 0;\n\treturn String(error);\n}\nfunction createDiagnosticMessage({ source, severity, whatHappened, reassurance, why, fix, wayOut, details, docsUrl }) {\n\tconst prefix = source ? severity ? `${source} ${severity}:` : `${source}:` : severity ? `${severity}:` : \"\";\n\tconst whatAndWhy = why ? `${stripSentence(whatHappened)} because ${stripSentence(why)}` : whatHappened;\n\tconst shouldCombineWayOut = !!fix && !!wayOut && /^[a-z]/.test(stripSentence(wayOut));\n\tconst messageParts = [\n\t\twhatAndWhy,\n\t\treassurance,\n\t\tshouldCombineWayOut ? `${stripSentence(fix)}, or ${stripSentence(wayOut)}` : fix,\n\t\tshouldCombineWayOut ? void 0 : wayOut,\n\t\tformatDetails(details)\n\t].filter((part) => !!part).map(ensureSentence);\n\tif (docsUrl) messageParts.push(`Learn more: ${docsUrl}`);\n\tconst message = messageParts.join(\" \");\n\treturn prefix ? `${prefix} ${message}` : message;\n}\n//#endregion\n//#region src/settings/settingsUrls.ts\nconst defaultCacheUrl = \"https://cdn.gtx.dev\";\nconst defaultBaseUrl = \"https://api.gtx.dev\";\nconst defaultRuntimeApiUrl = \"https://api.gtx.dev\";\n//#endregion\n//#region src/translate/utils/unwrapApiResult.ts\nfunction isErrorResult(error) {\n\treturn typeof error === \"object\" && error !== null && \"error\" in error && typeof error.error === \"string\";\n}\nfunction hasDecodedError(result) {\n\treturn isErrorResult(result.error) || typeof result.error === \"string\";\n}\n/**\n* Unwraps a `@generaltranslation/api` SDK result, returning its data or\n* throwing an `ApiError` built from the failed response.\n*/\nfunction unwrapApiResult(result) {\n\tif (result.data !== void 0) return result.data;\n\tif (result.response) {\n\t\tconst details = isErrorResult(result.error) ? result.error.error : typeof result.error === \"string\" ? result.error : result.response.statusText;\n\t\tthrow new ApiError(details, result.response.status, details);\n\t}\n\tthrow result.error;\n}\n//#endregion\nexport { defaultCacheUrl as a, formatDiagnosticErrorDetails as c, defaultBaseUrl as i, defaultTimeout as l, isErrorResult as n, defaultRuntimeApiUrl as o, unwrapApiResult as r, createDiagnosticMessage as s, hasDecodedError as t, libraryDefaultLocale as u };\n\n//# sourceMappingURL=unwrapApiResult-BzGfPw75.mjs.map","// React Server Component context surface.\n\nexport { parseLocale } from './functions/parseLocale';\n\nimport { createDiagnosticMessage } from 'generaltranslation/internal';\nimport { CustomMapping } from 'generaltranslation/types';\nimport {\n getGT,\n getI18nConfig,\n getMessages,\n getTranslations,\n} from 'gt-i18n/internal';\nimport { getLocale, getRegion } from 'gt-i18n';\nimport { use } from 'react';\n\n// ===== Error for client components ===== //\nfunction failClientComponent(componentName: string) {\n throw new Error(\n createDiagnosticMessage({\n source: 'gt-react',\n severity: 'Error',\n whatHappened: `${componentName} cannot be consumed via the RSC entry point`,\n fix: 'Import this component from a client or server runtime entry point instead.',\n })\n );\n}\n\nexport function GTProvider() {\n return failClientComponent('GTProvider');\n}\nexport function LocaleSelector() {\n return failClientComponent('LocaleSelector');\n}\nexport function RegionSelector() {\n return failClientComponent('RegionSelector');\n}\n\n// ===== Components ===== //\nexport {\n Branch,\n Currency,\n DateTime,\n Derive,\n Num,\n Plural,\n RelativeTime,\n T,\n Var,\n Tx,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Hooks (cannot reference context) ===== //\n\nexport function useGT() {\n return use(getGT());\n}\nexport function useTranslations(rootId?: string) {\n return use(getTranslations(rootId));\n}\nexport function useMessages() {\n return use(getMessages());\n}\nexport function useLocale() {\n return getLocale();\n}\nexport function useRegion() {\n return getRegion();\n}\nexport function useLocales() {\n return getI18nConfig().getLocales();\n}\nexport function useLocaleDirection(locale: string) {\n return getI18nConfig().getGTClass().getLocaleDirection(locale);\n}\nexport function useLocaleProperties(locale: string) {\n return getI18nConfig().getGTClass().getLocaleProperties(locale);\n}\nexport function useDefaultLocale(): string {\n return getI18nConfig().getDefaultLocale();\n}\nexport function useCustomMapping(): CustomMapping {\n return getI18nConfig().getCustomMapping();\n}\n// ===== Internal Components ===== //\nexport {\n T as GtInternalTranslateJsx,\n GtInternalVar,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Render Helpers ===== //\nexport { createRenderPipeline } from '@generaltranslation/react-core/components-rsc';\n\n// ===== Translation Helpers ===== //\nexport {\n getFormatLocales,\n getTranslationsSnapshot,\n t,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Internal ===== //\nexport {\n getReactI18nCache,\n setReactI18nCache,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Functions ===== //\nexport {\n decodeMsg,\n decodeOptions,\n decodeVars,\n declareVar,\n derive,\n gtFallback,\n mFallback,\n msg,\n getDefaultLocale,\n getLocaleProperties,\n getLocales,\n resolveCanonicalLocale,\n getVersionId,\n} from '@generaltranslation/react-core/pure';\n\n// ===== Setup ===== //\nexport { internalInitializeGTSRA as initializeGT } from '@generaltranslation/react-core/pure';\n\n// ===== Types ===== //\nexport type {\n CurrencyProps,\n DateTimeProps,\n JsxTranslationOptions,\n NumProps,\n PluralProps,\n PreparedT,\n RelativeTimeFormatOptions,\n RelativeTimeProps,\n RenderVariable,\n ResolvedCurrencyProps,\n ResolvedDateTimeProps,\n ResolvedNumProps,\n ResolvedPluralProps,\n ResolvedRelativeTimeProps,\n} from '@generaltranslation/react-core/components-rsc';\n\nexport type {\n RenderPipeline,\n RenderPreparedT,\n} from '@generaltranslation/react-core/pure';\n\nexport type { SharedGTProviderProps } from './provider/GTProviderProps';\nexport {\n GtInternalRuntimeTranslateJsx,\n GtInternalRuntimeTranslateString,\n} from 'gt-i18n/internal';\nexport type {\n GTTranslationOptions,\n RuntimeTranslationOptions,\n} from 'gt-i18n/types';\nexport type {\n SyncResolutionFunction,\n SyncResolutionFunctionWithFallback,\n} from 'gt-i18n/types';\n\n// ===== Singletons ===== //\nexport {\n ReactI18nCache,\n type ReactI18nCacheParams,\n} from '@generaltranslation/react-core/pure';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.rsc.cjs","names":[],"sources":["../src/functions/parseLocale.ts","../../core/dist/diagnostics-DKA2SkZB.mjs","../src/index.rsc.ts"],"sourcesContent":["import { getI18nConfig } from '@generaltranslation/react-core/pure';\nimport { getCookieValue, parseAcceptLanguage } from 'gt-i18n/internal';\n\ntype RequestWithHeaders = Pick<Request, 'headers'>;\n\n/**\n * Resolve the user's locale from a Web Request.\n *\n * The configured locale cookie takes precedence over the Accept-Language\n * header. If neither contains a supported locale, the configured default\n * locale is returned.\n *\n * This is intended for incoming server requests. A Request created in the\n * browser does not automatically include document cookies or Accept-Language.\n */\nexport function parseLocale(request: RequestWithHeaders): string {\n const i18nConfig = getI18nConfig();\n const candidates: string[] = [];\n const cookieLocale = getCookieValue(\n request.headers.get('cookie'),\n i18nConfig.getLocaleCookieName()\n );\n\n if (cookieLocale) {\n candidates.push(cookieLocale);\n }\n\n candidates.push(\n ...parseAcceptLanguage(request.headers.get('accept-language'))\n );\n\n return i18nConfig.resolveSupportedLocale(candidates);\n}\n","//#region src/logging/diagnostics.ts\nfunction ensureSentence(text) {\n\tconst trimmed = text.trim();\n\tif (!trimmed) return \"\";\n\treturn /[.!?)]$/.test(trimmed) ? trimmed : `${trimmed}.`;\n}\nfunction stripSentence(text) {\n\tconst trimmed = text.trim();\n\tlet end = trimmed.length;\n\twhile (end > 0) {\n\t\tconst char = trimmed[end - 1];\n\t\tif (char !== \".\" && char !== \"!\" && char !== \"?\") break;\n\t\tend -= 1;\n\t}\n\treturn trimmed.slice(0, end);\n}\nfunction formatDetails(details) {\n\tif (!details) return \"\";\n\tconst detailText = Array.isArray(details) ? details.join(\", \") : details;\n\tif (!detailText.trim()) return \"\";\n\treturn ensureSentence(`Details: ${detailText}`);\n}\nfunction formatDiagnosticErrorDetails(error) {\n\tif (error == null) return void 0;\n\treturn String(error);\n}\nfunction createDiagnosticMessage({ source, severity, whatHappened, reassurance, why, fix, wayOut, details, docsUrl }) {\n\tconst prefix = source ? severity ? `${source} ${severity}:` : `${source}:` : severity ? `${severity}:` : \"\";\n\tconst whatAndWhy = why ? `${stripSentence(whatHappened)} because ${stripSentence(why)}` : whatHappened;\n\tconst shouldCombineWayOut = !!fix && !!wayOut && /^[a-z]/.test(stripSentence(wayOut));\n\tconst messageParts = [\n\t\twhatAndWhy,\n\t\treassurance,\n\t\tshouldCombineWayOut ? `${stripSentence(fix)}, or ${stripSentence(wayOut)}` : fix,\n\t\tshouldCombineWayOut ? void 0 : wayOut,\n\t\tformatDetails(details)\n\t].filter((part) => !!part).map(ensureSentence);\n\tif (docsUrl) messageParts.push(`Learn more: ${docsUrl}`);\n\tconst message = messageParts.join(\" \");\n\treturn prefix ? `${prefix} ${message}` : message;\n}\n//#endregion\nexport { formatDiagnosticErrorDetails as n, createDiagnosticMessage as t };\n\n//# sourceMappingURL=diagnostics-DKA2SkZB.mjs.map","// React Server Component context surface.\n\nexport { parseLocale } from './functions/parseLocale';\n\nimport { createDiagnosticMessage } from 'generaltranslation/internal';\nimport { CustomMapping } from 'generaltranslation/types';\nimport {\n getGT,\n getI18nConfig,\n getMessages,\n getTranslations,\n} from 'gt-i18n/internal';\nimport { getLocale, getRegion } from 'gt-i18n';\nimport { use } from 'react';\n\n// ===== Error for client components ===== //\nfunction failClientComponent(componentName: string) {\n throw new Error(\n createDiagnosticMessage({\n source: 'gt-react',\n severity: 'Error',\n whatHappened: `${componentName} cannot be consumed via the RSC entry point`,\n fix: 'Import this component from a client or server runtime entry point instead.',\n })\n );\n}\n\nexport function GTProvider() {\n return failClientComponent('GTProvider');\n}\nexport function LocaleSelector() {\n return failClientComponent('LocaleSelector');\n}\nexport function RegionSelector() {\n return failClientComponent('RegionSelector');\n}\n\n// ===== Components ===== //\nexport {\n Branch,\n Currency,\n DateTime,\n Derive,\n Num,\n Plural,\n RelativeTime,\n T,\n Var,\n Tx,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Hooks (cannot reference context) ===== //\n\nexport function useGT() {\n return use(getGT());\n}\nexport function useTranslations(rootId?: string) {\n return use(getTranslations(rootId));\n}\nexport function useMessages() {\n return use(getMessages());\n}\nexport function useLocale() {\n return getLocale();\n}\nexport function useRegion() {\n return getRegion();\n}\nexport function useLocales() {\n return getI18nConfig().getLocales();\n}\nexport function useLocaleDirection(locale: string) {\n return getI18nConfig().getGTClass().getLocaleDirection(locale);\n}\nexport function useLocaleProperties(locale: string) {\n return getI18nConfig().getGTClass().getLocaleProperties(locale);\n}\nexport function useDefaultLocale(): string {\n return getI18nConfig().getDefaultLocale();\n}\nexport function useCustomMapping(): CustomMapping {\n return getI18nConfig().getCustomMapping();\n}\n// ===== Internal Components ===== //\nexport {\n T as GtInternalTranslateJsx,\n GtInternalVar,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Render Helpers ===== //\nexport { createRenderPipeline } from '@generaltranslation/react-core/components-rsc';\n\n// ===== Translation Helpers ===== //\nexport {\n getFormatLocales,\n getTranslationsSnapshot,\n t,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Internal ===== //\nexport {\n getReactI18nCache,\n setReactI18nCache,\n} from '@generaltranslation/react-core/components-rsc';\n\n// ===== Functions ===== //\nexport {\n decodeMsg,\n decodeOptions,\n decodeVars,\n declareVar,\n derive,\n gtFallback,\n mFallback,\n msg,\n getDefaultLocale,\n getLocaleProperties,\n getLocales,\n resolveCanonicalLocale,\n getVersionId,\n} from '@generaltranslation/react-core/pure';\n\n// ===== Setup ===== //\nexport { internalInitializeGTSRA as initializeGT } from '@generaltranslation/react-core/pure';\n\n// ===== Types ===== //\nexport type {\n CurrencyProps,\n DateTimeProps,\n JsxTranslationOptions,\n NumProps,\n PluralProps,\n PreparedT,\n RelativeTimeFormatOptions,\n RelativeTimeProps,\n RenderVariable,\n ResolvedCurrencyProps,\n ResolvedDateTimeProps,\n ResolvedNumProps,\n ResolvedPluralProps,\n ResolvedRelativeTimeProps,\n} from '@generaltranslation/react-core/components-rsc';\n\nexport type {\n RenderPipeline,\n RenderPreparedT,\n} from '@generaltranslation/react-core/pure';\n\nexport type { SharedGTProviderProps } from './provider/GTProviderProps';\nexport {\n GtInternalRuntimeTranslateJsx,\n GtInternalRuntimeTranslateString,\n} from 'gt-i18n/internal';\nexport type {\n GTTranslationOptions,\n RuntimeTranslationOptions,\n} from 'gt-i18n/types';\nexport type {\n SyncResolutionFunction,\n SyncResolutionFunctionWithFallback,\n} from 'gt-i18n/types';\n\n// ===== Singletons ===== //\nexport {\n ReactI18nCache,\n type ReactI18nCacheParams,\n} from '@generaltranslation/react-core/pure';\n"],"mappings":"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"}
@@ -70,12 +70,7 @@ type BrowserConditionStoreParams = WritableConditionStoreParams & {
70
70
  _getLocale?: GetLocale;
71
71
  _getRegion?: GetRegion;
72
72
  _getEnableI18n?: GetEnableI18n;
73
- _reload?: ReloadType; /** App Router only: authoritative conditions supplied by this server render. */
74
- _serverConditions?: {
75
- locale: string;
76
- region?: string;
77
- enableI18n?: boolean;
78
- };
73
+ _reload?: ReloadType;
79
74
  };
80
75
  //#endregion
81
76
  //#region src/provider/GTProviderProps.d.ts
@@ -85,13 +80,8 @@ type BrowserConditionStoreParams = WritableConditionStoreParams & {
85
80
  * - {@link InternalGTProviderProps} - requires translations and dictionaries
86
81
  * - {@link BrowserConditionStoreParams} - requires locale
87
82
  */
88
- type SharedGTProviderProps = Omit<InternalGTProviderProps, 'conditionStore' | 'i18nStore'> & Omit<BrowserConditionStoreParams, 'locale'> & {
89
- locale: string; /** Internal App Router snapshot; a new object represents a new server result. */
90
- _serverConditions?: {
91
- locale: string;
92
- region?: string;
93
- enableI18n?: boolean;
94
- };
83
+ type SharedGTProviderProps = Omit<InternalGTProviderProps, 'i18nStore' | 'region' | 'enableI18n' | 'setLocale' | 'setRegion' | 'setEnableI18n'> & Omit<BrowserConditionStoreParams, 'locale'> & {
84
+ locale: string;
95
85
  };
96
86
  //#endregion
97
87
  //#region src/index.rsc.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.rsc.d.cts","names":["CustomMapping","LocaleProperties","Partial","Record","code","name","nativeName","languageCode","languageName","nativeLanguageName","nameWithRegionCode","nativeNameWithRegionCode","regionCode","regionName","nativeRegionName","scriptCode","scriptName","nativeScriptName","maximizedCode","maximizedName","nativeMaximizedName","minimizedCode","minimizedName","nativeMinimizedName","emoji","CustomRegionMapping","region","locale","getRegionProperties","defaultLocale","customMapping","CutoffFormatStyle","TerminatorOptions","terminator","separator","CutoffFormatOptions","maxChars","style","VariableType","Variable","k","i","v","HTML_CONTENT_PROPS","pl","ti","alt","arl","arb","ard","HtmlContentPropKeysRecord","HtmlContentPropValuesRecord","GTProp","JsxChildren","b","t","JsxElement","d","c","JsxChild","StringFormat","DataFormat","StringContent","IcuMessage","StringMessage","I18nextMessage","Content","FormatVariables","Date","S","_","a","f","g","h","l","m","n","o","p","r","s","u","x","y"],"sources":["../../format/dist/types-CbRDetV3.d.cts","../src/functions/parseLocale.ts","../src/i18n-cache/types.ts","../src/condition-store/BrowserConditionStore.ts","../src/provider/GTProviderProps.ts","../src/index.rsc.ts"],"mappings":";;;;;;;;KACKA,aAAAA,GAAgBG,MAAAA,kBAAwBD,OAAAA,CAAQD,gBAAAA;AAAAA;AAAAA,KAGhDA,gBAAAA;EACHG,IAAAA;EACAC,IAAAA;EACAC,UAAAA;EACAC,YAAAA;EACAC,YAAAA;EACAC,kBAAAA;EACAC,kBAAAA;EACAC,wBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,KAAAA;AAAAA;AAAAA;;;KCtBG,kBAAA,GAAqB,IAAA,CAAK,OAAA;;;;;;;;;;;iBAYf,WAAA,CAAY,OAAA,EAAS,kBAAA;;;;;;KCZzB,SAAA;AAAA,KACA,SAAA;AAAA,KACA,aAAA;;;KCQP,oCAAA;EACH,MAAA;EACA,MAAA;EACA,UAAA;AAAA;AAAA,KAEU,UAAA,IAAc,KAAA,EAAO,oCAAA;;;;;KAMrB,2BAAA,GAA8B,4BAAA;EACxC,UAAA,GAAa,SAAA;EACb,UAAA,GAAa,SAAA;EACb,cAAA,GAAiB,aAAA;EACjB,OAAA,GAAU,UAAA,EH3BiCtB;EG6B3C,iBAAA;IACE,MAAA;IACA,MAAA;IACA,UAAA;EAAA;AAAA;;;;;;;;;KCxBQ,qBAAA,GAAwB,IAAA,CAClC,uBAAA,oCAGA,IAAA,CAAK,2BAAA;EACH,MAAA,UJbc;EIed,iBAAA;IACE,MAAA;IACA,MAAA;IACA,UAAA;EAAA;AAAA;;;iBCQU,UAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAoBA,KAAA,CAAA,GAAK,gBAAA,CAAA,kCAAA;AAAA,iBAGL,eAAA,CAAgB,MAAA,YAAD,gBAAA,CAAgB,aAAA;AAAA,iBAG/B,WAAA,CAAA,GAAW,gBAAA,CAAA,aAAA;AAAA,iBAGX,SAAA,CAAA;AAAA,iBAGA,SAAA,CAAA;AAAA,iBAGA,UAAA,CAAA;AAAA,iBAGA,kBAAA,CAAmB,MAAA;AAAA,iBAGnB,mBAAA,CAAoB,MAAA,WAAD,gBAAA;AAAA,iBAGnB,gBAAA,CAAA;AAAA,iBAGA,gBAAA,CAAA,GAAoB,aAAA"}
1
+ {"version":3,"file":"index.rsc.d.cts","names":["CustomMapping","LocaleProperties","Partial","Record","code","name","nativeName","languageCode","languageName","nativeLanguageName","nameWithRegionCode","nativeNameWithRegionCode","regionCode","regionName","nativeRegionName","scriptCode","scriptName","nativeScriptName","maximizedCode","maximizedName","nativeMaximizedName","minimizedCode","minimizedName","nativeMinimizedName","emoji","CustomRegionMapping","region","locale","getRegionProperties","defaultLocale","customMapping","CutoffFormatStyle","TerminatorOptions","terminator","separator","CutoffFormatOptions","maxChars","style","VariableType","Variable","k","i","v","HTML_CONTENT_PROPS","pl","ti","alt","arl","arb","ard","HtmlContentPropKeysRecord","HtmlContentPropValuesRecord","GTProp","JsxChildren","b","t","JsxElement","d","c","JsxChild","StringFormat","DataFormat","StringContent","IcuMessage","StringMessage","I18nextMessage","Content","FormatVariables","Date","S","_","a","f","g","h","l","m","n","o","p","r","s","u","x","y"],"sources":["../../format/dist/types-CbRDetV3.d.cts","../src/functions/parseLocale.ts","../src/i18n-cache/types.ts","../src/condition-store/BrowserConditionStore.ts","../src/provider/GTProviderProps.ts","../src/index.rsc.ts"],"mappings":";;;;;;;;KACKA,aAAAA,GAAgBG,MAAAA,kBAAwBD,OAAAA,CAAQD,gBAAAA;AAAAA;AAAAA,KAGhDA,gBAAAA;EACHG,IAAAA;EACAC,IAAAA;EACAC,UAAAA;EACAC,YAAAA;EACAC,YAAAA;EACAC,kBAAAA;EACAC,kBAAAA;EACAC,wBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,KAAAA;AAAAA;AAAAA;;;KCtBG,kBAAA,GAAqB,IAAA,CAAK,OAAA;;;;;;;;;;;iBAYf,WAAA,CAAY,OAAA,EAAS,kBAAA;;;;;;KCZzB,SAAA;AAAA,KACA,SAAA;AAAA,KACA,aAAA;;;KCQP,oCAAA;EACH,MAAA;EACA,MAAA;EACA,UAAA;AAAA;AAAA,KAEU,UAAA,IAAc,KAAA,EAAO,oCAAA;;;;;KAMrB,2BAAA,GAA8B,4BAAA;EACxC,UAAA,GAAa,SAAA;EACb,UAAA,GAAa,SAAA;EACb,cAAA,GAAiB,aAAA;EACjB,OAAA,GAAU,UAAA;AAAA;;;;;;;;;KCnBA,qBAAA,GAAwB,IAAA,CAClC,uBAAA,yFAQA,IAAA,CAAK,2BAAA;EACH,MAAA;AAAA;;;iBCQY,UAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAoBA,KAAA,CAAA,GAAK,gBAAA,CAAA,kCAAA;AAAA,iBAGL,eAAA,CAAgB,MAAA,YAAD,gBAAA,CAAgB,aAAA;AAAA,iBAG/B,WAAA,CAAA,GAAW,gBAAA,CAAA,aAAA;AAAA,iBAGX,SAAA,CAAA;AAAA,iBAGA,SAAA,CAAA;AAAA,iBAGA,UAAA,CAAA;AAAA,iBAGA,kBAAA,CAAmB,MAAA;AAAA,iBAGnB,mBAAA,CAAoB,MAAA,WAAD,gBAAA;AAAA,iBAGnB,gBAAA,CAAA;AAAA,iBAGA,gBAAA,CAAA,GAAoB,aAAA"}
@@ -70,12 +70,7 @@ type BrowserConditionStoreParams = WritableConditionStoreParams & {
70
70
  _getLocale?: GetLocale;
71
71
  _getRegion?: GetRegion;
72
72
  _getEnableI18n?: GetEnableI18n;
73
- _reload?: ReloadType; /** App Router only: authoritative conditions supplied by this server render. */
74
- _serverConditions?: {
75
- locale: string;
76
- region?: string;
77
- enableI18n?: boolean;
78
- };
73
+ _reload?: ReloadType;
79
74
  };
80
75
  //#endregion
81
76
  //#region src/provider/GTProviderProps.d.ts
@@ -85,13 +80,8 @@ type BrowserConditionStoreParams = WritableConditionStoreParams & {
85
80
  * - {@link InternalGTProviderProps} - requires translations and dictionaries
86
81
  * - {@link BrowserConditionStoreParams} - requires locale
87
82
  */
88
- type SharedGTProviderProps = Omit<InternalGTProviderProps, 'conditionStore' | 'i18nStore'> & Omit<BrowserConditionStoreParams, 'locale'> & {
89
- locale: string; /** Internal App Router snapshot; a new object represents a new server result. */
90
- _serverConditions?: {
91
- locale: string;
92
- region?: string;
93
- enableI18n?: boolean;
94
- };
83
+ type SharedGTProviderProps = Omit<InternalGTProviderProps, 'i18nStore' | 'region' | 'enableI18n' | 'setLocale' | 'setRegion' | 'setEnableI18n'> & Omit<BrowserConditionStoreParams, 'locale'> & {
84
+ locale: string;
95
85
  };
96
86
  //#endregion
97
87
  //#region src/index.rsc.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.rsc.d.mts","names":["CustomMapping","LocaleProperties","Partial","Record","code","name","nativeName","languageCode","languageName","nativeLanguageName","nameWithRegionCode","nativeNameWithRegionCode","regionCode","regionName","nativeRegionName","scriptCode","scriptName","nativeScriptName","maximizedCode","maximizedName","nativeMaximizedName","minimizedCode","minimizedName","nativeMinimizedName","emoji","CustomRegionMapping","region","locale","getRegionProperties","defaultLocale","customMapping","CutoffFormatStyle","TerminatorOptions","terminator","separator","CutoffFormatOptions","maxChars","style","VariableType","Variable","k","i","v","HTML_CONTENT_PROPS","pl","ti","alt","arl","arb","ard","HtmlContentPropKeysRecord","HtmlContentPropValuesRecord","GTProp","JsxChildren","b","t","JsxElement","d","c","JsxChild","StringFormat","DataFormat","StringContent","IcuMessage","StringMessage","I18nextMessage","Content","FormatVariables","Date","S","_","a","f","g","h","l","m","n","o","p","r","s","u","x","y"],"sources":["../../format/dist/types-CbRDetV3.d.cts","../src/functions/parseLocale.ts","../src/i18n-cache/types.ts","../src/condition-store/BrowserConditionStore.ts","../src/provider/GTProviderProps.ts","../src/index.rsc.ts"],"mappings":";;;;;;;;KACKA,aAAAA,GAAgBG,MAAAA,kBAAwBD,OAAAA,CAAQD,gBAAAA;AAAAA;AAAAA,KAGhDA,gBAAAA;EACHG,IAAAA;EACAC,IAAAA;EACAC,UAAAA;EACAC,YAAAA;EACAC,YAAAA;EACAC,kBAAAA;EACAC,kBAAAA;EACAC,wBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,KAAAA;AAAAA;AAAAA;;;KCtBG,kBAAA,GAAqB,IAAA,CAAK,OAAA;;;;;;;;;;;iBAYf,WAAA,CAAY,OAAA,EAAS,kBAAA;;;;;;KCZzB,SAAA;AAAA,KACA,SAAA;AAAA,KACA,aAAA;;;KCQP,oCAAA;EACH,MAAA;EACA,MAAA;EACA,UAAA;AAAA;AAAA,KAEU,UAAA,IAAc,KAAA,EAAO,oCAAA;;;;;KAMrB,2BAAA,GAA8B,4BAAA;EACxC,UAAA,GAAa,SAAA;EACb,UAAA,GAAa,SAAA;EACb,cAAA,GAAiB,aAAA;EACjB,OAAA,GAAU,UAAA,EH3BiCtB;EG6B3C,iBAAA;IACE,MAAA;IACA,MAAA;IACA,UAAA;EAAA;AAAA;;;;;;;;;KCxBQ,qBAAA,GAAwB,IAAA,CAClC,uBAAA,oCAGA,IAAA,CAAK,2BAAA;EACH,MAAA,UJbc;EIed,iBAAA;IACE,MAAA;IACA,MAAA;IACA,UAAA;EAAA;AAAA;;;iBCQU,UAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAoBA,KAAA,CAAA,GAAK,gBAAA,CAAA,kCAAA;AAAA,iBAGL,eAAA,CAAgB,MAAA,YAAD,gBAAA,CAAgB,aAAA;AAAA,iBAG/B,WAAA,CAAA,GAAW,gBAAA,CAAA,aAAA;AAAA,iBAGX,SAAA,CAAA;AAAA,iBAGA,SAAA,CAAA;AAAA,iBAGA,UAAA,CAAA;AAAA,iBAGA,kBAAA,CAAmB,MAAA;AAAA,iBAGnB,mBAAA,CAAoB,MAAA,WAAD,gBAAA;AAAA,iBAGnB,gBAAA,CAAA;AAAA,iBAGA,gBAAA,CAAA,GAAoB,aAAA"}
1
+ {"version":3,"file":"index.rsc.d.mts","names":["CustomMapping","LocaleProperties","Partial","Record","code","name","nativeName","languageCode","languageName","nativeLanguageName","nameWithRegionCode","nativeNameWithRegionCode","regionCode","regionName","nativeRegionName","scriptCode","scriptName","nativeScriptName","maximizedCode","maximizedName","nativeMaximizedName","minimizedCode","minimizedName","nativeMinimizedName","emoji","CustomRegionMapping","region","locale","getRegionProperties","defaultLocale","customMapping","CutoffFormatStyle","TerminatorOptions","terminator","separator","CutoffFormatOptions","maxChars","style","VariableType","Variable","k","i","v","HTML_CONTENT_PROPS","pl","ti","alt","arl","arb","ard","HtmlContentPropKeysRecord","HtmlContentPropValuesRecord","GTProp","JsxChildren","b","t","JsxElement","d","c","JsxChild","StringFormat","DataFormat","StringContent","IcuMessage","StringMessage","I18nextMessage","Content","FormatVariables","Date","S","_","a","f","g","h","l","m","n","o","p","r","s","u","x","y"],"sources":["../../format/dist/types-CbRDetV3.d.cts","../src/functions/parseLocale.ts","../src/i18n-cache/types.ts","../src/condition-store/BrowserConditionStore.ts","../src/provider/GTProviderProps.ts","../src/index.rsc.ts"],"mappings":";;;;;;;;KACKA,aAAAA,GAAgBG,MAAAA,kBAAwBD,OAAAA,CAAQD,gBAAAA;AAAAA;AAAAA,KAGhDA,gBAAAA;EACHG,IAAAA;EACAC,IAAAA;EACAC,UAAAA;EACAC,YAAAA;EACAC,YAAAA;EACAC,kBAAAA;EACAC,kBAAAA;EACAC,wBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,UAAAA;EACAC,UAAAA;EACAC,gBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,aAAAA;EACAC,aAAAA;EACAC,mBAAAA;EACAC,KAAAA;AAAAA;AAAAA;;;KCtBG,kBAAA,GAAqB,IAAA,CAAK,OAAA;;;;;;;;;;;iBAYf,WAAA,CAAY,OAAA,EAAS,kBAAA;;;;;;KCZzB,SAAA;AAAA,KACA,SAAA;AAAA,KACA,aAAA;;;KCQP,oCAAA;EACH,MAAA;EACA,MAAA;EACA,UAAA;AAAA;AAAA,KAEU,UAAA,IAAc,KAAA,EAAO,oCAAA;;;;;KAMrB,2BAAA,GAA8B,4BAAA;EACxC,UAAA,GAAa,SAAA;EACb,UAAA,GAAa,SAAA;EACb,cAAA,GAAiB,aAAA;EACjB,OAAA,GAAU,UAAA;AAAA;;;;;;;;;KCnBA,qBAAA,GAAwB,IAAA,CAClC,uBAAA,yFAQA,IAAA,CAAK,2BAAA;EACH,MAAA;AAAA;;;iBCQY,UAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAGA,cAAA,CAAA;AAAA,iBAoBA,KAAA,CAAA,GAAK,gBAAA,CAAA,kCAAA;AAAA,iBAGL,eAAA,CAAgB,MAAA,YAAD,gBAAA,CAAgB,aAAA;AAAA,iBAG/B,WAAA,CAAA,GAAW,gBAAA,CAAA,aAAA;AAAA,iBAGX,SAAA,CAAA;AAAA,iBAGA,SAAA,CAAA;AAAA,iBAGA,UAAA,CAAA;AAAA,iBAGA,kBAAA,CAAmB,MAAA;AAAA,iBAGnB,mBAAA,CAAoB,MAAA,WAAD,gBAAA;AAAA,iBAGnB,gBAAA,CAAA;AAAA,iBAGA,gBAAA,CAAA,GAAoB,aAAA"}
@@ -23,7 +23,7 @@ function parseLocale(request) {
23
23
  return i18nConfig.resolveSupportedLocale(candidates);
24
24
  }
25
25
  //#endregion
26
- //#region ../core/dist/unwrapApiResult-BzGfPw75.mjs
26
+ //#region ../core/dist/diagnostics-DKA2SkZB.mjs
27
27
  function ensureSentence(text) {
28
28
  const trimmed = text.trim();
29
29
  if (!trimmed) return "";