@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
55 lines • 6.95 kB
JavaScript
import { __decorate } from "tslib";
import { Attribute, Directive, inject, Input } from '@angular/core';
import { audioParam } from '../decorators/audio-param';
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 { parse } from '../utils/parse';
import * as i0 from "@angular/core";
class WebAudioGain extends GainNode {
gainParam;
constructor(gainArg) {
const context = inject(AUDIO_CONTEXT);
const node = inject(AUDIO_NODE, { skipSelf: true });
const modern = inject(CONSTRUCTOR_SUPPORT);
const gain = parse(gainArg, 1);
if (modern) {
super(context, { gain });
connect(node, this);
}
else {
const result = context.createGain();
Object.setPrototypeOf(result, WebAudioGain.prototype);
connect(node, result);
result.gain.value = gain;
return result;
}
}
ngOnDestroy() {
this.disconnect();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioGain, deps: [{ token: 'gain', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioGain, isStandalone: true, selector: "[waGainNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation", gainParam: ["gain", "gainParam"] }, providers: [asAudioNode(WebAudioGain)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 });
}
__decorate([
audioParam('gain')
], WebAudioGain.prototype, "gainParam", void 0);
export { WebAudioGain };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioGain, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[waGainNode]',
inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],
providers: [asAudioNode(WebAudioGain)],
exportAs: 'AudioNode',
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Attribute,
args: ['gain']
}] }]; }, propDecorators: { gainParam: [{
type: Input,
args: ['gain']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2Fpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYXVkaW8vc3JjL25vZGVzL2dhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXJDLE1BT2EsWUFBYSxTQUFRLFFBQVE7SUFHL0IsU0FBUyxDQUE0QjtJQUU1QyxZQUErQixPQUF3QztRQUNuRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0IsSUFBSSxNQUFNLEVBQUU7WUFDUixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFrQixDQUFDO1lBRXBELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUV6QixPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBM0JRLFlBQVksa0JBS0UsTUFBTTs0RkFMcEIsWUFBWSw2TkFIVixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQzs7QUFNL0I7SUFETixVQUFVLENBQUMsTUFBTSxDQUFDOytDQUN5QjtTQUhuQyxZQUFZOzRGQUFaLFlBQVk7a0JBUHhCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixNQUFNLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3JFLFNBQVMsRUFBRSxDQUFDLFdBQVcsY0FBYyxDQUFDO29CQUN0QyxRQUFRLEVBQUUsV0FBVztpQkFDeEI7OzBCQU1nQixTQUFTOzJCQUFDLE1BQU07NENBRnRCLFNBQVM7c0JBRmYsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHthdWRpb1BhcmFtfSBmcm9tICcuLi9kZWNvcmF0b3JzL2F1ZGlvLXBhcmFtJztcbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZSwgQVVESU9fTk9ERX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5pbXBvcnQgdHlwZSB7QXVkaW9QYXJhbUlucHV0fSBmcm9tICcuLi90eXBlcy9hdWRpby1wYXJhbS1pbnB1dCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJy4uL3V0aWxzL2Nvbm5lY3QnO1xuaW1wb3J0IHtwYXJzZX0gZnJvbSAnLi4vdXRpbHMvcGFyc2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dhR2Fpbk5vZGVdJyxcbiAgICBpbnB1dHM6IFsnY2hhbm5lbENvdW50JywgJ2NoYW5uZWxDb3VudE1vZGUnLCAnY2hhbm5lbEludGVycHJldGF0aW9uJ10sXG4gICAgcHJvdmlkZXJzOiBbYXNBdWRpb05vZGUoV2ViQXVkaW9HYWluKV0sXG4gICAgZXhwb3J0QXM6ICdBdWRpb05vZGUnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJBdWRpb0dhaW4gZXh0ZW5kcyBHYWluTm9kZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdnYWluJylcbiAgICBAYXVkaW9QYXJhbSgnZ2FpbicpXG4gICAgcHVibGljIGdhaW5QYXJhbT86IEF1ZGlvUGFyYW1JbnB1dCB8IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKEBBdHRyaWJ1dGUoJ2dhaW4nKSBnYWluQXJnOiBBdWRpb1BhcmFtSW5wdXQgfCBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBpbmplY3QoQVVESU9fQ09OVEVYVCk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBpbmplY3QoQVVESU9fTk9ERSwge3NraXBTZWxmOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IG1vZGVybiA9IGluamVjdChDT05TVFJVQ1RPUl9TVVBQT1JUKTtcbiAgICAgICAgY29uc3QgZ2FpbiA9IHBhcnNlKGdhaW5BcmcsIDEpO1xuXG4gICAgICAgIGlmIChtb2Rlcm4pIHtcbiAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHtnYWlufSk7XG4gICAgICAgICAgICBjb25uZWN0KG5vZGUsIHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVHYWluKCkgYXMgV2ViQXVkaW9HYWluO1xuXG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YocmVzdWx0LCBXZWJBdWRpb0dhaW4ucHJvdG90eXBlKTtcbiAgICAgICAgICAgIGNvbm5lY3Qobm9kZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIHJlc3VsdC5nYWluLnZhbHVlID0gZ2FpbjtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxufVxuIl19