UNPKG

@ng-web-apis/audio

Version:

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

36 lines 5.07 kB
import { Directive, ElementRef, 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 * as i0 from "@angular/core"; class WebAudioMediaSource extends MediaElementAudioSourceNode { constructor() { const context = inject(AUDIO_CONTEXT); const modern = inject(CONSTRUCTOR_SUPPORT); const nativeElement = inject(ElementRef).nativeElement; if (modern) { super(context, { mediaElement: nativeElement }); } else { const result = context.createMediaElementSource(nativeElement); Object.setPrototypeOf(result, WebAudioMediaSource.prototype); return result; } } ngOnDestroy() { this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioMediaSource, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioMediaSource, isStandalone: true, selector: "audio[waMediaElementAudioSourceNode], video[waMediaElementAudioSourceNode]", providers: [asAudioNode(WebAudioMediaSource)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } export { WebAudioMediaSource }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioMediaSource, decorators: [{ type: Directive, args: [{ standalone: true, selector: 'audio[waMediaElementAudioSourceNode], video[waMediaElementAudioSourceNode]', providers: [asAudioNode(WebAudioMediaSource)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hdWRpby9zcmMvc291cmNlcy9tZWRpYS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBRWxFLE1BT2EsbUJBQ1QsU0FBUSwyQkFBMkI7SUFHbkM7UUFDSSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQWUsYUFBYSxDQUFDLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsTUFBTSxhQUFhLEdBQXFCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFekUsSUFBSSxNQUFNLEVBQUU7WUFDUixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUM7U0FDakQ7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUUvRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3RCxPQUFPLE1BQTZCLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQXRCUSxtQkFBbUI7NEZBQW5CLG1CQUFtQix5SEFIakIsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs7U0FHcEMsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBUC9CLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFDSiw0RUFBNEU7b0JBQ2hGLFNBQVMsRUFBRSxDQUFDLFdBQVcscUJBQXFCLENBQUM7b0JBQzdDLFFBQVEsRUFBRSxXQUFXO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6XG4gICAgICAgICdhdWRpb1t3YU1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZV0sIHZpZGVvW3dhTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlXScsXG4gICAgcHJvdmlkZXJzOiBbYXNBdWRpb05vZGUoV2ViQXVkaW9NZWRpYVNvdXJjZSldLFxuICAgIGV4cG9ydEFzOiAnQXVkaW9Ob2RlJyxcbn0pXG5leHBvcnQgY2xhc3MgV2ViQXVkaW9NZWRpYVNvdXJjZVxuICAgIGV4dGVuZHMgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlXG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGluamVjdDxBdWRpb0NvbnRleHQ+KEFVRElPX0NPTlRFWFQpO1xuICAgICAgICBjb25zdCBtb2Rlcm4gPSBpbmplY3QoQ09OU1RSVUNUT1JfU1VQUE9SVCk7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQ6IEhUTUxNZWRpYUVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAobW9kZXJuKSB7XG4gICAgICAgICAgICBzdXBlcihjb250ZXh0LCB7bWVkaWFFbGVtZW50OiBuYXRpdmVFbGVtZW50fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShuYXRpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHJlc3VsdCwgV2ViQXVkaW9NZWRpYVNvdXJjZS5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFdlYkF1ZGlvTWVkaWFTb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cbiJdfQ==