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-tutor__js__app__FlagManager.js
/*** module: node_modules/absol-tutor/js/app/FlagManager.js ***/
"use strict";

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

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

var _Fragment = _interopRequireDefault(require("absol/src/AppPattern/Fragment"));

var _Core = require("../dom/Core");

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

require("absol-form/css/propertyeditor.css");

var _OnsScreenWindow = _interopRequireDefault(require("absol-acomp/js/OnsScreenWindow"));


/***
 * @extends Fragment
 * @constructor
 */
function FlagManager() {
  _Fragment.default.call(this);

  this.flag = {};
  this.readSetting();
}

_OOP.default.mixClass(FlagManager, _Fragment.default);

FlagManager.prototype.STORE_KEY = "ABSOL_FLAG";

FlagManager.prototype.readSetting = function () {
  var flagText = localStorage.getItem(this.STORE_KEY) || '{}';
  var newFlag = {};

  try {
    newFlag = JSON.parse(flagText);
  } catch (err) {}

  this.applyFlag(newFlag);
};

FlagManager.prototype.applyFlag = function (newFlag, save) {
  Object.keys(Object.assign({}, this.flag, newFlag)).forEach(function (key) {
    if (key in window) {
      if (key in newFlag) {
        window[key] = newFlag[key];
      } else {
        delete window[key];
      }
    } else {
      if (key in newFlag) {
        window[key] = newFlag[key];
      }
    }
  });
  this.flag = newFlag;
  if (save) this.saveSetting();
};

FlagManager.prototype.saveSetting = function () {
  localStorage.setItem(this.STORE_KEY, JSON.stringify(this.flag));
};

FlagManager.prototype.createView = function () {
  /****
   * @type {OnScreenWindow}
   */
  this.$view = (0, _Core._)({
    tag: 'onscreenwindow',
    class: 'atr-flag-manager',
    style: {
      width: '400px',
      height: '400px',
      top: '20px',
      left: 'calc(100vw - 420px)'
    },
    props: {
      windowTitle: "Flag Manager",
      windowActions: [{
        icon: 'span.mdi.mdi-close',
        name: 'close'
      }]
    },
    child: [{
      class: ['as-property-editor', 'as-bscroller'],
      style: {
        width: '100%',
        height: '100%',
        overflow: 'auto'
      },
      child: {
        tag: 'table',
        style: {
          width: '100%'
        },
        child: ['<thead><tr><td>key</td><td>value</td><td></td></tr></thead>', {
          tag: 'tbody',
          child: [{
            tag: 'tr',
            class: 'atr-add-flag-row',
            child: [{
              tag: 'td',
              attr: {
                colspan: '3'
              },
              style: {
                textAlign: 'center'
              },
              child: 'span.mdi.mdi-plus'
            }]
          }]
        }]
      }
    }]
  });
  this.$tbody = (0, _Core.$)('.as-property-editor tbody', this.$view);
  this.$addRow = (0, _Core.$)('.atr-add-flag-row', this.$view).on('click', this._addRow.bind(this, '', false));

  for (var key in this.flag) {
    this._addRow(key, this.flag[key]);
  }

  this.$view.on('action', event => {
    if (event.actionData.name === 'close') this.stop();
  });
};

FlagManager.prototype.onResume = function () {
  var view = this.getView();

  if (!view.isDescendantOf(document.body)) {
    document.body.appendChild(view);
  }
};

FlagManager.prototype._updateInputColor = function () {
  var dict = {};
  (0, _Core.$)('input.atr-flag-name', this.$tbody, function (inputELt) {
    var value = inputELt.value.trim();

    if (value) {
      if (dict[value]) {
        inputELt.addStyle('border-color', 'red');
      } else {
        inputELt.removeStyle('border-color');
        dict[value] = true;
      }
    } else {
      inputELt.addStyle('border-color', 'rgb(150, 255, 0)');
    }
  });
};

FlagManager.prototype._getFlagFromInput = function () {
  var res = {};
  (0, _Core.$)('.atr-flag-row', this.$tbody, function (rowElt) {
    var p = rowElt.getFlag && rowElt.getFlag();

    if (p) {
      res[p.key] = p.value;
    }
  });
  return res;
};

FlagManager.prototype._addRow = function (key, value) {
  var thisFM = this;
  var newRow = (0, _Core._)({
    tag: 'tr',
    class: 'atr-flag-row',
    child: ['td', 'td', 'td']
  });
  var name = (0, _Core._)('input.atr-flag-name').addTo(newRow.childNodes[0]);
  name.value = key || '';
  var value = (0, _Core._)({
    tag: 'selectmenu',
    props: {
      items: [{
        text: 'TRUE',
        value: true
      }, {
        text: 'FALSE',
        value: false
      }],
      value: !!value
    }
  }).addStyle('width', '50px').addTo(newRow.childNodes[1]);
  value.on('change', function () {
    thisFM.applyFlag(thisFM._getFlagFromInput(), true);
  });
  var deleteBtn = (0, _Core._)('span.mdi.mdi-trash-can-outline').addTo(newRow.childNodes[2]).on('click', function () {
    newRow.remove();
    thisFM.applyFlag(thisFM._getFlagFromInput(), true);
  });
  name.on('change', function () {
    thisFM.applyFlag(thisFM._getFlagFromInput(), true);
  }).on('keyup', function (event) {
    if (event.key === 'Enter') {
      this.blur();
    }

    thisFM._updateInputColor();
  });
  this.$tbody.addChildBefore(newRow, this.$addRow);

  newRow.getFlag = function () {
    if (name.value) return {
      key: name.value,
      value: value.value
    };
  };

  this._updateInputColor();
};

FlagManager.prototype.onPause = function () {
  var view = this.getView();

  if (view.isDescendantOf(document.body)) {
    view.remove();
  }
};
/***
 *
 * @param {string} key
 * @param {boolean=} value
 */


FlagManager.prototype.add = function (key, value) {
  if (!key || typeof key != 'string') return;
  if (key in this.flag) return;

  if (typeof value != "boolean") {
    value = !!window[key];
  }

  window[key] = value;
  this.flag[key] = value;
  this.saveSetting();
  if (this.$view) this._addRow(key, value);
};

var _default = new FlagManager();

exports.default = _default;

VaKeR 2022