UNPKG

@ng-web-apis/speech

Version:
60 lines 7.1 kB
import { Directive, EventEmitter, inject, Input, Output } from '@angular/core'; import { SPEECH_SYNTHESIS } from '@ng-web-apis/common'; import * as i0 from "@angular/core"; class WaTextToSpeech { speechSynthesisRef = inject(SPEECH_SYNTHESIS); paused = false; onerror = new EventEmitter(); onend = new EventEmitter(); onmark = new EventEmitter(); onboundary = new EventEmitter(); set waTextToSpeech(utterance) { this.speechSynthesisRef.cancel(); this.speechSynthesisRef.pause(); utterance.onerror = (e) => this.onerror.emit(e); utterance.onend = (e) => this.onend.emit(e); utterance.onmark = (e) => this.onmark.emit(e); utterance.onboundary = (e) => this.onboundary.emit(e); this.speechSynthesisRef.speak(utterance); } ngOnChanges() { if (this.paused) { this.speechSynthesisRef.pause(); } else { this.speechSynthesisRef.resume(); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaTextToSpeech, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WaTextToSpeech, isStandalone: true, selector: "[waTextToSpeech]", inputs: { paused: ["waTextToSpeechPaused", "paused"], waTextToSpeech: "waTextToSpeech" }, outputs: { onerror: "waTextToSpeechError", onend: "waTextToSpeechEnd", onmark: "waTextToSpeechMark", onboundary: "waTextToSpeechBoundary" }, usesOnChanges: true, ngImport: i0 }); } export { WaTextToSpeech }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaTextToSpeech, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waTextToSpeech]', }] }], propDecorators: { paused: [{ type: Input, args: ['waTextToSpeechPaused'] }], onerror: [{ type: Output, args: ['waTextToSpeechError'] }], onend: [{ type: Output, args: ['waTextToSpeechEnd'] }], onmark: [{ type: Output, args: ['waTextToSpeechMark'] }], onboundary: [{ type: Output, args: ['waTextToSpeechBoundary'] }], waTextToSpeech: [{ type: Input }] } }); /** * @deprecated: use {@link WaTextToSpeech} */ export const TextToSpeechDirective = WaTextToSpeech; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9zcGVlY2gvc3JjL21vZHVsZXMvc3BlZWNoLXN5bnRoZXNpcy90ZXh0LXRvLXNwZWVjaC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7O0FBRXJELE1BSWEsY0FBYztJQUNOLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBR3hELE1BQU0sR0FBRyxLQUFLLENBQUM7SUFHTixPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFHeEQsS0FBSyxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO0lBR2pELE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztJQUdsRCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7SUFFdEUsSUFDVyxjQUFjLENBQUMsU0FBbUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVoQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ25DO2FBQU07WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEM7SUFDTCxDQUFDO3dHQXJDUSxjQUFjOzRGQUFkLGNBQWM7O1NBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjs4QkFLVSxNQUFNO3NCQURaLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUliLE9BQU87c0JBRHRCLE1BQU07dUJBQUMscUJBQXFCO2dCQUliLEtBQUs7c0JBRHBCLE1BQU07dUJBQUMsbUJBQW1CO2dCQUlYLE1BQU07c0JBRHJCLE1BQU07dUJBQUMsb0JBQW9CO2dCQUlaLFVBQVU7c0JBRHpCLE1BQU07dUJBQUMsd0JBQXdCO2dCQUlyQixjQUFjO3NCQUR4QixLQUFLOztBQXNCVjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtPbkNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U1BFRUNIX1NZTlRIRVNJU30gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbd2FUZXh0VG9TcGVlY2hdJyxcbn0pXG5leHBvcnQgY2xhc3MgV2FUZXh0VG9TcGVlY2ggaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlZWNoU3ludGhlc2lzUmVmID0gaW5qZWN0KFNQRUVDSF9TWU5USEVTSVMpO1xuXG4gICAgQElucHV0KCd3YVRleHRUb1NwZWVjaFBhdXNlZCcpXG4gICAgcHVibGljIHBhdXNlZCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgnd2FUZXh0VG9TcGVlY2hFcnJvcicpXG4gICAgcHVibGljIHJlYWRvbmx5IG9uZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCd3YVRleHRUb1NwZWVjaEVuZCcpXG4gICAgcHVibGljIHJlYWRvbmx5IG9uZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxTcGVlY2hTeW50aGVzaXNFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoJ3dhVGV4dFRvU3BlZWNoTWFyaycpXG4gICAgcHVibGljIHJlYWRvbmx5IG9ubWFyayA9IG5ldyBFdmVudEVtaXR0ZXI8U3BlZWNoU3ludGhlc2lzRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCd3YVRleHRUb1NwZWVjaEJvdW5kYXJ5JylcbiAgICBwdWJsaWMgcmVhZG9ubHkgb25ib3VuZGFyeSA9IG5ldyBFdmVudEVtaXR0ZXI8U3BlZWNoU3ludGhlc2lzRXZlbnQ+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgd2FUZXh0VG9TcGVlY2godXR0ZXJhbmNlOiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpIHtcbiAgICAgICAgdGhpcy5zcGVlY2hTeW50aGVzaXNSZWYuY2FuY2VsKCk7XG4gICAgICAgIHRoaXMuc3BlZWNoU3ludGhlc2lzUmVmLnBhdXNlKCk7XG5cbiAgICAgICAgdXR0ZXJhbmNlLm9uZXJyb3IgPSAoZSkgPT4gdGhpcy5vbmVycm9yLmVtaXQoZSk7XG4gICAgICAgIHV0dGVyYW5jZS5vbmVuZCA9IChlKSA9PiB0aGlzLm9uZW5kLmVtaXQoZSk7XG4gICAgICAgIHV0dGVyYW5jZS5vbm1hcmsgPSAoZSkgPT4gdGhpcy5vbm1hcmsuZW1pdChlKTtcbiAgICAgICAgdXR0ZXJhbmNlLm9uYm91bmRhcnkgPSAoZSkgPT4gdGhpcy5vbmJvdW5kYXJ5LmVtaXQoZSk7XG5cbiAgICAgICAgdGhpcy5zcGVlY2hTeW50aGVzaXNSZWYuc3BlYWsodXR0ZXJhbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zcGVlY2hTeW50aGVzaXNSZWYucGF1c2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3BlZWNoU3ludGhlc2lzUmVmLnJlc3VtZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkOiB1c2Uge0BsaW5rIFdhVGV4dFRvU3BlZWNofVxuICovXG5leHBvcnQgY29uc3QgVGV4dFRvU3BlZWNoRGlyZWN0aXZlID0gV2FUZXh0VG9TcGVlY2g7XG4iXX0=