UNPKG

@taiga-ui/kit

Version:
20 lines 4.12 kB
import { DOCUMENT } from '@angular/common'; import { InjectionToken } from '@angular/core'; import { TuiDestroyService } from '@taiga-ui/cdk'; import { FIXED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers'; import { fromEvent, merge } from 'rxjs'; import { flatMap, startWith, takeUntil, windowToggle } from 'rxjs/operators'; export const SELECTION_STREAM = new InjectionToken('A stream of selection changes'); export const INPUT_PHONE_PROVIDERS = [ TuiDestroyService, FIXED_DROPDOWN_CONTROLLER_PROVIDER, { provide: SELECTION_STREAM, deps: [TuiDestroyService, DOCUMENT], useFactory: selectionStreamFactory, }, ]; export function selectionStreamFactory(destroy$, documentRef) { return fromEvent(documentRef, 'selectionchange').pipe(windowToggle(merge(fromEvent(documentRef, 'mouseup'), fromEvent(documentRef, 'keydown')), () => fromEvent(documentRef, 'mousedown')), flatMap(windowed$ => windowed$.pipe(startWith(null))), takeUntil(destroy$)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LXBob25lLyIsInNvdXJjZXMiOlsiaW5wdXQtcGhvbmUucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQzlDLCtCQUErQixDQUNsQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDakMsaUJBQWlCO0lBQ2pCLGtDQUFrQztJQUNsQztRQUNJLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsSUFBSSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO1FBQ25DLFVBQVUsRUFBRSxzQkFBc0I7S0FDckM7Q0FDSixDQUFDO0FBRUYsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxRQUE2QixFQUM3QixXQUFxQjtJQUVyQixPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQ2pELFlBQVksQ0FDUixLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQzNFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQzVDLEVBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNyRCxTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3RCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlEZXN0cm95U2VydmljZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge0ZJWEVEX0RST1BET1dOX0NPTlRST0xMRVJfUFJPVklERVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvcHJvdmlkZXJzJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZsYXRNYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB3aW5kb3dUb2dnbGV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9TVFJFQU0gPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTx1bmtub3duPj4oXG4gICAgJ0Egc3RyZWFtIG9mIHNlbGVjdGlvbiBjaGFuZ2VzJyxcbik7XG5leHBvcnQgY29uc3QgSU5QVVRfUEhPTkVfUFJPVklERVJTID0gW1xuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIEZJWEVEX0RST1BET1dOX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAge1xuICAgICAgICBwcm92aWRlOiBTRUxFQ1RJT05fU1RSRUFNLFxuICAgICAgICBkZXBzOiBbVHVpRGVzdHJveVNlcnZpY2UsIERPQ1VNRU5UXSxcbiAgICAgICAgdXNlRmFjdG9yeTogc2VsZWN0aW9uU3RyZWFtRmFjdG9yeSxcbiAgICB9LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdGlvblN0cmVhbUZhY3RvcnkoXG4gICAgZGVzdHJveSQ6IE9ic2VydmFibGU8dW5rbm93bj4sXG4gICAgZG9jdW1lbnRSZWY6IERvY3VtZW50LFxuKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIGZyb21FdmVudChkb2N1bWVudFJlZiwgJ3NlbGVjdGlvbmNoYW5nZScpLnBpcGUoXG4gICAgICAgIHdpbmRvd1RvZ2dsZShcbiAgICAgICAgICAgIG1lcmdlKGZyb21FdmVudChkb2N1bWVudFJlZiwgJ21vdXNldXAnKSwgZnJvbUV2ZW50KGRvY3VtZW50UmVmLCAna2V5ZG93bicpKSxcbiAgICAgICAgICAgICgpID0+IGZyb21FdmVudChkb2N1bWVudFJlZiwgJ21vdXNlZG93bicpLFxuICAgICAgICApLFxuICAgICAgICBmbGF0TWFwKHdpbmRvd2VkJCA9PiB3aW5kb3dlZCQucGlwZShzdGFydFdpdGgobnVsbCkpKSxcbiAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICApO1xufVxuIl19