VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/libs/absol-full/dist/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-full/dist/js/mdls__absol-acomp__js__EmojiCounter.js
/*** module: node_modules/absol-acomp/js/EmojiCounter.js ***/
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

require("../css/emojicounter.css");

var _ACore = _interopRequireDefault(require("../ACore"));

var _EmojiPickerTooltip = _interopRequireDefault(require("./EmojiPickerTooltip"));

var _EmojiPicker = _interopRequireDefault(require("./EmojiPicker"));

var _Tooltip = _interopRequireWildcard(require("./Tooltip"));

var _Rectangle = _interopRequireDefault(require("absol/src/Math/Rectangle"));

var _Dom = require("absol/src/HTML5/Dom");

var _EmojiUserListTooltip = _interopRequireDefault(require("./EmojiUserListTooltip"));

var _BrowserDetector = _interopRequireDefault(require("absol/src/Detector/BrowserDetector"));




var $ = _ACore.default.$;
var _ = _ACore.default._;
var isMobile = _BrowserDetector.default.isMobile;
/***
 * @extends AElement
 * @constructor
 */

function EmojiCounter() {
  /***
   *
   * @type {Sprite}
   */
  this.$sprite = $('sprite', this);
  this.$num = $('.as-emoji-counter-num', this);
  this.$numText = this.$num.firstChild;
  this._text = '(heart)';
  this.text = this._text;
  this._count = 0;
  this.count = 0;
  this._checkInterval = -1;

  if (isMobile) {
    this.attr('tabindex', '1');
    this.on('focus', this.eventHandler.mouseEnter);
  } else {
    this.on('mouseenter', this.eventHandler.mouseEnter);
  }

  this._tooltipSession = null;
  this._tooltipFinishTimeout = -1;
}

EmojiCounter.tag = 'EmojiCounter'.toLowerCase();

EmojiCounter.render = function () {
  var icon = _EmojiPickerTooltip.default.emojiDict['(heart)'];
  var url = _EmojiPicker.default.assetRoot + '/anim/x40/' + icon.imageFileName;
  return _({
    class: 'as-emoji-counter',
    child: [{
      tag: 'sprite',
      class: 'as-emoji-counter-sprite',
      props: {
        src: url,
        loop: true,
        fps: 30,
        debug: true
      },
      on: {
        ready: function () {
          this.frames = {
            type: 'grid',
            col: 1,
            row: this.texture.naturalHeight / this.texture.naturalWidth
          };
          this.frameIndex = 0;
        }
      }
    }, {
      tag: 'span',
      class: 'as-emoji-counter-num',
      child: {
        text: '0'
      }
    }]
  });
};

EmojiCounter.property = {};
EmojiCounter.property.text = {
  set: function (value) {
    var icon = _EmojiPickerTooltip.default.emojiDict[value];
    if (!icon) return;
    if (this._text === value) return;
    this.$sprite.src = _EmojiPicker.default.assetRoot + '/anim/x40/' + icon.imageFileName;
    this._text = value;
  },
  get: function () {
    return this._text;
  }
};
EmojiCounter.property.count = {
  set: function (value) {
    this.$numText.data = value + '';

    if (value === 1 && this._count != 1) {
      this.$numText.remove();
    } else if (value != 1 && this._count == 1) {
      this.$num.addChild(this.$numText);
    }

    if (value == 0) this.addClass('as-zero');else this.removeClass('as-zero');
    this._count = value;
  },
  get: function () {
    return this._count;
  }
};

_ACore.default.install(EmojiCounter);

EmojiCounter.eventHandler = {};

EmojiCounter.eventHandler.loop = function () {
  if (!this.isDescendantOf(document.body)) this.eventHandler.finishHover();
  if (this.getBoundingClientRect().width === 0) this.eventHandler.finishHover();
};

EmojiCounter.eventHandler.mouseEnter = function () {
  if (this._tooltipFinishTimeout > 0) {
    clearTimeout(this._tooltipFinishTimeout);
  }

  if (this._checkInterval > 0) return;
  this.$sprite.play();
  this._checkInterval = setInterval(this.eventHandler.loop, 1000);
  this.on('mouseleave', this.eventHandler.finishHover);

  if (this.users && this.users.length > 0) {
    prepare();
    EmojiCounter._session = Math.random() * 10000000000 >> 0;
    this._tooltipSession = EmojiCounter._session;
    EmojiCounter.$element = this;
    EmojiCounter.$holder.addTo(this);
    EmojiCounter.$tooltip.text = this.text;
    EmojiCounter.$tooltip.users = this.users;
    EmojiCounter.$tooltip.playEmoji();
    (0, _Tooltip.updateTooltipPosition)(EmojiCounter);
  }
};

EmojiCounter.eventHandler.finishHover = function () {
  if (this._tooltipFinishTimeout > 0) {
    clearTimeout(this._tooltipFinishTimeout);
  }

  this._tooltipFinishTimeout = setTimeout(function () {
    this._tooltipFinishTimeout = -1;
    this.$sprite.stop();
    this.off('mouseleave', this.eventHandler.finishHover);

    if (this._checkInterval > 0) {
      clearInterval(this._checkInterval);
      this._checkInterval = -1;
    }

    if (this._tooltipSession === EmojiCounter._session) {
      EmojiCounter._session = Math.random() * 10000000000 >> 0;
      EmojiCounter.$holder.remove();
      EmojiCounter.$tooltip.stopEmoji();
    }
  }.bind(this), 500);
};

function prepare() {
  if (EmojiCounter.$holder) return;
  EmojiCounter.$holder = _('.absol-tooltip-root-holder');
  EmojiCounter.$tooltip = _('EmojiUserListTooltip.top'.toLowerCase()).addTo(EmojiCounter.$holder);
  EmojiCounter._scrollOutListener = undefined;
  EmojiCounter._orientation = 'top';
  EmojiCounter._session = Math.random() * 10000000000 >> 0;
  _EmojiPickerTooltip.default._listener = undefined;
  EmojiCounter.$element = null;
  EmojiCounter.$tooltip.$arrow.updateSize = EmojiCounter.updatePosition;
}

EmojiCounter.updatePosition = function () {
  if (!EmojiCounter.$element) return;

  var outBound = _Rectangle.default.fromClientRect((0, _Dom.traceOutBoundingClientRect)(EmojiCounter.$element));

  var eBound = _Rectangle.default.fromClientRect(EmojiCounter.$element.getBoundingClientRect());

  if (!outBound.isCollapse(eBound, 0)) {
    _EmojiPickerTooltip.default._scrollOutListener && EmojiCounter._scrollOutListener();
  }

  (0, _Tooltip.updateTooltipPosition)(EmojiCounter);
};

EmojiCounter.updatePosition = EmojiCounter.updatePosition.bind(EmojiCounter);
var _default = EmojiCounter;
exports.default = _default;

VaKeR 2022