@mmstack/translate 20.4.1 → 20.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -23,6 +23,7 @@ It uses the robust **FormatJS** Intl runtime (`@formatjs/intl`) for ICU message
23
23
  - Structural consistency check when defining non-default locales.
24
24
  - 🚀 **Single Build Artifact:** Runtime translation loading.
25
25
  - 📦 **Namespacing:** Organize translations by feature/library (e.g., 'quotes', 'userProfile', 'common').
26
+ - 🔄 **Dynamic Language Switching:** Change locales at runtime with automatic translation loading.
26
27
  - ⏳ **Lazy Loading:** Load namespaced translations on demand using Route Resolvers.
27
28
  - ✨ **Reactive API:** Includes `t.asSignal()` for creating computed translation signals based on signal parameters.
28
29
  - 🌍 **ICU Message Syntax:** Uses FormatJS runtime for robust support of variables (`{name}`), `plural`, `select`, and `selectordinal`. (Note: Complex inline date/number formats are not the focus; use Angular's built in Pipes/format functions & use the result as variables in your translation.)
@@ -114,7 +115,9 @@ export const routes: Routes = [
114
115
  ];
115
116
  ```
116
117
 
117
- _Note:_ `@mmstack/translate` relies on Angular's `LOCALE_ID` provider. You must provide a value for it. How you determine this value (e.g., hardcoded, from server config, from URL segment via a factory provider) is up to your application's architecture. The library assumes this `LOCALE_ID` is static for the duration of the application session and requires a page refresh to change.
118
+ _Note:_ `@mmstack/translate` relies on Angular's `LOCALE_ID` provider for its default. You should provide a value for it. How you determine this value (e.g., hardcoded, from server config, from URL segment via a factory provider) is up to your application's architecture.
119
+
120
+ By default the library assumes this `LOCALE_ID` is static for the duration of the application session and requires a page refresh to change. You can however opt in to dynamic locale switching via `injectDynamicLocale`. see usage note 5 for details :)
118
121
 
119
122
  ## Usage
120
123
 
@@ -171,11 +174,12 @@ export default createQuoteTranslation('sl-SI', {
171
174
  Use registerNamespace to prepare your namespace definition and obtain the injectNamespaceT function and the resolveNamespaceTranslation resolver function. Use the resolver in your Angular routes.
172
175
 
173
176
  ```typescript
174
- import q from './quote.namespace';
177
+ import { registerNamespace } from '@mmstack/translate';
175
178
 
176
179
  // Register the namespace
177
180
  // Example: packages/quote/src/lib/quote.t.ts
178
181
  const r = registerNamespace(
182
+ // you can also fetch from a server if you prefer, as long as the shape is the same
179
183
  () => import('./quote.namespace').then((m) => m.default), // Default locale's compiled translation (functions as fallback if no locale of type provided)
180
184
  {
181
185
  // Map other locales to promise factories (dynamic imports)
@@ -303,6 +307,43 @@ export class QuoteComponent {
303
307
  }
304
308
  ```
305
309
 
310
+ ### 5 [OPTIONAl] - Add dynamic language switching
311
+
312
+ `LOCALE_ID` is always used as the initial value, but you can dynamically switch that & `@mmstack/translate` will load the new translations on demand, updating as necessary.
313
+
314
+ ```typescript
315
+ import { injectDynamicLocale } from '@mmstack/translate';
316
+
317
+ @Component({...})
318
+ export class LanguageSwitcher {
319
+ private readonly locale = injectDynamicLocale();
320
+
321
+ switchToSlovene() {
322
+ this.locale.set('sl-SI'); // Automatically loads missing translations
323
+ }
324
+
325
+ // Template can react to loading state
326
+ @if (locale.isLoading()) {
327
+ <div>Loading translations...</div>
328
+ }
329
+ }
330
+ ```
331
+
332
+ _Note:_ Due to Angular memo-izing the transform function, custom Pipe's used will not update on dynamic local switches automatically. To resolve this you can:
333
+
334
+ ```typescript
335
+
336
+ // Add the locale as the last parameter when calling the pipe
337
+ {{'common.yes' | translate : locale()}}
338
+
339
+ // or set pure to false (not recommended)
340
+ @Pipe({
341
+ name: 'translate',
342
+ pure: false
343
+ })
344
+ export class QuoteTranslator extends Translator<QuoteLocale> {}
345
+ ```
346
+
306
347
  ## Contributing
307
348
 
308
349
  Contributions, issues, and feature requests are welcome!
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, signal, LOCALE_ID, computed, Injectable, isSignal, isDevMode, input, Renderer2, ElementRef, effect, Directive } from '@angular/core';
2
+ import { InjectionToken, inject, signal, LOCALE_ID, computed, resource, untracked, isDevMode, effect, Injectable, isSignal, input, Renderer2, ElementRef, afterRenderEffect, Directive, ChangeDetectorRef } from '@angular/core';
3
3
  import { createIntlCache, createIntl } from '@formatjs/intl';
4
4
 
5
5
  const KEY_DELIM = '::MMT_DELIM::';
@@ -69,11 +69,13 @@ function injectDefaultLocale() {
69
69
  class TranslationStore {
70
70
  cache = createIntlCache();
71
71
  config = injectIntlConfig();
72
+ loadQueue = signal([], ...(ngDevMode ? [{ debugName: "loadQueue" }] : []));
72
73
  locale = signal(inject(LOCALE_ID), ...(ngDevMode ? [{ debugName: "locale" }] : []));
73
74
  defaultLocale = injectDefaultLocale();
74
75
  translations = signal({
75
76
  [this.defaultLocale]: {},
76
77
  }, ...(ngDevMode ? [{ debugName: "translations" }] : []));
78
+ onDemandLoaders = new Map();
77
79
  nonMessageConfig = computed(() => ({
78
80
  ...this.config,
79
81
  locale: this.locale(),
@@ -81,18 +83,75 @@ class TranslationStore {
81
83
  messages = computed(() => this.translations()[this.locale()] ??
82
84
  this.translations()[this.defaultLocale] ??
83
85
  {}, ...(ngDevMode ? [{ debugName: "messages" }] : []));
86
+ dynamicLocaleLoader = resource({
87
+ params: computed(() => this.loadQueue().at(0) ?? null),
88
+ loader: async ({ params: newLocale, abortSignal }) => {
89
+ if (!newLocale)
90
+ return;
91
+ const currentTranslations = untracked(this.translations);
92
+ const loadPromises = [];
93
+ for (const [namespace, loaders] of this.onDemandLoaders.entries()) {
94
+ const loader = loaders[newLocale];
95
+ if (loader) {
96
+ const hasNamespaceForLocale = currentTranslations[newLocale] &&
97
+ Object.keys(currentTranslations[newLocale]).some((key) => key.startsWith(`${prependDelim(namespace, '').slice(0, -1)}`));
98
+ if (!hasNamespaceForLocale) {
99
+ loadPromises.push(loader()
100
+ .then((translation) => {
101
+ if (abortSignal.aborted)
102
+ return null;
103
+ return {
104
+ namespace: translation.namespace,
105
+ flat: translation.flat,
106
+ };
107
+ })
108
+ .catch((err) => {
109
+ if (isDevMode()) {
110
+ console.error('[Translate] Failed to load', namespace, newLocale, err);
111
+ }
112
+ return null;
113
+ }));
114
+ }
115
+ }
116
+ }
117
+ return Promise.all(loadPromises)
118
+ .then((res) => res.filter((r) => r !== null))
119
+ .then((res) => ({
120
+ locales: res,
121
+ locale: newLocale,
122
+ }));
123
+ },
124
+ });
84
125
  intl = computed(() => createIntl({
85
126
  ...this.nonMessageConfig(),
86
127
  messages: this.messages(),
87
128
  }, this.cache), ...(ngDevMode ? [{ debugName: "intl" }] : []));
129
+ constructor() {
130
+ effect(() => {
131
+ if (
132
+ // should never be in error state, but best to check in case something throws
133
+ this.dynamicLocaleLoader.error() ||
134
+ this.dynamicLocaleLoader.isLoading())
135
+ return;
136
+ const dynamicLocales = this.dynamicLocaleLoader.value();
137
+ if (!dynamicLocales)
138
+ return;
139
+ for (const locale of dynamicLocales.locales) {
140
+ this.register(locale.namespace, {
141
+ [dynamicLocales.locale]: locale.flat,
142
+ });
143
+ }
144
+ this.loadQueue.update((q) => q.filter((l) => l !== dynamicLocales.locale));
145
+ this.locale.set(dynamicLocales.locale);
146
+ });
147
+ }
88
148
  formatMessage(key, values) {
89
149
  const message = this.translations()[this.locale()]?.[key] ?? '';
90
150
  if (!message)
91
151
  return '';
92
152
  return this.intl().formatMessage({ id: key, defaultMessage: message }, values);
93
153
  }
94
- register(namespace, flat, locale) {
95
- this.locale.set(locale);
154
+ register(namespace, flat) {
96
155
  this.translations.update((cur) => {
97
156
  return Object.entries(flat).reduce((acc, [locale, translation]) => {
98
157
  const localeTranslation = acc[locale] ?? {};
@@ -108,6 +167,12 @@ class TranslationStore {
108
167
  }, { ...cur });
109
168
  });
110
169
  }
170
+ registerOnDemandLoaders(namespace, loaders) {
171
+ this.onDemandLoaders.set(namespace, loaders);
172
+ }
173
+ hasLocaleLoaders(locale) {
174
+ return Array.from(this.onDemandLoaders.values()).some((loaders) => loaders[locale]);
175
+ }
111
176
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TranslationStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
112
177
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TranslationStore, providedIn: 'root' });
113
178
  }
@@ -116,10 +181,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
116
181
  args: [{
117
182
  providedIn: 'root',
118
183
  }]
119
- }] });
184
+ }], ctorParameters: () => [] });
120
185
  function injectIntl() {
121
186
  return inject(TranslationStore).intl;
122
187
  }
188
+ /**
189
+ * Inject a dynamic locale signal that supports runtime language switching.
190
+ *
191
+ * @returns A writable signal with the current locale and loading state.
192
+ * Only allows switching to locales that have registered loaders.
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const locale = injectDynamicLocale();
197
+ *
198
+ * // Switch language (triggers automatic translation loading)
199
+ * locale.set('sl-SI');
200
+ *
201
+ * // Check loading state
202
+ * if (locale.isLoading()) {
203
+ * // Show spinner
204
+ * }
205
+ * ```
206
+ */
207
+ function injectDynamicLocale() {
208
+ const store = inject(TranslationStore);
209
+ const source = computed(() => store.locale());
210
+ const set = (value) => {
211
+ if (value === untracked(source) ||
212
+ !store.hasLocaleLoaders(value) ||
213
+ untracked(store.loadQueue).includes(value))
214
+ return;
215
+ store.loadQueue.update((q) => [...q, value]);
216
+ };
217
+ source.set = set;
218
+ source.update = (updater) => {
219
+ const next = updater(untracked(source));
220
+ source.set(next);
221
+ };
222
+ source.asReadonly = () => source;
223
+ source.isLoading = store.dynamicLocaleLoader.isLoading;
224
+ return source;
225
+ }
123
226
 
124
227
  function createEqualsRecord(keys = []) {
125
228
  let keyMatcher;
@@ -149,7 +252,7 @@ function addSignalFn(fn, store) {
149
252
  const variables = args[0];
150
253
  const stringKey = key;
151
254
  const flatPath = replaceWithDelim(stringKey);
152
- const varsFn = variables === undefined ? () => undefined : variables;
255
+ const varsFn = variables ?? (() => undefined);
153
256
  const varsSignal = isSignal(varsFn)
154
257
  ? varsFn
155
258
  : computed(varsFn, {
@@ -174,8 +277,8 @@ function registerNamespace(defaultTranslation, other) {
174
277
  };
175
278
  let defaultTranslationLoaded = false;
176
279
  const resolver = async () => {
177
- const locale = inject(LOCALE_ID);
178
280
  const store = inject(TranslationStore);
281
+ const locale = untracked(store.locale);
179
282
  const tPromise = other[locale];
180
283
  const promise = tPromise ?? defaultTranslation;
181
284
  if (!promise && isDevMode()) {
@@ -190,9 +293,10 @@ function registerNamespace(defaultTranslation, other) {
190
293
  isDevMode()) {
191
294
  return console.warn(`Expected locale to be ${locale} but got ${translation.locale}`);
192
295
  }
296
+ store.registerOnDemandLoaders(translation.namespace, other);
193
297
  store.register(translation.namespace, {
194
298
  [locale]: translation.flat,
195
- }, locale);
299
+ });
196
300
  if (promise === defaultTranslation) {
197
301
  defaultTranslationLoaded = true;
198
302
  }
@@ -248,7 +352,11 @@ class Translate {
248
352
  const translation = computed(() => this.t(key(), args()), ...(ngDevMode ? [{ debugName: "translation" }] : []));
249
353
  const renderer = inject(Renderer2);
250
354
  const el = inject(ElementRef);
251
- effect(() => renderer.setProperty(el.nativeElement, 'textContent', translation()));
355
+ afterRenderEffect({
356
+ write: () => {
357
+ renderer.setProperty(el.nativeElement, 'textContent', translation());
358
+ },
359
+ });
252
360
  }
253
361
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: Translate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
254
362
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.1", type: Translate, isStandalone: true, inputs: { translate: { classPropertyName: "translate", publicName: "translate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
@@ -258,9 +366,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
258
366
  }], ctorParameters: () => [] });
259
367
 
260
368
  class Translator {
261
- t = createT(inject(TranslationStore));
369
+ store = inject(TranslationStore);
370
+ t = createT(this.store);
371
+ constructor() {
372
+ const cdr = inject(ChangeDetectorRef);
373
+ effect(() => {
374
+ this.store.locale();
375
+ cdr.markForCheck();
376
+ });
377
+ }
262
378
  transform(key, ...args) {
263
- return this.t(key, ...args);
379
+ const actualArgs = args.filter((a) => typeof a === 'object');
380
+ return this.t(key, ...actualArgs);
264
381
  }
265
382
  }
266
383
 
@@ -268,5 +385,5 @@ class Translator {
268
385
  * Generated bundle index. Do not edit.
269
386
  */
270
387
 
271
- export { Translate, Translator, compileTranslation, createNamespace, injectIntl, provideIntlConfig, registerNamespace };
388
+ export { Translate, Translator, compileTranslation, createNamespace, injectDynamicLocale, injectIntl, provideIntlConfig, registerNamespace };
272
389
  //# sourceMappingURL=mmstack-translate.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mmstack-translate.mjs","sources":["../tmp-esm2022/lib/delim.js","../tmp-esm2022/lib/compile.js","../tmp-esm2022/lib/create-namespace.js","../tmp-esm2022/lib/translation-store.js","../tmp-esm2022/lib/register-namespace.js","../tmp-esm2022/lib/translate.js","../tmp-esm2022/lib/translator.js","../tmp-esm2022/mmstack-translate.js"],"sourcesContent":["const KEY_DELIM = '::MMT_DELIM::';\nexport function prependDelim(prefix, key) {\n return `${prefix}${KEY_DELIM}${key}`;\n}\nexport function replaceWithDelim(str, repl = '.') {\n return str.replaceAll(repl, KEY_DELIM);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90cmFuc2xhdGUvc3JjL2xpYi9kZWxpbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFFbEMsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFjLEVBQUUsR0FBVztJQUN0RCxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFJLEdBQUcsR0FBRztJQUN0RCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBLRVlfREVMSU0gPSAnOjpNTVRfREVMSU06Oic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJlcGVuZERlbGltKHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGAke3ByZWZpeH0ke0tFWV9ERUxJTX0ke2tleX1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVdpdGhEZWxpbShzdHI6IHN0cmluZywgcmVwbCA9ICcuJyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHJlcGwsIEtFWV9ERUxJTSk7XHJcbn1cclxuIl19","import { prependDelim } from './delim';\nconst INTERNAL_SYMBOL = Symbol.for('mmstack-translate-internal');\nfunction isTranslationObject(t) {\n return typeof t === 'object' && t !== null;\n}\nfunction flattenTranslation(obj) {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (typeof value === 'string') {\n acc[key] = value;\n }\n else if (isTranslationObject(value)) {\n Object.entries(flattenTranslation(value)).forEach(([nestedKey, nestedValue]) => {\n acc[prependDelim(key, nestedKey)] = nestedValue;\n });\n }\n return acc;\n }, {});\n}\nexport function compileTranslation(translation, ns, locale) {\n return {\n locale,\n flat: flattenTranslation(translation),\n namespace: ns,\n [INTERNAL_SYMBOL]: {\n shape: {},\n map: {},\n },\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RyYW5zbGF0ZS9zcmMvbGliL2NvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU92QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUF5Q2pFLFNBQVMsbUJBQW1CLENBQUMsQ0FBVTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFtQyxHQUFNO0lBQ2xFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQy9CLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDcEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFO2dCQUMzQixHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUNsRCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxFQUE0QixDQUM3QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FLaEMsV0FBYyxFQUNkLEVBQU8sRUFDUCxNQUFnQjtJQUtoQixPQUFPO1FBQ0wsTUFBTTtRQUNOLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7UUFDckMsU0FBUyxFQUFFLEVBQUU7UUFDYixDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ2pCLEtBQUssRUFBRSxFQUFZO1lBQ25CLEdBQUcsRUFBRSxFQUFVO1NBQ2hCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwZW5kRGVsaW0gfSBmcm9tICcuL2RlbGltJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIGluZmVyVHJhbnNsYXRpb25QYXJhbU1hcCxcclxuICBpbmZlclRyYW5zbGF0aW9uU2hhcGUsXHJcbn0gZnJvbSAnLi9wYXJhbWV0ZXJpemUudHlwZSc7XHJcbmltcG9ydCB0eXBlIHsgVW5rbm93blN0cmluZ0tleU9iamVjdCB9IGZyb20gJy4vc3RyaW5nLWtleS1vYmplY3QudHlwZSc7XHJcblxyXG5jb25zdCBJTlRFUk5BTF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdtbXN0YWNrLXRyYW5zbGF0ZS1pbnRlcm5hbCcpO1xyXG5cclxudHlwZSBJbnRlcm5hbFN5bWJvbCA9IHR5cGVvZiBJTlRFUk5BTF9TWU1CT0w7XHJcblxyXG5leHBvcnQgdHlwZSBDb21waWxlZFRyYW5zbGF0aW9uPFxyXG4gIFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gIFROUyBleHRlbmRzIHN0cmluZyxcclxuICBUTG9jYWxlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxyXG4+ID0ge1xyXG4gIGZsYXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgbG9jYWxlPzogVExvY2FsZTtcclxuICBuYW1lc3BhY2U6IFROUztcclxuICBbSU5URVJOQUxfU1lNQk9MXToge1xyXG4gICAgc2hhcGU6IGluZmVyVHJhbnNsYXRpb25TaGFwZTxUPjtcclxuICAgIG1hcDogaW5mZXJUcmFuc2xhdGlvblBhcmFtTWFwPFROUywgVD47XHJcbiAgfTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIG1lcmdlVHJhbnNsYXRpb25NYXBzPFxyXG4gIFRNYWluIGV4dGVuZHMgQ29tcGlsZWRUcmFuc2xhdGlvbjxVbmtub3duU3RyaW5nS2V5T2JqZWN0LCBzdHJpbmc+LFxyXG4gIFRPdGhlciBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPiA9IE9taXQ8VE1haW4sIEludGVybmFsU3ltYm9sPiAmIHtcclxuICBbSU5URVJOQUxfU1lNQk9MXToge1xyXG4gICAgc2hhcGU6IGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvblNoYXBlPFRNYWluPjtcclxuICAgIG1hcDogaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwPFRPdGhlcj4gJlxyXG4gICAgICBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VE1haW4+O1xyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25OYW1lc3BhY2U8XHJcbiAgVCBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPiA9IFRbJ25hbWVzcGFjZSddO1xyXG5cclxuZXhwb3J0IHR5cGUgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uU2hhcGU8XHJcbiAgVCBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPiA9IFRbSW50ZXJuYWxTeW1ib2xdWydzaGFwZSddO1xyXG5cclxuZXhwb3J0IHR5cGUgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwPFxyXG4gIFQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFVua25vd25TdHJpbmdLZXlPYmplY3QsIHN0cmluZz4sXHJcbj4gPSBUW0ludGVybmFsU3ltYm9sXVsnbWFwJ107XHJcblxyXG5mdW5jdGlvbiBpc1RyYW5zbGF0aW9uT2JqZWN0KHQ6IHVua25vd24pOiB0IGlzIFVua25vd25TdHJpbmdLZXlPYmplY3Qge1xyXG4gIHJldHVybiB0eXBlb2YgdCA9PT0gJ29iamVjdCcgJiYgdCAhPT0gbnVsbDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmxhdHRlblRyYW5zbGF0aW9uPFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0PihvYmo6IFQpIHtcclxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoXHJcbiAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzVHJhbnNsYXRpb25PYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZmxhdHRlblRyYW5zbGF0aW9uKHZhbHVlKSkuZm9yRWFjaChcclxuICAgICAgICAgIChbbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgYWNjW3ByZXBlbmREZWxpbShrZXksIG5lc3RlZEtleSldID0gbmVzdGVkVmFsdWU7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LFxyXG4gICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVRyYW5zbGF0aW9uPFxyXG4gIFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gIFROUyBleHRlbmRzIHN0cmluZyxcclxuICBUTG9jYWxlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxyXG4+KFxyXG4gIHRyYW5zbGF0aW9uOiBULFxyXG4gIG5zOiBUTlMsXHJcbiAgbG9jYWxlPzogVExvY2FsZSxcclxuKTogQ29tcGlsZWRUcmFuc2xhdGlvbjxULCBUTlMsIFRMb2NhbGU+IHtcclxuICB0eXBlICRTaGFwZSA9IGluZmVyVHJhbnNsYXRpb25TaGFwZTxUPjtcclxuICB0eXBlICRNYXAgPSBpbmZlclRyYW5zbGF0aW9uUGFyYW1NYXA8VE5TLCBUPjtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGxvY2FsZSxcclxuICAgIGZsYXQ6IGZsYXR0ZW5UcmFuc2xhdGlvbih0cmFuc2xhdGlvbiksXHJcbiAgICBuYW1lc3BhY2U6IG5zLFxyXG4gICAgW0lOVEVSTkFMX1NZTUJPTF06IHtcclxuICAgICAgc2hhcGU6IHt9IGFzICRTaGFwZSxcclxuICAgICAgbWFwOiB7fSBhcyAkTWFwLFxyXG4gICAgfSxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { compileTranslation, } from './compile';\nexport function createNamespace(ns, translation) {\n const compiled = compileTranslation(translation, ns);\n const namespace = {\n translation: compileTranslation(translation, ns),\n createTranslation: (locale, translation) => {\n return compileTranslation(translation, ns, locale);\n },\n createMergedNamespace: (otherNs, otherTranslation) => {\n return createNamespace(otherNs, otherTranslation);\n },\n };\n return namespace;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5hbWVzcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RyYW5zbGF0ZS9zcmMvbGliL2NyZWF0ZS1uYW1lc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixHQUduQixNQUFNLFdBQVcsQ0FBQztBQTJCbkIsTUFBTSxVQUFVLGVBQWUsQ0FHN0IsRUFBTyxFQUFFLFdBQWM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQVMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBSzdELE1BQU0sU0FBUyxHQUFpRDtRQUM5RCxXQUFXLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxpQkFBaUIsRUFBRSxDQUNqQixNQUFlLEVBQ2YsV0FBbUIsRUFDbkIsRUFBRTtZQUNGLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QscUJBQXFCLEVBQUUsQ0FRckIsT0FBaUIsRUFDakIsZ0JBQXdCLEVBQ3hCLEVBQUU7WUFDRixPQUFPLGVBQWUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBSTdCLENBQUM7UUFDdEIsQ0FBQztLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21waWxlZFRyYW5zbGF0aW9uLFxyXG4gIGNvbXBpbGVUcmFuc2xhdGlvbixcclxuICBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25TaGFwZSxcclxuICBtZXJnZVRyYW5zbGF0aW9uTWFwcyxcclxufSBmcm9tICcuL2NvbXBpbGUnO1xyXG5pbXBvcnQgeyBVbmtub3duU3RyaW5nS2V5T2JqZWN0IH0gZnJvbSAnLi9zdHJpbmcta2V5LW9iamVjdC50eXBlJztcclxuXHJcbnR5cGUgVHJhbnNsYXRpb25OYW1lc3BhY2U8XHJcbiAgVE5TIGV4dGVuZHMgc3RyaW5nLFxyXG4gIFQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFVua25vd25TdHJpbmdLZXlPYmplY3QsIFROUz4sXHJcbiAgVFNoYXBlIGV4dGVuZHMgVW5rbm93blN0cmluZ0tleU9iamVjdCxcclxuPiA9IHtcclxuICB0cmFuc2xhdGlvbjogVDtcclxuICBjcmVhdGVUcmFuc2xhdGlvbjogPFRMb2NhbGUgZXh0ZW5kcyBzdHJpbmc+KFxyXG4gICAgbG9jYWxlOiBUTG9jYWxlLFxyXG4gICAgdHJhbnNsYXRpb246IFRTaGFwZSxcclxuICApID0+IENvbXBpbGVkVHJhbnNsYXRpb248VFNoYXBlLCBUTlMsIFRMb2NhbGU+O1xyXG4gIGNyZWF0ZU1lcmdlZE5hbWVzcGFjZTogPFxyXG4gICAgVE90aGVyTlMgZXh0ZW5kcyBzdHJpbmcsXHJcbiAgICBjb25zdCBUT3RoZXIgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gICAgVE90aGVyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFRPdGhlciwgVE90aGVyTlM+LFxyXG4gID4oXHJcbiAgICBuczogVE90aGVyTlMsXHJcbiAgICB0cmFuc2xhdGlvbjogVE90aGVyLFxyXG4gICkgPT4gVHJhbnNsYXRpb25OYW1lc3BhY2U8XHJcbiAgICBUT3RoZXJOUyxcclxuICAgIG1lcmdlVHJhbnNsYXRpb25NYXBzPFRPdGhlckNvbXBpbGVkLCBUPixcclxuICAgIGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvblNoYXBlPFRPdGhlckNvbXBpbGVkPlxyXG4gID47XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmFtZXNwYWNlPFxyXG4gIGNvbnN0IFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gIFROUyBleHRlbmRzIHN0cmluZyxcclxuPihuczogVE5TLCB0cmFuc2xhdGlvbjogVCkge1xyXG4gIGNvbnN0IGNvbXBpbGVkID0gY29tcGlsZVRyYW5zbGF0aW9uPFQsIFROUz4odHJhbnNsYXRpb24sIG5zKTtcclxuXHJcbiAgdHlwZSBUQ29tcGlsZWQgPSB0eXBlb2YgY29tcGlsZWQ7XHJcbiAgdHlwZSBUU2hhcGUgPSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25TaGFwZTx0eXBlb2YgY29tcGlsZWQ+O1xyXG5cclxuICBjb25zdCBuYW1lc3BhY2U6IFRyYW5zbGF0aW9uTmFtZXNwYWNlPFROUywgVENvbXBpbGVkLCBUU2hhcGU+ID0ge1xyXG4gICAgdHJhbnNsYXRpb246IGNvbXBpbGVUcmFuc2xhdGlvbih0cmFuc2xhdGlvbiwgbnMpLFxyXG4gICAgY3JlYXRlVHJhbnNsYXRpb246IDxUTG9jYWxlIGV4dGVuZHMgc3RyaW5nPihcclxuICAgICAgbG9jYWxlOiBUTG9jYWxlLFxyXG4gICAgICB0cmFuc2xhdGlvbjogVFNoYXBlLFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIHJldHVybiBjb21waWxlVHJhbnNsYXRpb24odHJhbnNsYXRpb24sIG5zLCBsb2NhbGUpO1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZU1lcmdlZE5hbWVzcGFjZTogPFxyXG4gICAgICBUT3RoZXIgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gICAgICBUT3RoZXJOUyBleHRlbmRzIHN0cmluZyxcclxuICAgICAgVE90aGVyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFxyXG4gICAgICAgIFRPdGhlcixcclxuICAgICAgICBUT3RoZXJOU1xyXG4gICAgICA+ID0gQ29tcGlsZWRUcmFuc2xhdGlvbjxUT3RoZXIsIFRPdGhlck5TPixcclxuICAgID4oXHJcbiAgICAgIG90aGVyTnM6IFRPdGhlck5TLFxyXG4gICAgICBvdGhlclRyYW5zbGF0aW9uOiBUT3RoZXIsXHJcbiAgICApID0+IHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVzcGFjZShvdGhlck5zLCBvdGhlclRyYW5zbGF0aW9uKSBhcyBUcmFuc2xhdGlvbk5hbWVzcGFjZTxcclxuICAgICAgICBUT3RoZXJOUyxcclxuICAgICAgICBtZXJnZVRyYW5zbGF0aW9uTWFwczxUT3RoZXJDb21waWxlZCwgVENvbXBpbGVkPixcclxuICAgICAgICBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25TaGFwZTxUT3RoZXJDb21waWxlZD5cclxuICAgICAgPiBhcyB1bmtub3duIGFzIGFueTtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIG5hbWVzcGFjZTtcclxufVxyXG4iXX0=","import { computed, inject, Injectable, InjectionToken, LOCALE_ID, signal, } from '@angular/core';\nimport { createIntl, createIntlCache } from '@formatjs/intl';\nimport { prependDelim } from './delim';\nimport * as i0 from \"@angular/core\";\nconst CONFIG_TOKEN = new InjectionToken('mmstack-intl-config');\nexport function provideIntlConfig(config) {\n return {\n useValue: config,\n provide: CONFIG_TOKEN,\n };\n}\nexport function injectIntlConfig() {\n return inject(CONFIG_TOKEN, { optional: true }) ?? undefined;\n}\nexport function injectDefaultLocale() {\n return injectIntlConfig()?.defaultLocale ?? 'en-US';\n}\nexport class TranslationStore {\n cache = createIntlCache();\n config = injectIntlConfig();\n locale = signal(inject(LOCALE_ID), ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n defaultLocale = injectDefaultLocale();\n translations = signal({\n [this.defaultLocale]: {},\n }, ...(ngDevMode ? [{ debugName: \"translations\" }] : []));\n nonMessageConfig = computed(() => ({\n ...this.config,\n locale: this.locale(),\n }), ...(ngDevMode ? [{ debugName: \"nonMessageConfig\" }] : []));\n messages = computed(() => this.translations()[this.locale()] ??\n this.translations()[this.defaultLocale] ??\n {}, ...(ngDevMode ? [{ debugName: \"messages\" }] : []));\n intl = computed(() => createIntl({\n ...this.nonMessageConfig(),\n messages: this.messages(),\n }, this.cache), ...(ngDevMode ? [{ debugName: \"intl\" }] : []));\n formatMessage(key, values) {\n const message = this.translations()[this.locale()]?.[key] ?? '';\n if (!message)\n return '';\n return this.intl().formatMessage({ id: key, defaultMessage: message }, values);\n }\n register(namespace, flat, locale) {\n this.locale.set(locale);\n this.translations.update((cur) => {\n return Object.entries(flat).reduce((acc, [locale, translation]) => {\n const localeTranslation = acc[locale] ?? {};\n const withNS = Object.entries(translation ?? {}).reduce((acc, [key, value]) => {\n acc[prependDelim(namespace, key)] = value;\n return acc;\n }, {});\n acc[locale] = {\n ...localeTranslation,\n ...withNS,\n };\n return acc;\n }, { ...cur });\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: TranslationStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: TranslationStore, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: TranslationStore, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\nexport function injectIntl() {\n return inject(TranslationStore).intl;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90cmFuc2xhdGUvc3JjL2xpYi90cmFuc2xhdGlvbi1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsY0FBYyxFQUNkLFNBQVMsRUFFVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUV2QyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FFckMscUJBQXFCLENBQUMsQ0FBQztBQUV6QixNQUFNLFVBQVUsaUJBQWlCLENBQy9CLE1BQStDO0lBRS9DLE9BQU87UUFDTCxRQUFRLEVBQUUsTUFBTTtRQUNoQixPQUFPLEVBQUUsWUFBWTtLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDO0FBQy9ELENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sZ0JBQWdCLEVBQUUsRUFBRSxhQUFhLElBQUksT0FBTyxDQUFDO0FBQ3RELENBQUM7QUFLRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1YsS0FBSyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBQzFCLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrREFBQyxDQUFDO0lBQ25DLGFBQWEsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RDLFlBQVksR0FBRyxNQUFNLENBRXBDO1FB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ZSxcclxuICBJbmplY3Rpb25Ub2tlbixcclxuICBMT0NBTEVfSUQsXHJcbiAgUHJvdmlkZXIsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjcmVhdGVJbnRsLCBjcmVhdGVJbnRsQ2FjaGUsIEludGxDb25maWcgfSBmcm9tICdAZm9ybWF0anMvaW50bCc7XHJcbmltcG9ydCB7IHByZXBlbmREZWxpbSB9IGZyb20gJy4vZGVsaW0nO1xyXG5cclxuY29uc3QgQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFxyXG4gIE9taXQ8SW50bENvbmZpZywgJ2xvY2FsZScgfCAnbWVzc2FnZXMnPlxyXG4+KCdtbXN0YWNrLWludGwtY29uZmlnJyk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUludGxDb25maWcoXHJcbiAgY29uZmlnOiBPbWl0PEludGxDb25maWcsICdsb2NhbGUnIHwgJ21lc3NhZ2VzJz4sXHJcbik6IFByb3ZpZGVyIHtcclxuICByZXR1cm4ge1xyXG4gICAgdXNlVmFsdWU6IGNvbmZpZyxcclxuICAgIHByb3ZpZGU6IENPTkZJR19UT0tFTixcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW50bENvbmZpZygpIHtcclxuICByZXR1cm4gaW5qZWN0KENPTkZJR19UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REZWZhdWx0TG9jYWxlKCkge1xyXG4gIHJldHVybiBpbmplY3RJbnRsQ29uZmlnKCk/LmRlZmF1bHRMb2NhbGUgPz8gJ2VuLVVTJztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU3RvcmUge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBjcmVhdGVJbnRsQ2FjaGUoKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdEludGxDb25maWcoKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZSA9IHNpZ25hbChpbmplY3QoTE9DQUxFX0lEKSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TG9jYWxlID0gaW5qZWN0RGVmYXVsdExvY2FsZSgpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25zID0gc2lnbmFsPFxyXG4gICAgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj5cclxuICA+KHtcclxuICAgIFt0aGlzLmRlZmF1bHRMb2NhbGVdOiB7fSxcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBub25NZXNzYWdlQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4gKHtcclxuICAgIC4uLnRoaXMuY29uZmlnLFxyXG4gICAgbG9jYWxlOiB0aGlzLmxvY2FsZSgpLFxyXG4gIH0pKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlcyA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgdGhpcy50cmFuc2xhdGlvbnMoKVt0aGlzLmxvY2FsZSgpXSA/P1xyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9ucygpW3RoaXMuZGVmYXVsdExvY2FsZV0gPz9cclxuICAgICAge30sXHJcbiAgKTtcclxuXHJcbiAgcmVhZG9ubHkgaW50bCA9IGNvbXB1dGVkKCgpID0+XHJcbiAgICBjcmVhdGVJbnRsKFxyXG4gICAgICB7XHJcbiAgICAgICAgLi4udGhpcy5ub25NZXNzYWdlQ29uZmlnKCksXHJcbiAgICAgICAgbWVzc2FnZXM6IHRoaXMubWVzc2FnZXMoKSxcclxuICAgICAgfSxcclxuICAgICAgdGhpcy5jYWNoZSxcclxuICAgICksXHJcbiAgKTtcclxuXHJcbiAgZm9ybWF0TWVzc2FnZShrZXk6IHN0cmluZywgdmFsdWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPikge1xyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRpb25zKClbdGhpcy5sb2NhbGUoKV0/LltrZXldID8/ICcnO1xyXG5cclxuICAgIGlmICghbWVzc2FnZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmludGwoKS5mb3JtYXRNZXNzYWdlKFxyXG4gICAgICB7IGlkOiBrZXksIGRlZmF1bHRNZXNzYWdlOiBtZXNzYWdlIH0sXHJcbiAgICAgIHZhbHVlcyxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlcihcclxuICAgIG5hbWVzcGFjZTogc3RyaW5nLFxyXG4gICAgZmxhdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4sXHJcbiAgICBsb2NhbGU6IHN0cmluZyxcclxuICApIHtcclxuICAgIHRoaXMubG9jYWxlLnNldChsb2NhbGUpO1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbnMudXBkYXRlKChjdXIpID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGZsYXQpLnJlZHVjZShcclxuICAgICAgICAoYWNjLCBbbG9jYWxlLCB0cmFuc2xhdGlvbl0pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxvY2FsZVRyYW5zbGF0aW9uID0gYWNjW2xvY2FsZV0gPz8ge307XHJcblxyXG4gICAgICAgICAgY29uc3Qgd2l0aE5TID0gT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb24gPz8ge30pLnJlZHVjZShcclxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgYWNjW3ByZXBlbmREZWxpbShuYW1lc3BhY2UsIGtleSldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgYWNjW2xvY2FsZV0gPSB7XHJcbiAgICAgICAgICAgIC4uLmxvY2FsZVRyYW5zbGF0aW9uLFxyXG4gICAgICAgICAgICAuLi53aXRoTlMsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IC4uLmN1ciB9LFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW50bCgpIHtcclxuICByZXR1cm4gaW5qZWN0KFRyYW5zbGF0aW9uU3RvcmUpLmludGw7XHJcbn1cclxuIl19","import { computed, inject, isDevMode, isSignal, LOCALE_ID, } from '@angular/core';\nimport { replaceWithDelim } from './delim';\nimport { TranslationStore } from './translation-store';\nfunction createEqualsRecord(keys = []) {\n let keyMatcher;\n if (keys.length === 0) {\n keyMatcher = () => true;\n }\n else if (keys.length === 1) {\n const key = keys[0];\n keyMatcher = (a, b) => a[key] === b[key];\n }\n else {\n keyMatcher = (a, b) => {\n return keys.every((k) => a[k] === b[k]);\n };\n }\n return (a, b) => {\n if (!a && !b)\n return true;\n if (!a || !b)\n return false;\n return keyMatcher(a, b);\n };\n}\nfunction addSignalFn(fn, store) {\n const withSig = fn;\n const asSignal = (key, ...args) => {\n const variables = args[0];\n const stringKey = key;\n const flatPath = replaceWithDelim(stringKey);\n const varsFn = variables === undefined ? () => undefined : variables;\n const varsSignal = isSignal(varsFn)\n ? varsFn\n : computed(varsFn, {\n equal: createEqualsRecord(Object.keys(varsFn() ?? {})),\n });\n return computed(() => store.formatMessage(flatPath, varsSignal()));\n };\n withSig.asSignal = asSignal;\n return withSig;\n}\nexport function createT(store) {\n return (key, ...args) => {\n const variables = args[0];\n const stringKey = key;\n return store.formatMessage(replaceWithDelim(stringKey), variables);\n };\n}\nexport function registerNamespace(defaultTranslation, other) {\n const injectT = () => {\n const store = inject(TranslationStore);\n return addSignalFn(createT(store), store);\n };\n let defaultTranslationLoaded = false;\n const resolver = async () => {\n const locale = inject(LOCALE_ID);\n const store = inject(TranslationStore);\n const tPromise = other[locale];\n const promise = tPromise ?? defaultTranslation;\n if (!promise && isDevMode()) {\n return console.warn(`No translation found for locale: ${locale}`);\n }\n if (promise === defaultTranslation && defaultTranslationLoaded)\n return;\n try {\n const translation = await promise();\n if (promise !== defaultTranslation &&\n translation.locale !== locale &&\n isDevMode()) {\n return console.warn(`Expected locale to be ${locale} but got ${translation.locale}`);\n }\n store.register(translation.namespace, {\n [locale]: translation.flat,\n }, locale);\n if (promise === defaultTranslation) {\n defaultTranslationLoaded = true;\n }\n }\n catch {\n if (isDevMode()) {\n console.warn(`Failed to load translation for locale: ${locale}`);\n }\n }\n };\n return {\n injectNamespaceT: injectT,\n resolveNamespaceTranslation: resolver,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItbmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdHJhbnNsYXRlL3NyYy9saWIvcmVnaXN0ZXItbmFtZXNwYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxTQUFTLGtCQUFrQixDQUE0QixPQUFvQixFQUFFO0lBQzNFLElBQUksVUFBbUMsQ0FBQztJQUV4QyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO1NBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7U0FBTSxDQUFDO1FBQ04sVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBSyxF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QUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sT0FBTyxFQUFFLENBQUM7WUFFcEMsSUFDRSxPQUFPLEtBQUssa0JBQWtCO2dCQUM5QixXQUFXLENBQUMsTUFBTSxLQUFLLE1BQU07Z0JBQzdCLFNBQVMsRUFBRSxFQUNYLENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQix5QkFBeUIsTUFBTSxZQUFZLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FDaEUsQ0FBQztZQUNKLENBQUM7WUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLFdBQVcsQ0FBQyxTQUFTLEVBQ3JCO2dCQUNFLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUk7YUFDM0IsRUFDRCxNQUFNLENBQ1AsQ0FBQztZQUNGLElBQUksT0FBTyxLQUFLLGtCQUFrQixFQUFFLENBQUM7Z0JBQ25DLHdCQUF3QixHQUFHLElBQUksQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxPQUFPO1FBQ3pCLDJCQUEyQixFQUFFLFFBQVE7S0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGNvbXB1dGVkLFxyXG4gIGluamVjdCxcclxuICBpc0Rldk1vZGUsXHJcbiAgaXNTaWduYWwsXHJcbiAgTE9DQUxFX0lELFxyXG4gIFNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcGlsZWRUcmFuc2xhdGlvbiwgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwIH0gZnJvbSAnLi9jb21waWxlJztcclxuaW1wb3J0IHsgcmVwbGFjZVdpdGhEZWxpbSB9IGZyb20gJy4vZGVsaW0nO1xyXG5pbXBvcnQgeyBVbmtub3duU3RyaW5nS2V5T2JqZWN0IH0gZnJvbSAnLi9zdHJpbmcta2V5LW9iamVjdC50eXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdG9yZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tc3RvcmUnO1xyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxudHlwZSBBbnlTdHJpbmdSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlRXF1YWxzUmVjb3JkPFQgZXh0ZW5kcyBBbnlTdHJpbmdSZWNvcmQ+KGtleXM6IChrZXlvZiBUKVtdID0gW10pIHtcclxuICBsZXQga2V5TWF0Y2hlcjogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW47XHJcblxyXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAga2V5TWF0Y2hlciA9ICgpID0+IHRydWU7XHJcbiAgfSBlbHNlIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgY29uc3Qga2V5ID0ga2V5c1swXTtcclxuICAgIGtleU1hdGNoZXIgPSAoYSwgYikgPT4gYVtrZXldID09PSBiW2tleV07XHJcbiAgfSBlbHNlIHtcclxuICAgIGtleU1hdGNoZXIgPSAoYSwgYikgPT4ge1xyXG4gICAgICByZXR1cm4ga2V5cy5ldmVyeSgoaykgPT4gYVtrXSA9PT0gYltrXSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIChhPzogVCwgYj86IFQpOiBib29sZWFuID0+IHtcclxuICAgIGlmICghYSAmJiAhYikgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAoIWEgfHwgIWIpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBrZXlNYXRjaGVyKGEsIGIpO1xyXG4gIH07XHJcbn1cclxuXHJcbnR5cGUgVEZ1bmN0aW9uPFRNYXAgZXh0ZW5kcyBBbnlTdHJpbmdSZWNvcmQ+ID0gPFxyXG4gIFRLZXkgZXh0ZW5kcyBrZXlvZiBUTWFwICYgc3RyaW5nLFxyXG4+KFxyXG4gIGtleTogVEtleSxcclxuICAuLi5hcmdzOiBUTWFwW1RLZXldIGV4dGVuZHMgdm9pZCA/IFtdIDogW1RNYXBbVEtleV1dXHJcbikgPT4gc3RyaW5nO1xyXG5cclxudHlwZSBTaWduYWxURnVuY3Rpb248VE1hcCBleHRlbmRzIEFueVN0cmluZ1JlY29yZD4gPSA8XHJcbiAgVEtleSBleHRlbmRzIGtleW9mIFRNYXAgJiBzdHJpbmcsXHJcbj4oXHJcbiAga2V5OiBUS2V5LFxyXG4gIC4uLmFyZ3M6IFRNYXBbVEtleV0gZXh0ZW5kcyB2b2lkID8gW10gOiBbKCkgPT4gVE1hcFtUS2V5XV1cclxuKSA9PiBTaWduYWw8c3RyaW5nPjtcclxuXHJcbnR5cGUgVEZ1bmN0aW9uV2l0aFNpZ25hbENvbnN0cnVjdG9yPFxyXG4gIFRNYXAgZXh0ZW5kcyBBbnlTdHJpbmdSZWNvcmQsXHJcbiAgVEZOIGV4dGVuZHMgVEZ1bmN0aW9uPFRNYXA+LFxyXG4+ID0gVEZOICYge1xyXG4gIGFzU2lnbmFsOiBTaWduYWxURnVuY3Rpb248VE1hcD47XHJcbn07XHJcblxyXG5mdW5jdGlvbiBhZGRTaWduYWxGbjxUTWFwIGV4dGVuZHMgQW55U3RyaW5nUmVjb3JkLCBURm4gZXh0ZW5kcyBURnVuY3Rpb248VE1hcD4+KFxyXG4gIGZuOiBURm4sXHJcbiAgc3RvcmU6IFRyYW5zbGF0aW9uU3RvcmUsXHJcbik6IFRGdW5jdGlvbldpdGhTaWduYWxDb25zdHJ1Y3RvcjxUTWFwLCBURm4+IHtcclxuICBjb25zdCB3aXRoU2lnID0gZm4gYXMgVEZ1bmN0aW9uV2l0aFNpZ25hbENvbnN0cnVjdG9yPFRNYXAsIFRGbj47XHJcblxyXG4gIGNvbnN0IGFzU2lnbmFsID0gPFRLZXkgZXh0ZW5kcyBrZXlvZiBUTWFwICYgc3RyaW5nPihcclxuICAgIGtleTogVEtleSxcclxuICAgIC4uLmFyZ3M6IFRNYXBbVEtleV0gZXh0ZW5kcyB2b2lkID8gW10gOiBbKCkgPT4gVE1hcFtUS2V5XV1cclxuICApOiBTaWduYWw8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBhcmdzWzBdIGFzICgpID0+IEFueVN0cmluZ1JlY29yZCB8IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IHN0cmluZ0tleSA9IGtleSBhcyBzdHJpbmc7XHJcblxyXG4gICAgY29uc3QgZmxhdFBhdGggPSByZXBsYWNlV2l0aERlbGltKHN0cmluZ0tleSk7XHJcblxyXG4gICAgY29uc3QgdmFyc0ZuID0gdmFyaWFibGVzID09PSB1bmRlZmluZWQgPyAoKSA9PiB1bmRlZmluZWQgOiB2YXJpYWJsZXM7XHJcbiAgICBjb25zdCB2YXJzU2lnbmFsID0gaXNTaWduYWwodmFyc0ZuKVxyXG4gICAgICA/IHZhcnNGblxyXG4gICAgICA6IGNvbXB1dGVkKHZhcnNGbiwge1xyXG4gICAgICAgICAgZXF1YWw6IGNyZWF0ZUVxdWFsc1JlY29yZChPYmplY3Qua2V5cyh2YXJzRm4oKSA/PyB7fSkpLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBzdG9yZS5mb3JtYXRNZXNzYWdlKGZsYXRQYXRoLCB2YXJzU2lnbmFsKCkpKTtcclxuICB9O1xyXG5cclxuICB3aXRoU2lnLmFzU2lnbmFsID0gYXNTaWduYWw7XHJcblxyXG4gIHJldHVybiB3aXRoU2lnO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVDxUTWFwIGV4dGVuZHMgQW55U3RyaW5nUmVjb3JkPihcclxuICBzdG9yZTogVHJhbnNsYXRpb25TdG9yZSxcclxuKTogVEZ1bmN0aW9uPFRNYXA+IHtcclxuICByZXR1cm4gPFRLZXkgZXh0ZW5kcyBrZXlvZiBUTWFwICYgc3RyaW5nPihcclxuICAgIGtleTogVEtleSxcclxuICAgIC4uLmFyZ3M6IFRNYXBbVEtleV0gZXh0ZW5kcyB2b2lkID8gW10gOiBbVE1hcFtUS2V5XV1cclxuICApOiBzdHJpbmcgPT4ge1xyXG4gICAgY29uc3QgdmFyaWFibGVzID0gYXJnc1swXSBhcyBBbnlTdHJpbmdSZWNvcmQgfCB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBzdHJpbmdLZXkgPSBrZXkgYXMgc3RyaW5nO1xyXG5cclxuICAgIHJldHVybiBzdG9yZS5mb3JtYXRNZXNzYWdlKHJlcGxhY2VXaXRoRGVsaW0oc3RyaW5nS2V5KSwgdmFyaWFibGVzKTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJOYW1lc3BhY2U8XHJcbiAgVERlZmF1bHQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFVua25vd25TdHJpbmdLZXlPYmplY3QsIHN0cmluZz4sXHJcbiAgVE90aGVyIGV4dGVuZHMgQ29tcGlsZWRUcmFuc2xhdGlvbjxVbmtub3duU3RyaW5nS2V5T2JqZWN0LCBzdHJpbmc+LFxyXG4+KFxyXG4gIGRlZmF1bHRUcmFuc2xhdGlvbjogKCkgPT4gUHJvbWlzZTxURGVmYXVsdD4sXHJcbiAgb3RoZXI6IFJlY29yZDxzdHJpbmcsICgpID0+IFByb21pc2U8VE90aGVyPj4sXHJcbikge1xyXG4gIHR5cGUgJE1hcCA9IGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvbk1hcDxURGVmYXVsdD47XHJcbiAgdHlwZSAkQmFzZVRGTiA9IFRGdW5jdGlvbjwkTWFwPjtcclxuICB0eXBlICRURk4gPSBURnVuY3Rpb25XaXRoU2lnbmFsQ29uc3RydWN0b3I8JE1hcCwgJEJhc2VURk4+O1xyXG5cclxuICBjb25zdCBpbmplY3RUID0gKCk6ICRURk4gPT4ge1xyXG4gICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoVHJhbnNsYXRpb25TdG9yZSk7XHJcblxyXG4gICAgcmV0dXJuIGFkZFNpZ25hbEZuKGNyZWF0ZVQoc3RvcmUpLCBzdG9yZSk7XHJcbiAgfTtcclxuXHJcbiAgbGV0IGRlZmF1bHRUcmFuc2xhdGlvbkxvYWRlZCA9IGZhbHNlO1xyXG4gIGNvbnN0IHJlc29sdmVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XHJcbiAgICBjb25zdCBzdG9yZSA9IGluamVjdChUcmFuc2xhdGlvblN0b3JlKTtcclxuXHJcbiAgICBjb25zdCB0UHJvbWlzZSA9IG90aGVyW2xvY2FsZV0gYXMgKCgpID0+IFByb21pc2U8VE90aGVyPikgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgcHJvbWlzZSA9IHRQcm9taXNlID8/IGRlZmF1bHRUcmFuc2xhdGlvbjtcclxuICAgIGlmICghcHJvbWlzZSAmJiBpc0Rldk1vZGUoKSkge1xyXG4gICAgICByZXR1cm4gY29uc29sZS53YXJuKGBObyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbG9jYWxlOiAke2xvY2FsZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvbWlzZSA9PT0gZGVmYXVsdFRyYW5zbGF0aW9uICYmIGRlZmF1bHRUcmFuc2xhdGlvbkxvYWRlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gYXdhaXQgcHJvbWlzZSgpO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByb21pc2UgIT09IGRlZmF1bHRUcmFuc2xhdGlvbiAmJlxyXG4gICAgICAgIHRyYW5zbGF0aW9uLmxvY2FsZSAhPT0gbG9jYWxlICYmXHJcbiAgICAgICAgaXNEZXZNb2RlKClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBFeHBlY3RlZCBsb2NhbGUgdG8gYmUgJHtsb2NhbGV9IGJ1dCBnb3QgJHt0cmFuc2xhdGlvbi5sb2NhbGV9YCxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdG9yZS5yZWdpc3RlcihcclxuICAgICAgICB0cmFuc2xhdGlvbi5uYW1lc3BhY2UsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgW2xvY2FsZV06IHRyYW5zbGF0aW9uLmZsYXQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2NhbGUsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwcm9taXNlID09PSBkZWZhdWx0VHJhbnNsYXRpb24pIHtcclxuICAgICAgICBkZWZhdWx0VHJhbnNsYXRpb25Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gbG9hZCB0cmFuc2xhdGlvbiBmb3IgbG9jYWxlOiAke2xvY2FsZX1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpbmplY3ROYW1lc3BhY2VUOiBpbmplY3RULFxyXG4gICAgcmVzb2x2ZU5hbWVzcGFjZVRyYW5zbGF0aW9uOiByZXNvbHZlcixcclxuICB9O1xyXG59XHJcbiJdfQ==","import { computed, Directive, effect, ElementRef, inject, input, Renderer2, } from '@angular/core';\nimport { createT } from './register-namespace';\nimport { TranslationStore } from './translation-store';\nimport * as i0 from \"@angular/core\";\nexport class Translate {\n t = createT(inject(TranslationStore));\n translate = input.required(...(ngDevMode ? [{ debugName: \"translate\" }] : []));\n constructor() {\n const key = computed(() => {\n const vars = this.translate();\n return (Array.isArray(vars) ? vars[0] : vars);\n }, ...(ngDevMode ? [{ debugName: \"key\" }] : []));\n const args = computed(() => {\n const vars = this.translate();\n return (Array.isArray(vars) ? vars[1] : undefined);\n }, ...(ngDevMode ? [{ debugName: \"args\", equal: (a, b) => {\n if (a === undefined && b === undefined)\n return true;\n if (a === undefined || b === undefined)\n return false;\n const aObj = a;\n const keys = Object.keys(aObj);\n const bObj = b;\n if (!keys.length)\n return !Object.keys(bObj).length;\n return keys.every((key) => aObj[key] === bObj[key]);\n } }] : [{\n equal: (a, b) => {\n if (a === undefined && b === undefined)\n return true;\n if (a === undefined || b === undefined)\n return false;\n const aObj = a;\n const keys = Object.keys(aObj);\n const bObj = b;\n if (!keys.length)\n return !Object.keys(bObj).length;\n return keys.every((key) => aObj[key] === bObj[key]);\n },\n }]));\n const translation = computed(() => this.t(key(), args()), ...(ngDevMode ? [{ debugName: \"translation\" }] : []));\n const renderer = inject(Renderer2);\n const el = inject(ElementRef);\n effect(() => renderer.setProperty(el.nativeElement, 'textContent', translation()));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: Translate, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.1\", type: Translate, isStandalone: true, inputs: { translate: { classPropertyName: \"translate\", publicName: \"translate\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: Translate, decorators: [{\n type: Directive\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdHJhbnNsYXRlL3NyYy9saWIvdHJhbnNsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUd2RCxNQUFNLE9BQWdCLFNBQVM7SUFNWixDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFOUMsU0FBUyxHQUNoQixLQUFLLENBQUMsUUFBUSxvREFJWCxDQUFDO0lBRU47UUFDRSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQVMsQ0FBQztRQUN4RCxDQUFDLCtDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxRQUFRLENBQ25CLEdBQUcsRUFBRTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQWUsQ0FBQztRQUNuRSxDQUFDLHdDQUVDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDZCxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVM7d0JBQUUsT0FBTyxJQUFJLENBQUM7b0JBQ3BELElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUzt3QkFBRSxPQUFPLEtBQUssQ0FBQztvQkFFckQsTUFBTSxJQUFJLEdBQUcsQ0FBMkIsQ0FBQztvQkFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxJQUFJLEdBQUcsQ0FBMkIsQ0FBQztvQkFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO3dCQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFFbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELENBQUMsT0FaSDtnQkFDRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTO3dCQUFFLE9BQU8sSUFBSSxDQUFDO29CQUNwRCxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVM7d0JBQUUsT0FBTyxLQUFLLENBQUM7b0JBRXJELE1BQU0sSUFBSSxHQUFHLENBQTJCLENBQUM7b0JBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9CLE1BQU0sSUFBSSxHQUFHLENBQTJCLENBQUM7b0JBRXpDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTt3QkFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBRW5ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO2FBQ0YsR0FDRixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsdURBQUMsQ0FBQztRQUUxRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUV2RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQ1YsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUNyRSxDQUFDO0lBQ0osQ0FBQzt1R0FsRG1CLFNBQVM7MkZBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFEOUIsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgY29tcHV0ZWQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIGVmZmVjdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBSZW5kZXJlcjIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBpbGVkVHJhbnNsYXRpb24sIGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvbk1hcCB9IGZyb20gJy4vY29tcGlsZSc7XHJcbmltcG9ydCB7IGNyZWF0ZVQgfSBmcm9tICcuL3JlZ2lzdGVyLW5hbWVzcGFjZSc7XHJcbmltcG9ydCB7IFVua25vd25TdHJpbmdLZXlPYmplY3QgfSBmcm9tICcuL3N0cmluZy1rZXktb2JqZWN0LnR5cGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN0b3JlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi1zdG9yZSc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbGF0ZTxcclxuICBUSW5wdXQgZXh0ZW5kcyBzdHJpbmcsXHJcbiAgVCBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuICBUTWFwIGV4dGVuZHMgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwPFQ+ID0gaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwPFQ+LFxyXG4gIFRLZXkgZXh0ZW5kcyBUSW5wdXQgJiBrZXlvZiBUTWFwICYgc3RyaW5nID0gVElucHV0ICYga2V5b2YgVE1hcCAmIHN0cmluZyxcclxuPiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB0ID0gY3JlYXRlVChpbmplY3QoVHJhbnNsYXRpb25TdG9yZSkpO1xyXG5cclxuICByZWFkb25seSB0cmFuc2xhdGUgPVxyXG4gICAgaW5wdXQucmVxdWlyZWQ8XHJcbiAgICAgIFRNYXBbVEtleV0gZXh0ZW5kcyB2b2lkXHJcbiAgICAgICAgPyBUS2V5IHwgW2tleTogVEtleV1cclxuICAgICAgICA6IFtrZXk6IFRLZXksIHZhcnM6IFRNYXBbVEtleV1dXHJcbiAgICA+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3Qga2V5ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB2YXJzID0gdGhpcy50cmFuc2xhdGUoKTtcclxuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhcnMpID8gdmFyc1swXSA6IHZhcnMpIGFzIFRLZXk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhcmdzID0gY29tcHV0ZWQoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBjb25zdCB2YXJzID0gdGhpcy50cmFuc2xhdGUoKTtcclxuICAgICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFycykgPyB2YXJzWzFdIDogdW5kZWZpbmVkKSBhcyBUTWFwW1RLZXldO1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZXF1YWw6IChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGFPYmogPSBhIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYU9iaik7XHJcbiAgICAgICAgICBjb25zdCBiT2JqID0gYiBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG5cclxuICAgICAgICAgIGlmICgha2V5cy5sZW5ndGgpIHJldHVybiAhT2JqZWN0LmtleXMoYk9iaikubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIHJldHVybiBrZXlzLmV2ZXJ5KChrZXkpID0+IGFPYmpba2V5XSA9PT0gYk9ialtrZXldKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudChrZXkoKSwgYXJncygpKSk7XHJcblxyXG4gICAgY29uc3QgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICAgIGNvbnN0IGVsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT5cclxuICAgICAgcmVuZGVyZXIuc2V0UHJvcGVydHkoZWwubmF0aXZlRWxlbWVudCwgJ3RleHRDb250ZW50JywgdHJhbnNsYXRpb24oKSksXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=","import { inject } from '@angular/core';\nimport { createT } from './register-namespace';\nimport { TranslationStore } from './translation-store';\nexport class Translator {\n t = createT(inject(TranslationStore));\n transform(key, ...args) {\n return this.t(key, ...args);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RyYW5zbGF0ZS9zcmMvbGliL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxPQUFnQixVQUFVO0lBSWIsQ0FBQyxHQUFHLE9BQU8sQ0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRTdELFNBQVMsQ0FDUCxHQUFNLEVBQ04sR0FBRyxJQUEyQztRQUU5QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBpbGVkVHJhbnNsYXRpb24sIGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvbk1hcCB9IGZyb20gJy4vY29tcGlsZSc7XHJcbmltcG9ydCB7IGNyZWF0ZVQgfSBmcm9tICcuL3JlZ2lzdGVyLW5hbWVzcGFjZSc7XHJcbmltcG9ydCB7IFVua25vd25TdHJpbmdLZXlPYmplY3QgfSBmcm9tICcuL3N0cmluZy1rZXktb2JqZWN0LnR5cGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN0b3JlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi1zdG9yZSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNsYXRvcjxcclxuICBUIGV4dGVuZHMgQ29tcGlsZWRUcmFuc2xhdGlvbjxVbmtub3duU3RyaW5nS2V5T2JqZWN0LCBzdHJpbmc+LFxyXG4gIFRNYXAgZXh0ZW5kcyBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VD4gPSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VD4sXHJcbj4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdCA9IGNyZWF0ZVQ8VE1hcD4oaW5qZWN0KFRyYW5zbGF0aW9uU3RvcmUpKTtcclxuXHJcbiAgdHJhbnNmb3JtPEsgZXh0ZW5kcyBrZXlvZiBUTWFwICYgc3RyaW5nPihcclxuICAgIGtleTogSyxcclxuICAgIC4uLmFyZ3M6IFRNYXBbS10gZXh0ZW5kcyB2b2lkID8gW10gOiBbVE1hcFtLXV1cclxuICApOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudChrZXksIC4uLmFyZ3MpO1xyXG4gIH1cclxufVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW1zdGFjay10cmFuc2xhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy90cmFuc2xhdGUvc3JjL21tc3RhY2stdHJhbnNsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mmstack-translate.mjs","sources":["../tmp-esm2022/lib/delim.js","../tmp-esm2022/lib/compile.js","../tmp-esm2022/lib/create-namespace.js","../tmp-esm2022/lib/translation-store.js","../tmp-esm2022/lib/register-namespace.js","../tmp-esm2022/lib/translate.js","../tmp-esm2022/lib/translator.js","../tmp-esm2022/mmstack-translate.js"],"sourcesContent":["const KEY_DELIM = '::MMT_DELIM::';\nexport function prependDelim(prefix, key) {\n return `${prefix}${KEY_DELIM}${key}`;\n}\nexport function replaceWithDelim(str, repl = '.') {\n return str.replaceAll(repl, KEY_DELIM);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90cmFuc2xhdGUvc3JjL2xpYi9kZWxpbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFFbEMsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFjLEVBQUUsR0FBVztJQUN0RCxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFJLEdBQUcsR0FBRztJQUN0RCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBLRVlfREVMSU0gPSAnOjpNTVRfREVMSU06Oic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJlcGVuZERlbGltKHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGAke3ByZWZpeH0ke0tFWV9ERUxJTX0ke2tleX1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVdpdGhEZWxpbShzdHI6IHN0cmluZywgcmVwbCA9ICcuJyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHJlcGwsIEtFWV9ERUxJTSk7XHJcbn1cclxuIl19","import { prependDelim } from './delim';\nconst INTERNAL_SYMBOL = Symbol.for('mmstack-translate-internal');\nfunction isTranslationObject(t) {\n return typeof t === 'object' && t !== null;\n}\nfunction flattenTranslation(obj) {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (typeof value === 'string') {\n acc[key] = value;\n }\n else if (isTranslationObject(value)) {\n Object.entries(flattenTranslation(value)).forEach(([nestedKey, nestedValue]) => {\n acc[prependDelim(key, nestedKey)] = nestedValue;\n });\n }\n return acc;\n }, {});\n}\nexport function compileTranslation(translation, ns, locale) {\n return {\n locale,\n flat: flattenTranslation(translation),\n namespace: ns,\n [INTERNAL_SYMBOL]: {\n shape: {},\n map: {},\n },\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RyYW5zbGF0ZS9zcmMvbGliL2NvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU92QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUF5Q2pFLFNBQVMsbUJBQW1CLENBQUMsQ0FBVTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFtQyxHQUFNO0lBQ2xFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQy9CLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDcEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFO2dCQUMzQixHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUNsRCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxFQUE0QixDQUM3QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FLaEMsV0FBYyxFQUNkLEVBQU8sRUFDUCxNQUFnQjtJQUtoQixPQUFPO1FBQ0wsTUFBTTtRQUNOLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7UUFDckMsU0FBUyxFQUFFLEVBQUU7UUFDYixDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ2pCLEtBQUssRUFBRSxFQUFZO1lBQ25CLEdBQUcsRUFBRSxFQUFVO1NBQ2hCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwZW5kRGVsaW0gfSBmcm9tICcuL2RlbGltJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIGluZmVyVHJhbnNsYXRpb25QYXJhbU1hcCxcclxuICBpbmZlclRyYW5zbGF0aW9uU2hhcGUsXHJcbn0gZnJvbSAnLi9wYXJhbWV0ZXJpemUudHlwZSc7XHJcbmltcG9ydCB0eXBlIHsgVW5rbm93blN0cmluZ0tleU9iamVjdCB9IGZyb20gJy4vc3RyaW5nLWtleS1vYmplY3QudHlwZSc7XHJcblxyXG5jb25zdCBJTlRFUk5BTF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdtbXN0YWNrLXRyYW5zbGF0ZS1pbnRlcm5hbCcpO1xyXG5cclxudHlwZSBJbnRlcm5hbFN5bWJvbCA9IHR5cGVvZiBJTlRFUk5BTF9TWU1CT0w7XHJcblxyXG5leHBvcnQgdHlwZSBDb21waWxlZFRyYW5zbGF0aW9uPFxyXG4gIFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gIFROUyBleHRlbmRzIHN0cmluZyxcclxuICBUTG9jYWxlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxyXG4+ID0ge1xyXG4gIGZsYXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgbG9jYWxlPzogVExvY2FsZTtcclxuICBuYW1lc3BhY2U6IFROUztcclxuICBbSU5URVJOQUxfU1lNQk9MXToge1xyXG4gICAgc2hhcGU6IGluZmVyVHJhbnNsYXRpb25TaGFwZTxUPjtcclxuICAgIG1hcDogaW5mZXJUcmFuc2xhdGlvblBhcmFtTWFwPFROUywgVD47XHJcbiAgfTtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIG1lcmdlVHJhbnNsYXRpb25NYXBzPFxyXG4gIFRNYWluIGV4dGVuZHMgQ29tcGlsZWRUcmFuc2xhdGlvbjxVbmtub3duU3RyaW5nS2V5T2JqZWN0LCBzdHJpbmc+LFxyXG4gIFRPdGhlciBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPiA9IE9taXQ8VE1haW4sIEludGVybmFsU3ltYm9sPiAmIHtcclxuICBbSU5URVJOQUxfU1lNQk9MXToge1xyXG4gICAgc2hhcGU6IGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvblNoYXBlPFRNYWluPjtcclxuICAgIG1hcDogaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwPFRPdGhlcj4gJlxyXG4gICAgICBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VE1haW4+O1xyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25OYW1lc3BhY2U8XHJcbiAgVCBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPiA9IFRbJ25hbWVzcGFjZSddO1xyXG5cclxuZXhwb3J0IHR5cGUgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uU2hhcGU8XHJcbiAgVCBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPiA9IFRbSW50ZXJuYWxTeW1ib2xdWydzaGFwZSddO1xyXG5cclxuZXhwb3J0IHR5cGUgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwPFxyXG4gIFQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFVua25vd25TdHJpbmdLZXlPYmplY3QsIHN0cmluZz4sXHJcbj4gPSBUW0ludGVybmFsU3ltYm9sXVsnbWFwJ107XHJcblxyXG5mdW5jdGlvbiBpc1RyYW5zbGF0aW9uT2JqZWN0KHQ6IHVua25vd24pOiB0IGlzIFVua25vd25TdHJpbmdLZXlPYmplY3Qge1xyXG4gIHJldHVybiB0eXBlb2YgdCA9PT0gJ29iamVjdCcgJiYgdCAhPT0gbnVsbDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmxhdHRlblRyYW5zbGF0aW9uPFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0PihvYmo6IFQpIHtcclxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoXHJcbiAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzVHJhbnNsYXRpb25PYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZmxhdHRlblRyYW5zbGF0aW9uKHZhbHVlKSkuZm9yRWFjaChcclxuICAgICAgICAgIChbbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgYWNjW3ByZXBlbmREZWxpbShrZXksIG5lc3RlZEtleSldID0gbmVzdGVkVmFsdWU7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LFxyXG4gICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVRyYW5zbGF0aW9uPFxyXG4gIFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gIFROUyBleHRlbmRzIHN0cmluZyxcclxuICBUTG9jYWxlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxyXG4+KFxyXG4gIHRyYW5zbGF0aW9uOiBULFxyXG4gIG5zOiBUTlMsXHJcbiAgbG9jYWxlPzogVExvY2FsZSxcclxuKTogQ29tcGlsZWRUcmFuc2xhdGlvbjxULCBUTlMsIFRMb2NhbGU+IHtcclxuICB0eXBlICRTaGFwZSA9IGluZmVyVHJhbnNsYXRpb25TaGFwZTxUPjtcclxuICB0eXBlICRNYXAgPSBpbmZlclRyYW5zbGF0aW9uUGFyYW1NYXA8VE5TLCBUPjtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGxvY2FsZSxcclxuICAgIGZsYXQ6IGZsYXR0ZW5UcmFuc2xhdGlvbih0cmFuc2xhdGlvbiksXHJcbiAgICBuYW1lc3BhY2U6IG5zLFxyXG4gICAgW0lOVEVSTkFMX1NZTUJPTF06IHtcclxuICAgICAgc2hhcGU6IHt9IGFzICRTaGFwZSxcclxuICAgICAgbWFwOiB7fSBhcyAkTWFwLFxyXG4gICAgfSxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { compileTranslation, } from './compile';\nexport function createNamespace(ns, translation) {\n const compiled = compileTranslation(translation, ns);\n const namespace = {\n translation: compileTranslation(translation, ns),\n createTranslation: (locale, translation) => {\n return compileTranslation(translation, ns, locale);\n },\n createMergedNamespace: (otherNs, otherTranslation) => {\n return createNamespace(otherNs, otherTranslation);\n },\n };\n return namespace;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5hbWVzcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RyYW5zbGF0ZS9zcmMvbGliL2NyZWF0ZS1uYW1lc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixHQUduQixNQUFNLFdBQVcsQ0FBQztBQTJCbkIsTUFBTSxVQUFVLGVBQWUsQ0FHN0IsRUFBTyxFQUFFLFdBQWM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQVMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBSzdELE1BQU0sU0FBUyxHQUFpRDtRQUM5RCxXQUFXLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxpQkFBaUIsRUFBRSxDQUNqQixNQUFlLEVBQ2YsV0FBbUIsRUFDbkIsRUFBRTtZQUNGLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QscUJBQXFCLEVBQUUsQ0FRckIsT0FBaUIsRUFDakIsZ0JBQXdCLEVBQ3hCLEVBQUU7WUFDRixPQUFPLGVBQWUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBSTdCLENBQUM7UUFDdEIsQ0FBQztLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21waWxlZFRyYW5zbGF0aW9uLFxyXG4gIGNvbXBpbGVUcmFuc2xhdGlvbixcclxuICBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25TaGFwZSxcclxuICBtZXJnZVRyYW5zbGF0aW9uTWFwcyxcclxufSBmcm9tICcuL2NvbXBpbGUnO1xyXG5pbXBvcnQgeyBVbmtub3duU3RyaW5nS2V5T2JqZWN0IH0gZnJvbSAnLi9zdHJpbmcta2V5LW9iamVjdC50eXBlJztcclxuXHJcbnR5cGUgVHJhbnNsYXRpb25OYW1lc3BhY2U8XHJcbiAgVE5TIGV4dGVuZHMgc3RyaW5nLFxyXG4gIFQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFVua25vd25TdHJpbmdLZXlPYmplY3QsIFROUz4sXHJcbiAgVFNoYXBlIGV4dGVuZHMgVW5rbm93blN0cmluZ0tleU9iamVjdCxcclxuPiA9IHtcclxuICB0cmFuc2xhdGlvbjogVDtcclxuICBjcmVhdGVUcmFuc2xhdGlvbjogPFRMb2NhbGUgZXh0ZW5kcyBzdHJpbmc+KFxyXG4gICAgbG9jYWxlOiBUTG9jYWxlLFxyXG4gICAgdHJhbnNsYXRpb246IFRTaGFwZSxcclxuICApID0+IENvbXBpbGVkVHJhbnNsYXRpb248VFNoYXBlLCBUTlMsIFRMb2NhbGU+O1xyXG4gIGNyZWF0ZU1lcmdlZE5hbWVzcGFjZTogPFxyXG4gICAgVE90aGVyTlMgZXh0ZW5kcyBzdHJpbmcsXHJcbiAgICBjb25zdCBUT3RoZXIgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gICAgVE90aGVyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFRPdGhlciwgVE90aGVyTlM+LFxyXG4gID4oXHJcbiAgICBuczogVE90aGVyTlMsXHJcbiAgICB0cmFuc2xhdGlvbjogVE90aGVyLFxyXG4gICkgPT4gVHJhbnNsYXRpb25OYW1lc3BhY2U8XHJcbiAgICBUT3RoZXJOUyxcclxuICAgIG1lcmdlVHJhbnNsYXRpb25NYXBzPFRPdGhlckNvbXBpbGVkLCBUPixcclxuICAgIGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvblNoYXBlPFRPdGhlckNvbXBpbGVkPlxyXG4gID47XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmFtZXNwYWNlPFxyXG4gIGNvbnN0IFQgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gIFROUyBleHRlbmRzIHN0cmluZyxcclxuPihuczogVE5TLCB0cmFuc2xhdGlvbjogVCkge1xyXG4gIGNvbnN0IGNvbXBpbGVkID0gY29tcGlsZVRyYW5zbGF0aW9uPFQsIFROUz4odHJhbnNsYXRpb24sIG5zKTtcclxuXHJcbiAgdHlwZSBUQ29tcGlsZWQgPSB0eXBlb2YgY29tcGlsZWQ7XHJcbiAgdHlwZSBUU2hhcGUgPSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25TaGFwZTx0eXBlb2YgY29tcGlsZWQ+O1xyXG5cclxuICBjb25zdCBuYW1lc3BhY2U6IFRyYW5zbGF0aW9uTmFtZXNwYWNlPFROUywgVENvbXBpbGVkLCBUU2hhcGU+ID0ge1xyXG4gICAgdHJhbnNsYXRpb246IGNvbXBpbGVUcmFuc2xhdGlvbih0cmFuc2xhdGlvbiwgbnMpLFxyXG4gICAgY3JlYXRlVHJhbnNsYXRpb246IDxUTG9jYWxlIGV4dGVuZHMgc3RyaW5nPihcclxuICAgICAgbG9jYWxlOiBUTG9jYWxlLFxyXG4gICAgICB0cmFuc2xhdGlvbjogVFNoYXBlLFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIHJldHVybiBjb21waWxlVHJhbnNsYXRpb24odHJhbnNsYXRpb24sIG5zLCBsb2NhbGUpO1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZU1lcmdlZE5hbWVzcGFjZTogPFxyXG4gICAgICBUT3RoZXIgZXh0ZW5kcyBVbmtub3duU3RyaW5nS2V5T2JqZWN0LFxyXG4gICAgICBUT3RoZXJOUyBleHRlbmRzIHN0cmluZyxcclxuICAgICAgVE90aGVyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFxyXG4gICAgICAgIFRPdGhlcixcclxuICAgICAgICBUT3RoZXJOU1xyXG4gICAgICA+ID0gQ29tcGlsZWRUcmFuc2xhdGlvbjxUT3RoZXIsIFRPdGhlck5TPixcclxuICAgID4oXHJcbiAgICAgIG90aGVyTnM6IFRPdGhlck5TLFxyXG4gICAgICBvdGhlclRyYW5zbGF0aW9uOiBUT3RoZXIsXHJcbiAgICApID0+IHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVzcGFjZShvdGhlck5zLCBvdGhlclRyYW5zbGF0aW9uKSBhcyBUcmFuc2xhdGlvbk5hbWVzcGFjZTxcclxuICAgICAgICBUT3RoZXJOUyxcclxuICAgICAgICBtZXJnZVRyYW5zbGF0aW9uTWFwczxUT3RoZXJDb21waWxlZCwgVENvbXBpbGVkPixcclxuICAgICAgICBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25TaGFwZTxUT3RoZXJDb21waWxlZD5cclxuICAgICAgPiBhcyB1bmtub3duIGFzIGFueTtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIG5hbWVzcGFjZTtcclxufVxyXG4iXX0=","import { computed, effect, inject, Injectable, InjectionToken, isDevMode, LOCALE_ID, resource, signal, untracked, } from '@angular/core';\nimport { createIntl, createIntlCache } from '@formatjs/intl';\nimport { prependDelim } from './delim';\nimport * as i0 from \"@angular/core\";\nconst CONFIG_TOKEN = new InjectionToken('mmstack-intl-config');\nexport function provideIntlConfig(config) {\n return {\n useValue: config,\n provide: CONFIG_TOKEN,\n };\n}\nexport function injectIntlConfig() {\n return inject(CONFIG_TOKEN, { optional: true }) ?? undefined;\n}\nexport function injectDefaultLocale() {\n return injectIntlConfig()?.defaultLocale ?? 'en-US';\n}\nexport class TranslationStore {\n cache = createIntlCache();\n config = injectIntlConfig();\n loadQueue = signal([], ...(ngDevMode ? [{ debugName: \"loadQueue\" }] : []));\n locale = signal(inject(LOCALE_ID), ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n defaultLocale = injectDefaultLocale();\n translations = signal({\n [this.defaultLocale]: {},\n }, ...(ngDevMode ? [{ debugName: \"translations\" }] : []));\n onDemandLoaders = new Map();\n nonMessageConfig = computed(() => ({\n ...this.config,\n locale: this.locale(),\n }), ...(ngDevMode ? [{ debugName: \"nonMessageConfig\" }] : []));\n messages = computed(() => this.translations()[this.locale()] ??\n this.translations()[this.defaultLocale] ??\n {}, ...(ngDevMode ? [{ debugName: \"messages\" }] : []));\n dynamicLocaleLoader = resource({\n params: computed(() => this.loadQueue().at(0) ?? null),\n loader: async ({ params: newLocale, abortSignal }) => {\n if (!newLocale)\n return;\n const currentTranslations = untracked(this.translations);\n const loadPromises = [];\n for (const [namespace, loaders] of this.onDemandLoaders.entries()) {\n const loader = loaders[newLocale];\n if (loader) {\n const hasNamespaceForLocale = currentTranslations[newLocale] &&\n Object.keys(currentTranslations[newLocale]).some((key) => key.startsWith(`${prependDelim(namespace, '').slice(0, -1)}`));\n if (!hasNamespaceForLocale) {\n loadPromises.push(loader()\n .then((translation) => {\n if (abortSignal.aborted)\n return null;\n return {\n namespace: translation.namespace,\n flat: translation.flat,\n };\n })\n .catch((err) => {\n if (isDevMode()) {\n console.error('[Translate] Failed to load', namespace, newLocale, err);\n }\n return null;\n }));\n }\n }\n }\n return Promise.all(loadPromises)\n .then((res) => res.filter((r) => r !== null))\n .then((res) => ({\n locales: res,\n locale: newLocale,\n }));\n },\n });\n intl = computed(() => createIntl({\n ...this.nonMessageConfig(),\n messages: this.messages(),\n }, this.cache), ...(ngDevMode ? [{ debugName: \"intl\" }] : []));\n constructor() {\n effect(() => {\n if (\n // should never be in error state, but best to check in case something throws\n this.dynamicLocaleLoader.error() ||\n this.dynamicLocaleLoader.isLoading())\n return;\n const dynamicLocales = this.dynamicLocaleLoader.value();\n if (!dynamicLocales)\n return;\n for (const locale of dynamicLocales.locales) {\n this.register(locale.namespace, {\n [dynamicLocales.locale]: locale.flat,\n });\n }\n this.loadQueue.update((q) => q.filter((l) => l !== dynamicLocales.locale));\n this.locale.set(dynamicLocales.locale);\n });\n }\n formatMessage(key, values) {\n const message = this.translations()[this.locale()]?.[key] ?? '';\n if (!message)\n return '';\n return this.intl().formatMessage({ id: key, defaultMessage: message }, values);\n }\n register(namespace, flat) {\n this.translations.update((cur) => {\n return Object.entries(flat).reduce((acc, [locale, translation]) => {\n const localeTranslation = acc[locale] ?? {};\n const withNS = Object.entries(translation ?? {}).reduce((acc, [key, value]) => {\n acc[prependDelim(namespace, key)] = value;\n return acc;\n }, {});\n acc[locale] = {\n ...localeTranslation,\n ...withNS,\n };\n return acc;\n }, { ...cur });\n });\n }\n registerOnDemandLoaders(namespace, loaders) {\n this.onDemandLoaders.set(namespace, loaders);\n }\n hasLocaleLoaders(locale) {\n return Array.from(this.onDemandLoaders.values()).some((loaders) => loaders[locale]);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: TranslationStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: TranslationStore, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: TranslationStore, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\nexport function injectIntl() {\n return inject(TranslationStore).intl;\n}\n/**\n * Inject a dynamic locale signal that supports runtime language switching.\n *\n * @returns A writable signal with the current locale and loading state.\n * Only allows switching to locales that have registered loaders.\n *\n * @example\n * ```typescript\n * const locale = injectDynamicLocale();\n *\n * // Switch language (triggers automatic translation loading)\n * locale.set('sl-SI');\n *\n * // Check loading state\n * if (locale.isLoading()) {\n * // Show spinner\n * }\n * ```\n */\nexport function injectDynamicLocale() {\n const store = inject(TranslationStore);\n const source = computed(() => store.locale());\n const set = (value) => {\n if (value === untracked(source) ||\n !store.hasLocaleLoaders(value) ||\n untracked(store.loadQueue).includes(value))\n return;\n store.loadQueue.update((q) => [...q, value]);\n };\n source.set = set;\n source.update = (updater) => {\n const next = updater(untracked(source));\n source.set(next);\n };\n source.asReadonly = () => source;\n source.isLoading = store.dynamicLocaleLoader.isLoading;\n return source;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90cmFuc2xhdGUvc3JjL2xpYi90cmFuc2xhdGlvbi1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFFUixNQUFNLEVBQ04sU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBRXJDLHFCQUFxQixDQUFDLENBQUM7QUFFekIsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixNQUErQztJQUUvQyxPQUFPO1FBQ0wsUUFBUSxFQUFFLE1BQU07UUFDaEIsT0FBTyxFQUFFLFlBQVk7S0FDdEIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLGdCQUFnQixFQUFFLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQztBQUN0RCxDQUFDO0FBS0QsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLEtBQUssR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUMxQixNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwQyxTQUFTLEdBQUcsTUFBTSxDQUFXLEVBQUUscURBQUMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxT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LENBQUMsS0FBSyxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUUxQyxPQUFPO1FBQ1QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUM7SUFDRixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBa0MsRUFBRSxFQUFFO1FBQ3JELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBRWpDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztJQUV2RCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBjb21wdXRlZCxcclxuICBlZmZlY3QsXHJcbiAgaW5qZWN0LFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgaXNEZXZNb2RlLFxyXG4gIExPQ0FMRV9JRCxcclxuICBQcm92aWRlcixcclxuICByZXNvdXJjZSxcclxuICBTaWduYWwsXHJcbiAgc2lnbmFsLFxyXG4gIHVudHJhY2tlZCxcclxuICBXcml0YWJsZVNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY3JlYXRlSW50bCwgY3JlYXRlSW50bENhY2hlLCBJbnRsQ29uZmlnIH0gZnJvbSAnQGZvcm1hdGpzL2ludGwnO1xyXG5pbXBvcnQgeyBDb21waWxlZFRyYW5zbGF0aW9uIH0gZnJvbSAnLi9jb21waWxlJztcclxuaW1wb3J0IHsgcHJlcGVuZERlbGltIH0gZnJvbSAnLi9kZWxpbSc7XHJcbmltcG9ydCB7IFVua25vd25TdHJpbmdLZXlPYmplY3QgfSBmcm9tICcuL3N0cmluZy1rZXktb2JqZWN0LnR5cGUnO1xyXG5cclxuY29uc3QgQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFxyXG4gIE9taXQ8SW50bENvbmZpZywgJ2xvY2FsZScgfCAnbWVzc2FnZXMnPlxyXG4+KCdtbXN0YWNrLWludGwtY29uZmlnJyk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUludGxDb25maWcoXHJcbiAgY29uZmlnOiBPbWl0PEludGxDb25maWcsICdsb2NhbGUnIHwgJ21lc3NhZ2VzJz4sXHJcbik6IFByb3ZpZGVyIHtcclxuICByZXR1cm4ge1xyXG4gICAgdXNlVmFsdWU6IGNvbmZpZyxcclxuICAgIHByb3ZpZGU6IENPTkZJR19UT0tFTixcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW50bENvbmZpZygpIHtcclxuICByZXR1cm4gaW5qZWN0KENPTkZJR19UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REZWZhdWx0TG9jYWxlKCkge1xyXG4gIHJldHVybiBpbmplY3RJbnRsQ29uZmlnKCk/LmRlZmF1bHRMb2NhbGUgPz8gJ2VuLVVTJztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU3RvcmUge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBjcmVhdGVJbnRsQ2FjaGUoKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdEludGxDb25maWcoKTtcclxuICByZWFkb25seSBsb2FkUXVldWUgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcclxuICByZWFkb25seSBsb2NhbGUgPSBzaWduYWwoaW5qZWN0KExPQ0FMRV9JRCkpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExvY2FsZSA9IGluamVjdERlZmF1bHRMb2NhbGUoKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9ucyA9IHNpZ25hbDxcclxuICAgIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+XHJcbiAgPih7XHJcbiAgICBbdGhpcy5kZWZhdWx0TG9jYWxlXToge30sXHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgb25EZW1hbmRMb2FkZXJzID0gbmV3IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIFJlY29yZDxcclxuICAgICAgc3RyaW5nLFxyXG4gICAgICAoKSA9PiBQcm9taXNlPENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPj5cclxuICAgID5cclxuICA+KCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9uTWVzc2FnZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh7XHJcbiAgICAuLi50aGlzLmNvbmZpZyxcclxuICAgIGxvY2FsZTogdGhpcy5sb2NhbGUoKSxcclxuICB9KSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZXMgPSBjb21wdXRlZChcclxuICAgICgpID0+XHJcbiAgICAgIHRoaXMudHJhbnNsYXRpb25zKClbdGhpcy5sb2NhbGUoKV0gPz9cclxuICAgICAgdGhpcy50cmFuc2xhdGlvbnMoKVt0aGlzLmRlZmF1bHRMb2NhbGVdID8/XHJcbiAgICAgIHt9LFxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IGR5bmFtaWNMb2NhbGVMb2FkZXIgPSByZXNvdXJjZSh7XHJcbiAgICBwYXJhbXM6IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZFF1ZXVlKCkuYXQoMCkgPz8gbnVsbCksXHJcbiAgICBsb2FkZXI6IGFzeW5jICh7IHBhcmFtczogbmV3TG9jYWxlLCBhYm9ydFNpZ25hbCB9KSA9PiB7XHJcbiAgICAgIGlmICghbmV3TG9jYWxlKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRpb25zID0gdW50cmFja2VkKHRoaXMudHJhbnNsYXRpb25zKTtcclxuXHJcbiAgICAgIGNvbnN0IGxvYWRQcm9taXNlczogUHJvbWlzZTx7XHJcbiAgICAgICAgbmFtZXNwYWNlOiBzdHJpbmc7XHJcbiAgICAgICAgZmxhdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICAgICAgfSB8IG51bGw+W10gPSBbXTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgW25hbWVzcGFjZSwgbG9hZGVyc10gb2YgdGhpcy5vbkRlbWFuZExvYWRlcnMuZW50cmllcygpKSB7XHJcbiAgICAgICAgY29uc3QgbG9hZGVyID0gbG9hZGVyc1tuZXdMb2NhbGVdO1xyXG4gICAgICAgIGlmIChsb2FkZXIpIHtcclxuICAgICAgICAgIGNvbnN0IGhhc05hbWVzcGFjZUZvckxvY2FsZSA9XHJcbiAgICAgICAgICAgIGN1cnJlbnRUcmFuc2xhdGlvbnNbbmV3TG9jYWxlXSAmJlxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50VHJhbnNsYXRpb25zW25ld0xvY2FsZV0pLnNvbWUoKGtleSkgPT5cclxuICAgICAgICAgICAgICBrZXkuc3RhcnRzV2l0aChgJHtwcmVwZW5kRGVsaW0obmFtZXNwYWNlLCAnJykuc2xpY2UoMCwgLTEpfWApLFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmICghaGFzTmFtZXNwYWNlRm9yTG9jYWxlKSB7XHJcbiAgICAgICAgICAgIGxvYWRQcm9taXNlcy5wdXNoKFxyXG4gICAgICAgICAgICAgIGxvYWRlcigpXHJcbiAgICAgICAgICAgICAgICAudGhlbigodHJhbnNsYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogdHJhbnNsYXRpb24ubmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGZsYXQ6IHRyYW5zbGF0aW9uLmZsYXQsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgICAgICdbVHJhbnNsYXRlXSBGYWlsZWQgdG8gbG9hZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdMb2NhbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBlcnIsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChsb2FkUHJvbWlzZXMpXHJcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmZpbHRlcigocikgPT4gciAhPT0gbnVsbCkpXHJcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gKHtcclxuICAgICAgICAgIGxvY2FsZXM6IHJlcyxcclxuICAgICAgICAgIGxvY2FsZTogbmV3TG9jYWxlLFxyXG4gICAgICAgIH0pKTtcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGludGwgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgY3JlYXRlSW50bChcclxuICAgICAge1xyXG4gICAgICAgIC4uLnRoaXMubm9uTWVzc2FnZUNvbmZpZygpLFxyXG4gICAgICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzKCksXHJcbiAgICAgIH0sXHJcbiAgICAgIHRoaXMuY2FjaGUsXHJcbiAgICApLFxyXG4gICk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIC8vIHNob3VsZCBuZXZlciBiZSBpbiBlcnJvciBzdGF0ZSwgYnV0IGJlc3QgdG8gY2hlY2sgaW4gY2FzZSBzb21ldGhpbmcgdGhyb3dzXHJcbiAgICAgICAgdGhpcy5keW5hbWljTG9jYWxlTG9hZGVyLmVycm9yKCkgfHxcclxuICAgICAgICB0aGlzLmR5bmFtaWNMb2NhbGVMb2FkZXIuaXNMb2FkaW5nKClcclxuICAgICAgKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY29uc3QgZHluYW1pY0xvY2FsZXMgPSB0aGlzLmR5bmFtaWNMb2NhbGVMb2FkZXIudmFsdWUoKTtcclxuXHJcbiAgICAgIGlmICghZHluYW1pY0xvY2FsZXMpIHJldHVybjtcclxuICAgICAgZm9yIChjb25zdCBsb2NhbGUgb2YgZHluYW1pY0xvY2FsZXMubG9jYWxlcykge1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXIobG9jYWxlLm5hbWVzcGFjZSwge1xyXG4gICAgICAgICAgW2R5bmFtaWNMb2NhbGVzLmxvY2FsZV06IGxvY2FsZS5mbGF0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZFF1ZXVlLnVwZGF0ZSgocSkgPT5cclxuICAgICAgICBxLmZpbHRlcigobCkgPT4gbCAhPT0gZHluYW1pY0xvY2FsZXMubG9jYWxlKSxcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5sb2NhbGUuc2V0KGR5bmFtaWNMb2NhbGVzLmxvY2FsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdE1lc3NhZ2Uoa2V5OiBzdHJpbmcsIHZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4pIHtcclxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0aW9ucygpW3RoaXMubG9jYWxlKCldPy5ba2V5XSA/PyAnJztcclxuXHJcbiAgICBpZiAoIW1lc3NhZ2UpIHJldHVybiAnJztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5pbnRsKCkuZm9ybWF0TWVzc2FnZShcclxuICAgICAgeyBpZDoga2V5LCBkZWZhdWx0TWVzc2FnZTogbWVzc2FnZSB9LFxyXG4gICAgICB2YWx1ZXMsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXIoXHJcbiAgICBuYW1lc3BhY2U6IHN0cmluZyxcclxuICAgIGZsYXQ6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4+LFxyXG4gICkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbnMudXBkYXRlKChjdXIpID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGZsYXQpLnJlZHVjZShcclxuICAgICAgICAoYWNjLCBbbG9jYWxlLCB0cmFuc2xhdGlvbl0pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxvY2FsZVRyYW5zbGF0aW9uID0gYWNjW2xvY2FsZV0gPz8ge307XHJcblxyXG4gICAgICAgICAgY29uc3Qgd2l0aE5TID0gT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb24gPz8ge30pLnJlZHVjZShcclxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgYWNjW3ByZXBlbmREZWxpbShuYW1lc3BhY2UsIGtleSldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgYWNjW2xvY2FsZV0gPSB7XHJcbiAgICAgICAgICAgIC4uLmxvY2FsZVRyYW5zbGF0aW9uLFxyXG4gICAgICAgICAgICAuLi53aXRoTlMsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IC4uLmN1ciB9LFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uRGVtYW5kTG9hZGVycyhcclxuICAgIG5hbWVzcGFjZTogc3RyaW5nLFxyXG4gICAgbG9hZGVyczogUmVjb3JkPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PixcclxuICApIHtcclxuICAgIHRoaXMub25EZW1hbmRMb2FkZXJzLnNldChuYW1lc3BhY2UsIGxvYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgaGFzTG9jYWxlTG9hZGVycyhsb2NhbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5vbkRlbWFuZExvYWRlcnMudmFsdWVzKCkpLnNvbWUoXHJcbiAgICAgIChsb2FkZXJzKSA9PiBsb2FkZXJzW2xvY2FsZV0sXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEludGwoKSB7XHJcbiAgcmV0dXJuIGluamVjdChUcmFuc2xhdGlvblN0b3JlKS5pbnRsO1xyXG59XHJcblxyXG4vKipcclxuICogSW5qZWN0IGEgZHluYW1pYyBsb2NhbGUgc2lnbmFsIHRoYXQgc3VwcG9ydHMgcnVudGltZSBsYW5ndWFnZSBzd2l0Y2hpbmcuXHJcbiAqXHJcbiAqIEByZXR1cm5zIEEgd3JpdGFibGUgc2lnbmFsIHdpdGggdGhlIGN1cnJlbnQgbG9jYWxlIGFuZCBsb2FkaW5nIHN0YXRlLlxyXG4gKiBPbmx5IGFsbG93cyBzd2l0Y2hpbmcgdG8gbG9jYWxlcyB0aGF0IGhhdmUgcmVnaXN0ZXJlZCBsb2FkZXJzLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGxvY2FsZSA9IGluamVjdER5bmFtaWNMb2NhbGUoKTtcclxuICpcclxuICogLy8gU3dpdGNoIGxhbmd1YWdlICh0cmlnZ2VycyBhdXRvbWF0aWMgdHJhbnNsYXRpb24gbG9hZGluZylcclxuICogbG9jYWxlLnNldCgnc2wtU0knKTtcclxuICpcclxuICogLy8gQ2hlY2sgbG9hZGluZyBzdGF0ZVxyXG4gKiBpZiAobG9jYWxlLmlzTG9hZGluZygpKSB7XHJcbiAqICAgLy8gU2hvdyBzcGlubmVyXHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RHluYW1pY0xvY2FsZSgpOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+ICYge1xyXG4gIGlzTG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xyXG59IHtcclxuICBjb25zdCBzdG9yZSA9IGluamVjdChUcmFuc2xhdGlvblN0b3JlKTtcclxuXHJcbiAgY29uc3Qgc291cmNlID0gY29tcHV0ZWQoKCkgPT4gc3RvcmUubG9jYWxlKCkpIGFzIFdyaXRhYmxlU2lnbmFsPHN0cmluZz4gJiB7XHJcbiAgICBpc0xvYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcclxuICB9O1xyXG5cclxuICBjb25zdCBzZXQgPSAodmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICB2YWx1ZSA9PT0gdW50cmFja2VkKHNvdXJjZSkgfHxcclxuICAgICAgIXN0b3JlLmhhc0xvY2FsZUxvYWRlcnModmFsdWUpIHx8XHJcbiAgICAgIHVudHJhY2tlZChzdG9yZS5sb2FkUXVldWUpLmluY2x1ZGVzKHZhbHVlKVxyXG4gICAgKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBzdG9yZS5sb2FkUXVldWUudXBkYXRlKChxKSA9PiBbLi4ucSwgdmFsdWVdKTtcclxuICB9O1xyXG4gIHNvdXJjZS5zZXQgPSBzZXQ7XHJcbiAgc291cmNlLnVwZGF0ZSA9ICh1cGRhdGVyOiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBuZXh0ID0gdXBkYXRlcih1bnRyYWNrZWQoc291cmNlKSk7XHJcbiAgICBzb3VyY2Uuc2V0KG5leHQpO1xyXG4gIH07XHJcbiAgc291cmNlLmFzUmVhZG9ubHkgPSAoKSA9PiBzb3VyY2U7XHJcblxyXG4gIHNvdXJjZS5pc0xvYWRpbmcgPSBzdG9yZS5keW5hbWljTG9jYWxlTG9hZGVyLmlzTG9hZGluZztcclxuXHJcbiAgcmV0dXJuIHNvdXJjZTtcclxufVxyXG4iXX0=","import { computed, inject, isDevMode, isSignal, untracked, } from '@angular/core';\nimport { replaceWithDelim } from './delim';\nimport { TranslationStore } from './translation-store';\nfunction createEqualsRecord(keys = []) {\n let keyMatcher;\n if (keys.length === 0) {\n keyMatcher = () => true;\n }\n else if (keys.length === 1) {\n const key = keys[0];\n keyMatcher = (a, b) => a[key] === b[key];\n }\n else {\n keyMatcher = (a, b) => {\n return keys.every((k) => a[k] === b[k]);\n };\n }\n return (a, b) => {\n if (!a && !b)\n return true;\n if (!a || !b)\n return false;\n return keyMatcher(a, b);\n };\n}\nfunction addSignalFn(fn, store) {\n const withSig = fn;\n const asSignal = (key, ...args) => {\n const variables = args[0];\n const stringKey = key;\n const flatPath = replaceWithDelim(stringKey);\n const varsFn = variables ?? (() => undefined);\n const varsSignal = isSignal(varsFn)\n ? varsFn\n : computed(varsFn, {\n equal: createEqualsRecord(Object.keys(varsFn() ?? {})),\n });\n return computed(() => store.formatMessage(flatPath, varsSignal()));\n };\n withSig.asSignal = asSignal;\n return withSig;\n}\nexport function createT(store) {\n return (key, ...args) => {\n const variables = args[0];\n const stringKey = key;\n return store.formatMessage(replaceWithDelim(stringKey), variables);\n };\n}\nexport function registerNamespace(defaultTranslation, other) {\n const injectT = () => {\n const store = inject(TranslationStore);\n return addSignalFn(createT(store), store);\n };\n let defaultTranslationLoaded = false;\n const resolver = async () => {\n const store = inject(TranslationStore);\n const locale = untracked(store.locale);\n const tPromise = other[locale];\n const promise = tPromise ?? defaultTranslation;\n if (!promise && isDevMode()) {\n return console.warn(`No translation found for locale: ${locale}`);\n }\n if (promise === defaultTranslation && defaultTranslationLoaded)\n return;\n try {\n const translation = await promise();\n if (promise !== defaultTranslation &&\n translation.locale !== locale &&\n isDevMode()) {\n return console.warn(`Expected locale to be ${locale} but got ${translation.locale}`);\n }\n store.registerOnDemandLoaders(translation.namespace, other);\n store.register(translation.namespace, {\n [locale]: translation.flat,\n });\n if (promise === defaultTranslation) {\n defaultTranslationLoaded = true;\n }\n }\n catch {\n if (isDevMode()) {\n console.warn(`Failed to load translation for locale: ${locale}`);\n }\n }\n };\n return {\n injectNamespaceT: injectT,\n resolveNamespaceTranslation: resolver,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItbmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdHJhbnNsYXRlL3NyYy9saWIvcmVnaXN0ZXItbmFtZXNwYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxTQUFTLGtCQUFrQixDQUE0QixPQUFvQixFQUFFO0lBQzNFLElBQUksVUFBbUMsQ0FBQztJQUV4QyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO1NBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7U0FBTSxDQUFDO1FBQ04sVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBSyxF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QVcsR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDO1lBRXBDLElBQ0UsT0FBTyxLQUFLLGtCQUFrQjtnQkFDOUIsV0FBVyxDQUFDLE1BQU0sS0FBSyxNQUFNO2dCQUM3QixTQUFTLEVBQUUsRUFDWCxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIseUJBQXlCLE1BQU0sWUFBWSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQ2hFLENBQUM7WUFDSixDQUFDO1lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFNUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO2dCQUNwQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJO2FBQzNCLENBQUMsQ0FBQztZQUNILElBQUksT0FBTyxLQUFLLGtCQUFrQixFQUFFLENBQUM7Z0JBQ25DLHdCQUF3QixHQUFHLElBQUksQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxPQUFPO1FBQ3pCLDJCQUEyQixFQUFFLFFBQVE7S0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGNvbXB1dGVkLFxyXG4gIGluamVjdCxcclxuICBpc0Rldk1vZGUsXHJcbiAgaXNTaWduYWwsXHJcbiAgU2lnbmFsLFxyXG4gIHVudHJhY2tlZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcGlsZWRUcmFuc2xhdGlvbiwgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwIH0gZnJvbSAnLi9jb21waWxlJztcclxuaW1wb3J0IHsgcmVwbGFjZVdpdGhEZWxpbSB9IGZyb20gJy4vZGVsaW0nO1xyXG5pbXBvcnQgeyBVbmtub3duU3RyaW5nS2V5T2JqZWN0IH0gZnJvbSAnLi9zdHJpbmcta2V5LW9iamVjdC50eXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdG9yZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tc3RvcmUnO1xyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxudHlwZSBBbnlTdHJpbmdSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlRXF1YWxzUmVjb3JkPFQgZXh0ZW5kcyBBbnlTdHJpbmdSZWNvcmQ+KGtleXM6IChrZXlvZiBUKVtdID0gW10pIHtcclxuICBsZXQga2V5TWF0Y2hlcjogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW47XHJcblxyXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAga2V5TWF0Y2hlciA9ICgpID0+IHRydWU7XHJcbiAgfSBlbHNlIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgY29uc3Qga2V5ID0ga2V5c1swXTtcclxuICAgIGtleU1hdGNoZXIgPSAoYSwgYikgPT4gYVtrZXldID09PSBiW2tleV07XHJcbiAgfSBlbHNlIHtcclxuICAgIGtleU1hdGNoZXIgPSAoYSwgYikgPT4ge1xyXG4gICAgICByZXR1cm4ga2V5cy5ldmVyeSgoaykgPT4gYVtrXSA9PT0gYltrXSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIChhPzogVCwgYj86IFQpOiBib29sZWFuID0+IHtcclxuICAgIGlmICghYSAmJiAhYikgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAoIWEgfHwgIWIpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBrZXlNYXRjaGVyKGEsIGIpO1xyXG4gIH07XHJcbn1cclxuXHJcbnR5cGUgVEZ1bmN0aW9uPFRNYXAgZXh0ZW5kcyBBbnlTdHJpbmdSZWNvcmQ+ID0gPFxyXG4gIFRLZXkgZXh0ZW5kcyBrZXlvZiBUTWFwICYgc3RyaW5nLFxyXG4+KFxyXG4gIGtleTogVEtleSxcclxuICAuLi5hcmdzOiBUTWFwW1RLZXldIGV4dGVuZHMgdm9pZCA/IFtdIDogW1RNYXBbVEtleV1dXHJcbikgPT4gc3RyaW5nO1xyXG5cclxudHlwZSBTaWduYWxURnVuY3Rpb248VE1hcCBleHRlbmRzIEFueVN0cmluZ1JlY29yZD4gPSA8XHJcbiAgVEtleSBleHRlbmRzIGtleW9mIFRNYXAgJiBzdHJpbmcsXHJcbj4oXHJcbiAga2V5OiBUS2V5LFxyXG4gIC4uLmFyZ3M6IFRNYXBbVEtleV0gZXh0ZW5kcyB2b2lkID8gW10gOiBbKCkgPT4gVE1hcFtUS2V5XV1cclxuKSA9PiBTaWduYWw8c3RyaW5nPjtcclxuXHJcbnR5cGUgVEZ1bmN0aW9uV2l0aFNpZ25hbENvbnN0cnVjdG9yPFxyXG4gIFRNYXAgZXh0ZW5kcyBBbnlTdHJpbmdSZWNvcmQsXHJcbiAgVEZOIGV4dGVuZHMgVEZ1bmN0aW9uPFRNYXA+LFxyXG4+ID0gVEZOICYge1xyXG4gIGFzU2lnbmFsOiBTaWduYWxURnVuY3Rpb248VE1hcD47XHJcbn07XHJcblxyXG5mdW5jdGlvbiBhZGRTaWduYWxGbjxUTWFwIGV4dGVuZHMgQW55U3RyaW5nUmVjb3JkLCBURm4gZXh0ZW5kcyBURnVuY3Rpb248VE1hcD4+KFxyXG4gIGZuOiBURm4sXHJcbiAgc3RvcmU6IFRyYW5zbGF0aW9uU3RvcmUsXHJcbik6IFRGdW5jdGlvbldpdGhTaWduYWxDb25zdHJ1Y3RvcjxUTWFwLCBURm4+IHtcclxuICBjb25zdCB3aXRoU2lnID0gZm4gYXMgVEZ1bmN0aW9uV2l0aFNpZ25hbENvbnN0cnVjdG9yPFRNYXAsIFRGbj47XHJcblxyXG4gIGNvbnN0IGFzU2lnbmFsID0gPFRLZXkgZXh0ZW5kcyBrZXlvZiBUTWFwICYgc3RyaW5nPihcclxuICAgIGtleTogVEtleSxcclxuICAgIC4uLmFyZ3M6IFRNYXBbVEtleV0gZXh0ZW5kcyB2b2lkID8gW10gOiBbKCkgPT4gVE1hcFtUS2V5XV1cclxuICApOiBTaWduYWw8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBhcmdzWzBdIGFzICgpID0+IEFueVN0cmluZ1JlY29yZCB8IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IHN0cmluZ0tleSA9IGtleSBhcyBzdHJpbmc7XHJcblxyXG4gICAgY29uc3QgZmxhdFBhdGggPSByZXBsYWNlV2l0aERlbGltKHN0cmluZ0tleSk7XHJcblxyXG4gICAgY29uc3QgdmFyc0ZuID0gdmFyaWFibGVzID8/ICgoKSA9PiB1bmRlZmluZWQpO1xyXG4gICAgY29uc3QgdmFyc1NpZ25hbCA9IGlzU2lnbmFsKHZhcnNGbilcclxuICAgICAgPyB2YXJzRm5cclxuICAgICAgOiBjb21wdXRlZCh2YXJzRm4sIHtcclxuICAgICAgICAgIGVxdWFsOiBjcmVhdGVFcXVhbHNSZWNvcmQoT2JqZWN0LmtleXModmFyc0ZuKCkgPz8ge30pKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gc3RvcmUuZm9ybWF0TWVzc2FnZShmbGF0UGF0aCwgdmFyc1NpZ25hbCgpKSk7XHJcbiAgfTtcclxuXHJcbiAgd2l0aFNpZy5hc1NpZ25hbCA9IGFzU2lnbmFsO1xyXG5cclxuICByZXR1cm4gd2l0aFNpZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVQ8VE1hcCBleHRlbmRzIEFueVN0cmluZ1JlY29yZD4oXHJcbiAgc3RvcmU6IFRyYW5zbGF0aW9uU3RvcmUsXHJcbik6IFRGdW5jdGlvbjxUTWFwPiB7XHJcbiAgcmV0dXJuIDxUS2V5IGV4dGVuZHMga2V5b2YgVE1hcCAmIHN0cmluZz4oXHJcbiAgICBrZXk6IFRLZXksXHJcbiAgICAuLi5hcmdzOiBUTWFwW1RLZXldIGV4dGVuZHMgdm9pZCA/IFtdIDogW1RNYXBbVEtleV1dXHJcbiAgKTogc3RyaW5nID0+IHtcclxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IGFyZ3NbMF0gYXMgQW55U3RyaW5nUmVjb3JkIHwgdW5kZWZpbmVkO1xyXG4gICAgY29uc3Qgc3RyaW5nS2V5ID0ga2V5IGFzIHN0cmluZztcclxuXHJcbiAgICByZXR1cm4gc3RvcmUuZm9ybWF0TWVzc2FnZShyZXBsYWNlV2l0aERlbGltKHN0cmluZ0tleSksIHZhcmlhYmxlcyk7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTmFtZXNwYWNlPFxyXG4gIFREZWZhdWx0IGV4dGVuZHMgQ29tcGlsZWRUcmFuc2xhdGlvbjxVbmtub3duU3RyaW5nS2V5T2JqZWN0LCBzdHJpbmc+LFxyXG4gIFRPdGhlciBleHRlbmRzIENvbXBpbGVkVHJhbnNsYXRpb248VW5rbm93blN0cmluZ0tleU9iamVjdCwgc3RyaW5nPixcclxuPihcclxuICBkZWZhdWx0VHJhbnNsYXRpb246ICgpID0+IFByb21pc2U8VERlZmF1bHQ+LFxyXG4gIG90aGVyOiBSZWNvcmQ8c3RyaW5nLCAoKSA9PiBQcm9taXNlPFRPdGhlcj4+LFxyXG4pIHtcclxuICB0eXBlICRNYXAgPSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VERlZmF1bHQ+O1xyXG4gIHR5cGUgJEJhc2VURk4gPSBURnVuY3Rpb248JE1hcD47XHJcbiAgdHlwZSAkVEZOID0gVEZ1bmN0aW9uV2l0aFNpZ25hbENvbnN0cnVjdG9yPCRNYXAsICRCYXNlVEZOPjtcclxuXHJcbiAgY29uc3QgaW5qZWN0VCA9ICgpOiAkVEZOID0+IHtcclxuICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KFRyYW5zbGF0aW9uU3RvcmUpO1xyXG5cclxuICAgIHJldHVybiBhZGRTaWduYWxGbihjcmVhdGVUKHN0b3JlKSwgc3RvcmUpO1xyXG4gIH07XHJcblxyXG4gIGxldCBkZWZhdWx0VHJhbnNsYXRpb25Mb2FkZWQgPSBmYWxzZTtcclxuICBjb25zdCByZXNvbHZlciA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KFRyYW5zbGF0aW9uU3RvcmUpO1xyXG4gICAgY29uc3QgbG9jYWxlID0gdW50cmFja2VkKHN0b3JlLmxvY2FsZSk7XHJcbiAgICBjb25zdCB0UHJvbWlzZSA9IG90aGVyW2xvY2FsZV0gYXMgKCgpID0+IFByb21pc2U8VE90aGVyPikgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgcHJvbWlzZSA9IHRQcm9taXNlID8/IGRlZmF1bHRUcmFuc2xhdGlvbjtcclxuICAgIGlmICghcHJvbWlzZSAmJiBpc0Rldk1vZGUoKSkge1xyXG4gICAgICByZXR1cm4gY29uc29sZS53YXJuKGBObyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbG9jYWxlOiAke2xvY2FsZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvbWlzZSA9PT0gZGVmYXVsdFRyYW5zbGF0aW9uICYmIGRlZmF1bHRUcmFuc2xhdGlvbkxvYWRlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gYXdhaXQgcHJvbWlzZSgpO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByb21pc2UgIT09IGRlZmF1bHRUcmFuc2xhdGlvbiAmJlxyXG4gICAgICAgIHRyYW5zbGF0aW9uLmxvY2FsZSAhPT0gbG9jYWxlICYmXHJcbiAgICAgICAgaXNEZXZNb2RlKClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBFeHBlY3RlZCBsb2NhbGUgdG8gYmUgJHtsb2NhbGV9IGJ1dCBnb3QgJHt0cmFuc2xhdGlvbi5sb2NhbGV9YCxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdG9yZS5yZWdpc3Rlck9uRGVtYW5kTG9hZGVycyh0cmFuc2xhdGlvbi5uYW1lc3BhY2UsIG90aGVyKTtcclxuXHJcbiAgICAgIHN0b3JlLnJlZ2lzdGVyKHRyYW5zbGF0aW9uLm5hbWVzcGFjZSwge1xyXG4gICAgICAgIFtsb2NhbGVdOiB0cmFuc2xhdGlvbi5mbGF0LFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHByb21pc2UgPT09IGRlZmF1bHRUcmFuc2xhdGlvbikge1xyXG4gICAgICAgIGRlZmF1bHRUcmFuc2xhdGlvbkxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBsb2FkIHRyYW5zbGF0aW9uIGZvciBsb2NhbGU6ICR7bG9jYWxlfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGluamVjdE5hbWVzcGFjZVQ6IGluamVjdFQsXHJcbiAgICByZXNvbHZlTmFtZXNwYWNlVHJhbnNsYXRpb246IHJlc29sdmVyLFxyXG4gIH07XHJcbn1cclxuIl19","import { afterRenderEffect, computed, Directive, ElementRef, inject, input, Renderer2, } from '@angular/core';\nimport { createT } from './register-namespace';\nimport { TranslationStore } from './translation-store';\nimport * as i0 from \"@angular/core\";\nexport class Translate {\n t = createT(inject(TranslationStore));\n translate = input.required(...(ngDevMode ? [{ debugName: \"translate\" }] : []));\n constructor() {\n const key = computed(() => {\n const vars = this.translate();\n return (Array.isArray(vars) ? vars[0] : vars);\n }, ...(ngDevMode ? [{ debugName: \"key\" }] : []));\n const args = computed(() => {\n const vars = this.translate();\n return (Array.isArray(vars) ? vars[1] : undefined);\n }, ...(ngDevMode ? [{ debugName: \"args\", equal: (a, b) => {\n if (a === undefined && b === undefined)\n return true;\n if (a === undefined || b === undefined)\n return false;\n const aObj = a;\n const keys = Object.keys(aObj);\n const bObj = b;\n if (!keys.length)\n return !Object.keys(bObj).length;\n return keys.every((key) => aObj[key] === bObj[key]);\n } }] : [{\n equal: (a, b) => {\n if (a === undefined && b === undefined)\n return true;\n if (a === undefined || b === undefined)\n return false;\n const aObj = a;\n const keys = Object.keys(aObj);\n const bObj = b;\n if (!keys.length)\n return !Object.keys(bObj).length;\n return keys.every((key) => aObj[key] === bObj[key]);\n },\n }]));\n const translation = computed(() => this.t(key(), args()), ...(ngDevMode ? [{ debugName: \"translation\" }] : []));\n const renderer = inject(Renderer2);\n const el = inject(ElementRef);\n afterRenderEffect({\n write: () => {\n renderer.setProperty(el.nativeElement, 'textContent', translation());\n },\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: Translate, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.1\", type: Translate, isStandalone: true, inputs: { translate: { classPropertyName: \"translate\", publicName: \"translate\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: Translate, decorators: [{\n type: Directive\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdHJhbnNsYXRlL3NyYy9saWIvdHJhbnNsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUd2RCxNQUFNLE9BQWdCLFNBQVM7SUFNWixDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFOUMsU0FBUyxHQUNoQixLQUFLLENBQUMsUUFBUSxvREFJWCxDQUFDO0lBRU47UUFDRSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQVMsQ0FBQztRQUN4RCxDQUFDLCtDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxRQUFRLENBQ25CLEdBQUcsRUFBRTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQWUsQ0FBQztRQUNuRSxDQUFDLHdDQUVDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDZCxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVM7d0JBQUUsT0FBTyxJQUFJLENBQUM7b0JBQ3BELElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUzt3QkFBRSxPQUFPLEtBQUssQ0FBQztvQkFFckQsTUFBTSxJQUFJLEdBQUcsQ0FBMkIsQ0FBQztvQkFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxJQUFJLEdBQUcsQ0FBMkIsQ0FBQztvQkFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO3dCQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFFbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELENBQUMsT0FaSDtnQkFDRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTO3dCQUFFLE9BQU8sSUFBSSxDQUFDO29CQUNwRCxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVM7d0JBQUUsT0FBTyxLQUFLLENBQUM7b0JBRXJELE1BQU0sSUFBSSxHQUFHLENBQTJCLENBQUM7b0JBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9CLE1BQU0sSUFBSSxHQUFHLENBQTJCLENBQUM7b0JBRXpDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTt3QkFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBRW5ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO2FBQ0YsR0FDRixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsdURBQUMsQ0FBQztRQUUxRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUV2RCxpQkFBaUIsQ0FBQztZQUNoQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FwRG1CLFNBQVM7MkZBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFEOUIsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgYWZ0ZXJSZW5kZXJFZmZlY3QsXHJcbiAgY29tcHV0ZWQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIFJlbmRlcmVyMixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcGlsZWRUcmFuc2xhdGlvbiwgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwIH0gZnJvbSAnLi9jb21waWxlJztcclxuaW1wb3J0IHsgY3JlYXRlVCB9IGZyb20gJy4vcmVnaXN0ZXItbmFtZXNwYWNlJztcclxuaW1wb3J0IHsgVW5rbm93blN0cmluZ0tleU9iamVjdCB9IGZyb20gJy4vc3RyaW5nLWtleS1vYmplY3QudHlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU3RvcmUgfSBmcm9tICcuL3RyYW5zbGF0aW9uLXN0b3JlJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNsYXRlPFxyXG4gIFRJbnB1dCBleHRlbmRzIHN0cmluZyxcclxuICBUIGV4dGVuZHMgQ29tcGlsZWRUcmFuc2xhdGlvbjxVbmtub3duU3RyaW5nS2V5T2JqZWN0LCBzdHJpbmc+LFxyXG4gIFRNYXAgZXh0ZW5kcyBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VD4gPSBpbmZlckNvbXBpbGVkVHJhbnNsYXRpb25NYXA8VD4sXHJcbiAgVEtleSBleHRlbmRzIFRJbnB1dCAmIGtleW9mIFRNYXAgJiBzdHJpbmcgPSBUSW5wdXQgJiBrZXlvZiBUTWFwICYgc3RyaW5nLFxyXG4+IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHQgPSBjcmVhdGVUKGluamVjdChUcmFuc2xhdGlvblN0b3JlKSk7XHJcblxyXG4gIHJlYWRvbmx5IHRyYW5zbGF0ZSA9XHJcbiAgICBpbnB1dC5yZXF1aXJlZDxcclxuICAgICAgVE1hcFtUS2V5XSBleHRlbmRzIHZvaWRcclxuICAgICAgICA/IFRLZXkgfCBba2V5OiBUS2V5XVxyXG4gICAgICAgIDogW2tleTogVEtleSwgdmFyczogVE1hcFtUS2V5XV1cclxuICAgID4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBrZXkgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhcnMgPSB0aGlzLnRyYW5zbGF0ZSgpO1xyXG4gICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFycykgPyB2YXJzWzBdIDogdmFycykgYXMgVEtleTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGFyZ3MgPSBjb21wdXRlZChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhcnMgPSB0aGlzLnRyYW5zbGF0ZSgpO1xyXG4gICAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YXJzKSA/IHZhcnNbMV0gOiB1bmRlZmluZWQpIGFzIFRNYXBbVEtleV07XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBlcXVhbDogKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmIChhID09PSB1bmRlZmluZWQgJiYgYiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIGlmIChhID09PSB1bmRlZmluZWQgfHwgYiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgICAgY29uc3QgYU9iaiA9IGEgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhT2JqKTtcclxuICAgICAgICAgIGNvbnN0IGJPYmogPSBiIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gICAgICAgICAgaWYgKCFrZXlzLmxlbmd0aCkgcmV0dXJuICFPYmplY3Qua2V5cyhiT2JqKS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGtleXMuZXZlcnkoKGtleSkgPT4gYU9ialtrZXldID09PSBiT2JqW2tleV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KGtleSgpLCBhcmdzKCkpKTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gICAgY29uc3QgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xyXG5cclxuICAgIGFmdGVyUmVuZGVyRWZmZWN0KHtcclxuICAgICAgd3JpdGU6ICgpID0+IHtcclxuICAgICAgICByZW5kZXJlci5zZXRQcm9wZXJ0eShlbC5uYXRpdmVFbGVtZW50LCAndGV4dENvbnRlbnQnLCB0cmFuc2xhdGlvbigpKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=","import { ChangeDetectorRef, effect, inject } from '@angular/core';\nimport { createT } from './register-namespace';\nimport { TranslationStore } from './translation-store';\nexport class Translator {\n store = inject(TranslationStore);\n t = createT(this.store);\n constructor() {\n const cdr = inject(ChangeDetectorRef);\n effect(() => {\n this.store.locale();\n cdr.markForCheck();\n });\n }\n transform(key, ...args) {\n const actualArgs = args.filter((a) => typeof a === 'object');\n return this.t(key, ...actualArgs);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RyYW5zbGF0ZS9zcmMvbGliL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE1BQU0sT0FBZ0IsVUFBVTtJQUliLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqQyxDQUFDLEdBQUcsT0FBTyxDQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUvQztRQUNFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQ1AsR0FBTSxFQUNOLEdBQUcsSUFFMkI7UUFFOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FDWSxDQUFDO1FBRTNDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcGlsZWRUcmFuc2xhdGlvbiwgaW5mZXJDb21waWxlZFRyYW5zbGF0aW9uTWFwIH0gZnJvbSAnLi9jb21waWxlJztcclxuaW1wb3J0IHsgY3JlYXRlVCB9IGZyb20gJy4vcmVnaXN0ZXItbmFtZXNwYWNlJztcclxuaW1wb3J0IHsgVW5rbm93blN0cmluZ0tleU9iamVjdCB9IGZyb20gJy4vc3RyaW5nLWtleS1vYmplY3QudHlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU3RvcmUgfSBmcm9tICcuL3RyYW5zbGF0aW9uLXN0b3JlJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2xhdG9yPFxyXG4gIFQgZXh0ZW5kcyBDb21waWxlZFRyYW5zbGF0aW9uPFVua25vd25TdHJpbmdLZXlPYmplY3QsIHN0cmluZz4sXHJcbiAgVE1hcCBleHRlbmRzIGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvbk1hcDxUPiA9IGluZmVyQ29tcGlsZWRUcmFuc2xhdGlvbk1hcDxUPixcclxuPiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChUcmFuc2xhdGlvblN0b3JlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHQgPSBjcmVhdGVUPFRNYXA+KHRoaXMuc3RvcmUpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdG9yZS5sb2NhbGUoKTtcclxuICAgICAgY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm08SyBleHRlbmRzIGtleW9mIFRNYXAgJiBzdHJpbmc+KFxyXG4gICAga2V5OiBLLFxyXG4gICAgLi4uYXJnczogVE1hcFtLXSBleHRlbmRzIHZvaWRcclxuICAgICAgPyBbbG9jYWxlPzogc3RyaW5nXVxyXG4gICAgICA6IFtUTWFwW0tdLCBsb2NhbGU/OiBzdHJpbmddXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGFjdHVhbEFyZ3MgPSBhcmdzLmZpbHRlcihcclxuICAgICAgKGEpID0+IHR5cGVvZiBhID09PSAnb2JqZWN0JyxcclxuICAgICkgYXMgVE1hcFtLXSBleHRlbmRzIHZvaWQgPyBbXSA6IFtUTWFwW0tdXTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy50KGtleSwgLi4uYWN0dWFsQXJncyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW1zdGFjay10cmFuc2xhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy90cmFuc2xhdGUvc3JjL21tc3RhY2stdHJhbnNsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Provider, Signal } from '@angular/core';
2
+ import { WritableSignal, Signal, Provider } from '@angular/core';
3
3
  import * as _formatjs_intl from '@formatjs/intl';
4
4
  import { IntlConfig } from '@formatjs/intl';
5
5
 
@@ -65,7 +65,29 @@ type TranslationNamespace<TNS extends string, T extends CompiledTranslation<Unkn
65
65
  declare function createNamespace<const T extends UnknownStringKeyObject, TNS extends string>(ns: TNS, translation: T): TranslationNamespace<TNS, CompiledTranslation<T, TNS, string>, inferTranslationShape<T>>;
66
66
 
67
67
  declare function provideIntlConfig(config: Omit<IntlConfig, 'locale' | 'messages'>): Provider;
68
- declare function injectIntl(): i0.Signal<_formatjs_intl.IntlShape<string>>;
68
+ declare function injectIntl(): Signal<_formatjs_intl.IntlShape<string>>;
69
+ /**
70
+ * Inject a dynamic locale signal that supports runtime language switching.
71
+ *
72
+ * @returns A writable signal with the current locale and loading state.
73
+ * Only allows switching to locales that have registered loaders.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const locale = injectDynamicLocale();
78
+ *
79
+ * // Switch language (triggers automatic translation loading)
80
+ * locale.set('sl-SI');
81
+ *
82
+ * // Check loading state
83
+ * if (locale.isLoading()) {
84
+ * // Show spinner
85
+ * }
86
+ * ```
87
+ */
88
+ declare function injectDynamicLocale(): WritableSignal<string> & {
89
+ isLoading: Signal<boolean>;
90
+ };
69
91
 
70
92
  type AnyStringRecord = Record<string, any>;
71
93
  type TFunction<TMap extends AnyStringRecord> = <TKey extends keyof TMap & string>(key: TKey, ...args: TMap[TKey] extends void ? [] : [TMap[TKey]]) => string;
@@ -87,9 +109,11 @@ declare abstract class Translate<TInput extends string, T extends CompiledTransl
87
109
  }
88
110
 
89
111
  declare abstract class Translator<T extends CompiledTranslation<UnknownStringKeyObject, string>, TMap extends inferCompiledTranslationMap<T> = inferCompiledTranslationMap<T>> {
112
+ private readonly store;
90
113
  private readonly t;
91
- transform<K extends keyof TMap & string>(key: K, ...args: TMap[K] extends void ? [] : [TMap[K]]): string;
114
+ constructor();
115
+ transform<K extends keyof TMap & string>(key: K, ...args: TMap[K] extends void ? [locale?: string] : [TMap[K], locale?: string]): string;
92
116
  }
93
117
 
94
- export { Translate, Translator, compileTranslation, createNamespace, injectIntl, provideIntlConfig, registerNamespace };
118
+ export { Translate, Translator, compileTranslation, createNamespace, injectDynamicLocale, injectIntl, provideIntlConfig, registerNamespace };
95
119
  export type { CompiledTranslation, inferCompiledTranslationMap, inferCompiledTranslationNamespace, inferCompiledTranslationShape, mergeTranslationMaps };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmstack/translate",
3
- "version": "20.4.1",
3
+ "version": "20.5.0",
4
4
  "keywords": [
5
5
  "angular",
6
6
  "localize",