UNPKG

@gechiui/dom

Version:
45 lines (35 loc) 1.07 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getScrollContainer; var _getComputedStyle = _interopRequireDefault(require("./get-computed-style")); /** * Internal dependencies */ /** * Given a DOM node, finds the closest scrollable container node. * * @param {Element | null} node Node from which to start. * * @return {Element | undefined} Scrollable container node, if found. */ function getScrollContainer(node) { if (!node) { return undefined; } // Scrollable if scrollable height exceeds displayed... if (node.scrollHeight > node.clientHeight) { // ...except when overflow is defined to be hidden or visible const { overflowY } = (0, _getComputedStyle.default)(node); if (/(auto|scroll)/.test(overflowY)) { return node; } } // Continue traversing return getScrollContainer( /** @type {Element} */ node.parentNode); } //# sourceMappingURL=get-scroll-container.js.map