UNPKG

@ng-web-apis/audio

Version:

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

21 lines 4.18 kB
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=