@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
21 lines • 4.18 kB
JavaScript
import { inject, InjectionToken } from '@angular/core';
import { WA_AUDIO_CONTEXT } from './audio-context';
import { WA_AUDIO_WORKLET_PROCESSORS } from './audio-worklet-processors';
import { WA_AUDIO_WORKLET_SUPPORT } from './audio-worklet-support';
export const WA_AUDIO_WORKLET_PROCESSORS_READY = new InjectionToken('[WA_AUDIO_WORKLET_PROCESSORS_READY]', {
providedIn: 'root',
factory: async () => {
const context = inject(WA_AUDIO_CONTEXT);
const processors = inject(WA_AUDIO_WORKLET_PROCESSORS);
if (!inject(WA_AUDIO_WORKLET_SUPPORT)) {
// eslint-disable-next-line no-restricted-syntax,prefer-promise-reject-errors
return Promise.reject('AudioWorklet is not supported').catch(() => false);
}
return Promise.all(processors.map(async (processor) => context.audioWorklet.addModule(processor))).then(() => true);
},
});
/**
* @deprecated: drop in v5.0, use {@link WA_AUDIO_WORKLET_PROCESSORS_READY}
*/
export const AUDIO_WORKLET_PROCESSORS_READY = WA_AUDIO_WORKLET_PROCESSORS_READY;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8td29ya2xldC1wcm9jZXNzb3JzLXJlYWR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hdWRpby9zcmMvdG9rZW5zL2F1ZGlvLXdvcmtsZXQtcHJvY2Vzc29ycy1yZWFkeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxJQUFJLGNBQWMsQ0FDL0QscUNBQXFDLEVBQ3JDO0lBQ0ksVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNuQyw2RUFBNkU7WUFDN0UsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdFO1FBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNkLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQy9CLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUM1QyxDQUVKLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUNKLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtXQV9BVURJT19DT05URVhUfSBmcm9tICcuL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHtXQV9BVURJT19XT1JLTEVUX1BST0NFU1NPUlN9IGZyb20gJy4vYXVkaW8td29ya2xldC1wcm9jZXNzb3JzJztcbmltcG9ydCB7V0FfQVVESU9fV09SS0xFVF9TVVBQT1JUfSBmcm9tICcuL2F1ZGlvLXdvcmtsZXQtc3VwcG9ydCc7XG5cbmV4cG9ydCBjb25zdCBXQV9BVURJT19XT1JLTEVUX1BST0NFU1NPUlNfUkVBRFkgPSBuZXcgSW5qZWN0aW9uVG9rZW48UHJvbWlzZTxib29sZWFuPj4oXG4gICAgJ1tXQV9BVURJT19XT1JLTEVUX1BST0NFU1NPUlNfUkVBRFldJyxcbiAgICB7XG4gICAgICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICAgICAgZmFjdG9yeTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IGluamVjdChXQV9BVURJT19DT05URVhUKTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvcnMgPSBpbmplY3QoV0FfQVVESU9fV09SS0xFVF9QUk9DRVNTT1JTKTtcblxuICAgICAgICAgICAgaWYgKCFpbmplY3QoV0FfQVVESU9fV09SS0xFVF9TVVBQT1JUKSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCxwcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdBdWRpb1dvcmtsZXQgaXMgbm90IHN1cHBvcnRlZCcpLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMubWFwKGFzeW5jIChwcm9jZXNzb3IpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZShwcm9jZXNzb3IpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgICAgICApLnRoZW4oKCkgPT4gdHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IGRyb3AgaW4gdjUuMCwgdXNlIHtAbGluayBXQV9BVURJT19XT1JLTEVUX1BST0NFU1NPUlNfUkVBRFl9XG4gKi9cbmV4cG9ydCBjb25zdCBBVURJT19XT1JLTEVUX1BST0NFU1NPUlNfUkVBRFkgPSBXQV9BVURJT19XT1JLTEVUX1BST0NFU1NPUlNfUkVBRFk7XG4iXX0=