UNPKG

preact-arco-design

Version:

Arco Design React UI Library.

67 lines (57 loc) 1.56 kB
import { NOOP } from "./constant"; export var isServerRendering = function () { try { return !(typeof window !== 'undefined' && document !== undefined); } catch (e) { return true; } }(); export var on = function () { if (isServerRendering) { return NOOP; } return function (element, event, handler, options) { element && element.addEventListener(event, handler, options || false); }; }(); export var off = function () { if (isServerRendering) { return NOOP; } return function (element, event, handler, options) { element && element.removeEventListener(event, handler, options || false); }; }(); export var contains = function contains(root, ele) { var node = ele; while (node) { if (node === root) { return true; } node = node.parentNode; } return false; }; export var isScrollElement = function isScrollElement(element) { return element.scrollHeight > element.offsetHeight || element.scrollWidth > element.offsetWidth; }; /** * 从当前节点向上查找所有的滚动元素 * @param container 当前节点 * @param top 查找到 top 节点就终止,不再继续查找 * @returns */ export var getScrollElements = function getScrollElements(container, top) { if (top === void 0) { top = document.documentElement; } var scrollElements = []; var element = container; while (element && element !== top) { if (isScrollElement(element)) { scrollElements.push(element); } element = element.parentElement; } return scrollElements; };