UNPKG

@ng-web-apis/audio

Version:

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

46 lines 5.77 kB
import { Directive, inject } from '@angular/core'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { asAudioNode, 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 WebAudioWaveShaper extends WaveShaperNode { constructor() { const context = inject(AUDIO_CONTEXT); const node = inject(AUDIO_NODE, { skipSelf: true }); const modern = inject(CONSTRUCTOR_SUPPORT); if (modern) { super(context); connect(node, this); } else { const result = context.createWaveShaper(); Object.setPrototypeOf(result, WebAudioWaveShaper.prototype); connect(node, result); return result; } } ngOnDestroy() { this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioWaveShaper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioWaveShaper, isStandalone: true, selector: "[waWaveShaperNode]", inputs: { oversample: "oversample", curve: "curve", channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation" }, providers: [asAudioNode(WebAudioWaveShaper)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } export { WebAudioWaveShaper }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioWaveShaper, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waWaveShaperNode]', inputs: [ 'oversample', 'curve', 'channelCount', 'channelCountMode', 'channelInterpretation', ], providers: [asAudioNode(WebAudioWaveShaper)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZS1zaGFwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1ZGlvL3NyYy9ub2Rlcy93YXZlLXNoYXBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBRXpDLE1BYWEsa0JBQW1CLFNBQVEsY0FBYztJQUNsRDtRQUNJLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0MsSUFBSSxNQUFNLEVBQUU7WUFDUixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQXdCLENBQUM7WUFFaEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV0QixPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBckJRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDJPQUhoQixDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOztTQUduQyxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFiOUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsTUFBTSxFQUFFO3dCQUNKLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxXQUFXLG9CQUFvQixDQUFDO29CQUM1QyxRQUFRLEVBQUUsV0FBVztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7T25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0FVRElPX0NPTlRFWFR9IGZyb20gJy4uL3Rva2Vucy9hdWRpby1jb250ZXh0JztcbmltcG9ydCB7YXNBdWRpb05vZGUsIEFVRElPX05PREV9IGZyb20gJy4uL3Rva2Vucy9hdWRpby1ub2RlJztcbmltcG9ydCB7Q09OU1RSVUNUT1JfU1VQUE9SVH0gZnJvbSAnLi4vdG9rZW5zL2NvbnN0cnVjdG9yLXN1cHBvcnQnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICcuLi91dGlscy9jb25uZWN0JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t3YVdhdmVTaGFwZXJOb2RlXScsXG4gICAgaW5wdXRzOiBbXG4gICAgICAgICdvdmVyc2FtcGxlJyxcbiAgICAgICAgJ2N1cnZlJyxcbiAgICAgICAgJ2NoYW5uZWxDb3VudCcsXG4gICAgICAgICdjaGFubmVsQ291bnRNb2RlJyxcbiAgICAgICAgJ2NoYW5uZWxJbnRlcnByZXRhdGlvbicsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFthc0F1ZGlvTm9kZShXZWJBdWRpb1dhdmVTaGFwZXIpXSxcbiAgICBleHBvcnRBczogJ0F1ZGlvTm9kZScsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkF1ZGlvV2F2ZVNoYXBlciBleHRlbmRzIFdhdmVTaGFwZXJOb2RlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGluamVjdChBVURJT19DT05URVhUKTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGluamVjdChBVURJT19OT0RFLCB7c2tpcFNlbGY6IHRydWV9KTtcbiAgICAgICAgY29uc3QgbW9kZXJuID0gaW5qZWN0KENPTlNUUlVDVE9SX1NVUFBPUlQpO1xuXG4gICAgICAgIGlmIChtb2Rlcm4pIHtcbiAgICAgICAgICAgIHN1cGVyKGNvbnRleHQpO1xuICAgICAgICAgICAgY29ubmVjdChub2RlLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlV2F2ZVNoYXBlcigpIGFzIFdlYkF1ZGlvV2F2ZVNoYXBlcjtcblxuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHJlc3VsdCwgV2ViQXVkaW9XYXZlU2hhcGVyLnByb3RvdHlwZSk7XG4gICAgICAgICAgICBjb25uZWN0KG5vZGUsIHJlc3VsdCk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cbiJdfQ==