@cantonjs/react-scroll-view
Version:
react scroll component using intersection observer API
81 lines (67 loc) • 1.96 kB
JavaScript
;
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;
}();