@foblex/drag-toolkit
Version:
A TypeScript library providing foundational classes and utilities for implementing drag-and-drop functionality in Angular applications, with support for both mouse and touch events, and designed to work with or without Angular’s NgZone (zoneless applicati
28 lines • 3.7 kB
JavaScript
export class EventExtensions {
static isPassiveEventListenerSupported() {
if (EventExtensions.isSupported == null && typeof window !== 'undefined') {
try {
window.addEventListener('test', EventExtensions.emptyListener, { passive: true });
EventExtensions.isSupported = true;
}
catch (e) {
EventExtensions.isSupported = false;
}
}
return EventExtensions.isSupported;
}
static passiveEventListener(options) {
return EventExtensions.isPassiveEventListenerSupported() ? options : !!options.capture;
}
static activeListener() {
return EventExtensions.passiveEventListener({ passive: false });
}
static passiveListener() {
return EventExtensions.passiveEventListener({ passive: true });
}
static emptyListener() {
return () => {
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2YtZHJhZy10b29sa2l0L3NyYy9ldmVudC5leHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxlQUFlO0lBSWxCLE1BQU0sQ0FBQywrQkFBK0I7UUFFNUMsSUFBSSxlQUFlLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDeEUsSUFBSTtnQkFDRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsZUFBZSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDcEM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixlQUFlLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUNyQztTQUNGO1FBRUQsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBZ0M7UUFDbEUsT0FBTyxlQUFlLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUN6RixDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWM7UUFDMUIsT0FBTyxlQUFlLENBQUMsb0JBQW9CLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWU7UUFDM0IsT0FBTyxlQUFlLENBQUMsb0JBQW9CLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWE7UUFDekIsT0FBTyxHQUFHLEVBQUU7UUFDWixDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXZlbnRFeHRlbnNpb25zIHtcblxuICBwcml2YXRlIHN0YXRpYyBpc1N1cHBvcnRlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIHN0YXRpYyBpc1Bhc3NpdmVFdmVudExpc3RlbmVyU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKEV2ZW50RXh0ZW5zaW9ucy5pc1N1cHBvcnRlZCA9PSBudWxsICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0cnkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIEV2ZW50RXh0ZW5zaW9ucy5lbXB0eUxpc3RlbmVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICAgIEV2ZW50RXh0ZW5zaW9ucy5pc1N1cHBvcnRlZCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIEV2ZW50RXh0ZW5zaW9ucy5pc1N1cHBvcnRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBFdmVudEV4dGVuc2lvbnMuaXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXNzaXZlRXZlbnRMaXN0ZW5lcihvcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIHwgYm9vbGVhbiB7XG4gICAgcmV0dXJuIEV2ZW50RXh0ZW5zaW9ucy5pc1Bhc3NpdmVFdmVudExpc3RlbmVyU3VwcG9ydGVkKCkgPyBvcHRpb25zIDogISFvcHRpb25zLmNhcHR1cmU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFjdGl2ZUxpc3RlbmVyKCk6IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgcmV0dXJuIEV2ZW50RXh0ZW5zaW9ucy5wYXNzaXZlRXZlbnRMaXN0ZW5lcih7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXNzaXZlTGlzdGVuZXIoKTogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIHtcbiAgICByZXR1cm4gRXZlbnRFeHRlbnNpb25zLnBhc3NpdmVFdmVudExpc3RlbmVyKHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHlMaXN0ZW5lcigpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICB9O1xuICB9XG59XG4iXX0=