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

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

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

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

var _BoardTable = _interopRequireDefault(require("./BoardTable"));

var _MKNavigatorItem = _interopRequireDefault(require("./MKNavigatorItem"));

var _utils = require("./utils");




/***
 * @typedef MKNavigatorItemData
 * @property {string} text
 * @property {string|number} value
 * @property {boolean|number=} checked
 */

/***
 * @extends AElement
 * @constructor
 */
function MKNavigator() {
  this._items = [];
  this._value = 0;
  this._hiddenValues = [];
  this.$itemByValue = {};
  this.$header = (0, _ACore.$)('.mk-nav-header', this);
  this.$body = (0, _ACore.$)('.mk-nav-body', this).on('orderchange', this.eventHandler.bodyOrderChange).on('dragitemstart', this.eventHandler.dragItemStart);
  this.$footer = (0, _ACore.$)('.mk-nav-footer', this);
  this.on('press', (event, sender) => {
    this.emit('clickitem', event, sender);
  });
  /***
   * @type {MKNavigatorItemData[]}
   * @name item
   * @memberOf MKNavigator#
   */

  /***
   * @type {number[]}
   * @name order
   * @memberOf MKNavigator#
   */
}

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

MKNavigator.render = function () {
  return (0, _ACore._)({
    class: 'mk-nav',
    extendEvent: ['orderchange', 'checkedchange', 'press', 'clickitem'],
    child: [{
      class: 'mk-nav-header'
    }, {
      tag: _BoardTable.default.tag,
      class: 'mk-nav-body'
    }, {
      class: 'mk-nav-footer'
    }]
  });
};

MKNavigator.prototype.updateValue = function () {
  var value = this._value;

  for (var iValue in this.$itemByValue) {
    if (iValue + '' !== value + '') {
      this.$itemByValue[iValue].removeClass('mk-current');
    }
  }

  var order = this.order;

  if (this.$itemByValue[value]) {
    this.$itemByValue[value].addClass('mk-current');
  } else if (order.length > 0) {
    this.$itemByValue[order[0]].addClass('mk-current');
  }

  var idx = order.filter(value => !this.$itemByValue[value].hasClass('as-hidden')).indexOf(value);

  if (idx >= 0) {
    this.addStyle('--mk-nav-line-top', `calc(${2 * idx}em + ${12 * idx}px)`);
  } else {
    this.removeStyle('--mk-nav-line-top');
  }
};

MKNavigator.prototype.setTextOfItem = function (value, text) {
  var itemElt = this.$itemByValue[value];
  if (!itemElt) return;
  itemElt.data.text = text;
  itemElt.updateText();
};

MKNavigator.prototype.mkItem = function (data) {
  var self = this;
  return (0, _ACore._)({
    tag: _MKNavigatorItem.default.tag,
    attr: {
      "data-value": data && data.value
    },
    props: {
      data: data
    },
    on: {
      checkedchange: function (event) {
        self.emit('checkedchange', {
          type: 'checkedchange',
          target: this,
          originalEvent: event.originalEvent,
          itemData: data,
          checked: data.checked
        }, self);
      },
      press: function (event) {
        self.value = data.value;
        self.emit('press', {
          type: 'press',
          itemElt: this,
          itemData: data,
          value: data.value,
          target: this,
          originalEvent: event.originalEvent
        }, self);
      }
    }
  });
};

MKNavigator.prototype._updateHiddenValues = function () {
  var hiddenDict = this._hiddenValues.reduce((ac, x) => {
    ac[x] = true;
    return ac;
  }, {});

  Object.keys(this.$itemByValue).forEach(value => {
    if (hiddenDict[value]) {
      this.$itemByValue[value].addClass('as-hidden');
    } else {
      this.$itemByValue[value].removeClass('as-hidden');
    }
  });
};

MKNavigator.property = {};
MKNavigator.property.items = {
  /***
   * @this MKNavigator
   * @param items
   */
  set: function (items) {
    items = items || [];
    this._items = items;
    this.$itemByValue = {};
    var i = 0;
    var item;
    var itemElt;
    this.$header.clearChild();
    this.$body.clearChild();
    this.$footer.clearChild();
    var draggable = false;
    var maxTextWidth = items.reduce((ac, it) => {
      var tw = (0, _utils.measureText)(it.text || '').width;
      return Math.max(ac, tw);
    }, 0);
    this.addStyle('--max-text-width', Math.ceil(maxTextWidth) + 'px');

    while (i < items.length) {
      if (items[i].draggable) break;
      item = items[i];
      itemElt = this.mkItem(item);
      this.$itemByValue[item.value] = itemElt;
      this.$header.addChild(itemElt);
      ++i;
    }

    while (i < items.length) {
      if (!items[i].draggable) break;
      draggable = true;
      item = items[i];
      itemElt = this.mkItem(item);
      this.$itemByValue[item.value] = itemElt;
      this.$body.addChild(itemElt);
      ++i;
    }

    while (i < items.length) {
      item = items[i];
      itemElt = this.mkItem(item);
      this.$itemByValue[item.value] = itemElt;
      this.$footer.addChild(itemElt);
      ++i;
    }

    if (draggable) {
      this.addClass('mk-has-draggable');
    } else {
      this.removeClass('mk-has-draggable');
    }

    this._updateHiddenValues();
  },
  get: function () {
    return this._items;
  }
};
MKNavigator.property.order = {
  get: function () {
    return (0, _ACore.$$)(_MKNavigatorItem.default.tag, this).map(function (e) {
      return e.data.value;
    });
  }
};
MKNavigator.property.value = {
  set: function (value) {
    this._value = value;
    this.updateValue();
  },
  get: function () {
    if (this.$itemByValue[this._value]) return this._value;
    if (this._items.length > 0) return this._items[0];
    return this._value;
  }
};
MKNavigator.property.hiddenValues = {
  set: function (values) {
    values = values || [];
    if (!(values instanceof Array)) values = [];
    this._hiddenValues = values;

    this._updateHiddenValues();

    this.updateValue();
  },
  get: function () {
    return this._hiddenValues;
  }
};
/***
 * @memberOf MKNavigator#
 * @type {{}}
 */

MKNavigator.eventHandler = {};

MKNavigator.eventHandler.bodyOrderChange = function (event) {
  this.updateValue();

  this._items.splice(0, this._items.length);

  (0, _ACore.$$)(_MKNavigatorItem.default.tag, this).reduce(function (ac, cr) {
    ac.push(cr.data);
    return ac;
  }, this._items);
  this.emit('orderchange', {
    type: 'orderchange',
    target: this
  }, this);
};
/***
 * @memberOf MKNavigator#
 * @type {{}}
 */


MKNavigator.eventHandler.dragItemStart = function (event) {
  var bound = this.getBoundingClientRect();
  this.addStyle('--mk-navigator-bound-left', bound.left + 'px');
};

_ACore.default.install(MKNavigator);

_ACore.default.install('mknav', MKNavigator);

var _default = MKNavigator;
exports.default = _default;

VaKeR 2022