UNPKG

@ng-web-apis/audio

Version:

This is a library for declarative use of Web Audio API with Angular

46 lines 5.34 kB
import { Directive, inject, Input } from '@angular/core'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { AUDIO_NODE } from '../tokens/audio-node'; import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support'; import { connect } from '../utils/connect'; import * as i0 from "@angular/core"; class WebAudioOutput extends GainNode { constructor() { const context = inject(AUDIO_CONTEXT); const node = inject(AUDIO_NODE); const modern = inject(CONSTRUCTOR_SUPPORT); if (modern) { super(context); connect(node, this); } else { const result = context.createGain(); Object.setPrototypeOf(result, WebAudioOutput.prototype); connect(node, result); return result; } } static init(that, node) { connect(node, that); } set waOutput(destination) { this.disconnect(); connect(this, destination); } ngOnDestroy() { this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioOutput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioOutput, isStandalone: true, selector: "[waOutput]", inputs: { waOutput: "waOutput" }, usesInheritance: true, ngImport: i0 }); } export { WebAudioOutput }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioOutput, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waOutput]', }] }], ctorParameters: function () { return []; }, propDecorators: { waOutput: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hdWRpby9zcmMvZGlyZWN0aXZlcy9vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUV6QyxNQUlhLGNBQWUsU0FBUSxRQUFRO0lBQ3hDO1FBQ0ksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUzQyxJQUFJLE1BQU0sRUFBRTtZQUNSLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUVwQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEQsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV0QixPQUFPLE1BQXdCLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRVMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFvQixFQUFFLElBQXNCO1FBQzlELE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLFdBQStDO1FBQy9ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBL0JRLGNBQWM7NEZBQWQsY0FBYzs7U0FBZCxjQUFjOzRGQUFkLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO2lCQUN6QjswRUF5QmMsUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0FVRElPX0NPTlRFWFR9IGZyb20gJy4uL3Rva2Vucy9hdWRpby1jb250ZXh0JztcbmltcG9ydCB7QVVESU9fTk9ERX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJy4uL3V0aWxzL2Nvbm5lY3QnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dhT3V0cHV0XScsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkF1ZGlvT3V0cHV0IGV4dGVuZHMgR2Fpbk5vZGUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5qZWN0KEFVRElPX0NPTlRFWFQpO1xuICAgICAgICBjb25zdCBub2RlID0gaW5qZWN0KEFVRElPX05PREUpO1xuICAgICAgICBjb25zdCBtb2Rlcm4gPSBpbmplY3QoQ09OU1RSVUNUT1JfU1VQUE9SVCk7XG5cbiAgICAgICAgaWYgKG1vZGVybikge1xuICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7XG4gICAgICAgICAgICBjb25uZWN0KG5vZGUsIHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVHYWluKCk7XG5cbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihyZXN1bHQsIFdlYkF1ZGlvT3V0cHV0LnByb3RvdHlwZSk7XG4gICAgICAgICAgICBjb25uZWN0KG5vZGUsIHJlc3VsdCk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgV2ViQXVkaW9PdXRwdXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIGluaXQodGhhdDogV2ViQXVkaW9PdXRwdXQsIG5vZGU6IEF1ZGlvTm9kZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29ubmVjdChub2RlLCB0aGF0KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgd2FPdXRwdXQoZGVzdGluYXRpb246IEF1ZGlvTm9kZSB8IEF1ZGlvUGFyYW0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICAgIGNvbm5lY3QodGhpcywgZGVzdGluYXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxufVxuIl19