maycur-business
Version:
maycur business react components of web
41 lines (30 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = makeSticky;
var _defer = _interopRequireDefault(require("../utils/defer"));
var _prefix = _interopRequireDefault(require("../utils/prefix"));
var _isVisible = _interopRequireDefault(require("../utils/isVisible"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* Updates a popper's position on each animation frame to make it stick to a moving element
* @param {Object} refData
*/
function makeSticky(refData) {
var popper = refData.popper,
popperInstance = refData.popperInstance,
stickyDuration = refData.settings.stickyDuration;
var applyTransitionDuration = function applyTransitionDuration() {
return popper.style[(0, _prefix["default"])('transitionDuration')] = "".concat(stickyDuration, "ms");
};
var removeTransitionDuration = function removeTransitionDuration() {
return popper.style[(0, _prefix["default"])('transitionDuration')] = '';
};
var updatePosition = function updatePosition() {
popperInstance && popperInstance.scheduleUpdate();
applyTransitionDuration();
(0, _isVisible["default"])(popper) ? window.requestAnimationFrame(updatePosition) : removeTransitionDuration();
}; // Wait until Popper's position has been updated initially
(0, _defer["default"])(updatePosition);
}