UNPKG

maycur-business

Version:

maycur business react components of web

48 lines (37 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = onTransitionEnd; var _globals = require("./globals"); var _getInnerElements2 = _interopRequireDefault(require("../utils/getInnerElements")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * Prepares the callback functions for `show` and `hide` methods * @param {Object} data * @param {Number} duration * @param {Function} callback - callback function to fire once transitions complete */ function onTransitionEnd(data, duration, callback) { // Make callback synchronous if duration is 0 if (!duration) { return callback(); } var _getInnerElements = (0, _getInnerElements2["default"])(data.popper), tooltip = _getInnerElements.tooltip; var transitionendFired = false; var listenerCallback = function listenerCallback(e) { if (e.target === tooltip && !transitionendFired) { transitionendFired = true; callback(); } }; // Fire callback upon transition completion tooltip.addEventListener('webkitTransitionEnd', listenerCallback); tooltip.addEventListener('transitionend', listenerCallback); // Fallback: transitionend listener sometimes may not fire clearTimeout(data._transitionendTimeout); data._transitionendTimeout = setTimeout(function () { if (!transitionendFired) { callback(); } }, duration); }