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