UNPKG

@ng-web-apis/audio

Version:

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

58 lines 6.65 kB
import { __decorate } from "tslib"; import { Attribute, Directive, EventEmitter, inject, Input, Output } from '@angular/core'; import { audioParam } from '../decorators/audio-param'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { asAudioNode } from '../tokens/audio-node'; import { parse } from '../utils/parse'; import * as i0 from "@angular/core"; class WebAudioConstantSource extends ConstantSourceNode { offsetParam; ended = new EventEmitter(); constructor(autoplay, offset) { const context = inject(AUDIO_CONTEXT); super(context, { offset: parse(offset, 0), }); if (autoplay !== null) { this.start(); } } onended = () => this.ended.emit(); ngOnDestroy() { try { this.stop(); } catch { // noop } this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioConstantSource, deps: [{ token: 'autoplay', attribute: true }, { token: 'offset', attribute: true }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioConstantSource, isStandalone: true, selector: "[waConstantSourceNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation", offsetParam: ["offset", "offsetParam"] }, outputs: { ended: "ended" }, providers: [asAudioNode(WebAudioConstantSource)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } __decorate([ audioParam('offset') ], WebAudioConstantSource.prototype, "offsetParam", void 0); export { WebAudioConstantSource }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioConstantSource, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waConstantSourceNode]', inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'], providers: [asAudioNode(WebAudioConstantSource)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Attribute, args: ['autoplay'] }] }, { type: undefined, decorators: [{ type: Attribute, args: ['offset'] }] }]; }, propDecorators: { offsetParam: [{ type: Input, args: ['offset'] }], ended: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hdWRpby9zcmMvc291cmNlcy9jb25zdGFudC1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXJDLE1BT2Esc0JBQXVCLFNBQVEsa0JBQWtCO0lBR25ELFdBQVcsQ0FBbUI7SUFHOUIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFeEMsWUFDMkIsUUFBdUIsRUFDekIsTUFBcUI7UUFFMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDWCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFd0IsT0FBTyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFMUQsV0FBVztRQUNkLElBQUk7WUFDQSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUFDLE1BQU07WUFDSixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt3R0FqQ1Esc0JBQXNCLGtCQVNoQixVQUFVLDhCQUNWLFFBQVE7NEZBVmQsc0JBQXNCLDBRQUhwQixDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDOztBQU16QztJQUROLFVBQVUsQ0FBQyxRQUFRLENBQUM7MkRBQ2dCO1NBSDVCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQVBsQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxNQUFNLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3JFLFNBQVMsRUFBRSxDQUFDLFdBQVcsd0JBQXdCLENBQUM7b0JBQ2hELFFBQVEsRUFBRSxXQUFXO2lCQUN4Qjs7MEJBVVEsU0FBUzsyQkFBQyxVQUFVOzswQkFDcEIsU0FBUzsyQkFBQyxRQUFROzRDQVBoQixXQUFXO3NCQUZqQixLQUFLO3VCQUFDLFFBQVE7Z0JBS1IsS0FBSztzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F0dHJpYnV0ZSwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7YXVkaW9QYXJhbX0gZnJvbSAnLi4vZGVjb3JhdG9ycy9hdWRpby1wYXJhbSc7XG5pbXBvcnQge0FVRElPX0NPTlRFWFR9IGZyb20gJy4uL3Rva2Vucy9hdWRpby1jb250ZXh0JztcbmltcG9ydCB7YXNBdWRpb05vZGV9IGZyb20gJy4uL3Rva2Vucy9hdWRpby1ub2RlJztcbmltcG9ydCB0eXBlIHtBdWRpb1BhcmFtSW5wdXR9IGZyb20gJy4uL3R5cGVzL2F1ZGlvLXBhcmFtLWlucHV0JztcbmltcG9ydCB7cGFyc2V9IGZyb20gJy4uL3V0aWxzL3BhcnNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t3YUNvbnN0YW50U291cmNlTm9kZV0nLFxuICAgIGlucHV0czogWydjaGFubmVsQ291bnQnLCAnY2hhbm5lbENvdW50TW9kZScsICdjaGFubmVsSW50ZXJwcmV0YXRpb24nXSxcbiAgICBwcm92aWRlcnM6IFthc0F1ZGlvTm9kZShXZWJBdWRpb0NvbnN0YW50U291cmNlKV0sXG4gICAgZXhwb3J0QXM6ICdBdWRpb05vZGUnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJBdWRpb0NvbnN0YW50U291cmNlIGV4dGVuZHMgQ29uc3RhbnRTb3VyY2VOb2RlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ29mZnNldCcpXG4gICAgQGF1ZGlvUGFyYW0oJ29mZnNldCcpXG4gICAgcHVibGljIG9mZnNldFBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2F1dG9wbGF5JykgYXV0b3BsYXk6IHN0cmluZyB8IG51bGwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ29mZnNldCcpIG9mZnNldDogc3RyaW5nIHwgbnVsbCxcbiAgICApIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGluamVjdChBVURJT19DT05URVhUKTtcblxuICAgICAgICBzdXBlcihjb250ZXh0LCB7XG4gICAgICAgICAgICBvZmZzZXQ6IHBhcnNlKG9mZnNldCwgMCksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhdXRvcGxheSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IG9uZW5kZWQgPSAoKTogdm9pZCA9PiB0aGlzLmVuZGVkLmVtaXQoKTtcblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cbiJdfQ==