UNPKG

@flexis/ui

Version:

Styleless React Components

64 lines (52 loc) 3.2 kB
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each"; import _Map from "@babel/runtime-corejs3/core-js-stable/map"; var elementsOverflows = new _Map(); function blockElement(element) { var overflow = elementsOverflows.get(element); if (overflow) { overflow.count++; } else { elementsOverflows.set(element, { count: 1, value: element.style.overflow }); element.style.overflow = 'hidden'; } } function unblockElement(element) { var overflow = elementsOverflows.get(element); if (!overflow) { return; } overflow.count--; if (!overflow.count) { element.style.overflow = overflow.value; elementsOverflows.delete(element); } } /** * Block scroll. * @param element - HTML-element to block scroll. * @return Unblock scroll. */ export function blockScroll() { var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.body; var _document = document, documentElement = _document.documentElement; var currentElement = element; var restore = []; do { restore.push(currentElement); blockElement(currentElement); currentElement = currentElement.parentElement; } while (currentElement !== documentElement); currentElement = null; return function () { if (restore === null) { return; } _forEachInstanceProperty(restore).call(restore, unblockElement); restore = null; }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2Jsb2NrU2Nyb2xsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsSUFBTSxpQkFBaUIsR0FBRyxVQUExQjs7QUFFQSxTQUFTLFlBQVQsQ0FBc0IsT0FBdEIsRUFBMEM7QUFFekMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsR0FBbEIsQ0FBc0IsT0FBdEIsQ0FBakI7O0FBRUEsTUFBSSxRQUFKLEVBQWM7QUFDYixJQUFBLFFBQVEsQ0FBQyxLQUFUO0FBQ0EsR0FGRCxNQUVPO0FBQ04sSUFBQSxpQkFBaUIsQ0FBQyxHQUFsQixDQUFzQixPQUF0QixFQUErQjtBQUM5QixNQUFBLEtBQUssRUFBSyxDQURvQjtBQUU5QixNQUFBLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBUixDQUFjO0FBRlMsS0FBL0I7QUFJQSxJQUFBLE9BQU8sQ0FBQyxLQUFSLENBQWMsUUFBZCxHQUF5QixRQUF6QjtBQUNBO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQXdCLE9BQXhCLEVBQTRDO0FBRTNDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQWxCLENBQXNCLE9BQXRCLENBQWpCOztBQUVBLE1BQUksQ0FBQyxRQUFMLEVBQWU7QUFDZDtBQUNBOztBQUVELEVBQUEsUUFBUSxDQUFDLEtBQVQ7O0FBRUEsTUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFkLEVBQXFCO0FBQ3BCLElBQUEsT0FBTyxDQUFDLEtBQVIsQ0FBYyxRQUFkLEdBQXlCLFFBQVEsQ0FBQyxLQUFsQztBQUNBLElBQUEsaUJBQWlCLENBQUMsTUFBbEIsQ0FBeUIsT0FBekI7QUFDQTtBQUNEO0FBRUQ7Ozs7Ozs7QUFLQSxPQUFNLFNBQVUsV0FBVixHQUE2QztBQUFBLE1BQXZCLE9BQXVCLHVFQUFiLFFBQVEsQ0FBQyxJQUFJO0FBQUEsa0JBSTlDLFFBSjhDO0FBQUEsTUFHakQsZUFIaUQsYUFHakQsZUFIaUQ7QUFLbEQsTUFBSSxjQUFjLEdBQUcsT0FBckI7QUFDQSxNQUFJLE9BQU8sR0FBa0IsRUFBN0I7O0FBRUEsS0FBRztBQUVGLElBQUEsT0FBTyxDQUFDLElBQVIsQ0FBYSxjQUFiO0FBQ0EsSUFBQSxZQUFZLENBQUMsY0FBRCxDQUFaO0FBRUEsSUFBQSxjQUFjLEdBQUcsY0FBYyxDQUFDLGFBQWhDO0FBRUEsR0FQRCxRQU9TLGNBQWMsS0FBSyxlQVA1Qjs7QUFTQSxFQUFBLGNBQWMsR0FBRyxJQUFqQjtBQUVBLFNBQU8sWUFBSztBQUVYLFFBQUksT0FBTyxLQUFLLElBQWhCLEVBQXNCO0FBQ3JCO0FBQ0E7O0FBRUQsNkJBQUEsT0FBTyxNQUFQLENBQUEsT0FBTyxFQUFTLGNBQVQsQ0FBUDs7QUFDQSxJQUFBLE9BQU8sR0FBRyxJQUFWO0FBQ0EsR0FSRDtBQVNBIiwic291cmNlUm9vdCI6IiJ9