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

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

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

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

var _OOP = _interopRequireDefault(require("absol/src/HTML5/OOP"));

var _TabBar = _interopRequireDefault(require("./TabBar"));

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

var _TextMeasure = _interopRequireDefault(require("./TextMeasure"));


var _ = _ACore.default._;
var $ = _ACore.default.$;

function TabView() {
  var thisTV = this;
  /***
   *
   * @type {TabBar}
   */

  this.$tabbar = $('tabbar', this);
  this.$tabbar.$parent = this;
  this.$tabbar.on({
    close: TabView.eventHandler.closeTab.bind(thisTV),
    active: TabView.eventHandler.activeTab.bind(thisTV)
  });
  this._title = '';
  this._frameHolders = [];
  this._history = [];
  (0, _utils.forwardEvent)(this, 'inactivetab', 'deactivetab');
}

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

TabView.render = function () {
  return _({
    class: 'absol-tabview',
    extendEvent: ['activetab', 'inactivetab', 'removetab', 'requestremovetab', 'pressaddtab'],
    child: ['tabbar']
  });
};

TabView.eventHandler = {};

TabView.eventHandler.closeTab = function (event) {
  event.preventDefault();
  var id = event.value.id;
  this.removeTab(id, true);
};

TabView.eventHandler.activeTab = function (event) {
  event.preventDefault();
  var id = event.value.id;
  this.activeTab(id, true);
};

TabView.prototype.activeTab = function (id, userActive) {
  var self = this;
  var resPromise = [];
  var needDeactivatedHolder = [];
  var needActiveHolder = [];

  this._frameHolders.forEach(function (holder) {
    if (holder.containerElt.hasClass('absol-tabview-container-hidden')) {
      if (holder.id + '' === id + '') {
        needActiveHolder.push(holder);
      }
    } else {
      if (holder.id + '' !== id + '') {
        needDeactivatedHolder.push(holder);
      }
    }
  });

  needDeactivatedHolder.forEach(function (holder) {
    holder.containerElt.addClass('absol-tabview-container-hidden');
    holder.tabFrame.emit('inactive', {
      type: 'inactive',
      target: holder.tabFrame,
      id: holder.id,
      userActive: !!userActive,
      tabButton: holder.tabButton,
      holder: holder
    }, holder.tabFrame);
  });
  needActiveHolder.forEach(function (holder) {
    self._history.push(holder.id);

    holder.containerElt.removeClass('absol-tabview-container-hidden');
    self.$tabbar.activeTab(holder.id);
    holder.tabFrame.emit('active', {
      type: 'active',
      target: holder.tabFrame,
      id: holder.id,
      userActive: !!userActive,
      tabButton: holder.tabButton,
      holder: holder
    }, holder.tabFrame);
    self.emit('activetab', {
      type: 'activetab',
      target: self,
      id: holder.id,
      userActive: !!userActive,
      tabButton: holder.tabButton,
      holder: holder,
      from: needDeactivatedHolder[0] && needDeactivatedHolder[0].tabFrame || null,
      to: holder.tabFrame
    }, self);
  });
};

TabView.prototype.removeTab = function (id, userActive) {
  var self = this;
  var resPromise = [];

  this._frameHolders.forEach(function (holder) {
    if (holder.id + '' === id + '') {
      var eventData = {
        type: 'requestremove',
        id: id,
        userActive: !!userActive,
        target: holder.tabFrame,
        tabFrame: holder.tabFrame,
        tabButton: holder.tabButton,
        holder: holder,
        __promise__: Promise.resolve(),
        waitFor: function (promise) {
          this.__promise__ = promise;
        }
      };
      holder.tabFrame.emit('requestremove', eventData, holder.tabFrame);
      eventData.type = 'requestremovetab';
      eventData.target = self;
      self.emit('requestremovetab', eventData, self);
      resPromise.push(eventData.__promise__.then(function () {
        //if ok
        var eventData2 = {
          type: 'inactive',
          target: holder.tabFrame,
          id: holder.id,
          userActive: !!userActive,
          tabButton: holder.tabButton,
          holder: holder
        };
        if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) holder.tabFrame.emit('inactive', eventData2, holder.tabFrame);
        eventData2.type = 'inactivetab';
        eventData2.target = self;
        if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) self.emit('inactivetab', eventData2, self);
        self._frameHolders = self._frameHolders.filter(function (x) {
          return x.id + '' !== id + '';
        });
        holder.tabFrame.notifyDetached();
        self.$tabbar.removeTab(holder.id);
        holder.containerElt.remove();
        eventData2.type = 'remove';
        eventData2.target = holder.tabFrame;
        holder.tabFrame.emit('remove', eventData2, holder.tabFrame);
        eventData2.type = 'removetab';
        eventData2.target = self;
        self.emit('removetab', eventData2, self);
        self.activeLastTab();
      }, function () {//if reject
      }));
    }
  });

  return Promise.all(resPromise);
};

TabView.prototype.notifyUpdateDesc = function (elt) {
  var holder = this.findHolder(elt);

  if (holder) {
    holder.tabButton.desc = elt.desc;
  }
};

