@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
69 lines • 7.59 kB
JavaScript
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