UNPKG

@cantonjs/react-scroll-view

Version:

react scroll component using intersection observer API

81 lines (67 loc) 1.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.debounce = debounce; exports.forwardRef = forwardRef; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var iOSUserAgentRegExp = /(iphone|ipod|ipad)/i; var isIOS = exports.isIOS = iOSUserAgentRegExp.test(navigator.userAgent); var createId = exports.createId = function createId() { return (createId.id = (createId.id || 0) + 1).toString(); }; var noop = exports.noop = function noop() {}; function debounce(func, wait) { var timeoutId = void 0; var timestamp = void 0; var args = void 0; var result = void 0; var later = function later() { var last = Date.now() - timestamp; if (last < wait && last >= 0) { timeoutId = setTimeout(later, wait - last); } else { timeoutId = null; result = func.apply(undefined, _toConsumableArray(args)); args = null; } }; var debounced = function debounced() { for (var _len = arguments.length, latestArgs = Array(_len), _key = 0; _key < _len; _key++) { latestArgs[_key] = arguments[_key]; } args = latestArgs; timestamp = Date.now(); if (!timeoutId) { timeoutId = setTimeout(later, wait); } return result; }; debounced.clearDebounce = function () { timeoutId && clearTimeout(timeoutId); }; return debounced; } function forwardRef(ref, dom) { if (ref) { typeof ref === 'function' ? ref(dom) : ref.current = dom; } } var eventOptions = exports.eventOptions = function getEventOptions() { var passiveOptionSupported = false; var opts = Object.defineProperty({}, 'passive', { get: function get() { return passiveOptionSupported = true; } }); try { window.addEventListener('test', null, opts); } catch (e) {} if (passiveOptionSupported) { return { passive: false, capture: false }; } return false; }();