{"version":3,"file":"gorlug-static-typescript-translate.mjs","sources":["../../../projects/static-typescript-translate/src/lib/static-typescript-translate.service.ts","../../../projects/static-typescript-translate/src/lib/static-typescript-translate.module.ts","../../../projects/static-typescript-translate/src/public-api.ts","../../../projects/static-typescript-translate/src/gorlug-static-typescript-translate.ts"],"sourcesContent":["import {Injectable} from '@angular/core'\nimport {TranslateLoader} from '@ngx-translate/core'\nimport {BehaviorSubject, Observable} from 'rxjs'\nimport {ChildConfig} from './static-typescript-translate.module'\nimport {map, skipWhile} from 'rxjs/operators'\n\nexport function generatePathMap(obj: any, basePath = '') {\n  return Object.keys(obj).reduce((result, key) => {\n    const path = basePath === '' ? key : `${basePath}.${key}`\n    if (typeof obj[key] === 'object') {\n      result[key] = generatePathMap(obj[key], path)\n    } else {\n      result[key] = path\n    }\n    return result\n  }, {})\n}\n\nexport type LangMap = { [key: string]: any }\n\n@Injectable()\nexport class StaticTypescriptTranslateService extends TranslateLoader {\n  public langObjects$ = new BehaviorSubject<LangMap>(undefined)\n  langObjects: LangMap = {}\n  pathMap: any\n\n  constructor() {\n    super()\n  }\n\n  getTranslation(lang: string): Observable<any> {\n    return this.langObjects$.pipe(\n      skipWhile(value => value === undefined),\n      map(langObjects => {\n        let langObject = langObjects[lang]\n        if (langObject === undefined) {\n          langObject = {}\n        }\n        return langObject\n      })\n    )\n  }\n\n  getPathMap() {\n    return this.pathMap\n  }\n\n  addLangs(configs: ChildConfig[]) {\n    configs.forEach(config => {\n      const innerConfig: ChildConfig[] = config as any\n      this.addLangsFromConfig(innerConfig[0])\n    })\n    this.langObjects$.next(this.langObjects)\n    this.setPathMap()\n  }\n\n  setPathMap() {\n    // const key = Object.keys(this.langObjects)[0]\n    // this.pathMap = generatePathMap(this.langObjects[key])\n    // console.log('bbq pathMap', this.pathMap)\n  }\n\n  private addLangsFromConfig(config: ChildConfig) {\n    Object.keys(config.langs).forEach(lang => {\n      const object = this.getOrCreateLangObject(lang)\n      if (config.prefix === undefined) {\n        this.addAllLangKeys(config, lang, object)\n      } else {\n        object[config.prefix] = config.langs[lang][config.prefix]\n      }\n      this.langObjects[lang] = object\n    })\n  }\n\n  private addAllLangKeys(config: ChildConfig, lang: string, object) {\n    const configLang = config.langs[lang]\n    Object.keys(configLang).forEach(key => {\n      object[key] = configLang[key]\n    })\n  }\n\n  private getOrCreateLangObject(lang: string) {\n    let object = this.langObjects[lang]\n    if (object === undefined) {\n      object = {}\n    }\n    return object\n  }\n}\n","import {APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule} from '@angular/core'\nimport {LangMap, StaticTypescriptTranslateService} from './static-typescript-translate.service'\n\nexport interface ChildConfig {\n  prefix: string\n  langs: LangMap\n}\n\nexport const LANG_TOKEN = new InjectionToken<ChildConfig[]>('LANG_TOKEN')\n\nfunction addChildConfig(service: StaticTypescriptTranslateService, config: ChildConfig[]) {\n  return () => {\n    service.addLangs(config)\n  }\n}\n\n@NgModule({})\nexport class StaticTypescriptTranslateModule {\n\n  static forRoot(langs: LangMap): ModuleWithProviders<StaticTypescriptTranslateModule> {\n    const config: ChildConfig = {\n      langs, prefix: undefined\n    }\n    return {\n      ngModule: StaticTypescriptTranslateModule,\n      providers: [\n        StaticTypescriptTranslateService,\n        {\n          provide: LANG_TOKEN,\n          multi: true,\n          useValue: [config]\n        },\n        {\n          provide: APP_INITIALIZER, multi: true,\n          useFactory: addChildConfig, deps: [StaticTypescriptTranslateService, LANG_TOKEN]\n        }\n      ]\n    }\n  }\n\n  static forChild(config: ChildConfig): ModuleWithProviders<StaticTypescriptTranslateModule> {\n    return {\n      ngModule: StaticTypescriptTranslateModule,\n      providers: [\n        {\n          provide: LANG_TOKEN,\n          multi: true,\n          useValue: [config]\n        }\n      ]\n    }\n  }\n}\n","/*\n * Public API Surface of static-typescript-translate\n */\n\nexport * from './lib/static-typescript-translate.service'\nexport * from './lib/static-typescript-translate.module'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}