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-form__js__flexformeditor__FlexFormEditor.js
/*** module: node_modules/absol-form/js/flexformeditor/FlexFormEditor.js ***/
"use strict";

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

var _BaseEditor = _interopRequireDefault(require("../core/BaseEditor"));

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

var _FCore = require("../core/FCore");

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

var _LayoutEditor = _interopRequireDefault(require("../layouteditor/LayoutEditor"));

var _BlockEditor = _interopRequireDefault(require("../ciruiteditor/blockeditor/BlockEditor"));

var _R = _interopRequireDefault(require("../R"));

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

var _CircuitDiagramEditor = _interopRequireDefault(require("../ciruiteditor/diagrameditor/CircuitDiagramEditor"));

var _FlexFormEditorCmd = _interopRequireDefault(require("./FlexFormEditorCmd"));

var _generator = require("absol/src/JSMaker/generator");

var _FOutline = require("../launcher/FOutline");

var _FDEditor = _interopRequireDefault(require("../fdeditor/FDEditor"));


function FlexFormEditor() {
  _BaseEditor.default.call(this);

  this.cmdRunner.assign(_FlexFormEditorCmd.default);
  this._data = null;
  this._activatedEditorIdx = -1;
  this.setContext(_R.default.FLEX_FORM_EDITOR, this);
  this.layoutEditor = new _LayoutEditor.default();
  this.blockEditor = new _BlockEditor.default();
  this.diagramEditor = new _CircuitDiagramEditor.default();
  this.fdEditor = new _FDEditor.default();
  /***
   *
   * @type {(LayoutEditor|BlockEditor|CircuitDiagramEditor)[]}
   */

  this.subEditors = [this.layoutEditor, this.blockEditor, this.diagramEditor, this.fdEditor];
  this.outlineDelegate = new FlexFormOutlineDelegate(this);
  this.setContext(_R.default.LAYOUT_EDITOR, this.layoutEditor);
  this.setContext(_R.default.DIAGRAM_EDITOR, this.diagramEditor);
  this.setContext(_R.default.BLOCK_EDITOR, this.blockEditor);
  this.setContext(_R.default.FD_EDITOR, this.fdEditor);
}

_OOP.default.mixClass(FlexFormEditor, _BaseEditor.default);

FlexFormEditor.prototype.setData = function (data) {
  try {
    data = this.implicitData(data);
    this.getView();
    this._data = data || {};
    this.layoutEditor.setData(data.layout);
    this.blockEditor.setData(data.circuit.blocks);
    this.diagramEditor.setData(data.circuit.lines, data.circuit.diagram);
    this.outlineDelegate.notifyTreeChange();
  } catch (err) {
    var dataBlob = new Blob(['data = ' + (0, _generator.generateJSVariable)(data)], {
      type: 'text/plain'
    });
    console.error("Error data", [URL.createObjectURL(dataBlob), data]);
    console.error(err);
  }
};

FlexFormEditor.prototype.getData = function () {
  this._data.layout = this.layoutEditor.getData();
  this._data.circuit.blocks = this.blockEditor.getData();
  this._data.circuit.lines = this.diagramEditor.getLineData();
  this._data.circuit.diagram = this.diagramEditor.getDiagramData();
  return this.explicitData(this._data);
};
/***
 * @typedef FDPermissions
 * @property {string} owner
 */

/***
 *
 * @typedef FDAttributes
 * @property {string} id
 * @property {string} name
 * @property {FDPermissions} permissions
 *
 * */

/***
 * @typedef FDStyle
 * @extends Object
 * * */

/***
 * @typedef ComponentData
 * @property {string} tag
 * @property {FDAttributes} attributes
 * @property {FDStyle} style
 * @property {ComponentData[]} children
 * */

/***
 * @typedef DiagramData
 * @property {string[]} includedBlocks
 * @property {{}} positions
 *
 */

/***
 * @typedef BlockData
 * @property {string} tag
 * @property {FDAttributes} attributes
 */

/***
 * @typedef LineData
 * @property {string} u
 * @property {string} uPin
 * @property {string} v
 * @property {string} vPin
 * @property {string} id
 * @property {FDPermissions} permissions
 */

/***
 * @typedef CircuitData
 * @property {BlockData[]} blocks
 * @property {LineData[]} lines
 * @property {DiagramData} diagram
 */

/***
 *
 * @typedef FormData
 * @property {string} app
 * @property {string} version
 * @property {ComponentData} layout
 * @property {CircuitData} circuit
 *
 *
 */


FlexFormEditor.prototype.implicitData = function (data) {
  data = (0, _generator.copyJSVariable)(data);
  var layout = data.layout || data;
  var version = '1.1.1';
  var circuit = data.circuit || {};
  circuit.blocks = circuit.blocks || [];
  circuit.lines = circuit.lines || [];
  circuit.diagram = circuit.diagram || {};
  circuit.diagram.includedBlocks = circuit.diagram.includedBlocks || [];
  circuit.diagram.positions = circuit.diagram.positions || {};
  circuit.blocks.forEach(function (block) {
    block.attributes.id = block.attributes.id || (0, _utils.randomUniqueIdent)();
    block.attributes.name = block.attributes.name || block.attributes.id;
  });
  var twoWayLines = [];
  circuit.lines.forEach(function (line) {
    line.id = line.id || (0, _utils.randomUniqueIdent)();

    if (line.twoWay) {
      delete line.twoWay;
      twoWayLines.push(Object.assign({}, line, {
        u: line.v,
        v: line.u,
        uPin: line.vPin,
        vPin: line.uPin
      }));
    }
  });
  circuit.lines.push.apply(circuit.lines, twoWayLines);
  var id2Name = {};
  var name2Id = {};
  var idList = {};

  function visit(node) {
    var name = node.attributes && node.attributes.name;
    var id = node.attributes && node.attributes.id; //auto fix tag

    if (!node.tag && !node.class) {
      if (node.attributes && node.attributes.body && 'args' in node.attributes) {
        node.tag = 'function';
        console.warn("Detect node without tag", 'fixed with tag = "function"');
      } else {
        console.warn("Detect node without tag, can not be fixed", node);
      }
    }

    if (!id) {
      if (!node.attributes) {
        node.attributes = {};
      }

      id = (0, _utils.randomUniqueIdent)();
      node.attributes.id = id;
    }

    if (idList[id]) {
      id = (0, _utils.randomUniqueIdent)();

      if (!node.attributes) {
        node.attributes = {};
      }

      node.attributes.id = id;
    }

    idList[id] = true;

    if (id && name) {
      id2Name[id] = name;
      name2Id[name] = id;
    }

    var group = node.attributes && node.attributes.group;

    if (group && group.trim && group.trim().length > 0) {
      idList[group.trim()] = true;
    }

    if (node.children) node.children.forEach(visit);
  }

  visit(layout);
  circuit.blocks.forEach(visit);
  circuit.blocks.forEach(function (block) {
    delete block.id; //fix invalid data
  });
  circuit.lines.forEach(function (line) {
    if (name2Id[line.u]) {
      line.u = name2Id[line.u];
    }

    if (name2Id[line.v]) {
      line.v = name2Id[line.v];
    }
  });
  circuit.lines = circuit.lines.filter(function (line) {
    if (!idList[line.u] || !idList[line.v]) {
      if (window.ABSOL_DEBUG) console.error("invalid line ", line);
    }

    return idList[line.u] && idList[line.v];
  });
  circuit.diagram.includedBlocks = circuit.diagram.includedBlocks.filter(function (id) {
    return idList[id];
  });
  return {
    app: _R.default.APP,
    version: version,
    layout: layout,
    circuit: circuit
  };
};

