"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; exports.getSharedManager = getSharedManager; var _addClass = _interopRequireDefault(require("dom-helpers/addClass")); var _css = _interopRequireDefault(require("dom-helpers/css")); var _querySelectorAll = _interopRequireDefault(require("dom-helpers/querySelectorAll")); var _removeClass = _interopRequireDefault(require("dom-helpers/removeClass")); var _ModalManager = _interopRequireDefault(require("@restart/ui/ModalManager")); const Selector = { FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', STICKY_CONTENT: '.sticky-top', NAVBAR_TOGGLER: '.navbar-toggler' }; class BootstrapModalManager extends _ModalManager.default { adjustAndStore(prop, element, adjust) { const actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible // @ts-ignore element.dataset[prop] = actual; (0, _css.default)(element, { [prop]: `${parseFloat((0, _css.default)(element, prop)) + adjust}px` }); } restore(prop, element) { const value = element.dataset[prop]; if (value !== undefined) { delete element.dataset[prop]; (0, _css.default)(element, { [prop]: value }); } } setContainerStyle(containerState) { super.setContainerStyle(containerState); const container = this.getElement(); (0, _addClass.default)(container, 'modal-open'); if (!containerState.scrollBarWidth) return; const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight'; const marginProp = this.isRTL ? 'marginLeft' : 'marginRight'; (0, _querySelectorAll.default)(container, Selector.FIXED_CONTENT).forEach(el => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth)); (0, _querySelectorAll.default)(container, Selector.STICKY_CONTENT).forEach(el => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth)); (0, _querySelectorAll.default)(container, Selector.NAVBAR_TOGGLER).forEach(el => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth)); } removeContainerStyle(containerState) { super.removeContainerStyle(containerState); const container = this.getElement(); (0, _removeClass.default)(container, 'modal-open'); const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight'; const marginProp = this.isRTL ? 'marginLeft' : 'marginRight'; (0, _querySelectorAll.default)(container, Selector.FIXED_CONTENT).forEach(el => this.restore(paddingProp, el)); (0, _querySelectorAll.default)(container, Selector.STICKY_CONTENT).forEach(el => this.restore(marginProp, el)); (0, _querySelectorAll.default)(container, Selector.NAVBAR_TOGGLER).forEach(el => this.restore(marginProp, el)); } } let sharedManager; function getSharedManager(options) { if (!sharedManager) sharedManager = new BootstrapModalManager(options); return sharedManager; } var _default = BootstrapModalManager; exports.default = _default;