/
vshmidt
/
label-studio
Обзор
Документация
Войти
/
vshmidt
/
label-studio
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
web/libs/core/src/lib/utils/transition.ts
42 строки
1 KB
yyassi-heartex
fix: OPTIC-1748: [Timebox] UI polish (#7149)
10 мар 2025, 18:57
Не верифицирован
10 мар 2025, 18:57
fb93625
Код
Авторство
О чём код?
type TransitionOptions = { init?: (element: HTMLElement) => void; transition: (element: HTMLElement) => void; onStart?: (element: HTMLElement) => void; beforeTransition?: (element: HTMLElement) => Promise<void> | void; afterTransition?: (element: HTMLElement) => Promise<void> | void; }; /** * Performs a transition on an element */ export const aroundTransition = ( element: HTMLElement, { init, transition, onStart, beforeTransition, afterTransition }: TransitionOptions, ) => { return new Promise<void>(async (resolve) => { init?.(element); const onTransitionStarted = () => { onStart?.(element); }; const onTransitionEnded = async () => { await afterTransition?.(element); element.removeEventListener("transitionstart", onTransitionStarted); element.removeEventListener("transitionend", onTransitionEnded); element.removeEventListener("transitioncancel", onTransitionEnded); resolve(); }; if (element) { element.addEventListener("transitionstart", onTransitionStarted); element.addEventListener("transitionend", onTransitionEnded); element.addEventListener("transitioncancel", onTransitionEnded); } await beforeTransition?.(element); setTimeout(() => transition(element), 30); }); };