FlexFormEditor.prototype.explicitData = function (data) {
  data = (0, _generator.replaceDateStringJSVariable)(data);
  var id2Name = {};
  var nameList = {};

  function visit(node) {
    var name = node.attributes && node.attributes.name;
    var id = node.attributes && node.attributes.id;

    if (id && name && !nameList[name]) {
      nameList[name] = true;
      id2Name[id] = name;
    }

    if (node.children) node.children.forEach(visit);
  }

  visit(data.layout);
  data.circuit && data.circuit.blocks && data.circuit.blocks.forEach(visit);
  data.circuit && data.circuit.lines && data.circuit.lines.forEach(function (line) {
    if (id2Name[line.u]) line.u = id2Name[line.u];
    if (id2Name[line.v]) line.v = id2Name[line.v];
  });
  return data;
};

FlexFormEditor.prototype.createView = function () {
  this.$tabFrames = [(0, _FCore._)({
    tag: 'tabframe',
    child: this.layoutEditor.getView()
  }), (0, _FCore._)({
    tag: 'tabframe',
    child: this.blockEditor.getView()
  }), (0, _FCore._)({
    tag: 'tabframe',
    child: this.diagramEditor.getView()
  }), (0, _FCore._)({
    tag: 'tabframe',
    child: this.fdEditor.getView()
  })];
  this.$view = (0, _FCore._)({
    class: 'as-flex-form-editor',
    child: [{
      class: 'as-flex-form-editor-right-tab',
      child: [{
        class: 'as-flex-form-editor-right-tab-top',
        child: [{
          tag: 'button',
          class: 'as-form-editor-vertical-tab-btn',
          child: ['span.mdi.mdi-view-quilt[style="color:rgb(30, 100, 255)"]', {
            text: 'Layout'
          }],
          on: {
            click: this.activeEditorTab.bind(this, 0)
          }
        }, {
          tag: 'button',
          class: 'as-form-editor-vertical-tab-btn',
          child: ['mdi-shape', {
            text: 'Blocks'
          }],
          on: {
            click: this.activeEditorTab.bind(this, 1)
          }
        }, {
          tag: 'button',
          class: 'as-form-editor-vertical-tab-btn',
          child: ['span.mdi.mdi-transit-connection-variant[style="color:rgb(255, 100, 50)"]', {
            text: 'Lines'
          }],
          on: {
            click: this.activeEditorTab.bind(this, 2)
          }
        }, {
          tag: 'button',
          class: 'as-form-editor-vertical-tab-btn',
          style: !window['ABSOL_DEBUG'] ? {
            display: 'none'
          } : {},
          child: ['span.mdi.mdi-text-recognition[style="color:rgb(50, 100, 255)"]', {
            text: 'Wysiwyg(Test)'
          }],
          on: {
            click: this.activeEditorTab.bind(this, 3)
          }
        }]
      }]
    }, {
      tag: 'frameview',
      class: 'as-flex-form-editor-frame-view',
      child: this.$tabFrames
    }]
  });
  this.$tabBtns = (0, _FCore.$$)('.as-flex-form-editor-right-tab-top > button', this.$view);
  this.$frameView = (0, _FCore.$)('.as-flex-form-editor-frame-view', this.$view); // console.log(this.$tabFrames[0]);

  this.activeEditorTab(0);
};

FlexFormEditor.prototype.activeEditorTab = function (idx) {
  if (this._activatedEditorIdx === idx) return;
  this._activatedEditorIdx = idx;

  for (var i = 0; i < this.$tabFrames.length; ++i) {
    if (i === idx) {
      this.$tabFrames[i].requestActive();

      if (!this.$tabBtns[i].hasClass('active')) {
        this.$tabBtns[i].addClass('active');

        if (this.state === "RUNNING") {
          this.subEditors[i].start();
        }
      }
    } else {
      if (this.$tabBtns[i].hasClass('active')) {
        this.$tabBtns[i].removeClass('active');
        if (this.state === "RUNNING") this.subEditors[i].pause();
      }
    }
  }
};

FlexFormEditor.prototype.onAttached = function () {
  this.layoutEditor.attach(this);
  this.blockEditor.attach(this);
  this.diagramEditor.attach(this);
  this.fdEditor.attach(this);
};

