HEX
Server: LiteSpeed
System: Linux s1296.sgp1.mysecurecloudhost.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: bishwesh (1878)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/bishwesh/internstolearn.com/node_modules/filterizr/src/animate.ts
import EventReceiver from './EventReceiver';
import { setStyles } from './utils';

interface AnimatorTransition {
  node: HTMLElement;
  targetStyles: object;
  eventReceiver: EventReceiver;
}

class Animator {
  public static async animate(
    node: HTMLElement,
    targetStyles: object
  ): Promise<void> {
    await Animator.process({
      node,
      targetStyles,
      eventReceiver: new EventReceiver(node),
    });
  }

  private static async process(transition: AnimatorTransition): Promise<void> {
    return new Promise((resolve): void => {
      transition.eventReceiver.on('transitionend', (): void => {
        transition.eventReceiver.destroy();
        resolve();
      });

      setTimeout((): void => {
        setStyles(transition.node, transition.targetStyles);
      }, 10);
    });
  }
}

export default Animator.animate;