angular-audio-context
Version:
An Angular wrapper for the Web Audio API's AudioContext.
35 lines (30 loc) • 1.48 kB
text/typescript
import { CommonModule } from '@angular/common';
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
import { IAudioContext, IAudioContextOptions, isSupported as standardizedAudioContextModuleIsSupported } from 'standardized-audio-context';
import { audioContextFactory } from './audio-context-factory';
import { AudioContextProxy } from './audio-context-proxy';
import { isSupportedFactory } from './is-supported-factory';
import { latencyHintToken } from './latency-hint-token';
// eslint-disable-next-line unicorn/prefer-export-from
export { AudioContextProxy as AudioContext, IAudioContext, IAudioContextOptions };
export const isSupported = new InjectionToken<typeof standardizedAudioContextModuleIsSupported>('IS_SUPPORTED_PROMISE');
({
imports: [CommonModule],
providers: [{ provide: isSupported, useFactory: isSupportedFactory }]
})
export class AudioContextModule {
public static forChild(): ModuleWithProviders<AudioContextModule> {
return {
ngModule: AudioContextModule
};
}
public static forRoot(latencyHint?: IAudioContextOptions['latencyHint']): ModuleWithProviders<AudioContextModule> {
return {
ngModule: AudioContextModule,
providers: [
{ deps: [latencyHintToken], provide: AudioContextProxy, useFactory: audioContextFactory },
{ provide: latencyHintToken, useValue: latencyHint }
]
};
}
}