UNPKG

@flexis/ui

Version:

Styleless React Components

77 lines (59 loc) 3.57 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.blockScroll = blockScroll; var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each")); var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map")); var elementsOverflows = new _map.default(); 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. */ 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; } (0, _forEach.default)(restore).call(restore, unblockElement); restore = null; }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2Jsb2NrU2Nyb2xsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxJQUFNLGlCQUFpQixHQUFHLGtCQUExQjs7QUFFQSxTQUFTLFlBQVQsQ0FBc0IsT0FBdEIsRUFBMEM7QUFFekMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsR0FBbEIsQ0FBc0IsT0FBdEIsQ0FBakI7O0FBRUEsTUFBSSxRQUFKLEVBQWM7QUFDYixJQUFBLFFBQVEsQ0FBQyxLQUFUO0FBQ0EsR0FGRCxNQUVPO0FBQ04sSUFBQSxpQkFBaUIsQ0FBQyxHQUFsQixDQUFzQixPQUF0QixFQUErQjtBQUM5QixNQUFBLEtBQUssRUFBSyxDQURvQjtBQUU5QixNQUFBLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBUixDQUFjO0FBRlMsS0FBL0I7QUFJQSxJQUFBLE9BQU8sQ0FBQyxLQUFSLENBQWMsUUFBZCxHQUF5QixRQUF6QjtBQUNBO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQXdCLE9BQXhCLEVBQTRDO0FBRTNDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQWxCLENBQXNCLE9BQXRCLENBQWpCOztBQUVBLE1BQUksQ0FBQyxRQUFMLEVBQWU7QUFDZDtBQUNBOztBQUVELEVBQUEsUUFBUSxDQUFDLEtBQVQ7O0FBRUEsTUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFkLEVBQXFCO0FBQ3BCLElBQUEsT0FBTyxDQUFDLEtBQVIsQ0FBYyxRQUFkLEdBQXlCLFFBQVEsQ0FBQyxLQUFsQztBQUNBLElBQUEsaUJBQWlCLENBQUMsTUFBbEIsQ0FBeUIsT0FBekI7QUFDQTtBQUNEO0FBRUQ7Ozs7Ozs7QUFLTSxTQUFVLFdBQVYsR0FBNkM7QUFBQSxNQUF2QixPQUF1Qix1RUFBYixRQUFRLENBQUMsSUFBSTtBQUFBLGtCQUk5QyxRQUo4QztBQUFBLE1BR2pELGVBSGlELGFBR2pELGVBSGlEO0FBS2xELE1BQUksY0FBYyxHQUFHLE9BQXJCO0FBQ0EsTUFBSSxPQUFPLEdBQWtCLEVBQTdCOztBQUVBLEtBQUc7QUFFRixJQUFBLE9BQU8sQ0FBQyxJQUFSLENBQWEsY0FBYjtBQUNBLElBQUEsWUFBWSxDQUFDLGNBQUQsQ0FBWjtBQUVBLElBQUEsY0FBYyxHQUFHLGNBQWMsQ0FBQyxhQUFoQztBQUVBLEdBUEQsUUFPUyxjQUFjLEtBQUssZUFQNUI7O0FBU0EsRUFBQSxjQUFjLEdBQUcsSUFBakI7QUFFQSxTQUFPLFlBQUs7QUFFWCxRQUFJLE9BQU8sS0FBSyxJQUFoQixFQUFzQjtBQUNyQjtBQUNBOztBQUVELDBCQUFBLE9BQU8sTUFBUCxDQUFBLE9BQU8sRUFBUyxjQUFULENBQVA7QUFDQSxJQUFBLE9BQU8sR0FBRyxJQUFWO0FBQ0EsR0FSRDtBQVNBIiwic291cmNlUm9vdCI6IiJ9