UNPKG

scroll-padlock

Version:

Locks elements scroll handling scrollbar gaps and iOS Safari with CSS variables

613 lines (456 loc) 27.8 kB
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } System.register('ScrollPadlock', [], function (exports) { 'use strict'; return { execute: function execute() { var win = window; var doc = document; var documentElement = doc.documentElement, body = doc.body, head = doc.head; var HYPHEN = '-'; var OUTER = 'outer'; var INNER = 'inner'; var CLIENT = 'client'; var SCROLLBAR = 'scrollbar'; var SCROLL = 'scroll'; var RESIZE = 'resize'; var WIDTH_CAPITALIZED = 'Width'; var HEIGHT_CAPITALIZED = 'Height'; var Y_UPPERCASE = 'Y'; var X_UPPERCASE = 'X'; var OFFSET_CAPITALIZED = 'Offset'; var TOP_CAPITALIZED = 'Top'; var LEFT_CAPITALIZED = 'Left'; var PAGE = 'page'; var CSS_VAR_PREFIX = HYPHEN + HYPHEN; var ADD = 'add'; var REMOVE = 'remove'; var DOM_BASE_NAME = SCROLL + HYPHEN + 'padlock'; var DOM_DATA_ATTRIBUTE_NAME = 'data' + HYPHEN + DOM_BASE_NAME; var lowercase = function lowercase(string) { return string.toLowerCase(); }; var TOP = lowercase(TOP_CAPITALIZED); var LEFT = lowercase(LEFT_CAPITALIZED); var WIDTH = lowercase(WIDTH_CAPITALIZED); var HEIGHT = lowercase(HEIGHT_CAPITALIZED); var CLIENT_WIDTH = CLIENT + WIDTH_CAPITALIZED; var CLIENT_HEIGHT = CLIENT + HEIGHT_CAPITALIZED; var OUTER_WIDTH = OUTER + WIDTH_CAPITALIZED; var OUTER_HEIGHT = OUTER + HEIGHT_CAPITALIZED; var INNER_WIDTH = INNER + WIDTH_CAPITALIZED; var INNER_HEIGHT = INNER + HEIGHT_CAPITALIZED; var SCROLL_WIDTH = SCROLL + WIDTH_CAPITALIZED; var SCROLL_HEIGHT = SCROLL + HEIGHT_CAPITALIZED; var SCROLLBAR_WIDTH = SCROLLBAR + WIDTH_CAPITALIZED; var SCROLLBAR_HEIGHT = SCROLLBAR + HEIGHT_CAPITALIZED; var CSS_VAR_NAME_POSITION_TOP = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + SCROLL + HYPHEN + TOP; var CSS_VAR_NAME_POSITION_LEFT = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + SCROLL + HYPHEN + LEFT; var CSS_VAR_NAME_SCROLLBAR_WIDTH = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + SCROLLBAR + HYPHEN + WIDTH; var CSS_VAR_NAME_SCROLLBAR_HEIGHT = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + SCROLLBAR + HYPHEN + HEIGHT; var CSS_VAR_NAME_OUTER_WIDTH = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + OUTER + HYPHEN + WIDTH; var CSS_VAR_NAME_OUTER_HEIGHT = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + OUTER + HYPHEN + HEIGHT; var CSS_VAR_NAME_INNER_WIDTH = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + INNER + HYPHEN + WIDTH; var CSS_VAR_NAME_INNER_HEIGHT = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + INNER + HYPHEN + HEIGHT; var CSS_VAR_NAME_SCROLL_WIDTH = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + SCROLL + HYPHEN + WIDTH; var CSS_VAR_NAME_SCROLL_HEIGHT = CSS_VAR_PREFIX + DOM_BASE_NAME + HYPHEN + SCROLL + HYPHEN + HEIGHT; var listener = function listener(method, element, eventName, _listener) { var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; return element === null || element === void 0 ? void 0 : element["".concat(method, "EventListener")](eventName, _listener, options); }; var clear = win.clearImmediate || win.clearTimeout; var set$1 = win.setImmediate || win.setTimeout; var debounce = function debounce(fn) { var timeout; return function () { for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) { rest[_key] = arguments[_key]; } clear(timeout); timeout = set$1(function () { return fn.apply(null, rest); }); }; }; var getLayout = function getLayout(element, scroller) { var _outer, _outer$WIDTH, _outer2, _outer$HEIGHT, _outer3, _element$CLIENT_WIDTH, _element$CLIENT_HEIGH, _element$SCROLL_WIDTH, _element$SCROLL_HEIGH, _ref; var outer = (_outer = {}, _defineProperty(_outer, WIDTH, scroller === null || scroller === void 0 ? void 0 : scroller[INNER_WIDTH]), _defineProperty(_outer, HEIGHT, scroller === null || scroller === void 0 ? void 0 : scroller[INNER_HEIGHT]), _outer); if (!outer[WIDTH] && !outer[HEIGHT]) { var _element$getBoundingC; outer = (_element$getBoundingC = element === null || element === void 0 ? void 0 : element.getBoundingClientRect()) !== null && _element$getBoundingC !== void 0 ? _element$getBoundingC : {}; } var outerWidth = (_outer$WIDTH = (_outer2 = outer) === null || _outer2 === void 0 ? void 0 : _outer2[WIDTH]) !== null && _outer$WIDTH !== void 0 ? _outer$WIDTH : 0; var outerHeight = (_outer$HEIGHT = (_outer3 = outer) === null || _outer3 === void 0 ? void 0 : _outer3[HEIGHT]) !== null && _outer$HEIGHT !== void 0 ? _outer$HEIGHT : 0; var innerWidth = (_element$CLIENT_WIDTH = element === null || element === void 0 ? void 0 : element[CLIENT_WIDTH]) !== null && _element$CLIENT_WIDTH !== void 0 ? _element$CLIENT_WIDTH : 0; var innerHeight = (_element$CLIENT_HEIGH = element === null || element === void 0 ? void 0 : element[CLIENT_HEIGHT]) !== null && _element$CLIENT_HEIGH !== void 0 ? _element$CLIENT_HEIGH : 0; return _ref = {}, _defineProperty(_ref, OUTER_WIDTH, outerWidth), _defineProperty(_ref, OUTER_HEIGHT, outerHeight), _defineProperty(_ref, INNER_WIDTH, Math.min(outerWidth, innerWidth)), _defineProperty(_ref, INNER_HEIGHT, Math.min(outerHeight, innerHeight)), _defineProperty(_ref, SCROLL_WIDTH, (_element$SCROLL_WIDTH = element === null || element === void 0 ? void 0 : element[SCROLL_WIDTH]) !== null && _element$SCROLL_WIDTH !== void 0 ? _element$SCROLL_WIDTH : 0), _defineProperty(_ref, SCROLL_HEIGHT, (_element$SCROLL_HEIGH = element === null || element === void 0 ? void 0 : element[SCROLL_HEIGHT]) !== null && _element$SCROLL_HEIGH !== void 0 ? _element$SCROLL_HEIGH : 0), _defineProperty(_ref, SCROLLBAR_WIDTH, Math.max(0, outerWidth - innerWidth)), _defineProperty(_ref, SCROLLBAR_HEIGHT, Math.max(0, outerHeight - innerHeight)), _ref; }; var getScroll = function getScroll(element) { var _ref2, _ref3, _element, _ref4, _ref5, _element2, _ref6; return _ref6 = {}, _defineProperty(_ref6, TOP, (_ref2 = (_ref3 = (_element = element === null || element === void 0 ? void 0 : element[SCROLL + Y_UPPERCASE]) !== null && _element !== void 0 ? _element : element === null || element === void 0 ? void 0 : element[PAGE + Y_UPPERCASE + OFFSET_CAPITALIZED]) !== null && _ref3 !== void 0 ? _ref3 : element === null || element === void 0 ? void 0 : element[SCROLL + TOP_CAPITALIZED]) !== null && _ref2 !== void 0 ? _ref2 : 0), _defineProperty(_ref6, LEFT, (_ref4 = (_ref5 = (_element2 = element === null || element === void 0 ? void 0 : element[SCROLL + X_UPPERCASE]) !== null && _element2 !== void 0 ? _element2 : element === null || element === void 0 ? void 0 : element[PAGE + X_UPPERCASE + OFFSET_CAPITALIZED]) !== null && _ref5 !== void 0 ? _ref5 : element === null || element === void 0 ? void 0 : element[SCROLL + LEFT_CAPITALIZED]) !== null && _ref4 !== void 0 ? _ref4 : 0), _ref6; }; var getElementParent = function getElementParent(element) { var _element$parentElemen; return (_element$parentElemen = element === null || element === void 0 ? void 0 : element.parentElement) !== null && _element$parentElemen !== void 0 ? _element$parentElemen : null; }; var getElementParentsLength = function getElementParentsLength(element) { var count = -1; while (element) { count++; element = getElementParent(element); } return count; }; var getElementIndex = function getElementIndex(element) { var _getElementParent$chi, _getElementParent; var siblings = (_getElementParent$chi = (_getElementParent = getElementParent(element)) === null || _getElementParent === void 0 ? void 0 : _getElementParent.children) !== null && _getElementParent$chi !== void 0 ? _getElementParent$chi : []; var count = 0; for (var i = 0, j = siblings.length; i < j; i++) { var sibling = siblings[i]; if (sibling === element) { return count; } count++; } return count; }; var set = function set(element, styler, target, layout, scroll) { var _element$getAttribute, _sheet$cssRules, _rulesData; if (!(target !== null && target !== void 0 && target.contains(styler)) && styler) { target.appendChild(styler); } var dataAttrValue = (_element$getAttribute = element === null || element === void 0 ? void 0 : element.getAttribute(DOM_DATA_ATTRIBUTE_NAME)) !== null && _element$getAttribute !== void 0 ? _element$getAttribute : getElementParentsLength(element) + HYPHEN + getElementIndex(element); element === null || element === void 0 ? void 0 : element.setAttribute(DOM_DATA_ATTRIBUTE_NAME, dataAttrValue); var _ref7 = styler !== null && styler !== void 0 ? styler : {}, sheet = _ref7.sheet; var onlyRuleIndex = 0; if (sheet !== null && sheet !== void 0 && (_sheet$cssRules = sheet.cssRules) !== null && _sheet$cssRules !== void 0 && _sheet$cssRules[onlyRuleIndex]) { sheet.deleteRule(onlyRuleIndex); } var rulesData = (_rulesData = {}, _defineProperty(_rulesData, CSS_VAR_NAME_POSITION_TOP, scroll[TOP]), _defineProperty(_rulesData, CSS_VAR_NAME_POSITION_LEFT, scroll[LEFT]), _defineProperty(_rulesData, CSS_VAR_NAME_OUTER_WIDTH, layout[OUTER_WIDTH]), _defineProperty(_rulesData, CSS_VAR_NAME_OUTER_HEIGHT, layout[OUTER_HEIGHT]), _defineProperty(_rulesData, CSS_VAR_NAME_INNER_WIDTH, layout[INNER_WIDTH]), _defineProperty(_rulesData, CSS_VAR_NAME_INNER_HEIGHT, layout[INNER_HEIGHT]), _defineProperty(_rulesData, CSS_VAR_NAME_SCROLL_WIDTH, layout[SCROLL_WIDTH]), _defineProperty(_rulesData, CSS_VAR_NAME_SCROLL_HEIGHT, layout[SCROLL_HEIGHT]), _defineProperty(_rulesData, CSS_VAR_NAME_SCROLLBAR_WIDTH, layout[SCROLLBAR_WIDTH]), _defineProperty(_rulesData, CSS_VAR_NAME_SCROLLBAR_HEIGHT, layout[SCROLLBAR_HEIGHT]), _rulesData); var rulesDataKeys = Object.keys(rulesData); var rules = ''; for (var i = 0, j = rulesDataKeys.length; i < j; i++) { var key = rulesDataKeys[i]; rules += "".concat(key, ": ").concat(rulesData[key], "px;"); } sheet === null || sheet === void 0 ? void 0 : sheet.insertRule("[".concat(DOM_DATA_ATTRIBUTE_NAME, "=\"").concat(dataAttrValue, "\"] { ").concat(rules, " }"), onlyRuleIndex); return styler; }; var unset = function unset(element, styler) { styler === null || styler === void 0 ? void 0 : styler.remove(); element === null || element === void 0 ? void 0 : element.removeAttribute(DOM_DATA_ATTRIBUTE_NAME); return styler; }; var styler = function styler(method, element, _styler, target, layout, scroll) { var _ADD$REMOVE$method; return (_ADD$REMOVE$method = {}, _defineProperty(_ADD$REMOVE$method, ADD, set), _defineProperty(_ADD$REMOVE$method, REMOVE, unset), _ADD$REMOVE$method)[method](element, _styler, target, layout, scroll); }; var instances = new WeakMap(); var defaultElement = documentElement; var defaultCssClassName = "".concat(DOM_BASE_NAME, "-locked"); var _element3 = new WeakMap(); var _target = new WeakMap(); var _scroller = new WeakMap(); var _classList = new WeakMap(); var _cssClassName = new WeakMap(); var _state = new WeakMap(); var _scrollCurrent = new WeakMap(); var _scrollSaving = new WeakMap(); var _layout = new WeakMap(); var _observerState = new WeakMap(); var _observer = new WeakMap(); var _styler2 = new WeakMap(); var _handleResize = new WeakMap(); var _handleScroll = new WeakMap(); var _listenersState = new WeakMap(); var _listenersHandlers = new WeakMap(); var _listenersTargets = new WeakMap(); var _scrollTo = new WeakMap(); var _updateState = new WeakMap(); var _performUnlockedAction = new WeakMap(); var _updateLayout = new WeakMap(); var _updateScrollCurrent = new WeakMap(); var _applyStyles = new WeakMap(); var _observeCssClass = new WeakMap(); var _unobserveCssClass = new WeakMap(); var _listener2 = new WeakMap(); var ScrollPadlock = function () { function ScrollPadlock() { var _this = this, _value, _value2; var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultElement; var cssClassName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCssClassName; _classCallCheck(this, ScrollPadlock); _listenersTargets.set(this, { get: _get_listenersTargets, set: void 0 }); _element3.set(this, { writable: true, value: defaultElement }); _target.set(this, { writable: true, value: body }); _scroller.set(this, { writable: true, value: window }); _classList.set(this, { writable: true, value: void 0 }); _cssClassName.set(this, { writable: true, value: defaultCssClassName }); _state.set(this, { writable: true, value: void 0 }); _scrollCurrent.set(this, { writable: true, value: void 0 }); _scrollSaving.set(this, { writable: true, value: void 0 }); _layout.set(this, { writable: true, value: void 0 }); _observerState.set(this, { writable: true, value: false }); _observer.set(this, { writable: true, value: function (implementationName) { return implementationName in win ? new win[implementationName](function () { var state = _classPrivateFieldGet(_this, _state); _classPrivateFieldGet(_this, _updateState).call(_this); if (_classPrivateFieldGet(_this, _state) === state) { return; } if (_classPrivateFieldGet(_this, _state)) { _classPrivateFieldSet(_this, _scrollSaving, _objectSpread({}, _classPrivateFieldGet(_this, _scrollCurrent))); return; } _classPrivateFieldGet(_this, _scrollTo).call(_this, _classPrivateFieldGet(_this, _scrollSaving)); }) : null; }('MutationObserver') }); _styler2.set(this, { writable: true, value: doc.createElement('style') }); _handleResize.set(this, { writable: true, value: debounce(function () { _classPrivateFieldGet(_this, _performUnlockedAction).call(_this, _classPrivateFieldGet(_this, _updateLayout)); _classPrivateFieldGet(_this, _applyStyles).call(_this); }) }); _handleScroll.set(this, { writable: true, value: debounce(function () { _classPrivateFieldGet(_this, _performUnlockedAction).call(_this, _classPrivateFieldGet(_this, _updateScrollCurrent)); _classPrivateFieldGet(_this, _applyStyles).call(_this); }) }); _listenersState.set(this, { writable: true, value: (_value = {}, _defineProperty(_value, RESIZE, REMOVE), _defineProperty(_value, SCROLL, REMOVE), _value) }); _listenersHandlers.set(this, { writable: true, value: (_value2 = {}, _defineProperty(_value2, RESIZE, _classPrivateFieldGet(this, _handleResize)), _defineProperty(_value2, SCROLL, _classPrivateFieldGet(this, _handleScroll)), _value2) }); _scrollTo.set(this, { writable: true, value: function value(position) { return _classPrivateFieldGet(_this, _scroller).scrollTo(position[LEFT], position[TOP]); } }); _updateState.set(this, { writable: true, value: function value() { var _classPrivateFieldGet2; return _classPrivateFieldSet(_this, _state, !!((_classPrivateFieldGet2 = _classPrivateFieldGet(_this, _classList)) !== null && _classPrivateFieldGet2 !== void 0 && _classPrivateFieldGet2.contains(_classPrivateFieldGet(_this, _cssClassName)))); } }); _performUnlockedAction.set(this, { writable: true, value: function value(action) { var _classPrivateFieldGet3; var wasLocked = _classPrivateFieldGet(_this, _state); _classPrivateFieldGet(_this, _unobserveCssClass).call(_this); (_classPrivateFieldGet3 = _classPrivateFieldGet(_this, _classList)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.remove(_classPrivateFieldGet(_this, _cssClassName)); var result = action(); if (wasLocked) { var _classPrivateFieldGet4; (_classPrivateFieldGet4 = _classPrivateFieldGet(_this, _classList)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.add(_classPrivateFieldGet(_this, _cssClassName)); } _classPrivateFieldGet(_this, _observeCssClass).call(_this); return result; } }); _updateLayout.set(this, { writable: true, value: function value() { return _classPrivateFieldSet(_this, _layout, getLayout(_classPrivateFieldGet(_this, _element3), _classPrivateFieldGet(_this, _scroller))); } }); _updateScrollCurrent.set(this, { writable: true, value: function value() { return _classPrivateFieldSet(_this, _scrollCurrent, getScroll(_classPrivateFieldGet(_this, _scroller))); } }); _applyStyles.set(this, { writable: true, value: function value() { return styler(ADD, _classPrivateFieldGet(_this, _target), _classPrivateFieldGet(_this, _styler2), head, _this.layout, _this.scroll); } }); _observeCssClass.set(this, { writable: true, value: function value() { var _classPrivateFieldGet5; if (_classPrivateFieldGet(_this, _observerState)) { return _classPrivateFieldGet(_this, _observerState); } (_classPrivateFieldGet5 = _classPrivateFieldGet(_this, _observer)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.observe(_classPrivateFieldGet(_this, _target), { attributes: true, attributeFilter: ['class'], childList: false, characterData: false }); return _classPrivateFieldSet(_this, _observerState, !!_classPrivateFieldGet(_this, _observer)); } }); _unobserveCssClass.set(this, { writable: true, value: function value() { var _classPrivateFieldGet6; if (!_classPrivateFieldGet(_this, _observerState)) { return _classPrivateFieldGet(_this, _observerState); } (_classPrivateFieldGet6 = _classPrivateFieldGet(_this, _observer)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.disconnect(); return _classPrivateFieldSet(_this, _observerState, false); } }); _listener2.set(this, { writable: true, value: function value(type, method) { var state = _classPrivateFieldGet(_this, _listenersState)[type]; if (!_classPrivateFieldGet(_this, _element3) || !state || state === method) { return false; } _classPrivateFieldGet(_this, _listenersState)[type] = method; listener(method, _classPrivateFieldGet(_this, _listenersTargets)[type], type, _classPrivateFieldGet(_this, _listenersHandlers)[type]); return true; } }); var elementIsWindow = element === win; var elementIsHtmlElement = element instanceof HTMLElement; if (!elementIsWindow && !elementIsHtmlElement) { throw new TypeError('Invalid element provided to constructor'); } if (elementIsHtmlElement) { _classPrivateFieldSet(this, _target, element); } var elementIsGlobal = elementIsWindow || element === documentElement || element === body; if (!elementIsGlobal) { _classPrivateFieldSet(this, _element3, _classPrivateFieldSet(this, _target, _classPrivateFieldSet(this, _scroller, element))); } if (instances.has(_classPrivateFieldGet(this, _element3))) { throw new Error("An instance has already been initialized on ".concat(elementIsGlobal ? 'page scroll' : 'the given element')); } instances.set(_classPrivateFieldGet(this, _element3), this); _classPrivateFieldSet(this, _classList, _classPrivateFieldGet(this, _target).classList); var classNameIsValid = typeof cssClassName === 'string' && !!cssClassName.length; if (!classNameIsValid) { throw new TypeError('Invalid CSS class name provided to constructor'); } _classPrivateFieldSet(this, _cssClassName, cssClassName); this.update(); _classPrivateFieldGet(this, _observeCssClass).call(this); _classPrivateFieldGet(this, _listener2).call(this, RESIZE, ADD); _classPrivateFieldGet(this, _listener2).call(this, SCROLL, ADD); } _createClass(ScrollPadlock, [{ key: "scroll", get: function get() { return _classPrivateFieldGet(this, _state) ? _classPrivateFieldGet(this, _scrollSaving) : _classPrivateFieldGet(this, _scrollCurrent); }, set: function set(position) { if (_classPrivateFieldGet(this, _state)) { _classPrivateFieldSet(this, _scrollSaving, position); return; } _classPrivateFieldGet(this, _scrollTo).call(this, position); } }, { key: "layout", get: function get() { return _classPrivateFieldGet(this, _layout); } }, { key: "unlisten", value: function unlisten(type) { _classPrivateFieldGet(this, _listener2).call(this, type, REMOVE); } }, { key: "listen", value: function listen(type) { _classPrivateFieldGet(this, _listener2).call(this, type, ADD); } }, { key: "destroy", value: function destroy() { _classPrivateFieldGet(this, _unobserveCssClass).call(this); styler(REMOVE, _classPrivateFieldGet(this, _element3), _classPrivateFieldGet(this, _styler2)); _classPrivateFieldGet(this, _listener2).call(this, RESIZE, REMOVE); _classPrivateFieldGet(this, _listener2).call(this, SCROLL, REMOVE); instances["delete"](_classPrivateFieldGet(this, _element3)); _classPrivateFieldSet(this, _element3, _classPrivateFieldSet(this, _target, _classPrivateFieldSet(this, _scroller, _classPrivateFieldSet(this, _observer, _classPrivateFieldSet(this, _styler2, _classPrivateFieldSet(this, _classList, null)))))); } }, { key: "update", value: function update() { var _this2 = this; _classPrivateFieldGet(this, _updateState).call(this); _classPrivateFieldGet(this, _performUnlockedAction).call(this, function () { _classPrivateFieldGet(_this2, _updateLayout).call(_this2); _classPrivateFieldGet(_this2, _updateScrollCurrent).call(_this2); }); _classPrivateFieldGet(this, _applyStyles).call(this); } }]); return ScrollPadlock; }(); function _get_listenersTargets() { var _ref8; return _ref8 = {}, _defineProperty(_ref8, RESIZE, win), _defineProperty(_ref8, SCROLL, _classPrivateFieldGet(this, _scroller)), _ref8; } exports('default', ScrollPadlock); } }; }); //# sourceMappingURL=scroll-padlock.js.map