39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
// ==========================================================================
|
|
// Animation utils
|
|
// ==========================================================================
|
|
|
|
import is from './is';
|
|
|
|
export const transitionEndEvent = (() => {
|
|
const element = document.createElement('span');
|
|
|
|
const events = {
|
|
WebkitTransition: 'webkitTransitionEnd',
|
|
MozTransition: 'transitionend',
|
|
OTransition: 'oTransitionEnd otransitionend',
|
|
transition: 'transitionend',
|
|
};
|
|
|
|
const type = Object.keys(events).find((event) => element.style[event] !== undefined);
|
|
|
|
return is.string(type) ? events[type] : false;
|
|
})();
|
|
|
|
// Force repaint of element
|
|
export function repaint(element, delay) {
|
|
setTimeout(() => {
|
|
try {
|
|
// eslint-disable-next-line no-param-reassign
|
|
element.hidden = true;
|
|
|
|
// eslint-disable-next-line no-unused-expressions
|
|
element.offsetHeight;
|
|
|
|
// eslint-disable-next-line no-param-reassign
|
|
element.hidden = false;
|
|
} catch (_) {
|
|
// Do nothing
|
|
}
|
|
}, delay);
|
|
}
|