{"version":3,"file":"ngx-translate-cache.mjs","sources":["../../../projects/ngx-translate-cache/src/lib/ngx-translate-cache.service.ts","../../../projects/ngx-translate-cache/src/lib/ngx-translate-cache.module.ts","../../../projects/ngx-translate-cache/src/public-api.ts","../../../projects/ngx-translate-cache/src/ngx-translate-cache.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { TranslateService, TranslationChangeEvent } from '@ngx-translate/core';\n\nexport type CacheMechanismType = 'LocalStorage' | 'Cookie';\nexport namespace CacheMechanism {\n  export const LocalStorage: CacheMechanismType = 'LocalStorage';\n  export const Cookie: CacheMechanismType = 'Cookie';\n}\n\nexport const CACHE_NAME = new InjectionToken<string>('CACHE_NAME');\nexport const CACHE_MECHANISM = new InjectionToken<string>('CACHE_MECHANISM');\nexport const COOKIE_EXPIRY = new InjectionToken<string>('COOKIE_EXPIRY');\nexport const COOKIE_ATTRIBUTES = new InjectionToken<string>('COOKIE_ATTRIBUTES');\n\nexport interface TranslateCacheConfig {\n  cacheService: Provider;\n  cacheName?: string;\n  cacheMechanism?: CacheMechanismType;\n  cookieExpiry?: number;\n  cookieAttributes?: string;\n}\n\nconst DEFAULT_CACHE_NAME = 'lang';\nconst DEFAULT_CACHE_MECHANISM = CacheMechanism.LocalStorage;\nconst DEFAULT_COOKIE_EXPIRY = 720;\n\n@Injectable()\nexport class TranslateCacheSettings {\n  constructor(@Inject(CACHE_NAME) public cacheName: string = DEFAULT_CACHE_NAME,\n              @Inject(CACHE_MECHANISM) public cacheMechanism: string = DEFAULT_CACHE_MECHANISM,\n              @Inject(COOKIE_EXPIRY) public cookieExpiry: number = DEFAULT_COOKIE_EXPIRY,\n              @Inject(COOKIE_ATTRIBUTES) public cookieAttributes: string) {}\n}\n\n/* Not injectable */\nexport class TranslateCacheService {\n  constructor(private translateService: TranslateService,\n              private translateCacheSettings: TranslateCacheSettings) {}\n\n  public init(): void {\n    this.translateService.onLangChange\n      .subscribe((event: TranslationChangeEvent) => {\n        if (this.translateCacheSettings.cacheMechanism === CacheMechanism.LocalStorage) {\n          return this.cacheWithLocalStorage(event.lang);\n        }\n\n        if (this.translateCacheSettings.cacheMechanism === CacheMechanism.Cookie) {\n          return this.cacheWithCookies(event.lang);\n        }\n      });\n\n    const currentLang = this.getCachedLanguage() || this.translateService.getBrowserLang();\n\n    if (currentLang) { this.translateService.use(currentLang); }\n  }\n\n  public getCachedLanguage(): string {\n    if (this.translateCacheSettings.cacheMechanism === CacheMechanism.LocalStorage) {\n      return this.cacheWithLocalStorage();\n    }\n\n    if (this.translateCacheSettings.cacheMechanism === CacheMechanism.Cookie) {\n      return this.cacheWithCookies();\n    }\n  }\n\n  private cacheWithLocalStorage(value?: string): string {\n    if (typeof window === 'undefined' || typeof window.localStorage === 'undefined') { return; }\n\n    try {\n      if (value) { window.localStorage.setItem(this.translateCacheSettings.cacheName, value); return; }\n\n      return window.localStorage.getItem(this.translateCacheSettings.cacheName);\n    } catch (e) { return; }\n  }\n\n  private cacheWithCookies(value?: string): string {\n    if (typeof document === 'undefined' || typeof document.cookie === 'undefined') { return; }\n\n    try {\n      const name = encodeURIComponent(this.translateCacheSettings.cacheName);\n\n      if (value) {\n        let cookieString = `${name}=${encodeURIComponent(value)}`;\n\n        if (this.translateCacheSettings.cookieExpiry >= 0) {\n          const date: Date = new Date();\n\n          date.setTime(date.getTime() + this.translateCacheSettings.cookieExpiry * 3600000);\n          cookieString += `;expires=${date.toUTCString()}`;\n        }\n\n        if (this.translateCacheSettings.cookieAttributes) {\n          cookieString += ';' + this.translateCacheSettings.cookieAttributes;\n        }\n\n        document.cookie = cookieString;\n\n        return;\n      }\n      const regexp = new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\n      const result = regexp.exec(document.cookie);\n\n      return decodeURIComponent(result[1]);\n    } catch (e) { return; }\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateCacheConfig, CACHE_NAME, CACHE_MECHANISM, COOKIE_EXPIRY,\n  COOKIE_ATTRIBUTES, TranslateCacheSettings } from './ngx-translate-cache.service';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [],\n  exports: []\n})\nexport class TranslateCacheModule {\n  static forRoot(config: TranslateCacheConfig): ModuleWithProviders<TranslateCacheModule> {\n    return {\n      ngModule: TranslateCacheModule,\n      providers: [\n        { provide: CACHE_NAME, useValue: config.cacheName },\n        { provide: CACHE_MECHANISM, useValue: config.cacheMechanism },\n        { provide: COOKIE_EXPIRY, useValue: config.cookieExpiry },\n        { provide: COOKIE_ATTRIBUTES, useValue: config.cookieAttributes },\n        TranslateCacheSettings,\n        config.cacheService,\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-translate-cache\n */\n\nexport * from './lib/ngx-translate-cache.service';\nexport * from './lib/ngx-translate-cache.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}