UNPKG

@ng-web-apis/audio

Version:

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

49 lines 6.78 kB
import { Attribute, ContentChildren, Directive, inject } from '@angular/core'; import { WebAudioChannel } from '../directives/channel'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { asAudioNode } from '../tokens/audio-node'; import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support'; import * as i0 from "@angular/core"; class WebAudioChannelMerger extends ChannelMergerNode { constructor(inputs) { const context = inject(AUDIO_CONTEXT); const modern = inject(CONSTRUCTOR_SUPPORT); const numberOfInputs = parseInt(inputs ?? '', 10) || 6; if (modern) { super(context, { numberOfInputs }); } else { const result = context.createChannelMerger(numberOfInputs); Object.setPrototypeOf(result, WebAudioChannelMerger.prototype); return result; } } ngOnDestroy() { this.disconnect(); } set channels(channels) { channels.forEach((node, index) => { node.connect(this, 0, index); }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioChannelMerger, deps: [{ token: 'numberOfInputs', attribute: true }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioChannelMerger, isStandalone: true, selector: "[waChannelMergerNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation" }, providers: [asAudioNode(WebAudioChannelMerger)], queries: [{ propertyName: "channels", predicate: WebAudioChannel }], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } export { WebAudioChannelMerger }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioChannelMerger, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waChannelMergerNode]', inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'], providers: [asAudioNode(WebAudioChannelMerger)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Attribute, args: ['numberOfInputs'] }] }]; }, propDecorators: { channels: [{ type: ContentChildren, args: [WebAudioChannel, { descendants: false }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1tZXJnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1ZGlvL3NyYy9ub2Rlcy9jaGFubmVsLW1lcmdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQUVsRSxNQU9hLHFCQUFzQixTQUFRLGlCQUFpQjtJQUN4RCxZQUF5QyxNQUFxQjtRQUMxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLGNBQWMsRUFBQyxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUzRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvRCxPQUFPLE1BQStCLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDYyxRQUFRLENBQUMsUUFBOEI7UUFDakQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQTFCUSxxQkFBcUIsa0JBQ1AsZ0JBQWdCOzRGQUQ5QixxQkFBcUIsb01BSG5CLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsbURBd0I5QixlQUFlOztTQXJCdkIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBUGpDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztvQkFDckUsU0FBUyxFQUFFLENBQUMsV0FBVyx1QkFBdUIsQ0FBQztvQkFDL0MsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOzswQkFFZ0IsU0FBUzsyQkFBQyxnQkFBZ0I7NENBcUJ6QixRQUFRO3NCQURyQixlQUFlO3VCQUFDLGVBQWUsRUFBRSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7T25EZXN0cm95LCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBdHRyaWJ1dGUsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1dlYkF1ZGlvQ2hhbm5lbH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jaGFubmVsJztcbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbd2FDaGFubmVsTWVyZ2VyTm9kZV0nLFxuICAgIGlucHV0czogWydjaGFubmVsQ291bnQnLCAnY2hhbm5lbENvdW50TW9kZScsICdjaGFubmVsSW50ZXJwcmV0YXRpb24nXSxcbiAgICBwcm92aWRlcnM6IFthc0F1ZGlvTm9kZShXZWJBdWRpb0NoYW5uZWxNZXJnZXIpXSxcbiAgICBleHBvcnRBczogJ0F1ZGlvTm9kZScsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkF1ZGlvQ2hhbm5lbE1lcmdlciBleHRlbmRzIENoYW5uZWxNZXJnZXJOb2RlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBjb25zdHJ1Y3RvcihAQXR0cmlidXRlKCdudW1iZXJPZklucHV0cycpIGlucHV0czogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5qZWN0KEFVRElPX0NPTlRFWFQpO1xuICAgICAgICBjb25zdCBtb2Rlcm4gPSBpbmplY3QoQ09OU1RSVUNUT1JfU1VQUE9SVCk7XG4gICAgICAgIGNvbnN0IG51bWJlck9mSW5wdXRzID0gcGFyc2VJbnQoaW5wdXRzID8/ICcnLCAxMCkgfHwgNjtcblxuICAgICAgICBpZiAobW9kZXJuKSB7XG4gICAgICAgICAgICBzdXBlcihjb250ZXh0LCB7bnVtYmVyT2ZJbnB1dHN9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlQ2hhbm5lbE1lcmdlcihudW1iZXJPZklucHV0cyk7XG5cbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihyZXN1bHQsIFdlYkF1ZGlvQ2hhbm5lbE1lcmdlci5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFdlYkF1ZGlvQ2hhbm5lbE1lcmdlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZHJlbihXZWJBdWRpb0NoYW5uZWwsIHtkZXNjZW5kYW50czogZmFsc2V9KVxuICAgIHByb3RlY3RlZCBzZXQgY2hhbm5lbHMoY2hhbm5lbHM6IFF1ZXJ5TGlzdDxBdWRpb05vZGU+KSB7XG4gICAgICAgIGNoYW5uZWxzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBub2RlLmNvbm5lY3QodGhpcywgMCwgaW5kZXgpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=