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__DropPanelStack.js
/*** module: node_modules/absol-acomp/js/DropPanelStack.js ***/
"use strict";

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

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

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

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

var _AElement = _interopRequireDefault(require("absol/src/HTML5/AElement"));


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

function DropPanelStack() {
  var res = this;
  this.$attachHook = _('attachhook').on('error', function () {
    _Dom.default.addToResizeSystem(this);

    this.updateSize = res.updateSize.bind(res);
  });
  this.sync = new Promise(function (rs) {
    res.$attachHook.once('error', rs);
  });
}

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

DropPanelStack.render = function () {
  return _({
    class: 'absol-drop-panel-stack',
    child: ['attachhook']
  });
};

DropPanelStack.prototype.updateSize = function () {};

DropPanelStack.prototype.getFreeHeight = function () {
  var childNodes = this.childNodes;
  var sumHeight = 0;
  var bound = this.getBoundingClientRect();
  var childBound;

  for (var i = 0; i < childNodes.length; ++i) {
    var child = childNodes[i];

    if (child.hasClass && child.hasClass('absol-drop-panel')) {
      childBound = child.getBoundingClientRect();
      sumHeight += childBound.height;
    }
  }

  return bound.height - sumHeight;
};

DropPanelStack.prototype.addChild = function (child) {
  var self = this;

  if (child.hasClass('absol-drop-panel')) {
    //remove last event listener off other parent
    if (child.__drop_panel_toggle_listener__) {
      child.off('toggle', child.__drop_panel_toggle_listener__);
    }

    child.__drop_panel_toggle_listener__ = function (event) {
      event.preventDefault();
      self.sync = self.sync.then(function () {
        if (event.isShowed) {
          setTimeout(function () {
            child.removeStyle('max-height');
          }, 200);
          child.toggle();
        } else {
          var headBound = child.$head.getBoundingClientRect();
          var vailableHeight = self.getFreeHeight();

          if (vailableHeight > 3) {
            child.addStyle('max-height', self.getFreeHeight() + headBound.height + 'px');
            child.toggle();
          }
        }

        return new Promise(function (rs) {
          setTimeout(rs, 200);
        });
      });
    };

    child.on('toggle', child.__drop_panel_toggle_listener__);
    this.super(child);
  } else {
    throw new Error('Child element must be a DropPanel');
  }
};

_ACore.default.install('droppanelstack', DropPanelStack);

var _default = DropPanelStack;
exports.default = _default;

VaKeR 2022