UNPKG

@siberiaweb/components

Version:
47 lines (46 loc) 1.67 kB
/** * Утилиты для 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); } }); } }