@tilde-nlp/ngx-common 5.0.3 → 5.0.5
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/esm2022/lib/text-to-speech/text-to-speech.component.mjs +34 -14
- package/esm2022/lib/text-to-speech/translations/tts-i18n.mjs +9 -9
- package/fesm2022/tilde-nlp-ngx-common.mjs +39 -21
- package/fesm2022/tilde-nlp-ngx-common.mjs.map +1 -1
- package/lib/text-to-speech/text-to-speech.component.d.ts +3 -1
- package/package.json +1 -1
- package/web-components/3rdpartylicenses.txt +5 -0
- package/web-components/main.js +15 -9
|
@@ -10,6 +10,7 @@ import { TTS_I18N } from './translations/tts-i18n';
|
|
|
10
10
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
11
11
|
import { MatSelectModule } from '@angular/material/select';
|
|
12
12
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
13
|
+
import { FlexLayoutModule } from '@ngbracket/ngx-layout';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
import * as i1 from "@angular/common";
|
|
15
16
|
import * as i2 from "@angular/forms";
|
|
@@ -17,8 +18,9 @@ import * as i3 from "@angular/material/tooltip";
|
|
|
17
18
|
import * as i4 from "@angular/material/form-field";
|
|
18
19
|
import * as i5 from "@angular/material/select";
|
|
19
20
|
import * as i6 from "@angular/material/core";
|
|
21
|
+
import * as i7 from "@ngbracket/ngx-layout/extended";
|
|
20
22
|
function TextToSpeechComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
-
i0.ɵɵelementStart(0, "mat-option",
|
|
23
|
+
i0.ɵɵelementStart(0, "mat-option", 12);
|
|
22
24
|
i0.ɵɵtext(1);
|
|
23
25
|
i0.ɵɵelementEnd();
|
|
24
26
|
} if (rf & 2) {
|
|
@@ -28,7 +30,7 @@ function TextToSpeechComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
28
30
|
i0.ɵɵadvance();
|
|
29
31
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.translations.voiceList[voice_r1], " ");
|
|
30
32
|
} }
|
|
31
|
-
function
|
|
33
|
+
function TextToSpeechComponent_mat_icon_13_Template(rf, ctx) { if (rf & 1) {
|
|
32
34
|
i0.ɵɵelementStart(0, "mat-icon");
|
|
33
35
|
i0.ɵɵtext(1);
|
|
34
36
|
i0.ɵɵelementEnd();
|
|
@@ -37,13 +39,14 @@ function TextToSpeechComponent_mat_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
37
39
|
i0.ɵɵadvance();
|
|
38
40
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.isPlaying ? "stop" : "volume_up", " ");
|
|
39
41
|
} }
|
|
40
|
-
function
|
|
41
|
-
i0.ɵɵelement(0, "mat-spinner",
|
|
42
|
+
function TextToSpeechComponent_mat_spinner_14_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelement(0, "mat-spinner", 13);
|
|
42
44
|
} if (rf & 2) {
|
|
43
45
|
i0.ɵɵproperty("diameter", 20);
|
|
44
46
|
} }
|
|
45
47
|
export class TextToSpeechComponent {
|
|
46
48
|
constructor() {
|
|
49
|
+
this.maxCharLength = 1000;
|
|
47
50
|
this.langAttributeKey = 'lang';
|
|
48
51
|
this.defaultLanguage = 'lv';
|
|
49
52
|
this.voiceList = ['sandra4', 'lv-LV-general'];
|
|
@@ -56,6 +59,10 @@ export class TextToSpeechComponent {
|
|
|
56
59
|
}
|
|
57
60
|
return TTS_I18N[this.defaultLanguage];
|
|
58
61
|
}
|
|
62
|
+
get hasOverflow() {
|
|
63
|
+
const textarea = document.querySelector('textarea');
|
|
64
|
+
return textarea?.clientHeight < textarea?.scrollHeight ? true : false;
|
|
65
|
+
}
|
|
59
66
|
#textPlayService;
|
|
60
67
|
ngOnInit() {
|
|
61
68
|
this.watchHtmlLangAttributeChanges();
|
|
@@ -66,8 +73,9 @@ export class TextToSpeechComponent {
|
|
|
66
73
|
return;
|
|
67
74
|
}
|
|
68
75
|
this.isLoading = true;
|
|
76
|
+
const text = this.text.length > this.maxCharLength ? this.text.substring(0, this.maxCharLength) : this.text;
|
|
69
77
|
this.#textPlayService
|
|
70
|
-
.play(
|
|
78
|
+
.play(text, this.selectedVoice, this.xApiKey)
|
|
71
79
|
.pipe(finalize(() => { this.isLoading = false; }))
|
|
72
80
|
.subscribe({
|
|
73
81
|
next: (res) => {
|
|
@@ -111,7 +119,7 @@ export class TextToSpeechComponent {
|
|
|
111
119
|
return document.querySelector('html').getAttribute(this.langAttributeKey).split('-')[0];
|
|
112
120
|
}
|
|
113
121
|
static { this.ɵfac = function TextToSpeechComponent_Factory(t) { return new (t || TextToSpeechComponent)(); }; }
|
|
114
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { xApiKey: "xApiKey", language: "language" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls:
|
|
122
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { xApiKey: "xApiKey", language: "language", maxCharLength: "maxCharLength" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 15, vars: 15, consts: [[1, "text-to-speech-wrapper", 3, "ngClass.lt-md"], ["appearance", "outline", "color", "accent"], [3, "valueChange", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "text-to-speech-textarea-wrapper"], [1, "text-to-speech-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "text-to-speech-characters"], [1, "text-to-speech-actions"], [3, "matTooltip"], ["mat-icon-button", "", 3, "click", "matTooltip", "disabled"], [4, "ngIf"], [3, "diameter", 4, "ngIf"], [3, "value"], [3, "diameter"]], template: function TextToSpeechComponent_Template(rf, ctx) { if (rf & 1) {
|
|
115
123
|
i0.ɵɵelementStart(0, "div", 0)(1, "mat-form-field", 1)(2, "mat-label");
|
|
116
124
|
i0.ɵɵtext(3);
|
|
117
125
|
i0.ɵɵelementEnd();
|
|
@@ -121,12 +129,17 @@ export class TextToSpeechComponent {
|
|
|
121
129
|
i0.ɵɵelementEnd()();
|
|
122
130
|
i0.ɵɵelementStart(6, "div", 4)(7, "textarea", 5);
|
|
123
131
|
i0.ɵɵtwoWayListener("ngModelChange", function TextToSpeechComponent_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.text, $event) || (ctx.text = $event); return $event; });
|
|
132
|
+
i0.ɵɵelementEnd();
|
|
133
|
+
i0.ɵɵelementStart(8, "div", 6);
|
|
134
|
+
i0.ɵɵtext(9);
|
|
124
135
|
i0.ɵɵelementEnd()();
|
|
125
|
-
i0.ɵɵelementStart(
|
|
126
|
-
i0.ɵɵlistener("click", function
|
|
127
|
-
i0.ɵɵtemplate(
|
|
136
|
+
i0.ɵɵelementStart(10, "div", 7)(11, "div", 8)(12, "button", 9);
|
|
137
|
+
i0.ɵɵlistener("click", function TextToSpeechComponent_Template_button_click_12_listener() { return ctx.playText(); });
|
|
138
|
+
i0.ɵɵtemplate(13, TextToSpeechComponent_mat_icon_13_Template, 2, 1, "mat-icon", 10)(14, TextToSpeechComponent_mat_spinner_14_Template, 1, 1, "mat-spinner", 11);
|
|
128
139
|
i0.ɵɵelementEnd()()()();
|
|
129
140
|
} if (rf & 2) {
|
|
141
|
+
let tmp_7_0;
|
|
142
|
+
i0.ɵɵproperty("ngClass.lt-md", "mobile");
|
|
130
143
|
i0.ɵɵadvance(3);
|
|
131
144
|
i0.ɵɵtextInterpolate(ctx.translations.selectVoice);
|
|
132
145
|
i0.ɵɵadvance();
|
|
@@ -136,6 +149,10 @@ export class TextToSpeechComponent {
|
|
|
136
149
|
i0.ɵɵadvance(2);
|
|
137
150
|
i0.ɵɵtwoWayProperty("ngModel", ctx.text);
|
|
138
151
|
i0.ɵɵproperty("placeholder", ctx.translations.placeholder);
|
|
152
|
+
i0.ɵɵadvance();
|
|
153
|
+
i0.ɵɵclassProp("text-overflow", ctx.hasOverflow);
|
|
154
|
+
i0.ɵɵadvance();
|
|
155
|
+
i0.ɵɵtextInterpolate2(" ", (tmp_7_0 = ctx.text == null ? null : ctx.text.length) !== null && tmp_7_0 !== undefined ? tmp_7_0 : 0, "/", ctx.maxCharLength, " ");
|
|
139
156
|
i0.ɵɵadvance(2);
|
|
140
157
|
i0.ɵɵproperty("matTooltip", !ctx.text ? ctx.translations.playDisabled : "");
|
|
141
158
|
i0.ɵɵadvance();
|
|
@@ -147,7 +164,7 @@ export class TextToSpeechComponent {
|
|
|
147
164
|
} }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, MatIconButton,
|
|
148
165
|
MatIcon,
|
|
149
166
|
FormsModule, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, MatProgressSpinner,
|
|
150
|
-
MatTooltipModule, i3.MatTooltip, MatFormFieldModule, i4.MatFormField, i4.MatLabel, MatSelectModule, i5.MatSelect, i6.MatOption], styles: [".text-to-speech-wrapper[_ngcontent-%COMP%]{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%], .text-to-speech-textarea[_ngcontent-%COMP%]{width:100%;max-width:900px}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%]{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea[_ngcontent-%COMP%]{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions[_ngcontent-%COMP%]{position:absolute;bottom:-25px}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#fff;background-color:var(--accent)}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{background-color:var(--base-70)}"] }); }
|
|
167
|
+
MatTooltipModule, i3.MatTooltip, MatFormFieldModule, i4.MatFormField, i4.MatLabel, MatSelectModule, i5.MatSelect, i6.MatOption, FlexLayoutModule, i7.DefaultClassDirective], styles: [".text-to-speech-wrapper[_ngcontent-%COMP%]{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%], .text-to-speech-textarea[_ngcontent-%COMP%]{position:relative;width:100%;max-width:900px}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%]{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea[_ngcontent-%COMP%]{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions[_ngcontent-%COMP%]{position:absolute;bottom:-25px}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#fff;background-color:var(--accent)}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{background-color:var(--base-70)}.text-to-speech-characters[_ngcontent-%COMP%]{position:absolute;right:10px;bottom:0;margin:5px;font-size:13px;color:var(--base-65)}.text-overflow[_ngcontent-%COMP%]{right:30px}.mobile[_ngcontent-%COMP%] .text-overflow[_ngcontent-%COMP%]{right:15px}"] }); }
|
|
151
168
|
}
|
|
152
169
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TextToSpeechComponent, [{
|
|
153
170
|
type: Component,
|
|
@@ -160,12 +177,15 @@ export class TextToSpeechComponent {
|
|
|
160
177
|
MatProgressSpinner,
|
|
161
178
|
MatTooltipModule,
|
|
162
179
|
MatFormFieldModule,
|
|
163
|
-
MatSelectModule
|
|
164
|
-
|
|
180
|
+
MatSelectModule,
|
|
181
|
+
FlexLayoutModule
|
|
182
|
+
], template: "<div [ngClass.lt-md]=\"'mobile'\" class=\"text-to-speech-wrapper\">\r\n <mat-form-field appearance=\"outline\" color=\"accent\">\r\n <mat-label>{{translations.selectVoice}}</mat-label>\r\n <mat-select [(value)]=\"selectedVoice\">\r\n <mat-option *ngFor=\"let voice of voiceList\" [value]=\"voice\">\r\n {{ translations.voiceList[voice] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"text-to-speech-textarea-wrapper\">\r\n <textarea [(ngModel)]=\"text\" class=\"text-to-speech-textarea\" [placeholder]=\"translations.placeholder\"></textarea>\r\n <div [class.text-overflow]=\"hasOverflow\" class=\"text-to-speech-characters\">\r\n {{text?.length ?? 0}}/{{maxCharLength}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-to-speech-actions\">\r\n <div [matTooltip]=\"!text ? translations.playDisabled : ''\">\r\n <button [matTooltip]=\"isPlaying ? translations.stop : translations.play\" [disabled]=\"!text || isLoading\" (click)=\"playText()\" mat-icon-button>\r\n <mat-icon *ngIf=\"!isLoading\"> {{ isPlaying ? 'stop' : 'volume_up' }} </mat-icon>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\"></mat-spinner>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".text-to-speech-wrapper{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper mat-form-field{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper,.text-to-speech-textarea{position:relative;width:100%;max-width:900px}.text-to-speech-textarea-wrapper{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions{position:absolute;bottom:-25px}.text-to-speech-actions button{color:#fff;background-color:var(--accent)}.text-to-speech-actions button:disabled{background-color:var(--base-70)}.text-to-speech-characters{position:absolute;right:10px;bottom:0;margin:5px;font-size:13px;color:var(--base-65)}.text-overflow{right:30px}.mobile .text-overflow{right:15px}\n"] }]
|
|
165
183
|
}], null, { xApiKey: [{
|
|
166
184
|
type: Input
|
|
167
185
|
}], language: [{
|
|
168
186
|
type: Input
|
|
187
|
+
}], maxCharLength: [{
|
|
188
|
+
type: Input
|
|
169
189
|
}] }); })();
|
|
170
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber:
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXh0LXRvLXNwZWVjaC90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7SUNQNUQsc0NBQTREO0lBQzFELFlBQ0Y7SUFBQSxpQkFBYTs7OztJQUYrQixnQ0FBZTtJQUN6RCxjQUNGO0lBREUs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RUFDRixFQUNGOztZQXBCUyxlQUE0QjtZQUE1QixrREFBNEI7WUFDM0IsY0FBeUI7WUFBekIsK0NBQXlCO1lBQ0wsY0FBWTtZQUFaLHVDQUFZO1lBT2xDLGVBQWtCO1lBQWxCLHdDQUFrQjtZQUFpQywwREFBd0M7WUFJaEcsZUFBcUQ7WUFBckQsMkVBQXFEO1lBQ2hELGNBQWdFO1lBQUMsQUFBakUsMEZBQWdFLHdDQUFnQztZQUMzRixjQUFnQjtZQUFoQixxQ0FBZ0I7WUFDYixjQUFlO1lBQWYsb0NBQWU7NEJERGpDLFlBQVksdUJBRVosYUFBYTtZQUNiLE9BQU87WUFDUCxXQUFXLDJEQUNYLGtCQUFrQjtZQUNsQixnQkFBZ0IsaUJBQ2hCLGtCQUFrQixnQ0FDbEIsZUFBZTs7aUZBS04scUJBQXFCO2NBakJqQyxTQUFTOzJCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7b0JBQ1AsWUFBWTtvQkFDWixTQUFTO29CQUNULGFBQWE7b0JBQ2IsT0FBTztvQkFDUCxXQUFXO29CQUNYLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixrQkFBa0I7b0JBQ2xCLGVBQWU7aUJBQ2hCO2dCQUtRLE9BQU87a0JBQWYsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7O2tGQUZLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRleHRQbGF5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1wbGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgVFRTX0kxOE4gfSBmcm9tICcuL3RyYW5zbGF0aW9ucy90dHMtaTE4bic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZXh0LXRvLXNwZWVjaCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC10by1zcGVlY2guY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dFRvU3BlZWNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB4QXBpS2V5ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlITogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGxhbmdBdHRyaWJ1dGVLZXkgPSAnbGFuZyc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2UgPSAnbHYnO1xyXG5cclxuICByZWFkb25seSB2b2ljZUxpc3QgPSBbJ3NhbmRyYTQnLCAnbHYtTFYtZ2VuZXJhbCddO1xyXG5cclxuICB0ZXh0ITogc3RyaW5nO1xyXG4gIHNlbGVjdGVkVm9pY2UgPSB0aGlzLnZvaWNlTGlzdFswXTtcclxuICBhdWRpbyE6IEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgaXNMb2FkaW5nITogYm9vbGVhbjtcclxuICBpc1BsYXlpbmchOiBib29sZWFuO1xyXG5cclxuICBnZXQgdHJhbnNsYXRpb25zKCkge1xyXG4gICAgaWYgKFRUU19JMThOW3RoaXMubGFuZ3VhZ2VdKSB7XHJcbiAgICAgIHJldHVybiBUVFNfSTE4Tlt0aGlzLmxhbmd1YWdlXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gVFRTX0kxOE5bdGhpcy5kZWZhdWx0TGFuZ3VhZ2VdO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgI3RleHRQbGF5U2VydmljZSA9IGluamVjdChUZXh0UGxheVNlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMud2F0Y2hIdG1sTGFuZ0F0dHJpYnV0ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHBsYXlUZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XHJcbiAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuI3RleHRQbGF5U2VydmljZVxyXG4gICAgICAucGxheSh0aGlzLnRleHQsIHRoaXMuc2VsZWN0ZWRWb2ljZSwgdGhpcy54QXBpS2V5KVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB7IHRoaXMuaXNMb2FkaW5nID0gZmFsc2UgfSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGF1ZGlvVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXMpO1xyXG4gICAgICAgICAgdGhpcy5hdWRpbyA9IG5ldyBBdWRpbyhhdWRpb1VybCk7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvLnBsYXkoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5hdWRpby5vbmVuZGVkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGF1ZGlvVXJsKTtcclxuICAgICAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXVkaW8pIHtcclxuICAgICAgdGhpcy5hdWRpby5wYXVzZSgpO1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEh0bWxMYW5nQXR0cmlidXRlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5nZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpO1xyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMubGFuZ3VhZ2UgJiYgKGxhbmd1YWdlICE9PSB0aGlzLmRlZmF1bHRMYW5ndWFnZSkpIHtcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9uTGFuZ0F0dHJpYnV0ZUNoYW5nZSA9IChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xyXG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gdGhpcy5sYW5nQXR0cmlidXRlS2V5KSB7XHJcbiAgICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5nZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpO1xyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvbkxhbmdBdHRyaWJ1dGVDaGFuZ2UpO1xyXG4gICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogW3RoaXMubGFuZ0F0dHJpYnV0ZUtleV0gfTtcclxuICAgIG9ic2VydmVyLm9ic2VydmUoaHRtbEVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh0bWxMYW5nQXR0cmlidXRlKCk6IHN0cmluZyB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgcmV0dXJuIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykgYXMgYW55KS5nZXRBdHRyaWJ1dGUodGhpcy5sYW5nQXR0cmlidXRlS2V5KS5zcGxpdCgnLScpWzBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtd3JhcHBlclwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNvbG9yPVwiYWNjZW50XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7dHJhbnNsYXRpb25zLnNlbGVjdFZvaWNlfX08L21hdC1sYWJlbD5cclxuICAgIDxtYXQtc2VsZWN0IFsodmFsdWUpXT1cInNlbGVjdGVkVm9pY2VcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZvaWNlIG9mIHZvaWNlTGlzdFwiIFt2YWx1ZV09XCJ2b2ljZVwiPlxyXG4gICAgICAgIHt7IHRyYW5zbGF0aW9ucy52b2ljZUxpc3Rbdm9pY2VdIH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWEtd3JhcHBlclwiPlxyXG4gICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwidGV4dFwiIGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWFcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zLnBsYWNlaG9sZGVyXCI+PC90ZXh0YXJlYT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRleHQtdG8tc3BlZWNoLWFjdGlvbnNcIj5cclxuICAgIDxkaXYgW21hdFRvb2x0aXBdPVwiIXRleHQgPyB0cmFuc2xhdGlvbnMucGxheURpc2FibGVkIDogJydcIj5cclxuICAgICAgPGJ1dHRvbiBbbWF0VG9vbHRpcF09XCJpc1BsYXlpbmcgPyB0cmFuc2xhdGlvbnMuc3RvcCA6IHRyYW5zbGF0aW9ucy5wbGF5XCIgW2Rpc2FibGVkXT1cIiF0ZXh0IHx8IGlzTG9hZGluZ1wiIChjbGljayk9XCJwbGF5VGV4dCgpXCIgbWF0LWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIj4ge3sgaXNQbGF5aW5nID8gJ3N0b3AnIDogJ3ZvbHVtZV91cCcgfX0gIDwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2RpYW1ldGVyXT1cIjIwXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
190
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber: 33 }); })();
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXh0LXRvLXNwZWVjaC90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0lDUm5ELHNDQUE0RDtJQUMxRCxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFGK0IsZ0NBQWU7SUFDekQsY0FDRjtJQURFLHdFQUNGOzs7SUFjRSxnQ0FBNkI7SUFBQyxZQUF3QztJQUFBLGlCQUFXOzs7SUFBbkQsY0FBd0M7SUFBeEMsd0VBQXdDOzs7SUFDdEUsa0NBQTZEOztJQUE5Qiw2QkFBZTs7QURXdEQsTUFBTSxPQUFPLHFCQUFxQjtJQWxCbEM7UUFxQlcsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFFckIscUJBQWdCLEdBQUcsTUFBTSxDQUFDO1FBQzFCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUdsRCxrQkFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFrQnpCLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQW9FckQ7SUFqRkMsSUFBSSxZQUFZO1FBQ2QsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUF3QixDQUFDO1FBQzNFLE9BQU8sUUFBUSxFQUFFLFlBQVksR0FBRyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUN2RSxDQUFDO0lBRVEsZ0JBQWdCLENBQTJCO0lBRXBELFFBQVE7UUFDTixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU1RyxJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoRCxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFFdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO29CQUN4QixHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRU8sNkJBQTZCO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzNCLENBQUM7UUFFRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsYUFBK0IsRUFBRSxFQUFFO1lBQ2hFLEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdkYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUM5RSxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLDhEQUE4RDtRQUM5RCxPQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO3NGQWhHVSxxQkFBcUI7b0VBQXJCLHFCQUFxQjtZQzlCOUIsQUFERixBQURGLDhCQUErRCx3QkFDVCxnQkFDdkM7WUFBQSxZQUE0QjtZQUFBLGlCQUFZO1lBQ25ELHFDQUFzQztZQUExQiwwTkFBeUI7WUFDbkMsb0ZBQTREO1lBSWhFLEFBREUsaUJBQWEsRUFDRTtZQUdmLEFBREYsOEJBQTZDLGtCQUMyRDtZQUE1RiwwTUFBa0I7WUFBMEUsaUJBQVc7WUFDakgsOEJBQTJFO1lBQ3pFLFlBQ0Y7WUFDRixBQURFLGlCQUFNLEVBQ0Y7WUFJRixBQURGLEFBREYsK0JBQW9DLGNBQ3lCLGlCQUNxRjtZQUFyQyxtR0FBUyxjQUFVLElBQUM7WUFFM0gsQUFEQSxtRkFBNkIsNEVBQ2tCO1lBSXZELEFBREUsQUFERSxBQURFLGlCQUFTLEVBQ0wsRUFDRixFQUNGOzs7WUF6QkQsd0NBQTBCO1lBRWhCLGVBQTRCO1lBQTVCLGtEQUE0QjtZQUMzQixjQUF5QjtZQUF6QiwrQ0FBeUI7WUFDTCxjQUFZO1lBQVosdUNBQVk7WUFPbEMsZUFBa0I7WUFBbEIsd0NBQWtCO1lBQWlDLDBEQUF3QztZQUNoRyxjQUFtQztZQUFuQyxnREFBbUM7WUFDdEMsY0FDRjtZQURFLDhKQUNGO1lBSUssZUFBcUQ7WUFBckQsMkVBQXFEO1lBQ2hELGNBQWdFO1lBQUMsQUFBakUsMEZBQWdFLHdDQUFnQztZQUMzRixjQUFnQjtZQUFoQixxQ0FBZ0I7WUFDYixjQUFlO1lBQWYsb0NBQWU7NEJESGpDLFlBQVksdUJBRVosYUFBYTtZQUNiLE9BQU87WUFDUCxXQUFXLDJEQUNYLGtCQUFrQjtZQUNsQixnQkFBZ0IsaUJBQ2hCLGtCQUFrQixnQ0FDbEIsZUFBZSw4QkFDZixnQkFBZ0I7O2lGQUtQLHFCQUFxQjtjQWxCakMsU0FBUzsyQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO29CQUNQLFlBQVk7b0JBQ1osU0FBUztvQkFDVCxhQUFhO29CQUNiLE9BQU87b0JBQ1AsV0FBVztvQkFDWCxrQkFBa0I7b0JBQ2xCLGdCQUFnQjtvQkFDaEIsa0JBQWtCO29CQUNsQixlQUFlO29CQUNmLGdCQUFnQjtpQkFDakI7Z0JBS1EsT0FBTztrQkFBZixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7O2tGQUhLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRleHRQbGF5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1wbGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgVFRTX0kxOE4gfSBmcm9tICcuL3RyYW5zbGF0aW9ucy90dHMtaTE4bic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGV4dC10by1zcGVlY2gnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uLFxyXG4gICAgTWF0SWNvbkJ1dHRvbixcclxuICAgIE1hdEljb24sXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGbGV4TGF5b3V0TW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC10by1zcGVlY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0VG9TcGVlY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHhBcGlLZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFuZ3VhZ2UhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4Q2hhckxlbmd0aDogbnVtYmVyID0gMTAwMDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBsYW5nQXR0cmlidXRlS2V5ID0gJ2xhbmcnO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlID0gJ2x2JztcclxuXHJcbiAgcmVhZG9ubHkgdm9pY2VMaXN0ID0gWydzYW5kcmE0JywgJ2x2LUxWLWdlbmVyYWwnXTtcclxuXHJcbiAgdGV4dCE6IHN0cmluZztcclxuICBzZWxlY3RlZFZvaWNlID0gdGhpcy52b2ljZUxpc3RbMF07XHJcbiAgYXVkaW8hOiBIVE1MQXVkaW9FbGVtZW50O1xyXG4gIGlzTG9hZGluZyE6IGJvb2xlYW47XHJcbiAgaXNQbGF5aW5nITogYm9vbGVhbjtcclxuXHJcbiAgZ2V0IHRyYW5zbGF0aW9ucygpIHtcclxuICAgIGlmIChUVFNfSTE4Tlt0aGlzLmxhbmd1YWdlXSkge1xyXG4gICAgICByZXR1cm4gVFRTX0kxOE5bdGhpcy5sYW5ndWFnZV07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFRUU19JMThOW3RoaXMuZGVmYXVsdExhbmd1YWdlXTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNPdmVyZmxvdygpIHtcclxuICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGV4dGFyZWEnKSBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgcmV0dXJuIHRleHRhcmVhPy5jbGllbnRIZWlnaHQgPCB0ZXh0YXJlYT8uc2Nyb2xsSGVpZ2h0ID8gdHJ1ZSA6IGZhbHNlXHJcbiAgfVxyXG5cclxuICByZWFkb25seSAjdGV4dFBsYXlTZXJ2aWNlID0gaW5qZWN0KFRleHRQbGF5U2VydmljZSk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy53YXRjaEh0bWxMYW5nQXR0cmlidXRlQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcGxheVRleHQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1BsYXlpbmcpIHtcclxuICAgICAgdGhpcy5zdG9wKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMudGV4dC5sZW5ndGggPiB0aGlzLm1heENoYXJMZW5ndGggPyB0aGlzLnRleHQuc3Vic3RyaW5nKDAsIHRoaXMubWF4Q2hhckxlbmd0aCkgOiB0aGlzLnRleHQ7XHJcblxyXG4gICAgdGhpcy4jdGV4dFBsYXlTZXJ2aWNlXHJcbiAgICAgIC5wbGF5KHRleHQsIHRoaXMuc2VsZWN0ZWRWb2ljZSwgdGhpcy54QXBpS2V5KVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB7IHRoaXMuaXNMb2FkaW5nID0gZmFsc2UgfSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGF1ZGlvVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXMpO1xyXG4gICAgICAgICAgdGhpcy5hdWRpbyA9IG5ldyBBdWRpbyhhdWRpb1VybCk7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvLnBsYXkoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5hdWRpby5vbmVuZGVkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGF1ZGlvVXJsKTtcclxuICAgICAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXVkaW8pIHtcclxuICAgICAgdGhpcy5hdWRpby5wYXVzZSgpO1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEh0bWxMYW5nQXR0cmlidXRlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5nZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpO1xyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMubGFuZ3VhZ2UgJiYgKGxhbmd1YWdlICE9PSB0aGlzLmRlZmF1bHRMYW5ndWFnZSkpIHtcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9uTGFuZ0F0dHJpYnV0ZUNoYW5nZSA9IChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xyXG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gdGhpcy5sYW5nQXR0cmlidXRlS2V5KSB7XHJcbiAgICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5nZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpO1xyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvbkxhbmdBdHRyaWJ1dGVDaGFuZ2UpO1xyXG4gICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogW3RoaXMubGFuZ0F0dHJpYnV0ZUtleV0gfTtcclxuICAgIG9ic2VydmVyLm9ic2VydmUoaHRtbEVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh0bWxMYW5nQXR0cmlidXRlKCk6IHN0cmluZyB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgcmV0dXJuIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykgYXMgYW55KS5nZXRBdHRyaWJ1dGUodGhpcy5sYW5nQXR0cmlidXRlS2V5KS5zcGxpdCgnLScpWzBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzLmx0LW1kXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC13cmFwcGVyXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgIDxtYXQtbGFiZWw+e3t0cmFuc2xhdGlvbnMuc2VsZWN0Vm9pY2V9fTwvbWF0LWxhYmVsPlxyXG4gICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwic2VsZWN0ZWRWb2ljZVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdm9pY2Ugb2Ygdm9pY2VMaXN0XCIgW3ZhbHVlXT1cInZvaWNlXCI+XHJcbiAgICAgICAge3sgdHJhbnNsYXRpb25zLnZvaWNlTGlzdFt2b2ljZV0gfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC10ZXh0YXJlYS13cmFwcGVyXCI+XHJcbiAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJ0ZXh0XCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC10ZXh0YXJlYVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnMucGxhY2Vob2xkZXJcIj48L3RleHRhcmVhPlxyXG4gICAgPGRpdiBbY2xhc3MudGV4dC1vdmVyZmxvd109XCJoYXNPdmVyZmxvd1wiIGNsYXNzPVwidGV4dC10by1zcGVlY2gtY2hhcmFjdGVyc1wiPlxyXG4gICAgICB7e3RleHQ/Lmxlbmd0aCA/PyAwfX0ve3ttYXhDaGFyTGVuZ3RofX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtYWN0aW9uc1wiPlxyXG4gICAgPGRpdiBbbWF0VG9vbHRpcF09XCIhdGV4dCA/IHRyYW5zbGF0aW9ucy5wbGF5RGlzYWJsZWQgOiAnJ1wiPlxyXG4gICAgICA8YnV0dG9uIFttYXRUb29sdGlwXT1cImlzUGxheWluZyA/IHRyYW5zbGF0aW9ucy5zdG9wIDogdHJhbnNsYXRpb25zLnBsYXlcIiBbZGlzYWJsZWRdPVwiIXRleHQgfHwgaXNMb2FkaW5nXCIgKGNsaWNrKT1cInBsYXlUZXh0KClcIiBtYXQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWlzTG9hZGluZ1wiPiB7eyBpc1BsYXlpbmcgPyAnc3RvcCcgOiAndm9sdW1lX3VwJyB9fSAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBbZGlhbWV0ZXJdPVwiMjBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2
2
|
export const TTS_I18N = {
|
|
3
3
|
en: {
|
|
4
|
-
selectVoice: '
|
|
5
|
-
placeholder: 'Enter text to listen to a demonstration of the text-to-speech technology. Remember, this service can only be used in accordance with its terms of use (see the "
|
|
4
|
+
selectVoice: 'Demo voices (currently only for Latvian language)',
|
|
5
|
+
placeholder: 'Enter text to listen to a demonstration of the text-to-speech technology. Remember, this service can only be used in accordance with its terms of use (see the "Frequently asked questions" section). It is not permitted to use this service for texts that contain offensive, indecent, defamatory, misleading, hateful, or discriminatory statements. Violation of the terms of use may result in liability as stipulated by the laws of the Republic of Latvia. A maximum of 1000 characters will be spoken.',
|
|
6
6
|
playDisabled: 'Enter text to play',
|
|
7
7
|
play: 'Play',
|
|
8
8
|
stop: 'Stop',
|
|
9
9
|
voiceList: {
|
|
10
|
-
sandra4: '
|
|
11
|
-
'lv-LV-general': '
|
|
10
|
+
sandra4: 'Voice 1',
|
|
11
|
+
'lv-LV-general': 'Voice 2'
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
lv: {
|
|
15
|
-
selectVoice: '
|
|
16
|
-
placeholder: 'Ievadi tekstu, lai noklausītos balss sintēzes tehnoloģijas demonstrāciju. Atceries, ka šo pakalpojumu var lietot tikai atbilstoši tā lietošanas noteikumiem (skatīt sadaļu “
|
|
15
|
+
selectVoice: 'Demo balsis (šobrīd tikai Latviešu valodā)',
|
|
16
|
+
placeholder: 'Ievadi tekstu, lai noklausītos balss sintēzes tehnoloģijas demonstrāciju. Atceries, ka šo pakalpojumu var lietot tikai atbilstoši tā lietošanas noteikumiem (skatīt sadaļu “Biežāk uzdotie jautājumi”)! To nav atļauts izmantot tekstiem, kas satur aizskarošus, nepieklājīgus, apmelojošus, maldinošus, naidu vai diskrimināciju veicinošus apgalvojumus. Par lietošanas noteikumu pārkāpumu var iestāties LR likumos noteiktā atbildība. Tiks izrunāti ne vairāk kā 1000 simboli.',
|
|
17
17
|
playDisabled: 'Ievadi tekstu, lai atskaņot to',
|
|
18
18
|
play: 'Atskaņot',
|
|
19
19
|
stop: 'Apstādināt',
|
|
20
20
|
voiceList: {
|
|
21
|
-
sandra4: '
|
|
22
|
-
'lv-LV-general': '
|
|
21
|
+
sandra4: 'Balss 1',
|
|
22
|
+
'lv-LV-general': 'Balss 2'
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHRzLWkxOG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvdGV4dC10by1zcGVlY2gvdHJhbnNsYXRpb25zL3R0cy1pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQVE7SUFDM0IsRUFBRSxFQUFFO1FBQ0YsV0FBVyxFQUFFLG1EQUFtRDtRQUNoRSxXQUFXLEVBQUUsa2ZBQWtmO1FBQy9mLFlBQVksRUFBRSxvQkFBb0I7UUFDbEMsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsTUFBTTtRQUNaLFNBQVMsRUFBRTtZQUNULE9BQU8sRUFBRSxTQUFTO1lBQ2xCLGVBQWUsRUFBRSxTQUFTO1NBQzNCO0tBQ0Y7SUFDRCxFQUFFLEVBQUU7UUFDRixXQUFXLEVBQUUsNENBQTRDO1FBQ3pELFdBQVcsRUFBRSxxZEFBcWQ7UUFDbGUsWUFBWSxFQUFFLGdDQUFnQztRQUM5QyxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsWUFBWTtRQUNsQixTQUFTLEVBQUU7WUFDVCxPQUFPLEVBQUUsU0FBUztZQUNsQixlQUFlLEVBQUUsU0FBUztTQUMzQjtLQUNGO0NBQ0YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbmV4cG9ydCBjb25zdCBUVFNfSTE4TjogYW55ID0ge1xyXG4gIGVuOiB7XHJcbiAgICBzZWxlY3RWb2ljZTogJ0RlbW8gdm9pY2VzIChjdXJyZW50bHkgb25seSBmb3IgTGF0dmlhbiBsYW5ndWFnZSknLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdFbnRlciB0ZXh0IHRvIGxpc3RlbiB0byBhIGRlbW9uc3RyYXRpb24gb2YgdGhlIHRleHQtdG8tc3BlZWNoIHRlY2hub2xvZ3kuIFJlbWVtYmVyLCB0aGlzIHNlcnZpY2UgY2FuIG9ubHkgYmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggaXRzIHRlcm1zIG9mIHVzZSAoc2VlIHRoZSBcIkZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zXCIgc2VjdGlvbikuIEl0IGlzIG5vdCBwZXJtaXR0ZWQgdG8gdXNlIHRoaXMgc2VydmljZSBmb3IgdGV4dHMgdGhhdCBjb250YWluIG9mZmVuc2l2ZSwgaW5kZWNlbnQsIGRlZmFtYXRvcnksIG1pc2xlYWRpbmcsIGhhdGVmdWwsIG9yIGRpc2NyaW1pbmF0b3J5IHN0YXRlbWVudHMuIFZpb2xhdGlvbiBvZiB0aGUgdGVybXMgb2YgdXNlIG1heSByZXN1bHQgaW4gbGlhYmlsaXR5IGFzIHN0aXB1bGF0ZWQgYnkgdGhlIGxhd3Mgb2YgdGhlIFJlcHVibGljIG9mIExhdHZpYS4gQSBtYXhpbXVtIG9mIDEwMDAgY2hhcmFjdGVycyB3aWxsIGJlIHNwb2tlbi4nLFxyXG4gICAgcGxheURpc2FibGVkOiAnRW50ZXIgdGV4dCB0byBwbGF5JyxcclxuICAgIHBsYXk6ICdQbGF5JyxcclxuICAgIHN0b3A6ICdTdG9wJyxcclxuICAgIHZvaWNlTGlzdDoge1xyXG4gICAgICBzYW5kcmE0OiAnVm9pY2UgMScsXHJcbiAgICAgICdsdi1MVi1nZW5lcmFsJzogJ1ZvaWNlIDInXHJcbiAgICB9XHJcbiAgfSxcclxuICBsdjoge1xyXG4gICAgc2VsZWN0Vm9pY2U6ICdEZW1vIGJhbHNpcyAoxaFvYnLEq2QgdGlrYWkgTGF0dmllxaF1IHZhbG9kxIEpJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnSWV2YWRpIHRla3N0dSwgbGFpIG5va2xhdXPEq3RvcyBiYWxzcyBzaW50xJN6ZXMgdGVobm9sb8SjaWphcyBkZW1vbnN0csSBY2lqdS4gQXRjZXJpZXMsIGthIMWhbyBwYWthbHBvanVtdSB2YXIgbGlldG90IHRpa2FpIGF0Ymlsc3RvxaFpIHTEgSBsaWV0b8WhYW5hcyBub3RlaWt1bWllbSAoc2thdMSrdCBzYWRhxLx1IOKAnEJpZcW+xIFrIHV6ZG90aWUgamF1dMSBanVtaeKAnSkhIFRvIG5hdiBhdMS8YXV0cyBpem1hbnRvdCB0ZWtzdGllbSwga2FzIHNhdHVyIGFpenNrYXJvxaF1cywgbmVwaWVrbMSBasSrZ3VzLCBhcG1lbG9qb8WhdXMsIG1hbGRpbm/FoXVzLCBuYWlkdSB2YWkgZGlza3JpbWluxIFjaWp1IHZlaWNpbm/FoXVzIGFwZ2Fsdm9qdW11cy4gUGFyIGxpZXRvxaFhbmFzIG5vdGVpa3VtdSBwxIFya8SBcHVtdSB2YXIgaWVzdMSBdGllcyBMUiBsaWt1bW9zIG5vdGVpa3TEgSBhdGJpbGTEq2JhLiBUaWtzIGl6cnVuxIF0aSBuZSB2YWlyxIFrIGvEgSAxMDAwIHNpbWJvbGkuJyxcclxuICAgIHBsYXlEaXNhYmxlZDogJ0lldmFkaSB0ZWtzdHUsIGxhaSBhdHNrYcWGb3QgdG8nLFxyXG4gICAgcGxheTogJ0F0c2thxYZvdCcsXHJcbiAgICBzdG9wOiAnQXBzdMSBZGluxIF0JyxcclxuICAgIHZvaWNlTGlzdDoge1xyXG4gICAgICBzYW5kcmE0OiAnQmFsc3MgMScsXHJcbiAgICAgICdsdi1MVi1nZW5lcmFsJzogJ0JhbHNzIDInXHJcbiAgICB9XHJcbiAgfVxyXG59Il19
|
|
@@ -5681,31 +5681,31 @@ class TextPlayService {
|
|
|
5681
5681
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5682
5682
|
const TTS_I18N = {
|
|
5683
5683
|
en: {
|
|
5684
|
-
selectVoice: '
|
|
5685
|
-
placeholder: 'Enter text to listen to a demonstration of the text-to-speech technology. Remember, this service can only be used in accordance with its terms of use (see the "
|
|
5684
|
+
selectVoice: 'Demo voices (currently only for Latvian language)',
|
|
5685
|
+
placeholder: 'Enter text to listen to a demonstration of the text-to-speech technology. Remember, this service can only be used in accordance with its terms of use (see the "Frequently asked questions" section). It is not permitted to use this service for texts that contain offensive, indecent, defamatory, misleading, hateful, or discriminatory statements. Violation of the terms of use may result in liability as stipulated by the laws of the Republic of Latvia. A maximum of 1000 characters will be spoken.',
|
|
5686
5686
|
playDisabled: 'Enter text to play',
|
|
5687
5687
|
play: 'Play',
|
|
5688
5688
|
stop: 'Stop',
|
|
5689
5689
|
voiceList: {
|
|
5690
|
-
sandra4: '
|
|
5691
|
-
'lv-LV-general': '
|
|
5690
|
+
sandra4: 'Voice 1',
|
|
5691
|
+
'lv-LV-general': 'Voice 2'
|
|
5692
5692
|
}
|
|
5693
5693
|
},
|
|
5694
5694
|
lv: {
|
|
5695
|
-
selectVoice: '
|
|
5696
|
-
placeholder: 'Ievadi tekstu, lai noklausītos balss sintēzes tehnoloģijas demonstrāciju. Atceries, ka šo pakalpojumu var lietot tikai atbilstoši tā lietošanas noteikumiem (skatīt sadaļu “
|
|
5695
|
+
selectVoice: 'Demo balsis (šobrīd tikai Latviešu valodā)',
|
|
5696
|
+
placeholder: 'Ievadi tekstu, lai noklausītos balss sintēzes tehnoloģijas demonstrāciju. Atceries, ka šo pakalpojumu var lietot tikai atbilstoši tā lietošanas noteikumiem (skatīt sadaļu “Biežāk uzdotie jautājumi”)! To nav atļauts izmantot tekstiem, kas satur aizskarošus, nepieklājīgus, apmelojošus, maldinošus, naidu vai diskrimināciju veicinošus apgalvojumus. Par lietošanas noteikumu pārkāpumu var iestāties LR likumos noteiktā atbildība. Tiks izrunāti ne vairāk kā 1000 simboli.',
|
|
5697
5697
|
playDisabled: 'Ievadi tekstu, lai atskaņot to',
|
|
5698
5698
|
play: 'Atskaņot',
|
|
5699
5699
|
stop: 'Apstādināt',
|
|
5700
5700
|
voiceList: {
|
|
5701
|
-
sandra4: '
|
|
5702
|
-
'lv-LV-general': '
|
|
5701
|
+
sandra4: 'Balss 1',
|
|
5702
|
+
'lv-LV-general': 'Balss 2'
|
|
5703
5703
|
}
|
|
5704
5704
|
}
|
|
5705
5705
|
};
|
|
5706
5706
|
|
|
5707
5707
|
function TextToSpeechComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
5708
|
-
i0.ɵɵelementStart(0, "mat-option",
|
|
5708
|
+
i0.ɵɵelementStart(0, "mat-option", 12);
|
|
5709
5709
|
i0.ɵɵtext(1);
|
|
5710
5710
|
i0.ɵɵelementEnd();
|
|
5711
5711
|
} if (rf & 2) {
|
|
@@ -5715,7 +5715,7 @@ function TextToSpeechComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
5715
5715
|
i0.ɵɵadvance();
|
|
5716
5716
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.translations.voiceList[voice_r1], " ");
|
|
5717
5717
|
} }
|
|
5718
|
-
function
|
|
5718
|
+
function TextToSpeechComponent_mat_icon_13_Template(rf, ctx) { if (rf & 1) {
|
|
5719
5719
|
i0.ɵɵelementStart(0, "mat-icon");
|
|
5720
5720
|
i0.ɵɵtext(1);
|
|
5721
5721
|
i0.ɵɵelementEnd();
|
|
@@ -5724,13 +5724,14 @@ function TextToSpeechComponent_mat_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
5724
5724
|
i0.ɵɵadvance();
|
|
5725
5725
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.isPlaying ? "stop" : "volume_up", " ");
|
|
5726
5726
|
} }
|
|
5727
|
-
function
|
|
5728
|
-
i0.ɵɵelement(0, "mat-spinner",
|
|
5727
|
+
function TextToSpeechComponent_mat_spinner_14_Template(rf, ctx) { if (rf & 1) {
|
|
5728
|
+
i0.ɵɵelement(0, "mat-spinner", 13);
|
|
5729
5729
|
} if (rf & 2) {
|
|
5730
5730
|
i0.ɵɵproperty("diameter", 20);
|
|
5731
5731
|
} }
|
|
5732
5732
|
class TextToSpeechComponent {
|
|
5733
5733
|
constructor() {
|
|
5734
|
+
this.maxCharLength = 1000;
|
|
5734
5735
|
this.langAttributeKey = 'lang';
|
|
5735
5736
|
this.defaultLanguage = 'lv';
|
|
5736
5737
|
this.voiceList = ['sandra4', 'lv-LV-general'];
|
|
@@ -5743,6 +5744,10 @@ class TextToSpeechComponent {
|
|
|
5743
5744
|
}
|
|
5744
5745
|
return TTS_I18N[this.defaultLanguage];
|
|
5745
5746
|
}
|
|
5747
|
+
get hasOverflow() {
|
|
5748
|
+
const textarea = document.querySelector('textarea');
|
|
5749
|
+
return textarea?.clientHeight < textarea?.scrollHeight ? true : false;
|
|
5750
|
+
}
|
|
5746
5751
|
#textPlayService;
|
|
5747
5752
|
ngOnInit() {
|
|
5748
5753
|
this.watchHtmlLangAttributeChanges();
|
|
@@ -5753,8 +5758,9 @@ class TextToSpeechComponent {
|
|
|
5753
5758
|
return;
|
|
5754
5759
|
}
|
|
5755
5760
|
this.isLoading = true;
|
|
5761
|
+
const text = this.text.length > this.maxCharLength ? this.text.substring(0, this.maxCharLength) : this.text;
|
|
5756
5762
|
this.#textPlayService
|
|
5757
|
-
.play(
|
|
5763
|
+
.play(text, this.selectedVoice, this.xApiKey)
|
|
5758
5764
|
.pipe(finalize(() => { this.isLoading = false; }))
|
|
5759
5765
|
.subscribe({
|
|
5760
5766
|
next: (res) => {
|
|
@@ -5798,7 +5804,7 @@ class TextToSpeechComponent {
|
|
|
5798
5804
|
return document.querySelector('html').getAttribute(this.langAttributeKey).split('-')[0];
|
|
5799
5805
|
}
|
|
5800
5806
|
static { this.ɵfac = function TextToSpeechComponent_Factory(t) { return new (t || TextToSpeechComponent)(); }; }
|
|
5801
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { xApiKey: "xApiKey", language: "language" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls:
|
|
5807
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { xApiKey: "xApiKey", language: "language", maxCharLength: "maxCharLength" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 15, vars: 15, consts: [[1, "text-to-speech-wrapper", 3, "ngClass.lt-md"], ["appearance", "outline", "color", "accent"], [3, "valueChange", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "text-to-speech-textarea-wrapper"], [1, "text-to-speech-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "text-to-speech-characters"], [1, "text-to-speech-actions"], [3, "matTooltip"], ["mat-icon-button", "", 3, "click", "matTooltip", "disabled"], [4, "ngIf"], [3, "diameter", 4, "ngIf"], [3, "value"], [3, "diameter"]], template: function TextToSpeechComponent_Template(rf, ctx) { if (rf & 1) {
|
|
5802
5808
|
i0.ɵɵelementStart(0, "div", 0)(1, "mat-form-field", 1)(2, "mat-label");
|
|
5803
5809
|
i0.ɵɵtext(3);
|
|
5804
5810
|
i0.ɵɵelementEnd();
|
|
@@ -5808,12 +5814,17 @@ class TextToSpeechComponent {
|
|
|
5808
5814
|
i0.ɵɵelementEnd()();
|
|
5809
5815
|
i0.ɵɵelementStart(6, "div", 4)(7, "textarea", 5);
|
|
5810
5816
|
i0.ɵɵtwoWayListener("ngModelChange", function TextToSpeechComponent_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.text, $event) || (ctx.text = $event); return $event; });
|
|
5817
|
+
i0.ɵɵelementEnd();
|
|
5818
|
+
i0.ɵɵelementStart(8, "div", 6);
|
|
5819
|
+
i0.ɵɵtext(9);
|
|
5811
5820
|
i0.ɵɵelementEnd()();
|
|
5812
|
-
i0.ɵɵelementStart(
|
|
5813
|
-
i0.ɵɵlistener("click", function
|
|
5814
|
-
i0.ɵɵtemplate(
|
|
5821
|
+
i0.ɵɵelementStart(10, "div", 7)(11, "div", 8)(12, "button", 9);
|
|
5822
|
+
i0.ɵɵlistener("click", function TextToSpeechComponent_Template_button_click_12_listener() { return ctx.playText(); });
|
|
5823
|
+
i0.ɵɵtemplate(13, TextToSpeechComponent_mat_icon_13_Template, 2, 1, "mat-icon", 10)(14, TextToSpeechComponent_mat_spinner_14_Template, 1, 1, "mat-spinner", 11);
|
|
5815
5824
|
i0.ɵɵelementEnd()()()();
|
|
5816
5825
|
} if (rf & 2) {
|
|
5826
|
+
let tmp_7_0;
|
|
5827
|
+
i0.ɵɵproperty("ngClass.lt-md", "mobile");
|
|
5817
5828
|
i0.ɵɵadvance(3);
|
|
5818
5829
|
i0.ɵɵtextInterpolate(ctx.translations.selectVoice);
|
|
5819
5830
|
i0.ɵɵadvance();
|
|
@@ -5823,6 +5834,10 @@ class TextToSpeechComponent {
|
|
|
5823
5834
|
i0.ɵɵadvance(2);
|
|
5824
5835
|
i0.ɵɵtwoWayProperty("ngModel", ctx.text);
|
|
5825
5836
|
i0.ɵɵproperty("placeholder", ctx.translations.placeholder);
|
|
5837
|
+
i0.ɵɵadvance();
|
|
5838
|
+
i0.ɵɵclassProp("text-overflow", ctx.hasOverflow);
|
|
5839
|
+
i0.ɵɵadvance();
|
|
5840
|
+
i0.ɵɵtextInterpolate2(" ", (tmp_7_0 = ctx.text == null ? null : ctx.text.length) !== null && tmp_7_0 !== undefined ? tmp_7_0 : 0, "/", ctx.maxCharLength, " ");
|
|
5826
5841
|
i0.ɵɵadvance(2);
|
|
5827
5842
|
i0.ɵɵproperty("matTooltip", !ctx.text ? ctx.translations.playDisabled : "");
|
|
5828
5843
|
i0.ɵɵadvance();
|
|
@@ -5834,7 +5849,7 @@ class TextToSpeechComponent {
|
|
|
5834
5849
|
} }, dependencies: [CommonModule, i2$2.NgForOf, i2$2.NgIf, MatIconButton,
|
|
5835
5850
|
MatIcon,
|
|
5836
5851
|
FormsModule, i4$1.DefaultValueAccessor, i4$1.NgControlStatus, i4$1.NgModel, MatProgressSpinner,
|
|
5837
|
-
MatTooltipModule, i2$1.MatTooltip, MatFormFieldModule, i4.MatFormField, i4.MatLabel, MatSelectModule, i7.MatSelect, i8.MatOption], styles: [".text-to-speech-wrapper[_ngcontent-%COMP%]{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%], .text-to-speech-textarea[_ngcontent-%COMP%]{width:100%;max-width:900px}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%]{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea[_ngcontent-%COMP%]{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions[_ngcontent-%COMP%]{position:absolute;bottom:-25px}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#fff;background-color:var(--accent)}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{background-color:var(--base-70)}"] }); }
|
|
5852
|
+
MatTooltipModule, i2$1.MatTooltip, MatFormFieldModule, i4.MatFormField, i4.MatLabel, MatSelectModule, i7.MatSelect, i8.MatOption, FlexLayoutModule, i6.DefaultClassDirective], styles: [".text-to-speech-wrapper[_ngcontent-%COMP%]{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%], .text-to-speech-textarea[_ngcontent-%COMP%]{position:relative;width:100%;max-width:900px}.text-to-speech-textarea-wrapper[_ngcontent-%COMP%]{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea[_ngcontent-%COMP%]{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions[_ngcontent-%COMP%]{position:absolute;bottom:-25px}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#fff;background-color:var(--accent)}.text-to-speech-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{background-color:var(--base-70)}.text-to-speech-characters[_ngcontent-%COMP%]{position:absolute;right:10px;bottom:0;margin:5px;font-size:13px;color:var(--base-65)}.text-overflow[_ngcontent-%COMP%]{right:30px}.mobile[_ngcontent-%COMP%] .text-overflow[_ngcontent-%COMP%]{right:15px}"] }); }
|
|
5838
5853
|
}
|
|
5839
5854
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TextToSpeechComponent, [{
|
|
5840
5855
|
type: Component,
|
|
@@ -5847,14 +5862,17 @@ class TextToSpeechComponent {
|
|
|
5847
5862
|
MatProgressSpinner,
|
|
5848
5863
|
MatTooltipModule,
|
|
5849
5864
|
MatFormFieldModule,
|
|
5850
|
-
MatSelectModule
|
|
5851
|
-
|
|
5865
|
+
MatSelectModule,
|
|
5866
|
+
FlexLayoutModule
|
|
5867
|
+
], template: "<div [ngClass.lt-md]=\"'mobile'\" class=\"text-to-speech-wrapper\">\r\n <mat-form-field appearance=\"outline\" color=\"accent\">\r\n <mat-label>{{translations.selectVoice}}</mat-label>\r\n <mat-select [(value)]=\"selectedVoice\">\r\n <mat-option *ngFor=\"let voice of voiceList\" [value]=\"voice\">\r\n {{ translations.voiceList[voice] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"text-to-speech-textarea-wrapper\">\r\n <textarea [(ngModel)]=\"text\" class=\"text-to-speech-textarea\" [placeholder]=\"translations.placeholder\"></textarea>\r\n <div [class.text-overflow]=\"hasOverflow\" class=\"text-to-speech-characters\">\r\n {{text?.length ?? 0}}/{{maxCharLength}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-to-speech-actions\">\r\n <div [matTooltip]=\"!text ? translations.playDisabled : ''\">\r\n <button [matTooltip]=\"isPlaying ? translations.stop : translations.play\" [disabled]=\"!text || isLoading\" (click)=\"playText()\" mat-icon-button>\r\n <mat-icon *ngIf=\"!isLoading\"> {{ isPlaying ? 'stop' : 'volume_up' }} </mat-icon>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\"></mat-spinner>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".text-to-speech-wrapper{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper mat-form-field{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper,.text-to-speech-textarea{position:relative;width:100%;max-width:900px}.text-to-speech-textarea-wrapper{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions{position:absolute;bottom:-25px}.text-to-speech-actions button{color:#fff;background-color:var(--accent)}.text-to-speech-actions button:disabled{background-color:var(--base-70)}.text-to-speech-characters{position:absolute;right:10px;bottom:0;margin:5px;font-size:13px;color:var(--base-65)}.text-overflow{right:30px}.mobile .text-overflow{right:15px}\n"] }]
|
|
5852
5868
|
}], null, { xApiKey: [{
|
|
5853
5869
|
type: Input
|
|
5854
5870
|
}], language: [{
|
|
5855
5871
|
type: Input
|
|
5872
|
+
}], maxCharLength: [{
|
|
5873
|
+
type: Input
|
|
5856
5874
|
}] }); })();
|
|
5857
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber:
|
|
5875
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber: 33 }); })();
|
|
5858
5876
|
|
|
5859
5877
|
/*
|
|
5860
5878
|
* Public API Surface of ngx-common
|