UNPKG

@ng-web-apis/midi

Version:

An Observable based library for the use of Web MIDI API with Angular

18 lines 4.43 kB
import { inject, InjectionToken } from '@angular/core'; import { from, fromEvent, merge, share, startWith, switchMap, throwError } from 'rxjs'; import { MIDI_ACCESS } from './midi-access'; export const WA_MIDI_MESSAGES = new InjectionToken('[WA_MIDI_MESSAGES]', { providedIn: 'root', factory: () => from(inject(MIDI_ACCESS).catch((e) => e)).pipe(switchMap((access) => access instanceof Error ? throwError(access) : fromEvent(access, 'statechange').pipe(startWith(null), switchMap(() => { const inputs = []; access.inputs.forEach((input) => inputs.push(input)); return merge(...inputs.map((input) => fromEvent(input, 'midimessage'))); }))), share()), }); /** * @deprecated: drop in v5.0, use {@link WA_MIDI_MESSAGES} */ export const MIDI_MESSAGES = WA_MIDI_MESSAGES; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkaS1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbWlkaS9zcmMvdG9rZW5zL21pZGktbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUM5QyxvQkFBb0IsRUFDcEI7SUFDSSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxTQUFTLENBQUMsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FDckMsTUFBTSxZQUFZLEtBQUs7UUFDbkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDcEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFhLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNYLE1BQU0sTUFBTSxHQUFnQixFQUFFLENBQUM7WUFFL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUVyRCxPQUFPLEtBQUssQ0FDUixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNwQixTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUNsQyxDQUNKLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDTCxDQUNWLEVBQ0QsS0FBSyxFQUFFLENBQ2lDO0NBQ25ELENBQ0osQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZnJvbSwgZnJvbUV2ZW50LCBtZXJnZSwgc2hhcmUsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNSURJX0FDQ0VTU30gZnJvbSAnLi9taWRpLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBXQV9NSURJX01FU1NBR0VTID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8TUlESU1lc3NhZ2VFdmVudD4+KFxuICAgICdbV0FfTUlESV9NRVNTQUdFU10nLFxuICAgIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgICBmYWN0b3J5OiAoKSA9PlxuICAgICAgICAgICAgZnJvbShpbmplY3QoTUlESV9BQ0NFU1MpLmNhdGNoKChlOiB1bmtub3duKSA9PiBlIGFzIEVycm9yKSkucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGFjY2VzczogRXJyb3IgfCBNSURJQWNjZXNzKSA9PlxuICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aHJvd0Vycm9yKGFjY2VzcylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZnJvbUV2ZW50KGFjY2VzcyBhcyBhbnksICdzdGF0ZWNoYW5nZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0czogTUlESUlucHV0W10gPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IGlucHV0cy5wdXNoKGlucHV0KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlucHV0cy5tYXAoKGlucHV0KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUV2ZW50KGlucHV0LCAnbWlkaW1lc3NhZ2UnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzaGFyZSgpLFxuICAgICAgICAgICAgKSBhcyB1bmtub3duIGFzIE9ic2VydmFibGU8TUlESU1lc3NhZ2VFdmVudD4sXG4gICAgfSxcbik7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IGRyb3AgaW4gdjUuMCwgdXNlIHtAbGluayBXQV9NSURJX01FU1NBR0VTfVxuICovXG5leHBvcnQgY29uc3QgTUlESV9NRVNTQUdFUyA9IFdBX01JRElfTUVTU0FHRVM7XG4iXX0=