export { VisioLoader };

/**
 * Gère l'affichage du loader de la visio
 * @module Visio/Loader
 * @local VisioLoader
 */

/**
 * @class
 * @classdesc Gère le loader de la visio
 */
class VisioLoader {
  /**
   * Initialise la classe
   * @param {string} selector Selecteur du loader
   */
  constructor(selector) {
    this._init()._setup(selector);
  }

  /**
   * @private
   */
  _init() {
    /**
     * Loader
     * @type {external:jQuery}
     * @readonly
     */
    this.loader = null;

    return this;
  }

  /**
   * @private
   */
  _setup(selector) {
    Object.defineProperty(this, 'loader', {
      get() {
        return $(selector);
      },
    });

    return this;
  }

  /**
   * Met à jours le texte du loader
   * @param {string} text Nouveau texte
   * @returns {VisioLoader} Chaînage
   */
  update_text(text) {
    this.loader.html(text);
    return this;
  }

  /**
   * Supprime le loader
   */
  destroy() {
    let $to_destroy = this.loader.parent();

    if (!$to_destroy.hasClass('absolute-center')) $to_destroy = this.loader;

    $to_destroy.remove();

    $to_destroy = null;
  }
}