FlexFormEditor.prototype.onStart = function () {
  /****
   *
   * @type {FormEditor}
   */
  this.formEditor = this.getContext(_R.default.FORM_EDITOR);
  this.selfHolder = this.formEditor.getEditorHolderByEditor(this);
  this.layoutEditor.start(true);
  this.blockEditor.start(true);
  this.diagramEditor.start(true);
  this.fdEditor.start(true); // this.flexFormOutline.start();
};

FlexFormEditor.prototype.onResume = function () {
  if (this._activatedEditorIdx >= 0) {
    this.subEditors[this._activatedEditorIdx].resume();
  }

  this.outline = this.getContext(_R.default.COMPONENT_OUTLINE);
  if (this.outline) this.outline.delegate = this.outlineDelegate;
};

FlexFormEditor.prototype.onPause = function () {
  if (this._activatedEditorIdx >= 0) this.subEditors[this._activatedEditorIdx].pause();
};

FlexFormEditor.prototype.onStop = function () {
  this.layoutEditor.stop();
  this.blockEditor.stop();
  this.diagramEditor.stop(); // this.flexFormOutline.stop();
};

FlexFormEditor.prototype.onDestroy = function () {
  this.layoutEditor.destroy();
  this.blockEditor.destroy();
  this.diagramEditor.destroy();
};

FlexFormEditor.prototype.notifyUnsaved = function () {
  this.selfHolder.$tab.modified = true;
};

FlexFormEditor.prototype.notifySaved = function () {
  this.selfHolder.$tab.modified = false;
};

var _default = FlexFormEditor;
/***
 * @extends OutlineDelegate
 * @param {FlexFormEditor} editor
 * @constructor
 */

exports.default = _default;

function FlexFormOutlineDelegate(editor) {
  this.editor = editor;

  _FOutline.OutlineDelegate.call(this);

  this.layoutOutlineDelegate = this.editor.layoutEditor.outlineDelegate;
  this.layoutOutlineDelegate.partner = this;
  this.fdLayoutOutlineDelegate = this.editor.fdEditor.outlineDelegate;
  this.fdLayoutOutlineDelegate.partner = this;
}

_OOP.default.mixClass(FlexFormOutlineDelegate, _FOutline.OutlineDelegate);

FlexFormOutlineDelegate.prototype.getTreeData = function () {
  return [this.layoutOutlineDelegate, this.fdLayoutOutlineDelegate].reduce((ac, d) => {
    var subTree = d.getTreeData();

    if (subTree instanceof Array) {
      ac.push.apply(ac, subTree);
      subTree.forEach(it => it.ofDelegate = d);
    } else if (subTree) {
      ac.push(subTree);
      subTree.ofDelegate = d;
    }

    return ac;
  }, []);
};

FlexFormOutlineDelegate.prototype._delegateOf = function (nodeElt) {
  var delegate;
  var c = nodeElt;

  while (c && !delegate) {
    delegate = c.data && c.data.ofDelegate;
    c = c.parentElement;
  }

  return delegate || null;
};

FlexFormOutlineDelegate.prototype.getNodeContextMenu = function (nodeElt) {
  var delegate = this._delegateOf(nodeElt);

  if (delegate) {
    return delegate.getNodeContextMenu(nodeElt);
  }
};

FlexFormOutlineDelegate.prototype.getSelectedIdList = function () {
  return this.layoutOutlineDelegate.getSelectedIdList();
};

FlexFormOutlineDelegate.prototype.onNodeSelectContextMenu = function (nodeElt, menuItem, event) {
  var delegate = this._delegateOf(nodeElt);

  if (delegate) {
    return delegate.onNodeSelectContextMenu(nodeElt, menuItem, event);
  }
};

FlexFormOutlineDelegate.prototype.onClickNode = function (nodeElt, event) {
  if (nodeElt.data.id) {
    this.layoutOutlineDelegate.onClickNode(nodeElt, event);
  }
};

VaKeR 2022