@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
58 lines • 6.65 kB
JavaScript
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==