Source: ui/units/Anime.js


/** 
* Knyter animationer till HTML-element
*/
export class Anime {
  
  /** 
  * @constructor
  */
  constructor() {

    /** 
    * @type {function[]}
    */
    this._animes = [];
  }

  /** 
  * Tilldela ett HTML-element en CSS-klass med en animation
  * och spara denna aktion i funktionslistan this._animes för senare
  * @param {HTMLElement} node - Detta element ska animationen knytas till
  * @param {string} aniClass - CSS klass med animation
  */
  add = (node, aniClass) => {
    this._animes.push(() => {
      node.classList
        .remove(aniClass);
      node.offsetWidth;
      node.classList
        .add(aniClass);
    })
  }

  /** 
  * Tilldela knappen en händelse så att alla animationsklasser läggs till
  * lämpliga HTML-element
  * @param {HTMLElement} button
  */
  wire = (button) => {
    button.addEventListener(
      'click', () => {
      this._animes.forEach(
        anime => anime());
    });
  }
}