{"version":3,"sources":["Themes/Default/Content/ts/Shared/Language/language-selector.ts"],"names":[],"mappings":"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","file":"language-selector.js","sourcesContent":["import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as koMapping from 'knockout.mapping';\r\nimport * as configurationService from 'configurationService';\r\nimport * as windowHelper from 'windowHelper';\r\nimport * as cookieHelper from 'cookieHelper';\r\nimport * as globalConfig from 'globalConfig';\r\nimport 'selectTwoBindingConfig';\r\nimport 'knockoutCustomBindings';\r\n\r\nimport { LanguageService } from 'Content/ts/Shared/Language/Services/languageService';\r\nimport { Language } from 'Content/ts/Models/Shared/Language/Language';\r\n\r\nexport const Deps = {\r\n languageService: new LanguageService(),\r\n configurationService: configurationService,\r\n windowHelper: windowHelper,\r\n cookieHelper: cookieHelper,\r\n globalConfig: globalConfig\r\n}\r\n\r\nconst BrowserLanguageToggleSetting = \"BrowserLanguageToggle\";\r\nconst BrowserLanguageToggleCookie = \"LanguageToggle\";\r\n\r\nexport class LanguageSelector {\r\n enabled: KnockoutObservable;\r\n loading: KnockoutObservable;\r\n languages: KnockoutObservableArray;\r\n currentLanguage: KnockoutObservable;\r\n selectedLanguageId: KnockoutObservable;\r\n selecting: KnockoutObservable;\r\n\r\n constructor() {\r\n this.enabled = ko.observable(false);\r\n this.loading = ko.observable(false);\r\n this.languages = ko.observableArray([]);\r\n this.selecting = ko.observable(false);\r\n this.currentLanguage = ko.observable(Deps.globalConfig.CurrentLanguage);\r\n this.selectedLanguageId = ko.observable(Deps.globalConfig.CurrentLanguage.Id);\r\n\r\n this.getEnabled();\r\n\r\n this.setupSubscribes();\r\n }\r\n\r\n private setupSubscribes() {\r\n this.selectedLanguageId.subscribe((value) => {\r\n if (value !== undefined && value !== this.currentLanguage().Id) {\r\n this.setLanguage(value);\r\n }\r\n });\r\n };\r\n\r\n private extraLanguageMappings = {\r\n create: ((lang: any) => {\r\n lang.data.id = lang.data.Id;\r\n lang.data.text = lang.data.NativeName;\r\n lang.data.Value = lang.data.Id;\r\n\r\n if (lang.data.Id === this.selectedLanguageId()) {\r\n lang.data.selected = true;\r\n }\r\n\r\n return lang.data;\r\n })\r\n };\r\n\r\n getEnabled() {\r\n var cookie = Deps.cookieHelper.getCookieValue(BrowserLanguageToggleCookie);\r\n\r\n if (cookie) {\r\n var result = $.parseJSON(cookie);\r\n if (typeof result === 'boolean') {\r\n this.enabled(result);\r\n }\r\n } else {\r\n Deps.configurationService.getConfigurationSetting(BrowserLanguageToggleSetting).then((config) => {\r\n var configResult = Deps.configurationService.getTruthy(config.SettingValue);\r\n this.enabled(configResult);\r\n Deps.cookieHelper.createOrUpdateCookie(BrowserLanguageToggleCookie, configResult.toString(), { expires: 1, path: '/', secure: true });\r\n });\r\n }\r\n }\r\n\r\n getLanguages() {\r\n this.loading(true);\r\n\r\n return Deps.languageService.getLanguages().then((langs: any) => {\r\n koMapping.fromJS(langs, (this.extraLanguageMappings), this.languages);\r\n }).finally(() => this.loading(false));\r\n }\r\n\r\n setLanguage(languageId: number) {\r\n this.loading(true);\r\n\r\n Deps.languageService.setLanguage(languageId)\r\n .then(() => { Deps.windowHelper.refresh(); })\r\n .catch(() => { this.loading(false); });\r\n }\r\n\r\n changeLanguage() {\r\n return this.getLanguages().then(() => { this.selecting(true); });\r\n }\r\n}\r\n\r\nconst componentName = 'language-selector';\r\nko.components.unregister(componentName);\r\nko.components.register(componentName, {\r\n viewModel: LanguageSelector,\r\n template: { require: `text!Content/ts/Shared/Language/${componentName}.html` }\r\n});"]}