{"version":3,"names":["BehaviorSubject","Subject","constructor","_value","super","this","value","getValue","_subscribe","subscriber","subscription","closed","next","hasError","thrownError","ObjectUnsubscribedError","parseLanguageToShortLanguage","language","parseLanguageToFullLanguage","DEFAULT_LANGUAGE","DEFAULT_LANGUAGE_CHATBOT","TranslationServiceController","assetsBaseUrl","filePrefix","defaultLanguage","_language","translations$","language$","Error","controllers","getLocaleComponentStrings","then","translations","_translations","setLanguage","fetchLocaleStringsForComponent","baseUrl","fileName","locale","Promise","resolve","reject","fetch","result","ok","json","async","e","console","warn","TranslationService","configurationPrefix"],"sources":["./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./src/helpers/languageParser.service.ts","./src/helpers/translation.ts"],"sourcesContent":["import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n//# sourceMappingURL=BehaviorSubject.js.map","export function parseLanguageToShortLanguage(language: string): string {\n switch(language) {\n case 'en-GB':\n case 'en-US':\n case 'en':\n return 'en';\n case 'fr-FR':\n case 'fr-BE':\n case 'fr':\n return 'fr';\n default:\n return 'nl';\n }\n}\n\nexport function parseLanguageToFullLanguage(language: string): string {\n switch(language) {\n case 'en-GB':\n case 'en-US':\n case 'en':\n return 'en-GB';\n case 'fr-FR':\n case 'fr-BE':\n case 'fr':\n return 'fr-FR';\n default:\n return 'nl-NL';\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { parseLanguageToShortLanguage } from './languageParser.service';\n\nexport const DEFAULT_LANGUAGE = \"nl\";\nexport const DEFAULT_LANGUAGE_CHATBOT = \"nl-NL\";\n\n// Interface of the translationService because we won't expose the translationServiceController because it has to have a non-public constructor.\nexport interface ITranslationService {\n translations$: BehaviorSubject;\n language$: BehaviorSubject;\n setLanguage(language: string): void;\n}\n\nclass TranslationServiceController {\n private _translations: any;\n private _language = DEFAULT_LANGUAGE;\n\n public translations$: BehaviorSubject = new BehaviorSubject(null);\n public language$: BehaviorSubject = new BehaviorSubject(DEFAULT_LANGUAGE);\n\n constructor(private assetsBaseUrl: string, private filePrefix: string, private defaultLanguage: string) {\n if (!assetsBaseUrl) {\n throw new Error(\"Could not create new translationService without assetsBaseUrl\");\n }\n controllers[filePrefix] = this;\n this._language = this.defaultLanguage;\n this.language$.next(this.defaultLanguage);\n this.getLocaleComponentStrings(this.assetsBaseUrl, this._language, filePrefix).then(translations => {\n this._translations = translations;\n this.translations$.next(this._translations)\n });\n }\n\n public setLanguage(language: string) {\n this.getLocaleComponentStrings(this.assetsBaseUrl, language, this.filePrefix).then(translations => {\n this._translations = translations;\n this._language = language;\n this.language$.next(language);\n this.translations$.next(this._translations)\n });\n }\n\n //Create promise and try to fetch the translations;\n private fetchLocaleStringsForComponent(\n baseUrl: string, fileName: string, locale: string,\n ): Promise {\n return new Promise(\n (resolve, reject): void => {\n fetch(baseUrl + `i18n/${fileName}.i18n.${parseLanguageToShortLanguage(locale)}.json`).then(\n result => result.ok\n ? resolve(result.json())\n : reject(),\n () => reject()\n );\n }\n );\n }\n\n // Retrieve the translations for the specified language.\n private async getLocaleComponentStrings(\n baseUrl: string,\n language: string,\n fileName: string = \"chatbot\"\n ): Promise {\n try {\n return await this.fetchLocaleStringsForComponent(\n baseUrl,\n fileName,\n language\n );\n } catch (e) {\n console.warn(\n `no locale for ${fileName} (${language}) loading default locale ${DEFAULT_LANGUAGE}.`\n );\n return await this.fetchLocaleStringsForComponent(baseUrl, fileName, DEFAULT_LANGUAGE);\n }\n }\n}\n\nconst controllers = {}\n\n// TranslationService is setUp as a Singleton per type.\n// This gives the possibility to create a translationservice for the chatbot and a translationservice for the account part.\n// Which will fetch their own translation files\n// For each type, the translationService has to be initiated once with a baseUrl and a configurationPrefix (for example 'chatbot' or 'account').\n// After the initialization every component can just get the service by calling TranslationService({type});\nexport const TranslationService = (configurationPrefix: string, defaultLanguage: string = DEFAULT_LANGUAGE, baseUrl = null): ITranslationService =>\n !!controllers[configurationPrefix] ?\n controllers[configurationPrefix] :\n new TranslationServiceController(baseUrl, configurationPrefix, defaultLanguage);\n"],"mappings":"2CAEO,MAAMA,UAAwBC,EACjCC,YAAYC,GACRC,QACAC,KAAKF,OAASA,CACtB,CACQG,YACA,OAAOD,KAAKE,UACpB,CACIC,WAAWC,GACP,MAAMC,EAAeN,MAAMI,WAAWC,GACtC,GAAIC,IAAiBA,EAAaC,OAAQ,CACtCF,EAAWG,KAAKP,KAAKF,OACjC,CACQ,OAAOO,CACf,CACIH,WACI,GAAIF,KAAKQ,SAAU,CACf,MAAMR,KAAKS,WACvB,MACa,GAAIT,KAAKM,OAAQ,CAClB,MAAM,IAAII,CACtB,KACa,CACD,OAAOV,KAAKF,MACxB,CACA,CACIS,KAAKN,GACDF,MAAMQ,KAAKP,KAAKF,OAASG,EACjC,E,SC9BgBU,EAA6BC,GACzC,OAAOA,GACH,IAAK,QACL,IAAK,QACL,IAAK,KACD,MAAO,KACX,IAAK,QACL,IAAK,QACL,IAAK,KACD,MAAO,KACX,QACI,MAAO,KAEnB,C,SAEgBC,EAA4BD,GACxC,OAAOA,GACH,IAAK,QACL,IAAK,QACL,IAAK,KACD,MAAO,QACX,IAAK,QACL,IAAK,QACL,IAAK,KACD,MAAO,QACX,QACI,MAAO,QAEnB,C,MCzBaE,EAAmB,K,MACnBC,EAA2B,QASxC,MAAMC,EAOFnB,YAAoBoB,EAA+BC,EAA4BC,GAA3DnB,KAAAiB,gBAA+BjB,KAAAkB,aAA4BlB,KAAAmB,kBALvEnB,KAAAoB,UAAYN,EAEbd,KAAAqB,cAAsC,IAAI1B,EAAgB,MAC1DK,KAAAsB,UAAqC,IAAI3B,EAAgBmB,GAG5D,IAAKG,EAAe,CAChB,MAAM,IAAIM,MAAM,gE,CAEpBC,EAAYN,GAAclB,KAC1BA,KAAKoB,UAAYpB,KAAKmB,gBACtBnB,KAAKsB,UAAUf,KAAKP,KAAKmB,iBACzBnB,KAAKyB,0BAA0BzB,KAAKiB,cAAejB,KAAKoB,UAAWF,GAAYQ,MAAKC,IAChF3B,KAAK4B,cAAgBD,EACrB3B,KAAKqB,cAAcd,KAAKP,KAAK4B,cAAc,G,CAI5CC,YAAYjB,GACfZ,KAAKyB,0BAA0BzB,KAAKiB,cAAeL,EAAUZ,KAAKkB,YAAYQ,MAAKC,IAC/E3B,KAAK4B,cAAgBD,EACrB3B,KAAKoB,UAAYR,EACjBZ,KAAKsB,UAAUf,KAAKK,GACpBZ,KAAKqB,cAAcd,KAAKP,KAAK4B,cAAc,G,CAK3CE,+BACJC,EAAiBC,EAAkBC,GAEnC,OAAO,IAAIC,SACP,CAACC,EAASC,KACNC,MAAMN,EAAU,QAAQC,UAAiBrB,EAA6BsB,WAAgBP,MAClFY,GAAUA,EAAOC,GACXJ,EAAQG,EAAOE,QACfJ,MACN,IAAMA,KACT,G,CAMLK,gCACJV,EACAnB,EACAoB,EAAmB,WAEnB,IACI,aAAahC,KAAK8B,+BACdC,EACAC,EACApB,E,CAEN,MAAO8B,GACLC,QAAQC,KACJ,iBAAiBZ,MAAapB,6BAAoCE,MAEtE,aAAad,KAAK8B,+BAA+BC,EAASC,EAAUlB,E,GAKhF,MAAMU,EAAc,G,MAOPqB,EAAqB,CAACC,EAA6B3B,EAA0BL,EAAkBiB,EAAU,SAChHP,EAAYsB,GACVtB,EAAYsB,GACZ,IAAI9B,EAA6Be,EAASe,EAAqB3B,U"}