@corti/dictation-web 0.7.0-ambient.1 → 0.7.0-ambient.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +26 -21
- package/dist/components/language-selector.js +1 -0
- package/dist/components/language-selector.js.map +1 -1
- package/dist/contexts/ambient-context.js +2 -6
- package/dist/contexts/ambient-context.js.map +1 -1
- package/dist/contexts/dictation-context.js +1 -5
- package/dist/contexts/dictation-context.js.map +1 -1
- package/dist/contexts/mixins/languages-context.d.ts +0 -1
- package/dist/contexts/mixins/languages-context.js +15 -10
- package/dist/contexts/mixins/languages-context.js.map +1 -1
- package/dist/controllers/languages-controller.d.ts +0 -1
- package/dist/controllers/languages-controller.js +1 -1
- package/dist/controllers/languages-controller.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/languages.d.ts +1 -0
- package/dist/utils/languages.js +12 -3
- package/dist/utils/languages.js.map +1 -1
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -1417,9 +1417,18 @@ function getLanguageName(languageCode) {
|
|
|
1417
1417
|
return languageCode;
|
|
1418
1418
|
}
|
|
1419
1419
|
}
|
|
1420
|
+
function getPreferredDefaultLanguage(languages = []) {
|
|
1421
|
+
if (languages.includes("en")) {
|
|
1422
|
+
return "en";
|
|
1423
|
+
}
|
|
1424
|
+
if (languages.includes("en-GB")) {
|
|
1425
|
+
return "en-GB";
|
|
1426
|
+
}
|
|
1427
|
+
return languages[0];
|
|
1428
|
+
}
|
|
1420
1429
|
function getLanguagesByRegion(region) {
|
|
1421
|
-
const languages = DEFAULT_LANGUAGES_BY_REGION[region || "default"]
|
|
1422
|
-
const defaultLanguage = languages
|
|
1430
|
+
const languages = DEFAULT_LANGUAGES_BY_REGION[region || "default"] ?? DEFAULT_LANGUAGES_BY_REGION.default;
|
|
1431
|
+
const defaultLanguage = getPreferredDefaultLanguage(languages);
|
|
1423
1432
|
return { defaultLanguage, languages };
|
|
1424
1433
|
}
|
|
1425
1434
|
|
|
@@ -1482,7 +1491,7 @@ _LanguagesController_autoLoadedLanguages = /* @__PURE__ */ new WeakMap(), _Langu
|
|
|
1482
1491
|
const { languages, defaultLanguage } = getLanguagesByRegion(this.host.region);
|
|
1483
1492
|
__classPrivateFieldSet2(this, _LanguagesController_autoLoadedLanguages, true, "f");
|
|
1484
1493
|
this.host._languages = languages;
|
|
1485
|
-
const previousLanguage = this.host.
|
|
1494
|
+
const previousLanguage = this.host._selectedLanguage;
|
|
1486
1495
|
const selectedLanguage = previousLanguage && languages.includes(previousLanguage) ? previousLanguage : defaultLanguage;
|
|
1487
1496
|
this.host._selectedLanguage = selectedLanguage;
|
|
1488
1497
|
this.host.requestUpdate();
|
|
@@ -1522,16 +1531,20 @@ function LanguagesContextMixin(superclass) {
|
|
|
1522
1531
|
if (value !== void 0) {
|
|
1523
1532
|
__classPrivateFieldGet5(this, _LanguagesContextMixinClass_languagesController, "f").clearAutoLoadedFlag();
|
|
1524
1533
|
}
|
|
1534
|
+
if (value === void 0) {
|
|
1535
|
+
return;
|
|
1536
|
+
}
|
|
1537
|
+
if (value.length === 0) {
|
|
1538
|
+
this._selectedLanguage = void 0;
|
|
1539
|
+
return;
|
|
1540
|
+
}
|
|
1541
|
+
if (this._selectedLanguage === void 0 || !value.includes(this._selectedLanguage)) {
|
|
1542
|
+
this._selectedLanguage = getPreferredDefaultLanguage(value);
|
|
1543
|
+
}
|
|
1525
1544
|
}
|
|
1526
1545
|
get languages() {
|
|
1527
1546
|
return this._languages;
|
|
1528
1547
|
}
|
|
1529
|
-
set selectedLanguage(value) {
|
|
1530
|
-
this._selectedLanguage = value;
|
|
1531
|
-
}
|
|
1532
|
-
get selectedLanguage() {
|
|
1533
|
-
return this._selectedLanguage;
|
|
1534
|
-
}
|
|
1535
1548
|
constructor(...args) {
|
|
1536
1549
|
super(...args);
|
|
1537
1550
|
_LanguagesContextMixinClass_languagesController.set(this, new LanguagesController(this));
|
|
@@ -1544,7 +1557,7 @@ function LanguagesContextMixin(superclass) {
|
|
|
1544
1557
|
this.addEventListener("languages-changed", (e10) => {
|
|
1545
1558
|
const event = e10;
|
|
1546
1559
|
const selectedLanguage = event.detail.selectedLanguage;
|
|
1547
|
-
this.
|
|
1560
|
+
this._selectedLanguage = selectedLanguage ?? getPreferredDefaultLanguage(event.detail.languages);
|
|
1548
1561
|
});
|
|
1549
1562
|
}
|
|
1550
1563
|
}
|
|
@@ -1563,9 +1576,6 @@ function LanguagesContextMixin(superclass) {
|
|
|
1563
1576
|
type: Array
|
|
1564
1577
|
})
|
|
1565
1578
|
], LanguagesContextMixinClass.prototype, "languages", null);
|
|
1566
|
-
__decorate4([
|
|
1567
|
-
n4({ type: String })
|
|
1568
|
-
], LanguagesContextMixinClass.prototype, "selectedLanguage", null);
|
|
1569
1579
|
return LanguagesContextMixinClass;
|
|
1570
1580
|
}
|
|
1571
1581
|
|
|
@@ -1679,10 +1689,7 @@ var AmbientRoot = class AmbientRoot2 extends RootContext {
|
|
|
1679
1689
|
if (!changedProperties.has("ambientConfig")) {
|
|
1680
1690
|
return;
|
|
1681
1691
|
}
|
|
1682
|
-
|
|
1683
|
-
if (configuredLanguage !== void 0 && configuredLanguage !== this.selectedLanguage) {
|
|
1684
|
-
this.selectedLanguage = configuredLanguage;
|
|
1685
|
-
}
|
|
1692
|
+
this._selectedLanguage = this.ambientConfig?.transcription?.primaryLanguage ?? "en";
|
|
1686
1693
|
}
|
|
1687
1694
|
};
|
|
1688
1695
|
__decorate8([
|
|
@@ -12906,10 +12913,7 @@ var DictationRoot = class DictationRoot2 extends RootContext {
|
|
|
12906
12913
|
if (!changedProperties.has("dictationConfig")) {
|
|
12907
12914
|
return;
|
|
12908
12915
|
}
|
|
12909
|
-
|
|
12910
|
-
if (configuredLanguage !== void 0 && configuredLanguage !== this.selectedLanguage) {
|
|
12911
|
-
this.selectedLanguage = configuredLanguage;
|
|
12912
|
-
}
|
|
12916
|
+
this._selectedLanguage = this.dictationConfig?.primaryLanguage;
|
|
12913
12917
|
}
|
|
12914
12918
|
};
|
|
12915
12919
|
__decorate9([
|
|
@@ -14636,6 +14640,7 @@ var DictationLanguageSelector = class DictationLanguageSelector2 extends i5 {
|
|
|
14636
14640
|
id="language-select"
|
|
14637
14641
|
aria-labelledby="language-select-label"
|
|
14638
14642
|
@change=${__classPrivateFieldGet13(this, _DictationLanguageSelector_instances, "m", _DictationLanguageSelector_handleSelectLanguage)}
|
|
14643
|
+
.value=${this._selectedLanguage ?? ""}
|
|
14639
14644
|
?disabled=${this.disabled || !this._languages || this._languages.length === 0}
|
|
14640
14645
|
>
|
|
14641
14646
|
${this._languages?.map((language) => x`
|
|
@@ -33,6 +33,7 @@ let DictationLanguageSelector = class DictationLanguageSelector extends LitEleme
|
|
|
33
33
|
id="language-select"
|
|
34
34
|
aria-labelledby="language-select-label"
|
|
35
35
|
@change=${__classPrivateFieldGet(this, _DictationLanguageSelector_instances, "m", _DictationLanguageSelector_handleSelectLanguage)}
|
|
36
|
+
.value=${this._selectedLanguage ?? ""}
|
|
36
37
|
?disabled=${this.disabled || !this._languages || this._languages.length === 0}
|
|
37
38
|
>
|
|
38
39
|
${this._languages?.map((language) => html `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-selector.js","sourceRoot":"","sources":["../../src/components/language-selector.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,UAAU;IAAlD;;;QAUL,aAAQ,GAAY,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"language-selector.js","sourceRoot":"","sources":["../../src/components/language-selector.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,UAAU;IAAlD;;;QAUL,aAAQ,GAAY,KAAK,CAAC;IAwC5B,CAAC;IA3BC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;oBAQK,uBAAA,IAAI,6FAAsB;mBAC3B,IAAI,CAAC,iBAAiB,IAAI,EAAE;sBACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;;YAE3E,IAAI,CAAC,UAAU,EAAE,GAAG,CACpB,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA;;wBAEN,QAAQ;4BACJ,IAAI,CAAC,iBAAiB,KAAK,QAAQ;;kBAE7C,eAAe,CAAC,QAAQ,CAAC;;aAE9B,CACF;;;KAGN,CAAC;IACJ,CAAC;;;2GAnCqB,CAAQ;IAC5B,MAAM,QAAQ,GAAI,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;IAEvD,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3E,qCAAqC;IACrC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,CAAC;AATM,gCAAM,GAAG,YAAY,AAAf,CAAgB;AAT7B;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvD,KAAK,EAAE;6DACyC;AAIjD;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9D,KAAK,EAAE;oEAC8C;AAGtD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2DACF;AAVf,yBAAyB;IADrC,aAAa,CAAC,6BAA6B,CAAC;GAChC,yBAAyB,CAkDrC","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport { html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport {\n languagesContext,\n selectedLanguageContext,\n} from \"../contexts/mixins/languages-context.js\";\nimport SelectStyles from \"../styles/select.js\";\nimport {\n languageChangedEvent,\n languagesChangedEvent,\n} from \"../utils/events.js\";\nimport { getLanguageName } from \"../utils/languages.js\";\n\n@customElement(\"dictation-language-selector\")\nexport class DictationLanguageSelector extends LitElement {\n @consume({ context: languagesContext, subscribe: true })\n @state()\n _languages?: Corti.TranscribeSupportedLanguage[];\n\n @consume({ context: selectedLanguageContext, subscribe: true })\n @state()\n _selectedLanguage?: Corti.TranscribeSupportedLanguage;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n static styles = SelectStyles;\n\n #handleSelectLanguage(e: Event): void {\n const language = (e.target as HTMLSelectElement).value;\n\n this.dispatchEvent(languagesChangedEvent(this._languages || [], language));\n\n // Dispatch backward compatible event\n this.dispatchEvent(languageChangedEvent(language));\n }\n\n render() {\n return html`\n <div>\n <label id=\"language-select-label\" for=\"language-select\">\n Spoken language\n </label>\n <select\n id=\"language-select\"\n aria-labelledby=\"language-select-label\"\n @change=${this.#handleSelectLanguage}\n .value=${this._selectedLanguage ?? \"\"}\n ?disabled=${this.disabled || !this._languages || this._languages.length === 0}\n >\n ${this._languages?.map(\n (language) => html`\n <option\n value=${language}\n ?selected=${this._selectedLanguage === language}\n >\n ${getLanguageName(language)}\n </option>\n `,\n )}\n </select>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-language-selector\": DictationLanguageSelector;\n }\n}\n"]}
|
|
@@ -37,12 +37,8 @@ let AmbientRoot = class AmbientRoot extends RootContext {
|
|
|
37
37
|
if (!changedProperties.has("ambientConfig")) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
configuredLanguage !== this.selectedLanguage) {
|
|
43
|
-
this.selectedLanguage =
|
|
44
|
-
configuredLanguage;
|
|
45
|
-
}
|
|
40
|
+
this._selectedLanguage =
|
|
41
|
+
this.ambientConfig?.transcription?.primaryLanguage ?? "en";
|
|
46
42
|
}
|
|
47
43
|
};
|
|
48
44
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ambient-context.js","sourceRoot":"","sources":["../../src/contexts/ambient-context.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAE/C,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAE3B,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAC/C,MAAM,CAAC,eAAe,CAAC,CACxB,CAAC;AAGK,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAS1C;QACE,KAAK,EAAE,CAAC;QAPV,kBAAa,GAAuB,qBAAqB,CAAC;QASxD,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAgB,CAAC;YAE/B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB;gBACzC,IAAI,CAAsC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC;YAEzD,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,IAAI;gBACP,IAAI,EAAE;oBACJ,GAAG,IAAI,CAAC,IAAI;oBACZ,YAAY,EAAE,IAAI;iBACnB;gBACD,aAAa,EAAE;oBACb,GAAG,IAAI,CAAC,aAAa;oBACrB,eAAe,EAAE,IAAI;iBACtB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,UAAU,CAAC,iBAAiC;QAC7D,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"ambient-context.js","sourceRoot":"","sources":["../../src/contexts/ambient-context.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAE/C,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAE3B,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAC/C,MAAM,CAAC,eAAe,CAAC,CACxB,CAAC;AAGK,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAS1C;QACE,KAAK,EAAE,CAAC;QAPV,kBAAa,GAAuB,qBAAqB,CAAC;QASxD,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAgB,CAAC;YAE/B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB;gBACzC,IAAI,CAAsC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC;YAEzD,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,IAAI;gBACP,IAAI,EAAE;oBACJ,GAAG,IAAI,CAAC,IAAI;oBACZ,YAAY,EAAE,IAAI;iBACnB;gBACD,aAAa,EAAE;oBACb,GAAG,IAAI,CAAC,aAAa;oBACrB,eAAe,EAAE,IAAI;iBACtB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,UAAU,CAAC,iBAAiC;QAC7D,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB;YACpB,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,IAAI,IAAI,CAAC;IAC/D,CAAC;CACF,CAAA;AAxCC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACa;AAI1D;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACJ;AAPZ,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CA2CvB","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { createContext, provide } from \"@lit/context\";\nimport type { PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { DEFAULT_STREAM_CONFIG } from \"../constants.js\";\nimport { RootContext } from \"./root-context.js\";\n\nexport const ambientConfigContext = createContext<\n Corti.StreamConfig | undefined\n>(Symbol(\"ambientConfig\"));\n\nexport const interactionIdContext = createContext<string | undefined>(\n Symbol(\"interactionId\"),\n);\n\n@customElement(\"ambient-root\")\nexport class AmbientRoot extends RootContext {\n @provide({ context: ambientConfigContext })\n @property({ attribute: false, type: Object })\n ambientConfig: Corti.StreamConfig = DEFAULT_STREAM_CONFIG;\n\n @provide({ context: interactionIdContext })\n @property({ type: String })\n interactionId?: string;\n\n constructor() {\n super();\n\n this.addEventListener(\"languages-changed\", (e: Event) => {\n const event = e as CustomEvent;\n\n const lang = (event.detail.selectedLanguage ??\n \"en\") as Corti.TranscribeSupportedLanguage;\n const base = this.ambientConfig ?? DEFAULT_STREAM_CONFIG;\n\n this.ambientConfig = {\n ...base,\n mode: {\n ...base.mode,\n outputLocale: lang,\n },\n transcription: {\n ...base.transcription,\n primaryLanguage: lang,\n },\n };\n });\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n super.willUpdate(changedProperties);\n\n if (!changedProperties.has(\"ambientConfig\")) {\n return;\n }\n\n this._selectedLanguage =\n this.ambientConfig?.transcription?.primaryLanguage ?? \"en\";\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-root\": AmbientRoot;\n }\n}\n"]}
|
|
@@ -29,11 +29,7 @@ let DictationRoot = class DictationRoot extends RootContext {
|
|
|
29
29
|
if (!changedProperties.has("dictationConfig")) {
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
if (configuredLanguage !== undefined &&
|
|
34
|
-
configuredLanguage !== this.selectedLanguage) {
|
|
35
|
-
this.selectedLanguage = configuredLanguage;
|
|
36
|
-
}
|
|
32
|
+
this._selectedLanguage = this.dictationConfig?.primaryLanguage;
|
|
37
33
|
}
|
|
38
34
|
};
|
|
39
35
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictation-context.js","sourceRoot":"","sources":["../../src/contexts/dictation-context.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAEjD,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CACnD,MAAM,CAAC,mBAAmB,CAAC,CAC5B,CAAC;AAEK,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,WAAW;IAa5C,gFAAgF;IAChF,YAAY;IACZ,gFAAgF;IAEhF;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAgB,CAAC;YAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,gBAEzB,CAAC;YAEd,IAAI,CAAC,eAAe,GAAG;gBACrB,GAAG,IAAI,CAAC,eAAe;gBACvB,eAAe,EAAE,gBAAgB,IAAI,IAAI;aAC1C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,UAAU,CAAC,iBAAiC;QAC7D,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"dictation-context.js","sourceRoot":"","sources":["../../src/contexts/dictation-context.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAEjD,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CACnD,MAAM,CAAC,mBAAmB,CAAC,CAC5B,CAAC;AAEK,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,WAAW;IAa5C,gFAAgF;IAChF,YAAY;IACZ,gFAAgF;IAEhF;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAgB,CAAC;YAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,gBAEzB,CAAC;YAEd,IAAI,CAAC,eAAe,GAAG;gBACrB,GAAG,IAAI,CAAC,eAAe;gBACvB,eAAe,EAAE,gBAAgB,IAAI,IAAI;aAC1C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,UAAU,CAAC,iBAAiC;QAC7D,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;IACjE,CAAC;CACF,CAAA;AAnCC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC5C,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACJ;AAIzC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;yDACjC;AAXlB,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CA0CzB","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { createContext, provide } from \"@lit/context\";\nimport type { PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { RootContext } from \"./root-context.js\";\n\nexport const dictationConfigContext = createContext<\n Corti.TranscribeConfig | undefined\n>(Symbol(\"dictationConfig\"));\nexport const debugDisplayAudioContext = createContext<boolean | undefined>(\n Symbol(\"debugDisplayAudio\"),\n);\n@customElement(\"dictation-root\")\nexport class DictationRoot extends RootContext {\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n @provide({ context: dictationConfigContext })\n @property({ attribute: false, type: Object })\n dictationConfig?: Corti.TranscribeConfig;\n\n @provide({ context: debugDisplayAudioContext })\n @property({ attribute: \"debug-display-audio\", type: Boolean })\n debug_displayAudio?: boolean;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Lifecycle\n // ─────────────────────────────────────────────────────────────────────────────\n\n constructor() {\n super();\n\n this.addEventListener(\"languages-changed\", (e: Event) => {\n const event = e as CustomEvent;\n const selectedLanguage = event.detail.selectedLanguage as\n | Corti.TranscribeSupportedLanguage\n | undefined;\n\n this.dictationConfig = {\n ...this.dictationConfig,\n primaryLanguage: selectedLanguage ?? \"en\",\n };\n });\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n super.willUpdate(changedProperties);\n\n if (!changedProperties.has(\"dictationConfig\")) {\n return;\n }\n\n this._selectedLanguage = this.dictationConfig?.primaryLanguage;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-root\": DictationRoot;\n }\n}\n"]}
|
|
@@ -11,6 +11,5 @@ export declare class LanguagesContextInterface {
|
|
|
11
11
|
_languages?: Corti.TranscribeSupportedLanguage[];
|
|
12
12
|
_selectedLanguage?: Corti.TranscribeSupportedLanguage;
|
|
13
13
|
languages?: Corti.TranscribeSupportedLanguage[];
|
|
14
|
-
selectedLanguage?: Corti.TranscribeSupportedLanguage;
|
|
15
14
|
}
|
|
16
15
|
export declare function LanguagesContextMixin<T extends Constructor<LitElement>>(superclass: T): Constructor<LanguagesContextInterface> & T;
|
|
@@ -13,6 +13,7 @@ import { createContext, provide } from "@lit/context";
|
|
|
13
13
|
import { property, state } from "lit/decorators.js";
|
|
14
14
|
import { LanguagesController } from "../../controllers/languages-controller.js";
|
|
15
15
|
import { commaSeparatedConverter } from "../../utils/converters.js";
|
|
16
|
+
import { getPreferredDefaultLanguage } from "../../utils/languages.js";
|
|
16
17
|
export const languagesContext = createContext(Symbol("languages"));
|
|
17
18
|
export const selectedLanguageContext = createContext(Symbol("selectedLanguage"));
|
|
18
19
|
export function LanguagesContextMixin(superclass) {
|
|
@@ -24,16 +25,21 @@ export function LanguagesContextMixin(superclass) {
|
|
|
24
25
|
if (value !== undefined) {
|
|
25
26
|
__classPrivateFieldGet(this, _LanguagesContextMixinClass_languagesController, "f").clearAutoLoadedFlag();
|
|
26
27
|
}
|
|
28
|
+
if (value === undefined) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (value.length === 0) {
|
|
32
|
+
this._selectedLanguage = undefined;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (this._selectedLanguage === undefined ||
|
|
36
|
+
!value.includes(this._selectedLanguage)) {
|
|
37
|
+
this._selectedLanguage = getPreferredDefaultLanguage(value);
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
get languages() {
|
|
29
41
|
return this._languages;
|
|
30
42
|
}
|
|
31
|
-
set selectedLanguage(value) {
|
|
32
|
-
this._selectedLanguage = value;
|
|
33
|
-
}
|
|
34
|
-
get selectedLanguage() {
|
|
35
|
-
return this._selectedLanguage;
|
|
36
|
-
}
|
|
37
43
|
constructor(...args) {
|
|
38
44
|
super(...args);
|
|
39
45
|
_LanguagesContextMixinClass_languagesController.set(this, new LanguagesController(this));
|
|
@@ -46,7 +52,9 @@ export function LanguagesContextMixin(superclass) {
|
|
|
46
52
|
this.addEventListener("languages-changed", (e) => {
|
|
47
53
|
const event = e;
|
|
48
54
|
const selectedLanguage = event.detail.selectedLanguage;
|
|
49
|
-
this.
|
|
55
|
+
this._selectedLanguage =
|
|
56
|
+
selectedLanguage ??
|
|
57
|
+
getPreferredDefaultLanguage(event.detail.languages);
|
|
50
58
|
});
|
|
51
59
|
}
|
|
52
60
|
}
|
|
@@ -65,9 +73,6 @@ export function LanguagesContextMixin(superclass) {
|
|
|
65
73
|
type: Array,
|
|
66
74
|
})
|
|
67
75
|
], LanguagesContextMixinClass.prototype, "languages", null);
|
|
68
|
-
__decorate([
|
|
69
|
-
property({ type: String })
|
|
70
|
-
], LanguagesContextMixinClass.prototype, "selectedLanguage", null);
|
|
71
76
|
return LanguagesContextMixinClass;
|
|
72
77
|
}
|
|
73
78
|
//# sourceMappingURL=languages-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages-context.js","sourceRoot":"","sources":["../../../src/contexts/mixins/languages-context.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,EAAqB,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"languages-context.js","sourceRoot":"","sources":["../../../src/contexts/mixins/languages-context.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,EAAqB,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAE3C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACvB,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAElD,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAQ9B,MAAM,UAAU,qBAAqB,CACnC,UAAa;;IAEb,MAAM,0BAA2B,SAAQ,UAAU;QAejD,IAAI,SAAS,CAAC,KAAsD;YAClE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,6DAA6D;YAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,uBAAA,IAAI,uDAAqB,CAAC,mBAAmB,EAAE,CAAC;YAClD,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IACE,IAAI,CAAC,iBAAiB,KAAK,SAAS;gBACpC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACvC,CAAC;gBACD,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,IAAI,SAAS;YACX,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QAED,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YA5CjB,0DAAuB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAC;YA8CnD,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAQ,EAAE,EAAE;gBACpD,MAAM,EAAE,GAAG,CAA0C,CAAC;gBAEtD,IAAI,EAAE,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;oBACpC,uBAAA,IAAI,uDAAqB,CAAC,UAAU,EAAE,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAQ,EAAE,EAAE;gBACtD,MAAM,KAAK,GAAG,CAA6C,CAAC;gBAC5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,gBAEzB,CAAC;gBAEd,IAAI,CAAC,iBAAiB;oBACpB,gBAAgB;wBAChB,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;KACF;;IA7DC;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QACtC,KAAK,EAAE;kEACyC;IAIjD;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;QAC7C,KAAK,EAAE;yEAC8C;IAMtD;QAJC,QAAQ,CAAC;YACR,SAAS,EAAE,uBAAuB;YAClC,IAAI,EAAE,KAAK;SACZ,CAAC;+DAwBD;IA8BH,OAAO,0BACJ,CAAC;AACN,CAAC","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { type ContextEvent, createContext, provide } from \"@lit/context\";\nimport type { LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { LanguagesController } from \"../../controllers/languages-controller.js\";\nimport { commaSeparatedConverter } from \"../../utils/converters.js\";\nimport type { LanguagesChangedEventDetail } from \"../../utils/events.js\";\nimport { getPreferredDefaultLanguage } from \"../../utils/languages.js\";\nimport type { Constructor } from \"./types.js\";\n\nexport const languagesContext = createContext<\n Corti.TranscribeSupportedLanguage[] | undefined\n>(Symbol(\"languages\"));\nexport const selectedLanguageContext = createContext<\n Corti.TranscribeSupportedLanguage | undefined\n>(Symbol(\"selectedLanguage\"));\n\nexport declare class LanguagesContextInterface {\n _languages?: Corti.TranscribeSupportedLanguage[];\n _selectedLanguage?: Corti.TranscribeSupportedLanguage;\n languages?: Corti.TranscribeSupportedLanguage[];\n}\n\nexport function LanguagesContextMixin<T extends Constructor<LitElement>>(\n superclass: T,\n): Constructor<LanguagesContextInterface> & T {\n class LanguagesContextMixinClass extends superclass {\n #languagesController = new LanguagesController(this);\n\n @provide({ context: languagesContext })\n @state()\n _languages?: Corti.TranscribeSupportedLanguage[];\n\n @provide({ context: selectedLanguageContext })\n @state()\n _selectedLanguage?: Corti.TranscribeSupportedLanguage;\n\n @property({\n converter: commaSeparatedConverter,\n type: Array,\n })\n set languages(value: Corti.TranscribeSupportedLanguage[] | undefined) {\n this._languages = value;\n\n // Clear auto-loaded flag when languages are set via property\n if (value !== undefined) {\n this.#languagesController.clearAutoLoadedFlag();\n }\n\n if (value === undefined) {\n return;\n }\n\n if (value.length === 0) {\n this._selectedLanguage = undefined;\n return;\n }\n\n if (\n this._selectedLanguage === undefined ||\n !value.includes(this._selectedLanguage)\n ) {\n this._selectedLanguage = getPreferredDefaultLanguage(value);\n }\n }\n\n get languages(): Corti.TranscribeSupportedLanguage[] | undefined {\n return this._languages;\n }\n\n constructor(...args: any[]) {\n super(...args);\n\n this.addEventListener(\"context-request\", (e: Event) => {\n const ev = e as ContextEvent<typeof languagesContext>;\n\n if (ev.context === languagesContext) {\n this.#languagesController.initialize();\n }\n });\n\n this.addEventListener(\"languages-changed\", (e: Event) => {\n const event = e as CustomEvent<LanguagesChangedEventDetail>;\n const selectedLanguage = event.detail.selectedLanguage as\n | Corti.TranscribeSupportedLanguage\n | undefined;\n\n this._selectedLanguage =\n selectedLanguage ??\n getPreferredDefaultLanguage(event.detail.languages);\n });\n }\n }\n\n return LanguagesContextMixinClass as Constructor<LanguagesContextInterface> &\n T;\n}\n"]}
|
|
@@ -6,7 +6,6 @@ interface LanguagesControllerHost extends ReactiveControllerHost {
|
|
|
6
6
|
requestUpdate(): void;
|
|
7
7
|
_languages?: Corti.TranscribeSupportedLanguage[];
|
|
8
8
|
_selectedLanguage?: Corti.TranscribeSupportedLanguage;
|
|
9
|
-
selectedLanguage?: Corti.TranscribeSupportedLanguage;
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
11
|
* Controller that manages automatic language loading based on region.
|
|
@@ -62,7 +62,7 @@ _LanguagesController_autoLoadedLanguages = new WeakMap(), _LanguagesController_l
|
|
|
62
62
|
const { languages, defaultLanguage } = getLanguagesByRegion(this.host.region);
|
|
63
63
|
__classPrivateFieldSet(this, _LanguagesController_autoLoadedLanguages, true, "f");
|
|
64
64
|
this.host._languages = languages;
|
|
65
|
-
const previousLanguage = this.host.
|
|
65
|
+
const previousLanguage = this.host._selectedLanguage;
|
|
66
66
|
const selectedLanguage = previousLanguage && languages.includes(previousLanguage)
|
|
67
67
|
? previousLanguage
|
|
68
68
|
: defaultLanguage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages-controller.js","sourceRoot":"","sources":["../../src/controllers/languages-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"languages-controller.js","sourceRoot":"","sources":["../../src/controllers/languages-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAU7D;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAO9B,YAAY,IAA6B;;QALzC,mDAAgC,KAAK,EAAC;QACtC,gDAA6B,KAAK,EAAC;QACnC,sDAAyB;QACzB,2CAAwB,KAAK,EAAC;QAG5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,uBAAA,IAAI,oCAAgB,IAAI,MAAA,CAAC;QAEzB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,uBAAA,IAAI,0EAAe,MAAnB,IAAI,CAAiB,CAAC;QACxB,CAAC;IACH,CAAC;IAED,UAAU;QACR,6CAA6C;QAC7C,IAAI,CAAC,uBAAA,IAAI,wCAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,IACE,CAAC,uBAAA,IAAI,2CAAgB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YACxC,uBAAA,IAAI,gDAAqB,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,EAClC,CAAC;YACD,uBAAA,IAAI,0EAAe,MAAnB,IAAI,CAAiB,CAAC;QACxB,CAAC;QAED,uBAAA,IAAI,uCAAmB,IAAI,CAAC,IAAI,CAAC,MAAM,MAAA,CAAC;IAC1C,CAAC;IAmCD;;OAEG;IACH,mBAAmB;QACjB,uBAAA,IAAI,4CAAwB,KAAK,MAAA,CAAC;IACpC,CAAC;CACF;6SAvCC,KAAK;IACH,IAAI,uBAAA,IAAI,6CAAkB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,uBAAA,IAAI,yCAAqB,IAAI,MAAA,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,oBAAoB,CACzD,IAAI,CAAC,IAAI,CAAC,MAAM,CACjB,CAAC;QAEF,uBAAA,IAAI,4CAAwB,IAAI,MAAA,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACrD,MAAM,gBAAgB,GACpB,gBAAgB,IAAI,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACtD,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,eAAe,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CACnD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,uBAAA,IAAI,yCAAqB,KAAK,MAAA,CAAC;IACjC,CAAC;AACH,CAAC","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport type { ReactiveController, ReactiveControllerHost } from \"lit\";\nimport { errorEvent, languagesChangedEvent } from \"../utils/events.js\";\nimport { getLanguagesByRegion } from \"../utils/languages.js\";\n\ninterface LanguagesControllerHost extends ReactiveControllerHost {\n region?: string;\n dispatchEvent(event: CustomEvent): boolean;\n requestUpdate(): void;\n _languages?: Corti.TranscribeSupportedLanguage[];\n _selectedLanguage?: Corti.TranscribeSupportedLanguage;\n}\n\n/**\n * Controller that manages automatic language loading based on region.\n * Loads languages when they're not present and handles region changes.\n * Reacts to updates and automatically loads languages when needed.\n */\nexport class LanguagesController implements ReactiveController {\n host: LanguagesControllerHost;\n #autoLoadedLanguages: boolean = false;\n #loadingLanguages: boolean = false;\n #previousRegion?: string;\n #initialized: boolean = false;\n\n constructor(host: LanguagesControllerHost) {\n this.host = host;\n host.addController(this);\n }\n\n initialize(): void {\n this.#initialized = true;\n\n if (this.host._languages === undefined) {\n this.#loadLanguages();\n }\n }\n\n hostUpdate(): void {\n // Only react to updates after initialization\n if (!this.#initialized) {\n return;\n }\n\n // When region changes, reload languages if they were auto-loaded\n if (\n (this.#previousRegion !== this.host.region &&\n this.#autoLoadedLanguages) ||\n this.host._languages === undefined\n ) {\n this.#loadLanguages();\n }\n\n this.#previousRegion = this.host.region;\n }\n\n async #loadLanguages(): Promise<void> {\n if (this.#loadingLanguages) {\n return;\n }\n\n this.#loadingLanguages = true;\n\n try {\n const { languages, defaultLanguage } = getLanguagesByRegion(\n this.host.region,\n );\n\n this.#autoLoadedLanguages = true;\n this.host._languages = languages;\n\n const previousLanguage = this.host._selectedLanguage;\n const selectedLanguage =\n previousLanguage && languages.includes(previousLanguage)\n ? previousLanguage\n : defaultLanguage;\n\n this.host._selectedLanguage = selectedLanguage;\n this.host.requestUpdate();\n this.host.dispatchEvent(\n languagesChangedEvent(languages, selectedLanguage),\n );\n } catch (error) {\n this.host.dispatchEvent(errorEvent(error));\n } finally {\n this.#loadingLanguages = false;\n }\n }\n\n /**\n * Clear the auto-loaded flag (when languages are set externally)\n */\n clearAutoLoadedFlag(): void {\n this.#autoLoadedLanguages = false;\n }\n}\n"]}
|