@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
37 lines • 5.02 kB
JavaScript
import { Directive, inject } from '@angular/core';
import { AUDIO_CONTEXT } from '../tokens/audio-context';
import { asAudioNode } from '../tokens/audio-node';
import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support';
import { MEDIA_STREAM } from '../tokens/media-stream';
import * as i0 from "@angular/core";
class WebAudioMediaStreamSource extends MediaStreamAudioSourceNode {
constructor() {
const mediaStream = inject(MEDIA_STREAM);
const context = inject(AUDIO_CONTEXT);
const modern = inject(CONSTRUCTOR_SUPPORT);
if (modern) {
super(context, { mediaStream });
}
else {
const result = context.createMediaStreamSource(mediaStream);
Object.setPrototypeOf(result, WebAudioMediaStreamSource.prototype);
return result;
}
}
ngOnDestroy() {
this.disconnect();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioMediaStreamSource, deps: [], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioMediaStreamSource, isStandalone: true, selector: "[waMediaStreamAudioSourceNode]", providers: [asAudioNode(WebAudioMediaStreamSource)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 });
}
export { WebAudioMediaStreamSource };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioMediaStreamSource, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[waMediaStreamAudioSourceNode]',
providers: [asAudioNode(WebAudioMediaStreamSource)],
exportAs: 'AudioNode',
}]
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtc3RyZWFtLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYXVkaW8vc3JjL3NvdXJjZXMvbWVkaWEtc3RyZWFtLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFcEQsTUFNYSx5QkFDVCxTQUFRLDBCQUEwQjtJQUdsQztRQUNJLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQWUsYUFBYSxDQUFDLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0MsSUFBSSxNQUFNLEVBQUU7WUFDUixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0gsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTVELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRW5FLE9BQU8sTUFBbUMsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBdEJRLHlCQUF5Qjs0RkFBekIseUJBQXlCLDZFQUh2QixDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDOztTQUcxQyx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFOckMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsU0FBUyxFQUFFLENBQUMsV0FBVywyQkFBMkIsQ0FBQztvQkFDbkQsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBVURJT19DT05URVhUfSBmcm9tICcuLi90b2tlbnMvYXVkaW8tY29udGV4dCc7XG5pbXBvcnQge2FzQXVkaW9Ob2RlfSBmcm9tICcuLi90b2tlbnMvYXVkaW8tbm9kZSc7XG5pbXBvcnQge0NPTlNUUlVDVE9SX1NVUFBPUlR9IGZyb20gJy4uL3Rva2Vucy9jb25zdHJ1Y3Rvci1zdXBwb3J0JztcbmltcG9ydCB7TUVESUFfU1RSRUFNfSBmcm9tICcuLi90b2tlbnMvbWVkaWEtc3RyZWFtJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t3YU1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlXScsXG4gICAgcHJvdmlkZXJzOiBbYXNBdWRpb05vZGUoV2ViQXVkaW9NZWRpYVN0cmVhbVNvdXJjZSldLFxuICAgIGV4cG9ydEFzOiAnQXVkaW9Ob2RlJyxcbn0pXG5leHBvcnQgY2xhc3MgV2ViQXVkaW9NZWRpYVN0cmVhbVNvdXJjZVxuICAgIGV4dGVuZHMgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGVcbiAgICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IGluamVjdChNRURJQV9TVFJFQU0pO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5qZWN0PEF1ZGlvQ29udGV4dD4oQVVESU9fQ09OVEVYVCk7XG4gICAgICAgIGNvbnN0IG1vZGVybiA9IGluamVjdChDT05TVFJVQ1RPUl9TVVBQT1JUKTtcblxuICAgICAgICBpZiAobW9kZXJuKSB7XG4gICAgICAgICAgICBzdXBlcihjb250ZXh0LCB7bWVkaWFTdHJlYW19KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UobWVkaWFTdHJlYW0pO1xuXG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YocmVzdWx0LCBXZWJBdWRpb01lZGlhU3RyZWFtU291cmNlLnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgV2ViQXVkaW9NZWRpYVN0cmVhbVNvdXJjZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxufVxuIl19