'use strict'; /** * Licensed Materials - Property of IBM * IBM Cognos Products: Storytelling * (C) Copyright IBM Corp. 2017, 2018 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['baglass/core-client/js/core-client/ui/core/Class', 'baglass/core-client/js/core-client/utils/BrowserUtils'], function (Class, BrowserUtils) { var AnimationHelper = Class.extend({ // Not zero for IE on Windows 10. Bug reporeted to Microsoft. SCALE_ZERO: BrowserUtils.isIE() ? 'scale(0.00001)' : 'scale(0)', /** * Allows the browser to animate the properties in animationCSS using the 'transition' property. * * the caller must provide the transition values in the css parameter/ * *@param {jquery} $el - the element to animate. *@param {object} css - CSS properties. * ex: * { * opacity: 1, * transition: "opacity 1s" * } *@returns promise that is resolved when the animation is done. */ Animate: function Animate($el, css) { var isResolved = false; if (!$el || !$el.length || !css) { return Promise.resolve(); } return new Promise(function (resolve) { var transitionend = function transitionend(event) { isResolved = true; resolve(); event.target.removeEventListener('transitionend', transitionend); }; // Set a timeout so that if the animation doesn't complete for some reason, all of the // code waiting for this promise to resolve isn't held up. setTimeout(function () { if (!isResolved) { resolve(); } }, 1100); $el[0].addEventListener('transitionend', transitionend); // we are setting multiple conflicting css properties in a row and we want them to be all executed. // the browser does not always do this so we add the read to force a "repaint". //see: http://stackoverflow.com/questions/7974761/in-jquery-is-it-possible-to-get-callback-function-after-setting-new-css-rule $el.css('transform'); $el.css(css); }); } }); return new AnimationHelper(); }); //# sourceMappingURL=AnimationHelper.js.map