UNPKG

@enact/ui

Version:

A collection of simplified unstyled cross-platform UI components for Enact

51 lines (49 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.utilEvent = exports["default"] = void 0; // A `React.useEvent` hooks is introduced in https://github.com/facebook/react/pull/17651 // The `useEvent` below will be replaced with the `React.useEvent` later. /* * Detects if the browser natively supports the scrollend event. */ var supportsScrollEnd = function supportsScrollEnd() { if (typeof window === 'undefined') { return false; } return 'onscrollend' in window; }; var utilEvent = exports.utilEvent = function utilEvent(eventName) { var isScrollEndEvent = eventName === 'scrollend'; var hasNativeScrollEnd = isScrollEndEvent && supportsScrollEnd(); return { addEventListener: function addEventListener(ref, fn, param) { if (!ref) return; if (isScrollEndEvent && !hasNativeScrollEnd) { return; } if (typeof window !== 'undefined' && (ref === window || ref === document)) { ref.addEventListener(eventName, fn, param); } else if (ref.current) { ref.current.addEventListener(eventName, fn, param); } else if (ref && ref.addEventListener) { ref.addEventListener(eventName, fn, param); } }, removeEventListener: function removeEventListener(ref, fn, param) { if (!ref) return; if (isScrollEndEvent && !hasNativeScrollEnd) { return; } if (typeof window !== 'undefined' && (ref === window || ref === document)) { ref.removeEventListener(eventName, fn, param); } else if (ref.current) { ref.current.removeEventListener(eventName, fn, param); } else if (ref && ref.removeEventListener) { ref.removeEventListener(eventName, fn, param); } } }; }; var _default = exports["default"] = utilEvent;