@seniorsistemas/angular-components 17.25.10 → 17.26.0
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/bundles/seniorsistemas-angular-components.umd.js +586 -66
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/dynamic-form/configurations/fields/text-area-field.d.ts +2 -0
- package/components/index.d.ts +1 -0
- package/components/speech-recognition/speech-recognition/speech-recognition.component.d.ts +50 -0
- package/components/speech-recognition/speech-recognition.module.d.ts +2 -0
- package/components/speech-recognition/speech-recognition.service.d.ts +18 -0
- package/components/speech-recognition/text-to-speech.service.d.ts +22 -0
- package/components/text-area/index.d.ts +2 -0
- package/components/text-area/text-area/text-area.component.d.ts +24 -0
- package/components/text-area/text-area.module.d.ts +2 -0
- package/esm2015/components/dynamic-form/components/fields/text-area/text-area-field.component.js +2 -2
- package/esm2015/components/dynamic-form/configurations/fields/text-area-field.js +3 -1
- package/esm2015/components/dynamic-form/dynamic-form.module.js +3 -1
- package/esm2015/components/index.js +2 -1
- package/esm2015/components/speech-recognition/speech-recognition/speech-recognition.component.js +202 -0
- package/esm2015/components/speech-recognition/speech-recognition.module.js +19 -0
- package/esm2015/components/speech-recognition/speech-recognition.service.js +102 -0
- package/esm2015/components/speech-recognition/text-to-speech.service.js +75 -0
- package/esm2015/components/text-area/index.js +3 -0
- package/esm2015/components/text-area/text-area/text-area.component.js +87 -0
- package/esm2015/components/text-area/text-area.module.js +24 -0
- package/esm2015/components/timeline/components/timeline-icon-item/timeline-icon-item.component.js +3 -3
- package/esm2015/components/timeline/models/timeline-item.js +3 -3
- package/esm2015/locale/fallback.js +6 -2
- package/esm2015/seniorsistemas-angular-components.js +65 -61
- package/esm5/components/dynamic-form/components/fields/text-area/text-area-field.component.js +2 -2
- package/esm5/components/dynamic-form/configurations/fields/text-area-field.js +3 -1
- package/esm5/components/dynamic-form/dynamic-form.module.js +3 -1
- package/esm5/components/index.js +2 -1
- package/esm5/components/speech-recognition/speech-recognition/speech-recognition.component.js +216 -0
- package/esm5/components/speech-recognition/speech-recognition.module.js +22 -0
- package/esm5/components/speech-recognition/speech-recognition.service.js +104 -0
- package/esm5/components/speech-recognition/text-to-speech.service.js +83 -0
- package/esm5/components/text-area/index.js +3 -0
- package/esm5/components/text-area/text-area/text-area.component.js +94 -0
- package/esm5/components/text-area/text-area.module.js +27 -0
- package/esm5/components/timeline/components/timeline-icon-item/timeline-icon-item.component.js +3 -3
- package/esm5/components/timeline/models/timeline-item.js +3 -3
- package/esm5/locale/fallback.js +6 -2
- package/esm5/seniorsistemas-angular-components.js +65 -61
- package/fesm2015/seniorsistemas-angular-components.js +485 -8
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +522 -8
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.d.ts +64 -60
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { SpeechRecognitionService } from '../speech-recognition.service';
|
|
7
|
+
import { TextToSpeechService } from '../text-to-speech.service';
|
|
8
|
+
var SpeechRecognitionComponent = /** @class */ (function () {
|
|
9
|
+
function SpeechRecognitionComponent(speechRecognitionService, textToSpeechService, translateService) {
|
|
10
|
+
var _this = this;
|
|
11
|
+
this.speechRecognitionService = speechRecognitionService;
|
|
12
|
+
this.textToSpeechService = textToSpeechService;
|
|
13
|
+
this.translateService = translateService;
|
|
14
|
+
this._recognizedText = '';
|
|
15
|
+
this.originalTextAreaElementText = '';
|
|
16
|
+
this.isDoneSpeaking = false;
|
|
17
|
+
this.onDestroy$ = new Subject();
|
|
18
|
+
this.VOICE_SPEEDS = [0.5, 1, 1.5, 2];
|
|
19
|
+
this.SPEECH_RECOGNITION_MARGIN_OFFSET = 13;
|
|
20
|
+
this.keydownEventListener = function (event) {
|
|
21
|
+
if (_this.disabled) {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER = new MutationObserver(function () {
|
|
26
|
+
_this.SPEECH_CONTAINER_WIDTH_CALLBACK();
|
|
27
|
+
});
|
|
28
|
+
this.SPEECH_CONTAINER_WIDTH_CALLBACK = function () {
|
|
29
|
+
_this.setSpeechContainerWidth();
|
|
30
|
+
};
|
|
31
|
+
this.speechRecognitionContainerWidth = 0;
|
|
32
|
+
this.disabled = false;
|
|
33
|
+
this.isSpeaking = false;
|
|
34
|
+
this.voiceSpeed = 1;
|
|
35
|
+
this.isDisabledMicrophone = false;
|
|
36
|
+
this.canRenderMicrophone = true;
|
|
37
|
+
this.canRenderTextToSpeech = true;
|
|
38
|
+
this.canRenderListeningText = false;
|
|
39
|
+
this.canRenderDiscard = false;
|
|
40
|
+
this.canRenderAprove = false;
|
|
41
|
+
this.canRenderTextToSpeechToolbar = false;
|
|
42
|
+
this.isPlayingTextToSpeech = false;
|
|
43
|
+
this.recognizedText = new EventEmitter();
|
|
44
|
+
}
|
|
45
|
+
SpeechRecognitionComponent.prototype.ngOnInit = function () {
|
|
46
|
+
if (!this.textAreaElement) {
|
|
47
|
+
throw new Error('textAreaElement is required');
|
|
48
|
+
}
|
|
49
|
+
this.textAreaElement.placeholder = this.translateService.instant("platform.angular_components.text_area_speech_recognition_placeholder");
|
|
50
|
+
this.textAreaElement.addEventListener('keydown', this.keydownEventListener);
|
|
51
|
+
var config = { attributes: true, childList: true, subtree: true };
|
|
52
|
+
this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER.observe(this.textAreaElement, config);
|
|
53
|
+
window.addEventListener('resize', this.SPEECH_CONTAINER_WIDTH_CALLBACK);
|
|
54
|
+
};
|
|
55
|
+
SpeechRecognitionComponent.prototype.ngAfterViewInit = function () {
|
|
56
|
+
var _this = this;
|
|
57
|
+
setTimeout(function () {
|
|
58
|
+
_this.setSpeechContainerWidth();
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
SpeechRecognitionComponent.prototype.onListen = function () {
|
|
62
|
+
var _this = this;
|
|
63
|
+
if (this.isDisabledMicrophone || this.isListening) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.disabled = true;
|
|
67
|
+
this.canRenderMicrophone = false;
|
|
68
|
+
this.canRenderListeningText = true;
|
|
69
|
+
if (this.textAreaElement.value && !this.originalTextAreaElementText) {
|
|
70
|
+
this.originalTextAreaElementText = this.textAreaElement.value;
|
|
71
|
+
}
|
|
72
|
+
this.textAreaElement.value = '';
|
|
73
|
+
this.isSpeaking = true;
|
|
74
|
+
this.speechRecognitionService.listen()
|
|
75
|
+
.pipe(takeUntil(this.onDestroy$))
|
|
76
|
+
.subscribe(function (_a) {
|
|
77
|
+
var text = _a.text, isFinal = _a.isFinal;
|
|
78
|
+
_this._recognizedText = text;
|
|
79
|
+
_this.setTextAreaValue(text);
|
|
80
|
+
setTimeout(function () {
|
|
81
|
+
_this.textAreaElement.scrollTop = _this.textAreaElement.scrollHeight;
|
|
82
|
+
}, 120);
|
|
83
|
+
if (isFinal) {
|
|
84
|
+
_this.canRenderAprove = true;
|
|
85
|
+
_this.canRenderDiscard = true;
|
|
86
|
+
_this.canRenderListeningText = false;
|
|
87
|
+
_this.isSpeaking = false;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
SpeechRecognitionComponent.prototype.onOpenToolbar = function () {
|
|
92
|
+
if (this.isDisabledTextToSpeech) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.canRenderTextToSpeechToolbar = true;
|
|
96
|
+
this.canRenderTextToSpeech = false;
|
|
97
|
+
this.isPlayingTextToSpeech = true;
|
|
98
|
+
this.speak();
|
|
99
|
+
};
|
|
100
|
+
SpeechRecognitionComponent.prototype.onCloseToolbar = function () {
|
|
101
|
+
this.canRenderTextToSpeechToolbar = false;
|
|
102
|
+
this.canRenderTextToSpeech = true;
|
|
103
|
+
this.isPlayingTextToSpeech = false;
|
|
104
|
+
this.textToSpeechService.cancel();
|
|
105
|
+
this.voiceSpeed = 1;
|
|
106
|
+
};
|
|
107
|
+
SpeechRecognitionComponent.prototype.onDiscard = function () {
|
|
108
|
+
this.canRenderAprove = false;
|
|
109
|
+
this.canRenderDiscard = false;
|
|
110
|
+
this.canRenderMicrophone = true;
|
|
111
|
+
this.canRenderTextToSpeechToolbar = false;
|
|
112
|
+
this.canRenderTextToSpeech = true;
|
|
113
|
+
this._recognizedText = '';
|
|
114
|
+
this.setTextAreaValue(this.originalTextAreaElementText);
|
|
115
|
+
this.disabled = false;
|
|
116
|
+
this.textToSpeechService.cancel();
|
|
117
|
+
};
|
|
118
|
+
SpeechRecognitionComponent.prototype.onAprove = function () {
|
|
119
|
+
this.canRenderAprove = false;
|
|
120
|
+
this.canRenderDiscard = false;
|
|
121
|
+
this.canRenderMicrophone = true;
|
|
122
|
+
this.canRenderTextToSpeechToolbar = false;
|
|
123
|
+
this.canRenderTextToSpeech = true;
|
|
124
|
+
this.originalTextAreaElementText = this._recognizedText;
|
|
125
|
+
this.recognizedText.emit(this._recognizedText);
|
|
126
|
+
this._recognizedText = '';
|
|
127
|
+
this.disabled = false;
|
|
128
|
+
this.textToSpeechService.cancel();
|
|
129
|
+
};
|
|
130
|
+
SpeechRecognitionComponent.prototype.ngOnDestroy = function () {
|
|
131
|
+
this.onDestroy$.next();
|
|
132
|
+
this.onDestroy$.complete();
|
|
133
|
+
this.textAreaElement.removeEventListener('keydown', this.keydownEventListener);
|
|
134
|
+
window.removeEventListener('resize', this.SPEECH_CONTAINER_WIDTH_CALLBACK);
|
|
135
|
+
this.TEXT_AREA_ELEMENT_MUTATION_OBSERVER.disconnect();
|
|
136
|
+
};
|
|
137
|
+
SpeechRecognitionComponent.prototype.toggleTextToSpeech = function () {
|
|
138
|
+
if (this.isPlayingTextToSpeech) {
|
|
139
|
+
this.textToSpeechService.pause();
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
if (this.isDoneSpeaking) {
|
|
143
|
+
this.speak();
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.textToSpeechService.resume();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
this.isPlayingTextToSpeech = !this.isPlayingTextToSpeech;
|
|
150
|
+
};
|
|
151
|
+
SpeechRecognitionComponent.prototype.restartTextToSpeech = function () {
|
|
152
|
+
this.isPlayingTextToSpeech = true;
|
|
153
|
+
this.textToSpeechService.cancel();
|
|
154
|
+
this.speak();
|
|
155
|
+
};
|
|
156
|
+
SpeechRecognitionComponent.prototype.updateVoiceSpeed = function () {
|
|
157
|
+
var voiceSpeedIndex = this.VOICE_SPEEDS.indexOf(this.voiceSpeed);
|
|
158
|
+
var nextVoiceSpeedIndex = this.VOICE_SPEEDS[voiceSpeedIndex + 1] ? voiceSpeedIndex + 1 : 0;
|
|
159
|
+
this.voiceSpeed = this.VOICE_SPEEDS[nextVoiceSpeedIndex];
|
|
160
|
+
this.textToSpeechService.cancel();
|
|
161
|
+
this.speak();
|
|
162
|
+
};
|
|
163
|
+
SpeechRecognitionComponent.prototype.stopListening = function () {
|
|
164
|
+
this.speechRecognitionService.stop();
|
|
165
|
+
};
|
|
166
|
+
Object.defineProperty(SpeechRecognitionComponent.prototype, "isListening", {
|
|
167
|
+
get: function () {
|
|
168
|
+
return this.speechRecognitionService.isListening;
|
|
169
|
+
},
|
|
170
|
+
enumerable: true,
|
|
171
|
+
configurable: true
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(SpeechRecognitionComponent.prototype, "isDisabledTextToSpeech", {
|
|
174
|
+
get: function () {
|
|
175
|
+
var hasTextToSpeechVoice = this.textToSpeechService.hasVoice;
|
|
176
|
+
return !this._recognizedText || !hasTextToSpeechVoice || this.isListening;
|
|
177
|
+
},
|
|
178
|
+
enumerable: true,
|
|
179
|
+
configurable: true
|
|
180
|
+
});
|
|
181
|
+
SpeechRecognitionComponent.prototype.setTextAreaValue = function (value) {
|
|
182
|
+
this.textAreaElement.value = value;
|
|
183
|
+
};
|
|
184
|
+
SpeechRecognitionComponent.prototype.speak = function () {
|
|
185
|
+
var _this = this;
|
|
186
|
+
this.isDoneSpeaking = false;
|
|
187
|
+
this.textToSpeechService.speak(this._recognizedText, this.voiceSpeed).then(function () {
|
|
188
|
+
_this.isPlayingTextToSpeech = false;
|
|
189
|
+
_this.isDoneSpeaking = true;
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
SpeechRecognitionComponent.prototype.setSpeechContainerWidth = function () {
|
|
193
|
+
this.speechRecognitionContainerWidth = this.textAreaElement.getBoundingClientRect().width - this.SPEECH_RECOGNITION_MARGIN_OFFSET;
|
|
194
|
+
};
|
|
195
|
+
SpeechRecognitionComponent.ctorParameters = function () { return [
|
|
196
|
+
{ type: SpeechRecognitionService },
|
|
197
|
+
{ type: TextToSpeechService },
|
|
198
|
+
{ type: TranslateService }
|
|
199
|
+
]; };
|
|
200
|
+
__decorate([
|
|
201
|
+
Input()
|
|
202
|
+
], SpeechRecognitionComponent.prototype, "textAreaElement", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
Output()
|
|
205
|
+
], SpeechRecognitionComponent.prototype, "recognizedText", void 0);
|
|
206
|
+
SpeechRecognitionComponent = __decorate([
|
|
207
|
+
Component({
|
|
208
|
+
selector: 's-speech-recognition',
|
|
209
|
+
template: "<section class=\"speech-recognition\" [style.width.px]=\"speechRecognitionContainerWidth\" *ngIf=\"speechRecognitionContainerWidth\">\n <div class=\"speech-recognition-text\">\n <ng-container *ngIf=\"canRenderMicrophone\">\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"isSpeaking\">\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"canRenderAprove && canRenderDiscard\">\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n </ng-container>\n </div>\n <div class=\"speech-recognition-buttons\">\n <span\n *ngIf=\"canRenderListeningText\"\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderMicrophone\"\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderAprove\"\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n\n <span *ngIf=\"canRenderDiscard\"\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderTextToSpeech\"\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n\n <span\n *ngIf=\"canRenderTextToSpeechToolbar\"\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n </div>\n</section>\n",
|
|
210
|
+
styles: [".speech-recognition{display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:justify;justify-content:space-between}.speech-recognition-buttons{display:-ms-flexbox;display:flex;gap:10px;position:relative;bottom:15px}.speech-recognition-item{display:-ms-inline-flexbox;display:inline-flex;height:25px;padding:4px 12px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:-ms-flexbox;display:flex;border-radius:15px;-ms-flex-align:center;align-items:center;color:#fff}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-item-toolbar span{height:25px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}"]
|
|
211
|
+
})
|
|
212
|
+
], SpeechRecognitionComponent);
|
|
213
|
+
return SpeechRecognitionComponent;
|
|
214
|
+
}());
|
|
215
|
+
export { SpeechRecognitionComponent };
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT2hFO0lBcUNFLG9DQUNtQix3QkFBa0QsRUFDbEQsbUJBQXdDLEVBQ3hDLGdCQUFrQztRQUhyRCxpQkFJSztRQUhjLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdEM3QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMscUNBQWdDLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLHlC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RUFBc0M7SUFtQ3BDO1FBQVQsTUFBTSxFQUFFO3NFQUE2QztJQXBDM0MsMEJBQTBCO1FBTHRDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsK3JGQUFrRDs7U0FFbkQsQ0FBQztPQUNXLDBCQUEwQixDQW1NdEM7SUFBRCxpQ0FBQztDQUFBLEFBbk1ELElBbU1DO1NBbk1ZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dFRvU3BlZWNoU2VydmljZSB9IGZyb20gJy4uL3RleHQtdG8tc3BlZWNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXNwZWVjaC1yZWNvZ25pdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdGV4dEFyZWFFbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICBwcml2YXRlIF9yZWNvZ25pemVkVGV4dCA9ICcnO1xuICBwcml2YXRlIG9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCA9ICcnO1xuICBwcml2YXRlIGlzRG9uZVNwZWFraW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgVk9JQ0VfU1BFRURTID0gWzAuNSwgMSwgMS41LCAyXTtcbiAgcHJpdmF0ZSByZWFkb25seSBTUEVFQ0hfUkVDT0dOSVRJT05fTUFSR0lOX09GRlNFVCA9IDEzO1xuICBwcml2YXRlIHJlYWRvbmx5IGtleWRvd25FdmVudExpc3RlbmVyID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgVEVYVF9BUkVBX0VMRU1FTlRfTVVUQVRJT05fT0JTRVJWRVIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgdGhpcy5TUEVFQ0hfQ09OVEFJTkVSX1dJRFRIX0NBTExCQUNLKCk7XG4gIH0pXG5cbiAgcHJpdmF0ZSByZWFkb25seSBTUEVFQ0hfQ09OVEFJTkVSX1dJRFRIX0NBTExCQUNLID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3BlZWNoQ29udGFpbmVyV2lkdGgoKTtcbiAgfVxuICBzcGVlY2hSZWNvZ25pdGlvbkNvbnRhaW5lcldpZHRoID0gMDtcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBpc1NwZWFraW5nID0gZmFsc2U7XG4gIHZvaWNlU3BlZWQgPSAxO1xuICBpc0Rpc2FibGVkTWljcm9waG9uZSA9IGZhbHNlO1xuXG4gIGNhblJlbmRlck1pY3JvcGhvbmUgPSB0cnVlO1xuICBjYW5SZW5kZXJUZXh0VG9TcGVlY2ggPSB0cnVlO1xuICBjYW5SZW5kZXJMaXN0ZW5pbmdUZXh0ID0gZmFsc2U7XG4gIGNhblJlbmRlckRpc2NhcmQgPSBmYWxzZTtcbiAgY2FuUmVuZGVyQXByb3ZlID0gZmFsc2U7XG4gIGNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcblxuICBpc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcmVjb2duaXplZFRleHQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVlY2hSZWNvZ25pdGlvblNlcnZpY2U6IFNwZWVjaFJlY29nbml0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRUb1NwZWVjaFNlcnZpY2U6IFRleHRUb1NwZWVjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRleHRBcmVhRWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0ZXh0QXJlYUVsZW1lbnQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQucGxhY2Vob2xkZXIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfc3BlZWNoX3JlY29nbml0aW9uX3BsYWNlaG9sZGVyXCIpO1xuICAgIHRoaXMudGV4dEFyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleWRvd25FdmVudExpc3RlbmVyKVxuICAgIGNvbnN0IGNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9O1xuICAgIHRoaXMuVEVYVF9BUkVBX0VMRU1FTlRfTVVUQVRJT05fT0JTRVJWRVIub2JzZXJ2ZSh0aGlzLnRleHRBcmVhRWxlbWVudCwgY29uZmlnKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5TUEVFQ0hfQ09OVEFJTkVSX1dJRFRIX0NBTExCQUNLKVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRTcGVlY2hDb250YWluZXJXaWR0aCgpO1xuICAgIH0pXG4gIH1cblxuICBvbkxpc3RlbigpIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkTWljcm9waG9uZSB8fCB0aGlzLmlzTGlzdGVuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuY2FuUmVuZGVyTWljcm9waG9uZSA9IGZhbHNlO1xuICAgIHRoaXMuY2FuUmVuZGVyTGlzdGVuaW5nVGV4dCA9IHRydWU7XG4gICAgaWYgKHRoaXMudGV4dEFyZWFFbGVtZW50LnZhbHVlICYmICF0aGlzLm9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCkge1xuICAgICAgdGhpcy5vcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgPSB0aGlzLnRleHRBcmVhRWxlbWVudC52YWx1ZTtcbiAgICB9XG5cblxuICAgIHRoaXMudGV4dEFyZWFFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5pc1NwZWFraW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNwZWVjaFJlY29nbml0aW9uU2VydmljZS5saXN0ZW4oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IHRleHQsIGlzRmluYWwgfSkgPT4ge1xuICAgICAgICB0aGlzLl9yZWNvZ25pemVkVGV4dCA9IHRleHQ7XG4gICAgICAgIHRoaXMuc2V0VGV4dEFyZWFWYWx1ZSh0ZXh0KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy50ZXh0QXJlYUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9LCAxMjApXG4gICAgICAgIGlmIChpc0ZpbmFsKSB7XG4gICAgICAgICAgdGhpcy5jYW5SZW5kZXJBcHJvdmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jYW5SZW5kZXJMaXN0ZW5pbmdUZXh0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1NwZWFraW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBvbk9wZW5Ub29sYmFyKCkge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWRUZXh0VG9TcGVlY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyID0gdHJ1ZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IGZhbHNlO1xuICAgIHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoID0gdHJ1ZTtcbiAgICB0aGlzLnNwZWFrKCk7XG4gIH1cblxuICBvbkNsb3NlVG9vbGJhcigpIHtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IHRydWU7XG4gICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcbiAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UuY2FuY2VsKCk7XG4gICAgdGhpcy52b2ljZVNwZWVkID0gMTtcbiAgfVxuICBvbkRpc2NhcmQoKSB7XG4gICAgdGhpcy5jYW5SZW5kZXJBcHJvdmUgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlckRpc2NhcmQgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlck1pY3JvcGhvbmUgPSB0cnVlO1xuICAgIHRoaXMuY2FuUmVuZGVyVGV4dFRvU3BlZWNoVG9vbGJhciA9IGZhbHNlO1xuICAgIHRoaXMuY2FuUmVuZGVyVGV4dFRvU3BlZWNoID0gdHJ1ZTtcbiAgICB0aGlzLl9yZWNvZ25pemVkVGV4dCA9ICcnO1xuICAgIHRoaXMuc2V0VGV4dEFyZWFWYWx1ZSh0aGlzLm9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcbiAgfVxuXG4gIG9uQXByb3ZlKCkge1xuICAgIHRoaXMuY2FuUmVuZGVyQXByb3ZlID0gZmFsc2U7XG4gICAgdGhpcy5jYW5SZW5kZXJEaXNjYXJkID0gZmFsc2U7XG4gICAgdGhpcy5jYW5SZW5kZXJNaWNyb3Bob25lID0gdHJ1ZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcbiAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IHRydWU7XG4gICAgdGhpcy5vcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgPSB0aGlzLl9yZWNvZ25pemVkVGV4dFxuICAgIHRoaXMucmVjb2duaXplZFRleHQuZW1pdCh0aGlzLl9yZWNvZ25pemVkVGV4dCk7XG4gICAgdGhpcy5fcmVjb2duaXplZFRleHQgPSAnJztcbiAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLmNhbmNlbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnRleHRBcmVhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5rZXlkb3duRXZlbnRMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuU1BFRUNIX0NPTlRBSU5FUl9XSURUSF9DQUxMQkFDSyk7XG4gICAgdGhpcy5URVhUX0FSRUFfRUxFTUVOVF9NVVRBVElPTl9PQlNFUlZFUi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICB0b2dnbGVUZXh0VG9TcGVlY2goKSB7XG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoKSB7XG4gICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UucGF1c2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNEb25lU3BlYWtpbmcpIHtcbiAgICAgICAgdGhpcy5zcGVhaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLnJlc3VtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaCA9ICF0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaDtcbiAgfVxuXG4gIHJlc3RhcnRUZXh0VG9TcGVlY2goKSB7XG4gICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSB0cnVlO1xuICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcbiAgICB0aGlzLnNwZWFrKCk7XG4gIH1cblxuICB1cGRhdGVWb2ljZVNwZWVkKCkge1xuICAgIGNvbnN0IHZvaWNlU3BlZWRJbmRleCA9IHRoaXMuVk9JQ0VfU1BFRURTLmluZGV4T2YodGhpcy52b2ljZVNwZWVkKTtcbiAgICBjb25zdCBuZXh0Vm9pY2VTcGVlZEluZGV4ID0gdGhpcy5WT0lDRV9TUEVFRFNbdm9pY2VTcGVlZEluZGV4ICsgMV0gPyB2b2ljZVNwZWVkSW5kZXggKyAxIDogMDtcbiAgICB0aGlzLnZvaWNlU3BlZWQgPSB0aGlzLlZPSUNFX1NQRUVEU1tuZXh0Vm9pY2VTcGVlZEluZGV4XTtcbiAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UuY2FuY2VsKCk7XG4gICAgdGhpcy5zcGVhaygpXG4gIH1cblxuICBzdG9wTGlzdGVuaW5nKCkge1xuICAgIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLnN0b3AoKTtcbiAgfVxuXG4gIGdldCBpc0xpc3RlbmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UuaXNMaXN0ZW5pbmdcbiAgfVxuXG4gIGdldCBpc0Rpc2FibGVkVGV4dFRvU3BlZWNoKCkge1xuICAgIGNvbnN0IGhhc1RleHRUb1NwZWVjaFZvaWNlID0gdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLmhhc1ZvaWNlO1xuICAgIHJldHVybiAhdGhpcy5fcmVjb2duaXplZFRleHQgfHwgIWhhc1RleHRUb1NwZWVjaFZvaWNlIHx8IHRoaXMuaXNMaXN0ZW5pbmc7XG4gIH1cbiAgcHJpdmF0ZSBzZXRUZXh0QXJlYVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHRBcmVhRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzcGVhaygpIHtcbiAgICB0aGlzLmlzRG9uZVNwZWFraW5nID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLnNwZWFrKHRoaXMuX3JlY29nbml6ZWRUZXh0LCB0aGlzLnZvaWNlU3BlZWQpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNEb25lU3BlYWtpbmcgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTcGVlY2hDb250YWluZXJXaWR0aCgpIHtcbiAgICB0aGlzLnNwZWVjaFJlY29nbml0aW9uQ29udGFpbmVyV2lkdGggPSB0aGlzLnRleHRBcmVhRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAtIHRoaXMuU1BFRUNIX1JFQ09HTklUSU9OX01BUkdJTl9PRkZTRVQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { SpeechRecognitionComponent } from './speech-recognition/speech-recognition.component';
|
|
5
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
var SpeechRecognitionModule = /** @class */ (function () {
|
|
7
|
+
function SpeechRecognitionModule() {
|
|
8
|
+
}
|
|
9
|
+
SpeechRecognitionModule = __decorate([
|
|
10
|
+
NgModule({
|
|
11
|
+
declarations: [SpeechRecognitionComponent],
|
|
12
|
+
imports: [
|
|
13
|
+
CommonModule,
|
|
14
|
+
TranslateModule
|
|
15
|
+
],
|
|
16
|
+
exports: [SpeechRecognitionComponent]
|
|
17
|
+
})
|
|
18
|
+
], SpeechRecognitionModule);
|
|
19
|
+
return SpeechRecognitionModule;
|
|
20
|
+
}());
|
|
21
|
+
export { SpeechRecognitionModule };
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFVdEQ7SUFBQTtJQUF1QyxDQUFDO0lBQTNCLHVCQUF1QjtRQVJuQyxRQUFRLENBQUM7WUFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztZQUMxQyxPQUFPLEVBQUU7Z0JBQ1AsWUFBWTtnQkFDWixlQUFlO2FBQ2hCO1lBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7U0FDdEMsQ0FBQztPQUNXLHVCQUF1QixDQUFJO0lBQUQsOEJBQUM7Q0FBQSxBQUF4QyxJQUF3QztTQUEzQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable, NgZone } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { LocaleService } from '../locale/locale.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../locale/locale.service";
|
|
7
|
+
var SpeechRecognitionService = /** @class */ (function () {
|
|
8
|
+
function SpeechRecognitionService(localeService, ngZone) {
|
|
9
|
+
this.localeService = localeService;
|
|
10
|
+
this.ngZone = ngZone;
|
|
11
|
+
this.isListening = false;
|
|
12
|
+
this.TIMEOUT_NO_MESSAGE = 3000;
|
|
13
|
+
this.setRecognition();
|
|
14
|
+
}
|
|
15
|
+
SpeechRecognitionService.prototype.listen = function () {
|
|
16
|
+
var _this = this;
|
|
17
|
+
if (this.isListening) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
var speechSubject = new Subject();
|
|
21
|
+
this.isListening = true;
|
|
22
|
+
this.recognition.continuous = true;
|
|
23
|
+
this.recognition.interimResults = true;
|
|
24
|
+
this.recognition.maxAlternatives = 1;
|
|
25
|
+
var silenceTimer;
|
|
26
|
+
var restartSilenceTimer = function () {
|
|
27
|
+
if (silenceTimer !== undefined) {
|
|
28
|
+
clearTimeout(silenceTimer);
|
|
29
|
+
}
|
|
30
|
+
silenceTimer = setTimeout(function () {
|
|
31
|
+
_this.recognition.stop();
|
|
32
|
+
}, _this.TIMEOUT_NO_MESSAGE);
|
|
33
|
+
};
|
|
34
|
+
var fullTranscript = '';
|
|
35
|
+
var interimTranscript = '';
|
|
36
|
+
this.recognition.onresult = function (event) {
|
|
37
|
+
_this.ngZone.run(function () {
|
|
38
|
+
restartSilenceTimer();
|
|
39
|
+
var interimTranscript = '';
|
|
40
|
+
for (var i = event.resultIndex; i < event.results.length; ++i) {
|
|
41
|
+
var transcript = event.results[i][0].transcript;
|
|
42
|
+
if (event.results[i].isFinal) {
|
|
43
|
+
fullTranscript += transcript + '\n';
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
interimTranscript += transcript;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
interimTranscript = interimTranscript;
|
|
50
|
+
speechSubject.next({ text: fullTranscript + interimTranscript, isFinal: false });
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
this.recognition.onerror = function () {
|
|
54
|
+
_this.ngZone.run(function () {
|
|
55
|
+
if (silenceTimer !== undefined) {
|
|
56
|
+
clearTimeout(silenceTimer);
|
|
57
|
+
}
|
|
58
|
+
_this.isListening = false;
|
|
59
|
+
speechSubject.next({
|
|
60
|
+
isFinal: true,
|
|
61
|
+
text: ''
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
this.recognition.onend = function () {
|
|
66
|
+
_this.ngZone.run(function () {
|
|
67
|
+
if (silenceTimer !== undefined) {
|
|
68
|
+
clearTimeout(silenceTimer);
|
|
69
|
+
}
|
|
70
|
+
speechSubject.next({ text: fullTranscript + interimTranscript, isFinal: true });
|
|
71
|
+
_this.isListening = false;
|
|
72
|
+
speechSubject.complete();
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
this.recognition.start();
|
|
76
|
+
return speechSubject;
|
|
77
|
+
};
|
|
78
|
+
SpeechRecognitionService.prototype.stop = function () {
|
|
79
|
+
this.recognition.stop();
|
|
80
|
+
};
|
|
81
|
+
SpeechRecognitionService.prototype.setRecognition = function () {
|
|
82
|
+
var SpeechRecognitionConstructor = window.SpeechRecognition || window.webkitSpeechRecognition;
|
|
83
|
+
if (!SpeechRecognitionConstructor) {
|
|
84
|
+
throw new Error('Speech recognition is not supported in this browser.');
|
|
85
|
+
}
|
|
86
|
+
this.recognition = new SpeechRecognitionConstructor();
|
|
87
|
+
this.recognition.lang = this.localeService.getLocaleOptions().locale || 'pt-BR';
|
|
88
|
+
this.recognition.interimResults = false;
|
|
89
|
+
this.recognition.maxAlternatives = 1;
|
|
90
|
+
};
|
|
91
|
+
SpeechRecognitionService.ctorParameters = function () { return [
|
|
92
|
+
{ type: LocaleService },
|
|
93
|
+
{ type: NgZone }
|
|
94
|
+
]; };
|
|
95
|
+
SpeechRecognitionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SpeechRecognitionService_Factory() { return new SpeechRecognitionService(i0.ɵɵinject(i1.LocaleService), i0.ɵɵinject(i0.NgZone)); }, token: SpeechRecognitionService, providedIn: "root" });
|
|
96
|
+
SpeechRecognitionService = __decorate([
|
|
97
|
+
Injectable({
|
|
98
|
+
providedIn: 'root'
|
|
99
|
+
})
|
|
100
|
+
], SpeechRecognitionService);
|
|
101
|
+
return SpeechRecognitionService;
|
|
102
|
+
}());
|
|
103
|
+
export { SpeechRecognitionService };
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFVekQ7SUFLRSxrQ0FBNkIsYUFBNEIsRUFBbUIsTUFBYztRQUE3RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSjFGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRUgsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBR3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQseUNBQU0sR0FBTjtRQUFBLGlCQWlFQztRQWhFQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTztTQUNSO1FBQ0QsSUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxZQUFpQixDQUFDO1FBQ3RCLElBQU0sbUJBQW1CLEdBQUc7WUFDMUIsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO2dCQUM5QixZ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QUMsV0FBVyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUNoRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2dCQXZGMkMsYUFBYTtnQkFBMkIsTUFBTTs7O0lBTC9FLHdCQUF3QjtRQUhwQyxVQUFVLENBQUM7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDO09BQ1csd0JBQXdCLENBNkZwQzttQ0F6R0Q7Q0F5R0MsQUE3RkQsSUE2RkM7U0E3Rlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVlY2hSZXN1bHQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGlzRmluYWw6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmljZSB7XG4gIGlzTGlzdGVuaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVjb2duaXRpb24hOiBTcGVlY2hSZWNvZ25pdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBUSU1FT1VUX05PX01FU1NBR0UgPSAzMDAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuc2V0UmVjb2duaXRpb24oKTtcbiAgfVxuXG4gIGxpc3RlbigpOiBTdWJqZWN0PFNwZWVjaFJlc3VsdD4ge1xuICAgIGlmICh0aGlzLmlzTGlzdGVuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNwZWVjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxTcGVlY2hSZXN1bHQ+KCk7XG4gICAgdGhpcy5pc0xpc3RlbmluZyA9IHRydWU7XG4gICAgdGhpcy5yZWNvZ25pdGlvbi5jb250aW51b3VzID0gdHJ1ZTtcbiAgICB0aGlzLnJlY29nbml0aW9uLmludGVyaW1SZXN1bHRzID0gdHJ1ZTtcbiAgICB0aGlzLnJlY29nbml0aW9uLm1heEFsdGVybmF0aXZlcyA9IDE7XG4gICAgbGV0IHNpbGVuY2VUaW1lcjogYW55O1xuICAgIGNvbnN0IHJlc3RhcnRTaWxlbmNlVGltZXIgPSAoKSA9PiB7XG4gICAgICBpZiAoc2lsZW5jZVRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHNpbGVuY2VUaW1lcik7XG4gICAgICB9XG5cbiAgICAgIHNpbGVuY2VUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlY29nbml0aW9uLnN0b3AoKTtcbiAgICAgIH0sIHRoaXMuVElNRU9VVF9OT19NRVNTQUdFKTtcbiAgICB9O1xuICAgIGxldCBmdWxsVHJhbnNjcmlwdCA9ICcnO1xuICAgIGxldCBpbnRlcmltVHJhbnNjcmlwdCA9ICcnO1xuXG4gICAgdGhpcy5yZWNvZ25pdGlvbi5vbnJlc3VsdCA9IChldmVudDogU3BlZWNoUmVjb2duaXRpb25FdmVudCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgcmVzdGFydFNpbGVuY2VUaW1lcigpO1xuICAgICAgICBsZXQgaW50ZXJpbVRyYW5zY3JpcHQgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IGV2ZW50LnJlc3VsdEluZGV4OyBpIDwgZXZlbnQucmVzdWx0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBldmVudC5yZXN1bHRzW2ldWzBdLnRyYW5zY3JpcHQ7XG4gICAgICAgICAgaWYgKGV2ZW50LnJlc3VsdHNbaV0uaXNGaW5hbCkge1xuICAgICAgICAgICAgZnVsbFRyYW5zY3JpcHQgKz0gdHJhbnNjcmlwdCArICdcXG4nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnRlcmltVHJhbnNjcmlwdCArPSB0cmFuc2NyaXB0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnRlcmltVHJhbnNjcmlwdCA9IGludGVyaW1UcmFuc2NyaXB0O1xuICAgICAgICBzcGVlY2hTdWJqZWN0Lm5leHQoeyB0ZXh0OiBmdWxsVHJhbnNjcmlwdCArIGludGVyaW1UcmFuc2NyaXB0LCBpc0ZpbmFsOiBmYWxzZSB9KTtcbiAgICAgIH0pXG4gICAgfTtcblxuXG4gICAgdGhpcy5yZWNvZ25pdGlvbi5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgaWYgKHNpbGVuY2VUaW1lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHNpbGVuY2VUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0xpc3RlbmluZyA9IGZhbHNlO1xuICAgICAgICBzcGVlY2hTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIGlzRmluYWw6IHRydWUsXG4gICAgICAgICAgdGV4dDogJydcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIHRoaXMucmVjb2duaXRpb24ub25lbmQgPSAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAoc2lsZW5jZVRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoc2lsZW5jZVRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICBzcGVlY2hTdWJqZWN0Lm5leHQoeyB0ZXh0OiBmdWxsVHJhbnNjcmlwdCArIGludGVyaW1UcmFuc2NyaXB0LCBpc0ZpbmFsOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmlzTGlzdGVuaW5nID0gZmFsc2U7XG4gICAgICAgIHNwZWVjaFN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgIH0pXG4gICAgfTtcbiAgICB0aGlzLnJlY29nbml0aW9uLnN0YXJ0KCk7XG4gICAgcmV0dXJuIHNwZWVjaFN1YmplY3Q7XG4gIH1cblxuICBzdG9wKCkge1xuICAgIHRoaXMucmVjb2duaXRpb24uc3RvcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZWNvZ25pdGlvbigpIHtcbiAgICBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkNvbnN0cnVjdG9yID1cbiAgICAgICh3aW5kb3cgYXMgYW55KS5TcGVlY2hSZWNvZ25pdGlvbiB8fCAod2luZG93IGFzIGFueSkud2Via2l0U3BlZWNoUmVjb2duaXRpb247XG5cbiAgICBpZiAoIVNwZWVjaFJlY29nbml0aW9uQ29uc3RydWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3BlZWNoIHJlY29nbml0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpO1xuICAgIH1cblxuICAgIHRoaXMucmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb25Db25zdHJ1Y3RvcigpO1xuICAgIHRoaXMucmVjb2duaXRpb24ubGFuZyA9IHRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkubG9jYWxlIHx8ICdwdC1CUic7XG4gICAgdGhpcy5yZWNvZ25pdGlvbi5pbnRlcmltUmVzdWx0cyA9IGZhbHNlO1xuICAgIHRoaXMucmVjb2duaXRpb24ubWF4QWx0ZXJuYXRpdmVzID0gMTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable, NgZone } from '@angular/core';
|
|
3
|
+
import { LocaleService } from '../locale/locale.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../locale/locale.service";
|
|
6
|
+
var TextToSpeechService = /** @class */ (function () {
|
|
7
|
+
function TextToSpeechService(locale, ngZone) {
|
|
8
|
+
this.locale = locale;
|
|
9
|
+
this.ngZone = ngZone;
|
|
10
|
+
this.utterance = new SpeechSynthesisUtterance();
|
|
11
|
+
this.voices = [];
|
|
12
|
+
this.setVoices();
|
|
13
|
+
}
|
|
14
|
+
TextToSpeechService.prototype.setVoices = function () {
|
|
15
|
+
var _this = this;
|
|
16
|
+
var _voices = speechSynthesis.getVoices();
|
|
17
|
+
if (!_voices.length) {
|
|
18
|
+
speechSynthesis.onvoiceschanged = function () {
|
|
19
|
+
_this.ngZone.run(function () {
|
|
20
|
+
_voices = speechSynthesis.getVoices();
|
|
21
|
+
var currentLang = _this.locale.getLocaleOptions().locale || 'pt-BR';
|
|
22
|
+
_this.voices = _voices.filter(function (voice) { return voice.lang === currentLang; });
|
|
23
|
+
_this.activeVoice = _this.voices[0];
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Updates the active voice
|
|
30
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/voiceURI)
|
|
31
|
+
* @param voiceUri
|
|
32
|
+
*/
|
|
33
|
+
TextToSpeechService.prototype.updateVoice = function (voiceUri) {
|
|
34
|
+
this.activeVoice = this.voices.find(function (voice) { return voice.voiceURI === voiceUri; });
|
|
35
|
+
};
|
|
36
|
+
TextToSpeechService.prototype.speak = function (text, speed) {
|
|
37
|
+
var _this = this;
|
|
38
|
+
if (speed === void 0) { speed = 1; }
|
|
39
|
+
if (!this.activeVoice) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
return new Promise(function (resolve) {
|
|
43
|
+
_this.utterance.text = text;
|
|
44
|
+
_this.utterance.voice = _this.activeVoice;
|
|
45
|
+
_this.utterance.rate = speed;
|
|
46
|
+
speechSynthesis.speak(_this.utterance);
|
|
47
|
+
_this.utterance.onend = function () {
|
|
48
|
+
_this.ngZone.run(function () {
|
|
49
|
+
resolve(true);
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
TextToSpeechService.prototype.pause = function () {
|
|
55
|
+
speechSynthesis.pause();
|
|
56
|
+
};
|
|
57
|
+
TextToSpeechService.prototype.resume = function () {
|
|
58
|
+
speechSynthesis.resume();
|
|
59
|
+
};
|
|
60
|
+
TextToSpeechService.prototype.cancel = function () {
|
|
61
|
+
speechSynthesis.cancel();
|
|
62
|
+
};
|
|
63
|
+
Object.defineProperty(TextToSpeechService.prototype, "hasVoice", {
|
|
64
|
+
get: function () {
|
|
65
|
+
return !!this.activeVoice;
|
|
66
|
+
},
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true
|
|
69
|
+
});
|
|
70
|
+
TextToSpeechService.ctorParameters = function () { return [
|
|
71
|
+
{ type: LocaleService },
|
|
72
|
+
{ type: NgZone }
|
|
73
|
+
]; };
|
|
74
|
+
TextToSpeechService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TextToSpeechService_Factory() { return new TextToSpeechService(i0.ɵɵinject(i1.LocaleService), i0.ɵɵinject(i0.NgZone)); }, token: TextToSpeechService, providedIn: "root" });
|
|
75
|
+
TextToSpeechService = __decorate([
|
|
76
|
+
Injectable({
|
|
77
|
+
providedIn: 'root'
|
|
78
|
+
})
|
|
79
|
+
], TextToSpeechService);
|
|
80
|
+
return TextToSpeechService;
|
|
81
|
+
}());
|
|
82
|
+
export { TextToSpeechService };
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbi90ZXh0LXRvLXNwZWVjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUt6RDtJQUtFLDZCQUE2QixNQUFxQixFQUFtQixNQUFjO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUpsRSxjQUFTLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBRTVELFdBQU0sR0FBMkIsRUFBRSxDQUFDO1FBR2xDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sdUNBQVMsR0FBakI7UUFBQSxpQkFhQztRQVpDLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUUxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQixlQUFlLENBQUMsZUFBZSxHQUFHO2dCQUNoQyxLQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztvQkFDZCxPQUFPLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN0QyxJQUFNLFdBQVcsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztvQkFDckUsS0FBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQTFCLENBQTBCLENBQUMsQ0FBQztvQkFDcEUsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQTtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx5Q0FBVyxHQUFYLFVBQVksUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUEzQixDQUEyQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUdELG1DQUFLLEdBQUwsVUFBTSxJQUFZLEVBQUUsS0FBaUI7UUFBckMsaUJBZUM7UUFmbUIsc0JBQUEsRUFBQSxTQUFpQjtRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFDRCxPQUFPLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTztZQUN6QixLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDM0IsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQztZQUN4QyxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDNUIsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUc7Z0JBQ3JCLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxtQ0FBSyxHQUFMO1FBQ0UsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQ0FBTSxHQUFOO1FBQ0UsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQ0FBTSxHQUFOO1FBQ0UsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQkFBSSx5Q0FBUTthQUFaO1lBQ0UsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM1QixDQUFDOzs7T0FBQTs7Z0JBNURvQyxhQUFhO2dCQUEyQixNQUFNOzs7SUFMeEUsbUJBQW1CO1FBSC9CLFVBQVUsQ0FBQztZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUM7T0FDVyxtQkFBbUIsQ0FrRS9COzhCQXhFRDtDQXdFQyxBQWxFRCxJQWtFQztTQWxFWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUZXh0VG9TcGVlY2hTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB1dHRlcmFuY2UgPSBuZXcgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCk7XG4gIHByaXZhdGUgYWN0aXZlVm9pY2U6IFNwZWVjaFN5bnRoZXNpc1ZvaWNlO1xuICB2b2ljZXM6IFNwZWVjaFN5bnRoZXNpc1ZvaWNlW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2FsZTogTG9jYWxlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuc2V0Vm9pY2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZvaWNlcygpIHtcbiAgICBsZXQgX3ZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKTtcblxuICAgIGlmICghX3ZvaWNlcy5sZW5ndGgpIHtcbiAgICAgIHNwZWVjaFN5bnRoZXNpcy5vbnZvaWNlc2NoYW5nZWQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgX3ZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMubG9jYWxlLmdldExvY2FsZU9wdGlvbnMoKS5sb2NhbGUgfHwgJ3B0LUJSJztcbiAgICAgICAgICB0aGlzLnZvaWNlcyA9IF92b2ljZXMuZmlsdGVyKCh2b2ljZSkgPT4gdm9pY2UubGFuZyA9PT0gY3VycmVudExhbmcpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlVm9pY2UgPSB0aGlzLnZvaWNlc1swXTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgYWN0aXZlIHZvaWNlXG4gICAqIFtNRE4gUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvU3BlZWNoU3ludGhlc2lzVm9pY2Uvdm9pY2VVUkkpXG4gICAqIEBwYXJhbSB2b2ljZVVyaVxuICAgKi9cbiAgdXBkYXRlVm9pY2Uodm9pY2VVcmk6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aXZlVm9pY2UgPSB0aGlzLnZvaWNlcy5maW5kKCh2b2ljZSkgPT4gdm9pY2Uudm9pY2VVUkkgPT09IHZvaWNlVXJpKTtcbiAgfVxuXG5cbiAgc3BlYWsodGV4dDogc3RyaW5nLCBzcGVlZDogbnVtYmVyID0gMSkge1xuICAgIGlmICghdGhpcy5hY3RpdmVWb2ljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMudXR0ZXJhbmNlLnRleHQgPSB0ZXh0O1xuICAgICAgdGhpcy51dHRlcmFuY2Uudm9pY2UgPSB0aGlzLmFjdGl2ZVZvaWNlO1xuICAgICAgdGhpcy51dHRlcmFuY2UucmF0ZSA9IHNwZWVkO1xuICAgICAgc3BlZWNoU3ludGhlc2lzLnNwZWFrKHRoaXMudXR0ZXJhbmNlKTtcbiAgICAgIHRoaXMudXR0ZXJhbmNlLm9uZW5kID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIHNwZWVjaFN5bnRoZXNpcy5wYXVzZSgpO1xuICB9XG5cbiAgcmVzdW1lKCkge1xuICAgIHNwZWVjaFN5bnRoZXNpcy5yZXN1bWUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICBzcGVlY2hTeW50aGVzaXMuY2FuY2VsKCk7XG4gIH1cblxuICBnZXQgaGFzVm9pY2UoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5hY3RpdmVWb2ljZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { TextAreaComponent } from "./text-area/text-area.component";
|
|
2
|
+
export { TextAreaModule } from "./text-area.module";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90ZXh0LWFyZWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tIFwiLi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGV4dEFyZWFNb2R1bGUgfSBmcm9tIFwiLi90ZXh0LWFyZWEubW9kdWxlXCI7XG4iXX0=
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
var TextAreaComponent = /** @class */ (function () {
|
|
5
|
+
function TextAreaComponent() {
|
|
6
|
+
this.onChange = function () { };
|
|
7
|
+
this.onTouched = function () { };
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.value = '';
|
|
10
|
+
this.inputId = "textarea-" + Math.random();
|
|
11
|
+
this.rows = 5;
|
|
12
|
+
this.speechRecognition = false;
|
|
13
|
+
this.readOnly = false;
|
|
14
|
+
this.renderTextArea = false;
|
|
15
|
+
}
|
|
16
|
+
TextAreaComponent_1 = TextAreaComponent;
|
|
17
|
+
Object.defineProperty(TextAreaComponent.prototype, "textAreaElement", {
|
|
18
|
+
get: function () {
|
|
19
|
+
return this._textAreaElement;
|
|
20
|
+
},
|
|
21
|
+
set: function (value) {
|
|
22
|
+
var _this = this;
|
|
23
|
+
this._textAreaElement = value;
|
|
24
|
+
setTimeout(function () {
|
|
25
|
+
_this.renderTextArea = true;
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true
|
|
30
|
+
});
|
|
31
|
+
TextAreaComponent.prototype.writeValue = function (obj) {
|
|
32
|
+
this.value = obj;
|
|
33
|
+
};
|
|
34
|
+
TextAreaComponent.prototype.registerOnChange = function (fn) {
|
|
35
|
+
this.onChange = fn;
|
|
36
|
+
};
|
|
37
|
+
TextAreaComponent.prototype.registerOnTouched = function (fn) {
|
|
38
|
+
this.onTouched = fn;
|
|
39
|
+
};
|
|
40
|
+
TextAreaComponent.prototype.setDisabledState = function (isDisabled) {
|
|
41
|
+
this.disabled = isDisabled;
|
|
42
|
+
};
|
|
43
|
+
TextAreaComponent.prototype.setValue = function (value) {
|
|
44
|
+
if (this.disabled) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.value = value;
|
|
48
|
+
this.writeValue(this.value);
|
|
49
|
+
this.onChange(this.value);
|
|
50
|
+
this.onTouched(this.value);
|
|
51
|
+
};
|
|
52
|
+
TextAreaComponent.prototype.handleRecognizedText = function (recognizedText) {
|
|
53
|
+
this.setValue(recognizedText);
|
|
54
|
+
};
|
|
55
|
+
var TextAreaComponent_1;
|
|
56
|
+
__decorate([
|
|
57
|
+
ViewChild('textArea', { read: ElementRef })
|
|
58
|
+
], TextAreaComponent.prototype, "textAreaElement", null);
|
|
59
|
+
__decorate([
|
|
60
|
+
Input()
|
|
61
|
+
], TextAreaComponent.prototype, "inputId", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
Input()
|
|
64
|
+
], TextAreaComponent.prototype, "rows", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
Input()
|
|
67
|
+
], TextAreaComponent.prototype, "speechRecognition", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
Input()
|
|
70
|
+
], TextAreaComponent.prototype, "keyFilter", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
Input()
|
|
73
|
+
], TextAreaComponent.prototype, "inputStyle", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
Input()
|
|
76
|
+
], TextAreaComponent.prototype, "readOnly", void 0);
|
|
77
|
+
TextAreaComponent = TextAreaComponent_1 = __decorate([
|
|
78
|
+
Component({
|
|
79
|
+
selector: 's-textarea',
|
|
80
|
+
template: "<textarea\n *ngIf=\"keyFilter\"\n #textArea\n class=\"textarea\"\n [pKeyFilter]=\"keyFilter\"\n [id]=\"inputId\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [ngStyle]=\"inputStyle\"\n [readOnly]=\"readOnly\"\n (ngModelChange)=\"setValue($event)\">\n</textarea>\n\n<textarea\n *ngIf=\"!keyFilter\"\n #textArea\n class=\"textarea\"\n [id]=\"inputId\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [ngStyle]=\"inputStyle\"\n [readOnly]=\"readOnly\"\n (ngModelChange)=\"setValue($event)\">\n</textarea>\n\n<s-speech-recognition\n *ngIf=\"speechRecognition && renderTextArea\"\n [textAreaElement]=\"textAreaElement.nativeElement\"\n (recognizedText)=\"handleRecognizedText($event)\">\n</s-speech-recognition>\n",
|
|
81
|
+
providers: [
|
|
82
|
+
{
|
|
83
|
+
provide: NG_VALUE_ACCESSOR,
|
|
84
|
+
useExisting: forwardRef(function () { return TextAreaComponent_1; }),
|
|
85
|
+
multi: true,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:0;padding:8px;display:block}.textarea:disabled{opacity:.5}"]
|
|
89
|
+
})
|
|
90
|
+
], TextAreaComponent);
|
|
91
|
+
return TextAreaComponent;
|
|
92
|
+
}());
|
|
93
|
+
export { TextAreaComponent };
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RleHQtYXJlYS90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBY3pFO0lBQUE7UUFDRSxhQUFRLEdBQTRCLGNBQVEsQ0FBQyxDQUFDO1FBQzlDLGNBQVMsR0FBNEIsY0FBUSxDQUFDLENBQUM7UUFDL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBZUYsWUFBTyxHQUFHLGNBQVksSUFBSSxDQUFDLE1BQU0sRUFBSSxDQUFDO1FBQ3RDLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQStCekIsQ0FBQzswQkF6RFksaUJBQWlCO0lBUTVCLHNCQUFXLDhDQUFlO2FBQTFCO1lBQ0UsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsQ0FBQzthQUVELFVBQTJCLEtBQXNDO1lBQWpFLGlCQUtDO1lBSkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixVQUFVLENBQUM7Z0JBQ1QsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDOzs7T0FQQTtJQWtCRCxzQ0FBVSxHQUFWLFVBQVcsR0FBVztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRUQsNENBQWdCLEdBQWhCLFVBQWlCLEVBQTJCO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCw2Q0FBaUIsR0FBakIsVUFBa0IsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsNENBQWdCLEdBQWhCLFVBQWlCLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBUSxHQUFSLFVBQVMsS0FBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGdEQUFvQixHQUFwQixVQUFxQixjQUFzQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0lBaEREO1FBREMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQzs0REFHM0M7SUFTUTtRQUFSLEtBQUssRUFBRTtzREFBdUM7SUFDdEM7UUFBUixLQUFLLEVBQUU7bURBQVU7SUFDVDtRQUFSLEtBQUssRUFBRTtnRUFBMkI7SUFDMUI7UUFBUixLQUFLLEVBQUU7d0RBQTRCO0lBQzNCO1FBQVIsS0FBSyxFQUFFO3lEQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTt1REFBa0I7SUF4QmYsaUJBQWlCO1FBWjdCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxZQUFZO1lBQ3RCLG0xQkFBeUM7WUFFekMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLG1CQUFpQixFQUFqQixDQUFpQixDQUFDO29CQUNoRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGOztTQUNGLENBQUM7T0FDVyxpQkFBaUIsQ0F5RDdCO0lBQUQsd0JBQUM7Q0FBQSxBQXpERCxJQXlEQztTQXpEWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy10ZXh0YXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWFyZWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZXh0QXJlYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICB2YWx1ZSA9ICcnO1xuICBwcml2YXRlIF90ZXh0QXJlYUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndGV4dEFyZWEnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGdldCB0ZXh0QXJlYUVsZW1lbnQoKTogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRBcmVhRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdGV4dEFyZWFFbGVtZW50KHZhbHVlOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgdGhpcy5fdGV4dEFyZWFFbGVtZW50ID0gdmFsdWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlclRleHRBcmVhID0gdHJ1ZTtcbiAgICB9KVxuICB9XG5cbiAgQElucHV0KCkgaW5wdXRJZCA9IGB0ZXh0YXJlYS0ke01hdGgucmFuZG9tKCl9YDtcbiAgQElucHV0KCkgcm93cyA9IDU7XG4gIEBJbnB1dCgpIHNwZWVjaFJlY29nbml0aW9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIGtleUZpbHRlcjogc3RyaW5nIHwgUmVnRXhwO1xuICBASW5wdXQoKSBpbnB1dFN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuXG4gIHJlbmRlclRleHRBcmVhID0gZmFsc2U7XG5cbiAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZVJlY29nbml6ZWRUZXh0KHJlY29nbml6ZWRUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldFZhbHVlKHJlY29nbml6ZWRUZXh0KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { TextAreaComponent } from './text-area/text-area.component';
|
|
5
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { SpeechRecognitionModule } from '../speech-recognition/speech-recognition.module';
|
|
7
|
+
import { KeyFilterModule } from 'primeng/keyfilter';
|
|
8
|
+
var TextAreaModule = /** @class */ (function () {
|
|
9
|
+
function TextAreaModule() {
|
|
10
|
+
}
|
|
11
|
+
TextAreaModule = __decorate([
|
|
12
|
+
NgModule({
|
|
13
|
+
declarations: [TextAreaComponent],
|
|
14
|
+
imports: [
|
|
15
|
+
CommonModule,
|
|
16
|
+
FormsModule,
|
|
17
|
+
ReactiveFormsModule,
|
|
18
|
+
SpeechRecognitionModule,
|
|
19
|
+
KeyFilterModule
|
|
20
|
+
],
|
|
21
|
+
exports: [TextAreaComponent]
|
|
22
|
+
})
|
|
23
|
+
], TextAreaModule);
|
|
24
|
+
return TextAreaModule;
|
|
25
|
+
}());
|
|
26
|
+
export { TextAreaModule };
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RleHQtYXJlYS90ZXh0LWFyZWEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBZXBEO0lBQUE7SUFBOEIsQ0FBQztJQUFsQixjQUFjO1FBWDFCLFFBQVEsQ0FBQztZQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ2pDLE9BQU8sRUFBRTtnQkFDUCxZQUFZO2dCQUNaLFdBQVc7Z0JBQ1gsbUJBQW1CO2dCQUNuQix1QkFBdUI7Z0JBQ3ZCLGVBQWU7YUFDaEI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztTQUM3QixDQUFDO09BQ1csY0FBYyxDQUFJO0lBQUQscUJBQUM7Q0FBQSxBQUEvQixJQUErQjtTQUFsQixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTcGVlY2hSZWNvZ25pdGlvbk1vZHVsZSB9IGZyb20gJy4uL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24ubW9kdWxlJztcbmltcG9ydCB7IEtleUZpbHRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcva2V5ZmlsdGVyJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RleHRBcmVhQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNwZWVjaFJlY29nbml0aW9uTW9kdWxlLFxuICAgIEtleUZpbHRlck1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbVGV4dEFyZWFDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRBcmVhTW9kdWxlIHsgfVxuIl19
|