UNPKG

@ng-web-apis/audio

Version:

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

62 lines 8.1 kB
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 WebAudioDelay extends DelayNode { delayTimeParam; constructor(delayTimeArg, maxDelayTimeArg) { const context = inject(AUDIO_CONTEXT); const node = inject(AUDIO_NODE, { skipSelf: true }); const modern = inject(CONSTRUCTOR_SUPPORT); const delayTime = parse(delayTimeArg, 0); const maxDelayTime = parse(maxDelayTimeArg, 1); if (modern) { super(context, { delayTime, maxDelayTime }); connect(node, this); } else { const result = context.createDelay(maxDelayTime); Object.setPrototypeOf(result, WebAudioDelay.prototype); connect(node, result); result.delayTime.value = delayTime; return result; } } static init(that, node) { connect(node, that); } ngOnDestroy() { this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioDelay, deps: [{ token: 'delayTime', attribute: true }, { token: 'maxDelayTime', attribute: true }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioDelay, isStandalone: true, selector: "[waDelayNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation", delayTimeParam: ["delayTime", "delayTimeParam"] }, providers: [asAudioNode(WebAudioDelay)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } __decorate([ audioParam('delayTime') ], WebAudioDelay.prototype, "delayTimeParam", void 0); export { WebAudioDelay }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioDelay, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waDelayNode]', inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'], providers: [asAudioNode(WebAudioDelay)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Attribute, args: ['delayTime'] }] }, { type: undefined, decorators: [{ type: Attribute, args: ['maxDelayTime'] }] }]; }, propDecorators: { delayTimeParam: [{ type: Input, args: ['delayTime'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1ZGlvL3NyYy9ub2Rlcy9kZWxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFbEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFckMsTUFPYSxhQUFjLFNBQVEsU0FBUztJQUdqQyxjQUFjLENBQW1CO0lBRXhDLFlBQzRCLFlBQTJCLEVBQ3hCLGVBQThCO1FBRXpELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9DLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFrQixDQUFDO1lBRWxFLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUVuQyxPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFUyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQW1CLEVBQUUsSUFBc0I7UUFDN0QsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQW5DUSxhQUFhLGtCQU1QLFdBQVcsOEJBQ1gsY0FBYzs0RkFQcEIsYUFBYSw2T0FIWCxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQzs7QUFNaEM7SUFETixVQUFVLENBQUMsV0FBVyxDQUFDO3FEQUNnQjtTQUgvQixhQUFhOzRGQUFiLGFBQWE7a0JBUHpCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixNQUFNLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3JFLFNBQVMsRUFBRSxDQUFDLFdBQVcsZUFBZSxDQUFDO29CQUN2QyxRQUFRLEVBQUUsV0FBVztpQkFDeEI7OzBCQU9RLFNBQVM7MkJBQUMsV0FBVzs7MEJBQ3JCLFNBQVM7MkJBQUMsY0FBYzs0Q0FKdEIsY0FBYztzQkFGcEIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHthdWRpb1BhcmFtfSBmcm9tICcuLi9kZWNvcmF0b3JzL2F1ZGlvLXBhcmFtJztcbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZSwgQVVESU9fTk9ERX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5pbXBvcnQgdHlwZSB7QXVkaW9QYXJhbUlucHV0fSBmcm9tICcuLi90eXBlcy9hdWRpby1wYXJhbS1pbnB1dCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJy4uL3V0aWxzL2Nvbm5lY3QnO1xuaW1wb3J0IHtwYXJzZX0gZnJvbSAnLi4vdXRpbHMvcGFyc2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dhRGVsYXlOb2RlXScsXG4gICAgaW5wdXRzOiBbJ2NoYW5uZWxDb3VudCcsICdjaGFubmVsQ291bnRNb2RlJywgJ2NoYW5uZWxJbnRlcnByZXRhdGlvbiddLFxuICAgIHByb3ZpZGVyczogW2FzQXVkaW9Ob2RlKFdlYkF1ZGlvRGVsYXkpXSxcbiAgICBleHBvcnRBczogJ0F1ZGlvTm9kZScsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkF1ZGlvRGVsYXkgZXh0ZW5kcyBEZWxheU5vZGUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnZGVsYXlUaW1lJylcbiAgICBAYXVkaW9QYXJhbSgnZGVsYXlUaW1lJylcbiAgICBwdWJsaWMgZGVsYXlUaW1lUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGVsYXlUaW1lJykgZGVsYXlUaW1lQXJnOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBAQXR0cmlidXRlKCdtYXhEZWxheVRpbWUnKSBtYXhEZWxheVRpbWVBcmc6IHN0cmluZyB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBpbmplY3QoQVVESU9fQ09OVEVYVCk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBpbmplY3QoQVVESU9fTk9ERSwge3NraXBTZWxmOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IG1vZGVybiA9IGluamVjdChDT05TVFJVQ1RPUl9TVVBQT1JUKTtcbiAgICAgICAgY29uc3QgZGVsYXlUaW1lID0gcGFyc2UoZGVsYXlUaW1lQXJnLCAwKTtcbiAgICAgICAgY29uc3QgbWF4RGVsYXlUaW1lID0gcGFyc2UobWF4RGVsYXlUaW1lQXJnLCAxKTtcblxuICAgICAgICBpZiAobW9kZXJuKSB7XG4gICAgICAgICAgICBzdXBlcihjb250ZXh0LCB7ZGVsYXlUaW1lLCBtYXhEZWxheVRpbWV9KTtcbiAgICAgICAgICAgIGNvbm5lY3Qobm9kZSwgdGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZURlbGF5KG1heERlbGF5VGltZSkgYXMgV2ViQXVkaW9EZWxheTtcblxuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHJlc3VsdCwgV2ViQXVkaW9EZWxheS5wcm90b3R5cGUpO1xuICAgICAgICAgICAgY29ubmVjdChub2RlLCByZXN1bHQpO1xuICAgICAgICAgICAgcmVzdWx0LmRlbGF5VGltZS52YWx1ZSA9IGRlbGF5VGltZTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgaW5pdCh0aGF0OiBXZWJBdWRpb0RlbGF5LCBub2RlOiBBdWRpb05vZGUgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbm5lY3Qobm9kZSwgdGhhdCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG59XG4iXX0=