UNPKG

@cisstech/nge

Version:

NG Essentials is a collection of libraries for Angular developers.

69 lines 7.59 kB
import { Directive, EventEmitter, HostListener, Input, NgModule, Output } from '@angular/core'; import * as i0 from "@angular/core"; export class LongPressDetectorDirective { constructor() { this.longPressDuration = 400; this.longPress = new EventEmitter(); this.longPressEnd = new EventEmitter(); this.pressing = false; } onMouseDown(event) { event.preventDefault(); this.pressing = false; this.timeout = setTimeout(() => { this.longPress.emit(event); this.pressing = true; event.preventDefault(); event.stopPropagation(); }, this.longPressDuration); } onMouseUp() { if (this.timeout) { clearTimeout(this.timeout); } setTimeout(() => { this.longPressEnd.emit(this.pressing); this.pressing = false; }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LongPressDetectorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.1", type: LongPressDetectorDirective, isStandalone: true, selector: "[long-press-detector]", inputs: { longPressDuration: "longPressDuration" }, outputs: { longPress: "longPress", longPressEnd: "longPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "touchstart": "onMouseDown($event)", "mouseup": "onMouseUp()", "touchend": "onMouseUp()" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LongPressDetectorDirective, decorators: [{ type: Directive, args: [{ selector: '[long-press-detector]', standalone: true }] }], propDecorators: { longPressDuration: [{ type: Input }], longPress: [{ type: Output }], longPressEnd: [{ type: Output }], onMouseDown: [{ type: HostListener, args: ['mousedown', ['$event']] }, { type: HostListener, args: ['touchstart', ['$event']] }], onMouseUp: [{ type: HostListener, args: ['mouseup'] }, { type: HostListener, args: ['touchend'] }] } }); /** * @deprecated in favor of standalone api, so please use direclty the directive as a standalone. Will be removed in/after v18 */ export class LongPressDetectorDirectiveModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LongPressDetectorDirectiveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.1", ngImport: i0, type: LongPressDetectorDirectiveModule, imports: [LongPressDetectorDirective], exports: [LongPressDetectorDirective] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LongPressDetectorDirectiveModule }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LongPressDetectorDirectiveModule, decorators: [{ type: NgModule, args: [{ imports: [LongPressDetectorDirective], exports: [LongPressDetectorDirective], }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy1kZXRlY3Rvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvZGlyZWN0aXZlcy9zcmMvbG9uZy1wcmVzcy1kZXRlY3Rvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQUc5RixNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRVcsc0JBQWlCLEdBQUcsR0FBRyxDQUFBO1FBQ3RCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQTtRQUN2RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUE7UUFHNUMsYUFBUSxHQUFHLEtBQUssQ0FBQTtLQTJCekI7SUF2QkMsV0FBVyxDQUFDLEtBQThCO1FBQ3hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN6QixDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUlELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVCLENBQUM7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0FoQ1UsMEJBQTBCO2tHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs4QkFFdkQsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFPUCxXQUFXO3NCQUZWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY3RDLFNBQVM7c0JBRlIsWUFBWTt1QkFBQyxTQUFTOztzQkFDdEIsWUFBWTt1QkFBQyxVQUFVOztBQWExQjs7R0FFRztBQUtILE1BQU0sT0FBTyxnQ0FBZ0M7OEdBQWhDLGdDQUFnQzsrR0FBaEMsZ0NBQWdDLFlBMUNoQywwQkFBMEIsYUFBMUIsMEJBQTBCOytHQTBDMUIsZ0NBQWdDOzsyRkFBaEMsZ0NBQWdDO2tCQUo1QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgTmdNb2R1bGUsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tsb25nLXByZXNzLWRldGVjdG9yXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBMb25nUHJlc3NEZXRlY3RvckRpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGxvbmdQcmVzc0R1cmF0aW9uID0gNDAwXG4gIEBPdXRwdXQoKSBsb25nUHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50PigpXG4gIEBPdXRwdXQoKSBsb25nUHJlc3NFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcblxuICBwcml2YXRlIHRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICBwcml2YXRlIHByZXNzaW5nID0gZmFsc2VcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMucHJlc3NpbmcgPSBmYWxzZVxuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb25nUHJlc3MuZW1pdChldmVudClcbiAgICAgIHRoaXMucHJlc3NpbmcgPSB0cnVlXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH0sIHRoaXMubG9uZ1ByZXNzRHVyYXRpb24pXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZXVwJylcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnKVxuICBvbk1vdXNlVXAoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dClcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9uZ1ByZXNzRW5kLmVtaXQodGhpcy5wcmVzc2luZylcbiAgICAgIHRoaXMucHJlc3NpbmcgPSBmYWxzZVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBzdGFuZGFsb25lIGFwaSwgc28gcGxlYXNlIHVzZSBkaXJlY2x0eSB0aGUgZGlyZWN0aXZlIGFzIGEgc3RhbmRhbG9uZS4gV2lsbCBiZSByZW1vdmVkIGluL2FmdGVyIHYxOFxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTG9uZ1ByZXNzRGV0ZWN0b3JEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTG9uZ1ByZXNzRGV0ZWN0b3JEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBMb25nUHJlc3NEZXRlY3RvckRpcmVjdGl2ZU1vZHVsZSB7fVxuIl19