UNPKG

@ng-web-apis/midi

Version:

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

15 lines 3.27 kB
import { inject } from '@angular/core'; import { from, fromEvent, map, of, shareReplay, startWith, switchMap } from 'rxjs'; import { MIDI_ACCESS } from '../tokens/midi-access'; export function getPortsStream(ports) { return from(inject(MIDI_ACCESS).catch(() => null)).pipe(switchMap((access) => { const inputs = []; access?.[ports].forEach((input) => inputs.push(input)); return access ? fromEvent(access, 'statechange').pipe(map(() => inputs), startWith(inputs)) : of([]); }), // eslint-disable-next-line rxjs/no-sharereplay shareReplay(1)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnRzLXN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbWlkaS9zcmMvdXRpbHMvZ2V0LXBvcnRzLXN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFakYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBSWxELE1BQU0sVUFBVSxjQUFjLENBQzFCLEtBQTJCO0lBRTNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25ELFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2pCLE1BQU0sTUFBTSxHQUFrQyxFQUFFLENBQUM7UUFFakQsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFdkQsT0FBTyxNQUFNO1lBQ1QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQ2pCLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDcEI7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUNGLCtDQUErQztJQUMvQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmcm9tLCBmcm9tRXZlbnQsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TUlESV9BQ0NFU1N9IGZyb20gJy4uL3Rva2Vucy9taWRpLWFjY2Vzcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3J0c1N0cmVhbShwb3J0czogJ2lucHV0cycpOiBPYnNlcnZhYmxlPE1JRElJbnB1dFtdPjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3J0c1N0cmVhbShwb3J0czogJ291dHB1dHMnKTogT2JzZXJ2YWJsZTxNSURJT3V0cHV0W10+O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBvcnRzU3RyZWFtKFxuICAgIHBvcnRzOiAnaW5wdXRzJyB8ICdvdXRwdXRzJyxcbik6IE9ic2VydmFibGU8QXJyYXk8TUlESUlucHV0IHwgTUlESU91dHB1dD4+IHtcbiAgICByZXR1cm4gZnJvbShpbmplY3QoTUlESV9BQ0NFU1MpLmNhdGNoKCgpID0+IG51bGwpKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGFjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRzOiBBcnJheTxNSURJSW5wdXQgfCBNSURJT3V0cHV0PiA9IFtdO1xuXG4gICAgICAgICAgICBhY2Nlc3M/Lltwb3J0c10uZm9yRWFjaCgoaW5wdXQpID0+IGlucHV0cy5wdXNoKGlucHV0KSk7XG5cbiAgICAgICAgICAgIHJldHVybiBhY2Nlc3NcbiAgICAgICAgICAgICAgICA/IGZyb21FdmVudChhY2Nlc3MsICdzdGF0ZWNoYW5nZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IGlucHV0cyksXG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKGlucHV0cyksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBvZihbXSk7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1zaGFyZXJlcGxheVxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xufVxuIl19