TabView.prototype.notifyUpdateName = function (elt) {
  var holder = this.findHolder(elt);

  if (holder) {
    holder.tabButton.name = elt.name;
  }
};

TabView.prototype.notifyUpdateModified = function (elt) {
  var holder = this.findHolder(elt);

  if (holder) {
    holder.tabButton.modified = elt.modified;
  }
};

TabView.prototype.notifyUpdatePreventClosing = function (elt) {
  var holder = this.findHolder(elt);

  if (holder) {
    holder.tabButton.preventClosing = elt.preventClosing;
  }
};

TabView.prototype.findHolder = function (elt) {
  for (var i = 0; i < this._frameHolders.length; ++i) {
    var holder = this._frameHolders[i];

    if (holder.tabFrame === elt) {
      return holder;
    }
  }
};

TabView.prototype.addChild = function () {
  var self = this;
  Array.prototype.forEach.call(arguments, function (elt) {
    if (!elt.notifyAttached || !elt.notifyDetached) {
      throw new Error('element is not a tabframe');
    }

    var containerElt = _('.absol-tabview-container.absol-tabview-container-hidden');

    self.appendChild(containerElt); //origin function

    elt.selfRemove();
    var id = elt.attr('id');
    var desc = elt.attr('desc') || undefined;
    var name = elt.attr('name') || 'NoName';
    var tabIcon = elt.tabIcon;
    var modified = elt.modified;
    var preventClosing = elt.preventClosing;
    var tabButton = self.$tabbar.addTab({
      name: name,
      id: id,
      desc: desc,
      modified: modified,
      tabIcon: tabIcon,
      preventClosing: preventClosing
    });
    containerElt.addChild(elt);
    elt.notifyAttached(self);
    var holder = {};

    _OOP.default.drillProperty(holder, elt, 'id');

    _OOP.default.drillProperty(holder, elt, 'desc');

    _OOP.default.drillProperty(holder, elt, 'name');

    _OOP.default.drillProperty(holder, elt, 'preventClosing');

    Object.defineProperties(holder, {
      tabButton: {
        value: tabButton,
        writable: false
      },
      tabFrame: {
        value: elt,
        writable: false
      },
      containerElt: {
        value: containerElt,
        writable: false
      }
    });

    self._frameHolders.push(holder);

    self.activeTab(id);
  });
};

TabView.prototype.activeLastTab = function () {
  var dict = this._frameHolders.reduce(function (ac, holder) {
    ac[holder.id] = true;
    return ac;
  }, {});

  while (this._history.length > 0) {
    var id = this._history[this._history.length - 1];

    if (dict[id]) {
      this.activeTab(id);
      break;
    } else {
      this._history.pop();
    }
  }
};

TabView.prototype.getChildAt = function (index) {
  return this._frameHolders[index].tabFrame;
};

TabView.prototype.getAllChild = function () {
  return this._frameHolders.map(function (holder) {
    return holder.tabFrame;
  });
};

TabView.prototype.getActiveTabHolder = function () {
  var holder = null;

  for (var i = 0; i < this._frameHolders.length; ++i) {
    holder = this._frameHolders[i];

    if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) {
      return holder;
    }
  }

  return null;
};

TabView.prototype.getActiveTab = function () {
  var holder = this.getActiveTabHolder();
  return holder && holder.tabFrame;
};

TabView.prototype.getActiveTabId = function () {
  var holder = this.getActiveTabHolder();
  return holder && holder.id;
};

TabView.prototype.getTabById = function (id) {
  var holder = this.getTabHolderById(id);
  return holder && holder.tabFrame;
};

TabView.prototype.getTabHolderById = function (id) {
  var holder = null;

  for (var i = 0; i < this._frameHolders.length; ++i) {
    holder = this._frameHolders[i];

    if (holder.id === id) {
      return holder;
    }
  }

  return null;
};

TabView.prototype.activeFrame = function (elt) {
  if (typeof elt == "string") {
    return this.activeTab(elt);
  } else if (elt && elt.attr) {
    return this.activeTab(elt.attr('id'));
  } else {
    throw new Error("Invalid param, must be id or elt!");
  }
};

TabView.property = {};
TabView.property.historyOfTab = {
  get: function () {
    return this._history.slice();
  }
};
TabView.property.tvTitle = {
  set: function (value) {
    this._title = value + '';
    var width;

    if (this._title.length > 0) {
      this.$tille = _({
        class: 'as-tabview-title',
        child: {
          text: this._title
        }
      });
      width = _TextMeasure.default.measureWidth(this._title, 'Arial', 14);
      this.$tabbar.addStyle('right', width + 10 + 'px');
      this.insertBefore(this.$tille, this.$tabbar.nextSibling);
    } else {
      if (this.$tille) this.$tille.remove();
      this.$tabbar.removeStyle('right');
    }
  },
  get: function () {
    return this._title;
  }
};

_ACore.default.install('tabview', TabView);

var _default = TabView;
exports.default = _default;

function TabViewUser() {}

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

TabViewUser.render = function () {};

VaKeR 2022