@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
50 lines • 6.18 kB
JavaScript
import { Attribute, Directive, EventEmitter, forwardRef, Output } from '@angular/core';
import { AUDIO_CONTEXT } from '../tokens/audio-context';
import * as i0 from "@angular/core";
class WebAudioOfflineContext extends OfflineAudioContext {
complete = new EventEmitter();
// eslint-disable-next-line @typescript-eslint/max-params
constructor(length, sampleRate, numberOfChannels, autoplay) {
super(parseInt(numberOfChannels ?? '', 10) || 1, parseInt(length, 10), parseInt(sampleRate, 10));
if (autoplay !== null) {
void this.startRendering();
}
}
oncomplete = ({ renderedBuffer, }) => this.complete.emit(renderedBuffer);
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioOfflineContext, deps: [{ token: 'length', attribute: true }, { token: 'sampleRate', attribute: true }, { token: 'numberOfChannels', attribute: true }, { token: 'autoplay', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioOfflineContext, isStandalone: true, selector: "[waOfflineAudioContext][length][sampleRate]", outputs: { complete: "complete" }, providers: [
{
provide: AUDIO_CONTEXT,
useExisting: forwardRef(() => WebAudioOfflineContext),
},
], usesInheritance: true, ngImport: i0 });
}
export { WebAudioOfflineContext };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioOfflineContext, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[waOfflineAudioContext][length][sampleRate]',
providers: [
{
provide: AUDIO_CONTEXT,
useExisting: forwardRef(() => WebAudioOfflineContext),
},
],
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Attribute,
args: ['length']
}] }, { type: undefined, decorators: [{
type: Attribute,
args: ['sampleRate']
}] }, { type: undefined, decorators: [{
type: Attribute,
args: ['numberOfChannels']
}] }, { type: undefined, decorators: [{
type: Attribute,
args: ['autoplay']
}] }]; }, propDecorators: { complete: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1hdWRpby1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hdWRpby9zcmMvZGlyZWN0aXZlcy9vZmZsaW5lLWF1ZGlvLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUV0RCxNQVVhLHNCQUF1QixTQUFRLG1CQUFtQjtJQUUzQyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUUzRCx5REFBeUQ7SUFDekQsWUFDeUIsTUFBYyxFQUNWLFVBQWtCLEVBQ1osZ0JBQStCLEVBQ3ZDLFFBQXVCO1FBRTlDLEtBQUssQ0FDRCxRQUFRLENBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDekMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFDcEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FDM0IsQ0FBQztRQUVGLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtZQUNuQixLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFd0IsVUFBVSxHQUFHLENBQUMsRUFDbkMsY0FBYyxHQUNZLEVBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dHQXhCbkUsc0JBQXNCLGtCQU1oQixRQUFRLDhCQUNSLFlBQVksOEJBQ1osa0JBQWtCLDhCQUNsQixVQUFVOzRGQVRoQixzQkFBc0IsNkhBUHBCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDeEQ7U0FDSjs7U0FFUSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFWbEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDZDQUE2QztvQkFDdkQsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt5QkFDeEQ7cUJBQ0o7aUJBQ0o7OzBCQU9RLFNBQVM7MkJBQUMsUUFBUTs7MEJBQ2xCLFNBQVM7MkJBQUMsWUFBWTs7MEJBQ3RCLFNBQVM7MkJBQUMsa0JBQWtCOzswQkFDNUIsU0FBUzsyQkFBQyxVQUFVOzRDQVBULFFBQVE7c0JBRHZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F0dHJpYnV0ZSwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dhT2ZmbGluZUF1ZGlvQ29udGV4dF1bbGVuZ3RoXVtzYW1wbGVSYXRlXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFVRElPX0NPTlRFWFQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXZWJBdWRpb09mZmxpbmVDb250ZXh0KSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJBdWRpb09mZmxpbmVDb250ZXh0IGV4dGVuZHMgT2ZmbGluZUF1ZGlvQ29udGV4dCB7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxBdWRpb0J1ZmZlcj4oKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWF4LXBhcmFtc1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAQXR0cmlidXRlKCdsZW5ndGgnKSBsZW5ndGg6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnc2FtcGxlUmF0ZScpIHNhbXBsZVJhdGU6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbnVtYmVyT2ZDaGFubmVscycpIG51bWJlck9mQ2hhbm5lbHM6IHN0cmluZyB8IG51bGwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2F1dG9wbGF5JykgYXV0b3BsYXk6IHN0cmluZyB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgcGFyc2VJbnQobnVtYmVyT2ZDaGFubmVscyA/PyAnJywgMTApIHx8IDEsXG4gICAgICAgICAgICBwYXJzZUludChsZW5ndGgsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KHNhbXBsZVJhdGUsIDEwKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYXV0b3BsYXkgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5zdGFydFJlbmRlcmluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IG9uY29tcGxldGUgPSAoe1xuICAgICAgICByZW5kZXJlZEJ1ZmZlcixcbiAgICB9OiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQpOiB2b2lkID0+IHRoaXMuY29tcGxldGUuZW1pdChyZW5kZXJlZEJ1ZmZlcik7XG59XG4iXX0=