UNPKG

@corti/dictation-web

Version:
83 lines 4.86 kB
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _LanguagesController_instances, _LanguagesController_autoLoadedLanguages, _LanguagesController_loadingLanguages, _LanguagesController_previousRegion, _LanguagesController_initialized, _LanguagesController_loadLanguages; import { errorEvent, languagesChangedEvent } from "../utils/events.js"; import { getLanguagesByRegion } from "../utils/languages.js"; /** * Controller that manages automatic language loading based on region. * Loads languages when they're not present and handles region changes. * Reacts to updates and automatically loads languages when needed. */ export class LanguagesController { constructor(host) { _LanguagesController_instances.add(this); _LanguagesController_autoLoadedLanguages.set(this, false); _LanguagesController_loadingLanguages.set(this, false); _LanguagesController_previousRegion.set(this, void 0); _LanguagesController_initialized.set(this, false); this.host = host; host.addController(this); } initialize() { __classPrivateFieldSet(this, _LanguagesController_initialized, true, "f"); if (this.host._languages === undefined) { __classPrivateFieldGet(this, _LanguagesController_instances, "m", _LanguagesController_loadLanguages).call(this); } } hostUpdate() { // Only react to updates after initialization if (!__classPrivateFieldGet(this, _LanguagesController_initialized, "f")) { return; } // When region changes, reload languages if they were auto-loaded if ((__classPrivateFieldGet(this, _LanguagesController_previousRegion, "f") !== this.host.region && __classPrivateFieldGet(this, _LanguagesController_autoLoadedLanguages, "f")) || this.host._languages === undefined) { __classPrivateFieldGet(this, _LanguagesController_instances, "m", _LanguagesController_loadLanguages).call(this); } __classPrivateFieldSet(this, _LanguagesController_previousRegion, this.host.region, "f"); } /** * Clear the auto-loaded flag (when languages are set externally) */ clearAutoLoadedFlag() { __classPrivateFieldSet(this, _LanguagesController_autoLoadedLanguages, false, "f"); } } _LanguagesController_autoLoadedLanguages = new WeakMap(), _LanguagesController_loadingLanguages = new WeakMap(), _LanguagesController_previousRegion = new WeakMap(), _LanguagesController_initialized = new WeakMap(), _LanguagesController_instances = new WeakSet(), _LanguagesController_loadLanguages = async function _LanguagesController_loadLanguages() { if (__classPrivateFieldGet(this, _LanguagesController_loadingLanguages, "f")) { return; } __classPrivateFieldSet(this, _LanguagesController_loadingLanguages, true, "f"); try { const { languages, defaultLanguage } = getLanguagesByRegion(this.host.region); __classPrivateFieldSet(this, _LanguagesController_autoLoadedLanguages, true, "f"); this.host._languages = languages; const previousLanguage = this.host.dictationConfig?.primaryLanguage; const selectedLanguage = previousLanguage && languages.includes(previousLanguage) ? previousLanguage : defaultLanguage; this.host.dictationConfig = { ...this.host.dictationConfig, primaryLanguage: selectedLanguage || "en", }; this.host.requestUpdate(); this.host.dispatchEvent(languagesChangedEvent(languages, selectedLanguage)); } catch (error) { this.host.dispatchEvent(errorEvent(error)); } finally { __classPrivateFieldSet(this, _LanguagesController_loadingLanguages, false, "f"); } }; //# sourceMappingURL=languages-controller.js.map