@siberiaweb/components
Version:
47 lines (46 loc) • 1.67 kB
JavaScript
/**
* Утилиты для HTML-элемента.
*/
export default class HTMLElementUtils {
/**
* Создание идентификатора. Используется алгоритм для генерации uuid v4.
*/
static createId() {
let id = "";
for (let i = 0; i < 32; i++) {
if ((i === 8) || (i === 12) || (i === 16) || (i === 20)) {
id += "-";
}
let random = Math.random() * 16 | 0;
id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);
}
return id;
}
/**
* Ожидание завершения анимации.
*
* @param element Элемент.
*/
static waitForAnimation(element) {
return new Promise(resolve => {
/**
* Обработка завершения анимации.
*
* @param event Событие.
*/
function animationEndEventHandler(event) {
if ((event.target instanceof Node) && element.isEqualNode(event.target)) {
element.removeEventListener("animationend", animationEndEventHandler);
resolve();
}
}
let animationDuration = getComputedStyle(element).animationDuration;
if ((animationDuration.length === 0) || (animationDuration === "0s")) {
resolve();
}
else {
element.addEventListener("animationend", animationEndEventHandler);
}
});
}
}