@tilde-nlp/ngx-common 5.0.3 → 5.0.4
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 +28 -12
- package/esm2022/lib/text-to-speech/translations/tts-i18n.mjs +9 -9
- package/fesm2022/tilde-nlp-ngx-common.mjs +35 -19
- 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/main.js +9 -9
|
@@ -18,7 +18,7 @@ import * as i4 from "@angular/material/form-field";
|
|
|
18
18
|
import * as i5 from "@angular/material/select";
|
|
19
19
|
import * as i6 from "@angular/material/core";
|
|
20
20
|
function TextToSpeechComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
-
i0.ɵɵelementStart(0, "mat-option",
|
|
21
|
+
i0.ɵɵelementStart(0, "mat-option", 12);
|
|
22
22
|
i0.ɵɵtext(1);
|
|
23
23
|
i0.ɵɵelementEnd();
|
|
24
24
|
} if (rf & 2) {
|
|
@@ -28,7 +28,7 @@ function TextToSpeechComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
28
28
|
i0.ɵɵadvance();
|
|
29
29
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.translations.voiceList[voice_r1], " ");
|
|
30
30
|
} }
|
|
31
|
-
function
|
|
31
|
+
function TextToSpeechComponent_mat_icon_13_Template(rf, ctx) { if (rf & 1) {
|
|
32
32
|
i0.ɵɵelementStart(0, "mat-icon");
|
|
33
33
|
i0.ɵɵtext(1);
|
|
34
34
|
i0.ɵɵelementEnd();
|
|
@@ -37,13 +37,14 @@ function TextToSpeechComponent_mat_icon_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
37
37
|
i0.ɵɵadvance();
|
|
38
38
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.isPlaying ? "stop" : "volume_up", " ");
|
|
39
39
|
} }
|
|
40
|
-
function
|
|
41
|
-
i0.ɵɵelement(0, "mat-spinner",
|
|
40
|
+
function TextToSpeechComponent_mat_spinner_14_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelement(0, "mat-spinner", 13);
|
|
42
42
|
} if (rf & 2) {
|
|
43
43
|
i0.ɵɵproperty("diameter", 20);
|
|
44
44
|
} }
|
|
45
45
|
export class TextToSpeechComponent {
|
|
46
46
|
constructor() {
|
|
47
|
+
this.maxCharLength = 1000;
|
|
47
48
|
this.langAttributeKey = 'lang';
|
|
48
49
|
this.defaultLanguage = 'lv';
|
|
49
50
|
this.voiceList = ['sandra4', 'lv-LV-general'];
|
|
@@ -56,6 +57,10 @@ export class TextToSpeechComponent {
|
|
|
56
57
|
}
|
|
57
58
|
return TTS_I18N[this.defaultLanguage];
|
|
58
59
|
}
|
|
60
|
+
get hasOverflow() {
|
|
61
|
+
const textarea = document.querySelector('textarea');
|
|
62
|
+
return textarea?.clientHeight < textarea?.scrollHeight ? true : false;
|
|
63
|
+
}
|
|
59
64
|
#textPlayService;
|
|
60
65
|
ngOnInit() {
|
|
61
66
|
this.watchHtmlLangAttributeChanges();
|
|
@@ -66,8 +71,9 @@ export class TextToSpeechComponent {
|
|
|
66
71
|
return;
|
|
67
72
|
}
|
|
68
73
|
this.isLoading = true;
|
|
74
|
+
const text = this.text.length > this.maxCharLength ? this.text.substring(0, this.maxCharLength) : this.text;
|
|
69
75
|
this.#textPlayService
|
|
70
|
-
.play(
|
|
76
|
+
.play(text, this.selectedVoice, this.xApiKey)
|
|
71
77
|
.pipe(finalize(() => { this.isLoading = false; }))
|
|
72
78
|
.subscribe({
|
|
73
79
|
next: (res) => {
|
|
@@ -111,7 +117,7 @@ export class TextToSpeechComponent {
|
|
|
111
117
|
return document.querySelector('html').getAttribute(this.langAttributeKey).split('-')[0];
|
|
112
118
|
}
|
|
113
119
|
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:
|
|
120
|
+
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: 14, consts: [[1, "text-to-speech-wrapper"], ["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
121
|
i0.ɵɵelementStart(0, "div", 0)(1, "mat-form-field", 1)(2, "mat-label");
|
|
116
122
|
i0.ɵɵtext(3);
|
|
117
123
|
i0.ɵɵelementEnd();
|
|
@@ -121,12 +127,16 @@ export class TextToSpeechComponent {
|
|
|
121
127
|
i0.ɵɵelementEnd()();
|
|
122
128
|
i0.ɵɵelementStart(6, "div", 4)(7, "textarea", 5);
|
|
123
129
|
i0.ɵɵtwoWayListener("ngModelChange", function TextToSpeechComponent_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.text, $event) || (ctx.text = $event); return $event; });
|
|
130
|
+
i0.ɵɵelementEnd();
|
|
131
|
+
i0.ɵɵelementStart(8, "div", 6);
|
|
132
|
+
i0.ɵɵtext(9);
|
|
124
133
|
i0.ɵɵelementEnd()();
|
|
125
|
-
i0.ɵɵelementStart(
|
|
126
|
-
i0.ɵɵlistener("click", function
|
|
127
|
-
i0.ɵɵtemplate(
|
|
134
|
+
i0.ɵɵelementStart(10, "div", 7)(11, "div", 8)(12, "button", 9);
|
|
135
|
+
i0.ɵɵlistener("click", function TextToSpeechComponent_Template_button_click_12_listener() { return ctx.playText(); });
|
|
136
|
+
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
137
|
i0.ɵɵelementEnd()()()();
|
|
129
138
|
} if (rf & 2) {
|
|
139
|
+
let tmp_6_0;
|
|
130
140
|
i0.ɵɵadvance(3);
|
|
131
141
|
i0.ɵɵtextInterpolate(ctx.translations.selectVoice);
|
|
132
142
|
i0.ɵɵadvance();
|
|
@@ -136,6 +146,10 @@ export class TextToSpeechComponent {
|
|
|
136
146
|
i0.ɵɵadvance(2);
|
|
137
147
|
i0.ɵɵtwoWayProperty("ngModel", ctx.text);
|
|
138
148
|
i0.ɵɵproperty("placeholder", ctx.translations.placeholder);
|
|
149
|
+
i0.ɵɵadvance();
|
|
150
|
+
i0.ɵɵclassProp("text-overflow", ctx.hasOverflow);
|
|
151
|
+
i0.ɵɵadvance();
|
|
152
|
+
i0.ɵɵtextInterpolate2(" ", (tmp_6_0 = ctx.text == null ? null : ctx.text.length) !== null && tmp_6_0 !== undefined ? tmp_6_0 : 0, "/", ctx.maxCharLength, " ");
|
|
139
153
|
i0.ɵɵadvance(2);
|
|
140
154
|
i0.ɵɵproperty("matTooltip", !ctx.text ? ctx.translations.playDisabled : "");
|
|
141
155
|
i0.ɵɵadvance();
|
|
@@ -147,7 +161,7 @@ export class TextToSpeechComponent {
|
|
|
147
161
|
} }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, MatIconButton,
|
|
148
162
|
MatIcon,
|
|
149
163
|
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)}"] }); }
|
|
164
|
+
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%]{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:0;bottom:0;margin:5px;font-size:14px;color:var(--base-65)}.text-overflow[_ngcontent-%COMP%]{right:30px}"] }); }
|
|
151
165
|
}
|
|
152
166
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TextToSpeechComponent, [{
|
|
153
167
|
type: Component,
|
|
@@ -161,11 +175,13 @@ export class TextToSpeechComponent {
|
|
|
161
175
|
MatTooltipModule,
|
|
162
176
|
MatFormFieldModule,
|
|
163
177
|
MatSelectModule
|
|
164
|
-
], template: "<div 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>\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{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)}\n"] }]
|
|
178
|
+
], template: "<div 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:0;bottom:0;margin:5px;font-size:14px;color:var(--base-65)}.text-overflow{right:30px}\n"] }]
|
|
165
179
|
}], null, { xApiKey: [{
|
|
166
180
|
type: Input
|
|
167
181
|
}], language: [{
|
|
168
182
|
type: Input
|
|
183
|
+
}], maxCharLength: [{
|
|
184
|
+
type: Input
|
|
169
185
|
}] }); })();
|
|
170
186
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber: 31 }); })();
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXh0LXRvLXNwZWVjaC90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7SUNQNUQsc0NBQTREO0lBQzFELFlBQ0Y7SUFBQSxpQkFBYTs7OztJQUYrQixnQ0FBZTtJQUN6RCxjQUNGO0lBREUs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RUFDRixFQUNGOztZQXBCUyxlQUE0QjtZQUE1QixrREFBNEI7WUFDM0IsY0FBeUI7WUFBekIsK0NBQXlCO1lBQ0wsY0FBWTtZQUFaLHVDQUFZO1lBT2xDLGVBQWtCO1lBQWxCLHdDQUFrQjtZQUFpQywwREFBd0M7WUFJaEcsZUFBcUQ7WUFBckQsMkVBQXFEO1lBQ2hELGNBQWdFO1lBQUMsQUFBakUsMEZBQWdFLHdDQUFnQztZQUMzRixjQUFnQjtZQUFoQixxQ0FBZ0I7WUFDYixjQUFlO1lBQWYsb0NBQWU7NEJERGpDLFlBQVksdUJBRVosYUFBYTtZQUNiLE9BQU87WUFDUCxXQUFXLDJEQUNYLGtCQUFrQjtZQUNsQixnQkFBZ0IsaUJBQ2hCLGtCQUFrQixnQ0FDbEIsZUFBZTs7aUZBS04scUJBQXFCO2NBakJqQyxTQUFTOzJCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7b0JBQ1AsWUFBWTtvQkFDWixTQUFTO29CQUNULGFBQWE7b0JBQ2IsT0FBTztvQkFDUCxXQUFXO29CQUNYLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixrQkFBa0I7b0JBQ2xCLGVBQWU7aUJBQ2hCO2dCQUtRLE9BQU87a0JBQWYsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7O2tGQUZLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRleHRQbGF5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1wbGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgVFRTX0kxOE4gfSBmcm9tICcuL3RyYW5zbGF0aW9ucy90dHMtaTE4bic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZXh0LXRvLXNwZWVjaCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC10by1zcGVlY2guY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dFRvU3BlZWNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB4QXBpS2V5ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlITogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGxhbmdBdHRyaWJ1dGVLZXkgPSAnbGFuZyc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2UgPSAnbHYnO1xyXG5cclxuICByZWFkb25seSB2b2ljZUxpc3QgPSBbJ3NhbmRyYTQnLCAnbHYtTFYtZ2VuZXJhbCddO1xyXG5cclxuICB0ZXh0ITogc3RyaW5nO1xyXG4gIHNlbGVjdGVkVm9pY2UgPSB0aGlzLnZvaWNlTGlzdFswXTtcclxuICBhdWRpbyE6IEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgaXNMb2FkaW5nITogYm9vbGVhbjtcclxuICBpc1BsYXlpbmchOiBib29sZWFuO1xyXG5cclxuICBnZXQgdHJhbnNsYXRpb25zKCkge1xyXG4gICAgaWYgKFRUU19JMThOW3RoaXMubGFuZ3VhZ2VdKSB7XHJcbiAgICAgIHJldHVybiBUVFNfSTE4Tlt0aGlzLmxhbmd1YWdlXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gVFRTX0kxOE5bdGhpcy5kZWZhdWx0TGFuZ3VhZ2VdO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgI3RleHRQbGF5U2VydmljZSA9IGluamVjdChUZXh0UGxheVNlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMud2F0Y2hIdG1sTGFuZ0F0dHJpYnV0ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHBsYXlUZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XHJcbiAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuI3RleHRQbGF5U2VydmljZVxyXG4gICAgICAucGxheSh0aGlzLnRleHQsIHRoaXMuc2VsZWN0ZWRWb2ljZSwgdGhpcy54QXBpS2V5KVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB7IHRoaXMuaXNMb2FkaW5nID0gZmFsc2UgfSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGF1ZGlvVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXMpO1xyXG4gICAgICAgICAgdGhpcy5hdWRpbyA9IG5ldyBBdWRpbyhhdWRpb1VybCk7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvLnBsYXkoKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5hdWRpby5vbmVuZGVkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGF1ZGlvVXJsKTtcclxuICAgICAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXVkaW8pIHtcclxuICAgICAgdGhpcy5hdWRpby5wYXVzZSgpO1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEh0bWxMYW5nQXR0cmlidXRlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5nZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpO1xyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMubGFuZ3VhZ2UgJiYgKGxhbmd1YWdlICE9PSB0aGlzLmRlZmF1bHRMYW5ndWFnZSkpIHtcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9uTGFuZ0F0dHJpYnV0ZUNoYW5nZSA9IChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xyXG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gdGhpcy5sYW5nQXR0cmlidXRlS2V5KSB7XHJcbiAgICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5nZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpO1xyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvbkxhbmdBdHRyaWJ1dGVDaGFuZ2UpO1xyXG4gICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogW3RoaXMubGFuZ0F0dHJpYnV0ZUtleV0gfTtcclxuICAgIG9ic2VydmVyLm9ic2VydmUoaHRtbEVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh0bWxMYW5nQXR0cmlidXRlKCk6IHN0cmluZyB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgcmV0dXJuIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykgYXMgYW55KS5nZXRBdHRyaWJ1dGUodGhpcy5sYW5nQXR0cmlidXRlS2V5KS5zcGxpdCgnLScpWzBdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtd3JhcHBlclwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNvbG9yPVwiYWNjZW50XCI+XHJcbiAgICA8bWF0LWxhYmVsPnt7dHJhbnNsYXRpb25zLnNlbGVjdFZvaWNlfX08L21hdC1sYWJlbD5cclxuICAgIDxtYXQtc2VsZWN0IFsodmFsdWUpXT1cInNlbGVjdGVkVm9pY2VcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZvaWNlIG9mIHZvaWNlTGlzdFwiIFt2YWx1ZV09XCJ2b2ljZVwiPlxyXG4gICAgICAgIHt7IHRyYW5zbGF0aW9ucy52b2ljZUxpc3Rbdm9pY2VdIH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWEtd3JhcHBlclwiPlxyXG4gICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwidGV4dFwiIGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWFcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zLnBsYWNlaG9sZGVyXCI+PC90ZXh0YXJlYT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRleHQtdG8tc3BlZWNoLWFjdGlvbnNcIj5cclxuICAgIDxkaXYgW21hdFRvb2x0aXBdPVwiIXRleHQgPyB0cmFuc2xhdGlvbnMucGxheURpc2FibGVkIDogJydcIj5cclxuICAgICAgPGJ1dHRvbiBbbWF0VG9vbHRpcF09XCJpc1BsYXlpbmcgPyB0cmFuc2xhdGlvbnMuc3RvcCA6IHRyYW5zbGF0aW9ucy5wbGF5XCIgW2Rpc2FibGVkXT1cIiF0ZXh0IHx8IGlzTG9hZGluZ1wiIChjbGljayk9XCJwbGF5VGV4dCgpXCIgbWF0LWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIj4ge3sgaXNQbGF5aW5nID8gJ3N0b3AnIDogJ3ZvbHVtZV91cCcgfX0gIDwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2RpYW1ldGVyXT1cIjIwXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXh0LXRvLXNwZWVjaC90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7SUNQNUQsc0NBQTREO0lBQzFELFlBQ0Y7SUFBQSxpQkFBYTs7OztJQUYrQixnQ0FBZTtJQUN6RCxjQUNGO0lBREUs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QkFBZ0I7b0JBQ2hCLGtCQUFrQjtvQkFDbEIsZUFBZTtpQkFDaEI7Z0JBS1EsT0FBTztrQkFBZixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7O2tGQUhLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRleHRQbGF5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1wbGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgVFRTX0kxOE4gfSBmcm9tICcuL3RyYW5zbGF0aW9ucy90dHMtaTE4bic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZXh0LXRvLXNwZWVjaCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGV4dC10by1zcGVlY2guY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dFRvU3BlZWNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB4QXBpS2V5ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heENoYXJMZW5ndGg6IG51bWJlciA9IDEwMDA7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFuZ0F0dHJpYnV0ZUtleSA9ICdsYW5nJztcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZSA9ICdsdic7XHJcblxyXG4gIHJlYWRvbmx5IHZvaWNlTGlzdCA9IFsnc2FuZHJhNCcsICdsdi1MVi1nZW5lcmFsJ107XHJcblxyXG4gIHRleHQhOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRWb2ljZSA9IHRoaXMudm9pY2VMaXN0WzBdO1xyXG4gIGF1ZGlvITogSFRNTEF1ZGlvRWxlbWVudDtcclxuICBpc0xvYWRpbmchOiBib29sZWFuO1xyXG4gIGlzUGxheWluZyE6IGJvb2xlYW47XHJcblxyXG4gIGdldCB0cmFuc2xhdGlvbnMoKSB7XHJcbiAgICBpZiAoVFRTX0kxOE5bdGhpcy5sYW5ndWFnZV0pIHtcclxuICAgICAgcmV0dXJuIFRUU19JMThOW3RoaXMubGFuZ3VhZ2VdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBUVFNfSTE4Tlt0aGlzLmRlZmF1bHRMYW5ndWFnZV07XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzT3ZlcmZsb3coKSB7XHJcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJykgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcclxuICAgIHJldHVybiB0ZXh0YXJlYT8uY2xpZW50SGVpZ2h0IDwgdGV4dGFyZWE/LnNjcm9sbEhlaWdodCA/IHRydWUgOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgI3RleHRQbGF5U2VydmljZSA9IGluamVjdChUZXh0UGxheVNlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMud2F0Y2hIdG1sTGFuZ0F0dHJpYnV0ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHBsYXlUZXh0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XHJcbiAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhDaGFyTGVuZ3RoID8gdGhpcy50ZXh0LnN1YnN0cmluZygwLCB0aGlzLm1heENoYXJMZW5ndGgpIDogdGhpcy50ZXh0O1xyXG5cclxuICAgIHRoaXMuI3RleHRQbGF5U2VydmljZVxyXG4gICAgICAucGxheSh0ZXh0LCB0aGlzLnNlbGVjdGVkVm9pY2UsIHRoaXMueEFwaUtleSlcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4geyB0aGlzLmlzTG9hZGluZyA9IGZhbHNlIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBhdWRpb1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmVzKTtcclxuICAgICAgICAgIHRoaXMuYXVkaW8gPSBuZXcgQXVkaW8oYXVkaW9VcmwpO1xyXG4gICAgICAgICAgdGhpcy5hdWRpby5wbGF5KCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuYXVkaW8ub25lbmRlZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChhdWRpb1VybCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RvcCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1ZGlvKSB7XHJcbiAgICAgIHRoaXMuYXVkaW8ucGF1c2UoKTtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hIdG1sTGFuZ0F0dHJpYnV0ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuZ2V0SHRtbExhbmdBdHRyaWJ1dGUoKTtcclxuICAgIFxyXG4gICAgaWYgKCF0aGlzLmxhbmd1YWdlICYmIChsYW5ndWFnZSAhPT0gdGhpcy5kZWZhdWx0TGFuZ3VhZ2UpKSB7XHJcbiAgICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbkxhbmdBdHRyaWJ1dGVDaGFuZ2UgPSAobXV0YXRpb25zTGlzdDogTXV0YXRpb25SZWNvcmRbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcclxuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09IHRoaXMubGFuZ0F0dHJpYnV0ZUtleSkge1xyXG4gICAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuZ2V0SHRtbExhbmdBdHRyaWJ1dGUoKTtcclxuICAgICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICBcclxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob25MYW5nQXR0cmlidXRlQ2hhbmdlKTtcclxuICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgY29uZmlnID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFt0aGlzLmxhbmdBdHRyaWJ1dGVLZXldIH07XHJcbiAgICBvYnNlcnZlci5vYnNlcnZlKGh0bWxFbGVtZW50LCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIdG1sTGFuZ0F0dHJpYnV0ZSgpOiBzdHJpbmcge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIHJldHVybiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpIGFzIGFueSkuZ2V0QXR0cmlidXRlKHRoaXMubGFuZ0F0dHJpYnV0ZUtleSkuc3BsaXQoJy0nKVswXTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRleHQtdG8tc3BlZWNoLXdyYXBwZXJcIj5cclxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjb2xvcj1cImFjY2VudFwiPlxyXG4gICAgPG1hdC1sYWJlbD57e3RyYW5zbGF0aW9ucy5zZWxlY3RWb2ljZX19PC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJzZWxlY3RlZFZvaWNlXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2b2ljZSBvZiB2b2ljZUxpc3RcIiBbdmFsdWVdPVwidm9pY2VcIj5cclxuICAgICAgICB7eyB0cmFuc2xhdGlvbnMudm9pY2VMaXN0W3ZvaWNlXSB9fVxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1zZWxlY3Q+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRleHQtdG8tc3BlZWNoLXRleHRhcmVhLXdyYXBwZXJcIj5cclxuICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cInRleHRcIiBjbGFzcz1cInRleHQtdG8tc3BlZWNoLXRleHRhcmVhXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9ucy5wbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XHJcbiAgICA8ZGl2IFtjbGFzcy50ZXh0LW92ZXJmbG93XT1cImhhc092ZXJmbG93XCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC1jaGFyYWN0ZXJzXCI+XHJcbiAgICAgIHt7dGV4dD8ubGVuZ3RoID8/IDB9fS97e21heENoYXJMZW5ndGh9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC1hY3Rpb25zXCI+XHJcbiAgICA8ZGl2IFttYXRUb29sdGlwXT1cIiF0ZXh0ID8gdHJhbnNsYXRpb25zLnBsYXlEaXNhYmxlZCA6ICcnXCI+XHJcbiAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiaXNQbGF5aW5nID8gdHJhbnNsYXRpb25zLnN0b3AgOiB0cmFuc2xhdGlvbnMucGxheVwiIFtkaXNhYmxlZF09XCIhdGV4dCB8fCBpc0xvYWRpbmdcIiAoY2xpY2spPVwicGxheVRleHQoKVwiIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhaXNMb2FkaW5nXCI+IHt7IGlzUGxheWluZyA/ICdzdG9wJyA6ICd2b2x1bWVfdXAnIH19ICA8L21hdC1pY29uPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1wiIFtkaWFtZXRlcl09XCIyMFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -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: 14, consts: [[1, "text-to-speech-wrapper"], ["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,16 @@ 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_6_0;
|
|
5817
5827
|
i0.ɵɵadvance(3);
|
|
5818
5828
|
i0.ɵɵtextInterpolate(ctx.translations.selectVoice);
|
|
5819
5829
|
i0.ɵɵadvance();
|
|
@@ -5823,6 +5833,10 @@ class TextToSpeechComponent {
|
|
|
5823
5833
|
i0.ɵɵadvance(2);
|
|
5824
5834
|
i0.ɵɵtwoWayProperty("ngModel", ctx.text);
|
|
5825
5835
|
i0.ɵɵproperty("placeholder", ctx.translations.placeholder);
|
|
5836
|
+
i0.ɵɵadvance();
|
|
5837
|
+
i0.ɵɵclassProp("text-overflow", ctx.hasOverflow);
|
|
5838
|
+
i0.ɵɵadvance();
|
|
5839
|
+
i0.ɵɵtextInterpolate2(" ", (tmp_6_0 = ctx.text == null ? null : ctx.text.length) !== null && tmp_6_0 !== undefined ? tmp_6_0 : 0, "/", ctx.maxCharLength, " ");
|
|
5826
5840
|
i0.ɵɵadvance(2);
|
|
5827
5841
|
i0.ɵɵproperty("matTooltip", !ctx.text ? ctx.translations.playDisabled : "");
|
|
5828
5842
|
i0.ɵɵadvance();
|
|
@@ -5834,7 +5848,7 @@ class TextToSpeechComponent {
|
|
|
5834
5848
|
} }, dependencies: [CommonModule, i2$2.NgForOf, i2$2.NgIf, MatIconButton,
|
|
5835
5849
|
MatIcon,
|
|
5836
5850
|
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)}"] }); }
|
|
5851
|
+
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%]{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:0;bottom:0;margin:5px;font-size:14px;color:var(--base-65)}.text-overflow[_ngcontent-%COMP%]{right:30px}"] }); }
|
|
5838
5852
|
}
|
|
5839
5853
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TextToSpeechComponent, [{
|
|
5840
5854
|
type: Component,
|
|
@@ -5848,11 +5862,13 @@ class TextToSpeechComponent {
|
|
|
5848
5862
|
MatTooltipModule,
|
|
5849
5863
|
MatFormFieldModule,
|
|
5850
5864
|
MatSelectModule
|
|
5851
|
-
], template: "<div 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>\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{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)}\n"] }]
|
|
5865
|
+
], template: "<div 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:0;bottom:0;margin:5px;font-size:14px;color:var(--base-65)}.text-overflow{right:30px}\n"] }]
|
|
5852
5866
|
}], null, { xApiKey: [{
|
|
5853
5867
|
type: Input
|
|
5854
5868
|
}], language: [{
|
|
5855
5869
|
type: Input
|
|
5870
|
+
}], maxCharLength: [{
|
|
5871
|
+
type: Input
|
|
5856
5872
|
}] }); })();
|
|
5857
5873
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber: 31 }); })();
|
|
5858
5874
|
|