Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/js/landing/node/tableeditor/dist/
Upload File :
Current File : /var/www/homesaver/www/bitrix/js/landing/node/tableeditor/dist/tableeditor.bundle.js

this.BX = this.BX || {};
this.BX.Landing = this.BX.Landing || {};
this.BX.Landing.Node = this.BX.Landing.Node || {};
(function (exports,ui_draganddrop_draggable,main_core) {
	'use strict';

	function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
	function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
	function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
	var TableEditor = /*#__PURE__*/function () {
	  function TableEditor(node, textNode) {
	    babelHelpers.classCallCheck(this, TableEditor);
	    this.textNode = textNode;
	    this.table = node.querySelector('.landing-table');
	    if (!this.table) {
	      return;
	    }
	    this.node = node;
	    this.tBody = this.node.getElementsByTagName('tbody')[0];
	    this.addTitles(this.node);
	    this.enableEditCells(this.table);
	    this.dragAndDropRows(this);
	    this.dragAndDropCols(this);
	    this.resizeColumn(this);
	    this.buildLines(this);
	    this.addRow(this);
	    this.addCol(this);
	    this.onUnselect(this);
	    this.unselect(this);
	    this.selectAll(this);
	    this.selectRow(this);
	    this.selectCol(this);
	    this.onCopyTable(this);
	    this.onDeleteElementTable(this);
	    this.onShowPopupMenu(this);
	  }
	  babelHelpers.createClass(TableEditor, [{
	    key: "addTitles",
	    value: function addTitles(tableNode) {
	      if (!tableNode.hasAttribute('title-added')) {
	        tableNode.title = '';
	        tableNode.querySelector('.landing-table-th-select-all').title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_SELECT_TABLE'));
	        tableNode.querySelectorAll('.landing-table-div-col-dnd').forEach(function (element) {
	          element.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_DND_COLS'));
	        });
	        tableNode.querySelectorAll('.landing-table-col-resize').forEach(function (element) {
	          element.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_RESIZE_COLS'));
	        });
	        tableNode.querySelectorAll('.landing-table-col-add').forEach(function (element) {
	          element.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_BUTTON_ADD_COL'));
	        });
	        tableNode.querySelectorAll('.landing-table-row-dnd').forEach(function (element) {
	          element.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_DND_ROWS'));
	        });
	        tableNode.querySelectorAll('.landing-table-row-add').forEach(function (element) {
	          element.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_BUTTON_ADD_ROW'));
	        });
	        tableNode.setAttribute('title-added', 'true');
	      }
	    }
	  }, {
	    key: "unselect",
	    value: function unselect(tableEditor) {
	      var isSelectAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
	      if (tableEditor.table) {
	        if (!isSelectAll) {
	          tableEditor.table.classList.remove('table-selected-all');
	          this.removeClasses(tableEditor.table, 'landing-table-th-select-all-selected');
	          this.removeClasses(tableEditor.table, 'landing-table-cell-selected');
	        }
	        this.removeClasses(tableEditor.table, 'landing-table-row-selected');
	        this.removeClasses(tableEditor.table, 'landing-table-th-selected');
	        this.removeClasses(tableEditor.table, 'landing-table-th-selected-cell');
	        this.removeClasses(tableEditor.table, 'landing-table-th-selected-top');
	        this.removeClasses(tableEditor.table, 'landing-table-th-selected-x');
	        this.removeClasses(tableEditor.table, 'landing-table-tr-selected-left');
	        this.removeClasses(tableEditor.table, 'landing-table-tr-selected-y');
	        this.removeClasses(tableEditor.table, 'landing-table-col-selected');
	        this.removeClasses(tableEditor.table, 'landing-table-tr-selected');
	        this.removeClasses(tableEditor.table, 'table-selected-all-right');
	        this.removeClasses(tableEditor.table, 'table-selected-all-bottom');
	      }
	    }
	  }, {
	    key: "onUnselect",
	    value: function onUnselect(tableEditor) {
	      main_core.Event.bind(tableEditor.table, 'click', function () {
	        var classList = new Set(['landing-table-th-select-all', 'landing-table-row-dnd', 'landing-table-row-add']);
	        var isContains = babelHelpers.toConsumableArray(event.target.classList).some(function (className) {
	          return classList.has(className);
	        });
	        if (!isContains) {
	          var classListChild = new Set(['landing-table-col-dnd']);
	          isContains = babelHelpers.toConsumableArray(event.target.parentElement.classList).some(function (className) {
	            return classListChild.has(className);
	          });
	          if (!isContains) {
	            tableEditor.unselect(tableEditor);
	          }
	        }
	      });
	    }
	  }, {
	    key: "selectAll",
	    value: function selectAll(tableEditor) {
	      var thTech = tableEditor.table.querySelector('.landing-table-th-select-all');
	      main_core.Event.bind(thTech, 'click', function () {
	        var isSelectedTable = false;
	        if (tableEditor.table.classList.contains('table-selected-all')) {
	          isSelectedTable = true;
	        }
	        tableEditor.unselect(tableEditor, true);
	        var setRows = tableEditor.table.querySelectorAll('.landing-table-tr');
	        var count = 0;
	        setRows.forEach(function (row) {
	          var setTh = row.childNodes;
	          var index = 0;
	          var lastThIndex = 0;
	          row.childNodes.forEach(function (cell) {
	            if (cell.nodeType === 1) {
	              lastThIndex = index;
	            }
	            index++;
	          });
	          if (count > 0) {
	            var lastTh = setTh[lastThIndex];
	            if (isSelectedTable) {
	              lastTh.classList.remove('table-selected-all-right');
	            } else {
	              lastTh.classList.add('table-selected-all-right');
	            }
	          }
	          count++;
	          if (count === setRows.length) {
	            setTh.forEach(function (th) {
	              if (th.nodeType === 1) {
	                if (isSelectedTable) {
	                  th.classList.remove('table-selected-all-bottom');
	                } else {
	                  th.classList.add('table-selected-all-bottom');
	                }
	              }
	            });
	          }
	        });
	        thTech.classList.toggle('landing-table-th-select-all-selected');
	        tableEditor.table.classList.toggle('table-selected-all');
	        tableEditor.table.querySelectorAll('.landing-table-col-dnd').forEach(function (thDnd) {
	          thDnd.classList.toggle('landing-table-cell-selected');
	        });
	        tableEditor.table.querySelectorAll('.landing-table-row-dnd').forEach(function (trDnd) {
	          trDnd.classList.toggle('landing-table-cell-selected');
	        });
	      });
	    }
	  }, {
	    key: "selectRow",
	    value: function selectRow(tableEditor) {
	      var neededPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
	      var setTrDnd = tableEditor.table.querySelectorAll('.landing-table-row-dnd');
	      if (neededPosition !== null) {
	        var newSetTrDnd = [];
	        newSetTrDnd[0] = setTrDnd[neededPosition];
	        setTrDnd = newSetTrDnd;
	      }
	      setTrDnd.forEach(function (trDnd) {
	        main_core.Event.bind(trDnd, 'click', function () {
	          if (!event.target.classList.contains('landing-table-row-add')) {
	            tableEditor.unselect(tableEditor);
	            var setTh = trDnd.parentElement.childNodes;
	            var count = 0;
	            setTh.forEach(function (th) {
	              if (th.nodeType === 1) {
	                if (count === 1) {
	                  th.classList.add('landing-table-tr-selected-left');
	                }
	                if (count >= 1) {
	                  th.classList.add('landing-table-tr-selected-y');
	                }
	                count++;
	              }
	            });
	            trDnd.parentElement.classList.add('landing-table-row-selected');
	            tableEditor.tBody.classList.add('landing-table-tr-selected');
	          }
	        });
	      });
	    }
	  }, {
	    key: "selectCol",
	    value: function selectCol(tableEditor) {
	      var neededPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
	      var setThDnd = tableEditor.table.querySelectorAll('.landing-table-col-dnd');
	      if (neededPosition !== null) {
	        var newSetTrDnd = [];
	        newSetTrDnd[0] = setThDnd[neededPosition];
	        setThDnd = newSetTrDnd;
	      }
	      setThDnd.forEach(function (thDnd) {
	        main_core.Event.bind(thDnd, 'click', function () {
	          if (!event.target.classList.contains('landing-table-col-add') && !event.target.classList.contains('landing-table-col-resize')) {
	            tableEditor.unselect(tableEditor);
	            var cellIndex = thDnd.cellIndex;
	            var count = 0;
	            tableEditor.tBody.childNodes.forEach(function (tr) {
	              if (tr.nodeType === 1) {
	                var countNode = 0;
	                var nodeCount = 0;
	                var needNodePosition = 0;
	                tr.childNodes.forEach(function (trChild) {
	                  if (trChild.nodeType === 1) {
	                    if (cellIndex === nodeCount) {
	                      needNodePosition = countNode;
	                    }
	                    nodeCount++;
	                  }
	                  countNode++;
	                });
	                if (count === 0) {
	                  tr.classList.add('landing-table-col-selected');
	                  tr.childNodes[needNodePosition].classList.add('landing-table-th-selected-cell');
	                }
	                if (count === 1) {
	                  tr.childNodes[needNodePosition].classList.add('landing-table-th-selected-top');
	                }
	                if (count >= 1) {
	                  tr.childNodes[needNodePosition].classList.add('landing-table-th-selected-x');
	                }
	                count++;
	                tr.childNodes[needNodePosition].classList.add('landing-table-th-selected');
	              }
	            });
	          }
	        });
	      });
	    }
	  }, {
	    key: "buildLines",
	    value: function buildLines(tableEditor) {
	      if (tableEditor.node) {
	        var width = tableEditor.node.querySelector('.landing-table').getBoundingClientRect().width;
	        var height = tableEditor.node.querySelector('.landing-table').getBoundingClientRect().height;
	        var offset = 5;
	        var linesX = document.querySelectorAll('.landing-table-row-add-line');
	        linesX.forEach(function (lineX) {
	          lineX.style.width = "".concat(width + offset, "px");
	        });
	        var linesY = document.querySelectorAll('.landing-table-col-add-line');
	        linesY.forEach(function (lineY) {
	          lineY.style.height = "".concat(height + offset, "px");
	        });
	      }
	    }
	  }, {
	    key: "getButtonsAddRow",
	    value: function getButtonsAddRow(node) {
	      return node.querySelectorAll('.landing-table-row-add');
	    }
	  }, {
	    key: "addRow",
	    value: function addRow(tableEditor) {
	      var _this = this;
	      var neededPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
	      var buttons = tableEditor.getButtonsAddRow(tableEditor.node);
	      if (neededPosition === null) {
	        buttons = Array.prototype.slice.call(buttons, 0);
	      } else {
	        var button = buttons[neededPosition];
	        buttons = [];
	        buttons[0] = button;
	      }
	      buttons = Array.prototype.slice.call(buttons, 0);
	      buttons.forEach(function (button) {
	        main_core.Event.bind(button, 'click', function () {
	          var selectedCell = tableEditor.table.querySelector('.landing-table-th-selected-cell');
	          var selectedCellPos = 0;
	          var nodeCount = 0;
	          if (selectedCell) {
	            selectedCell.parentNode.childNodes.forEach(function (node) {
	              if (selectedCellPos === 0 && node === selectedCell) {
	                selectedCellPos = nodeCount;
	              }
	              if (node.nodeType === 1) {
	                nodeCount++;
	              }
	            });
	          }
	          var trDnd = document.createElement('th');
	          trDnd.classList.add('landing-table-th', 'landing-table-row-dnd');
	          if (tableEditor.table.classList.contains('table-selected-all')) {
	            trDnd.classList.add('landing-table-cell-selected');
	          }
	          var row = button.parentNode.parentNode;
	          var neededPosition = babelHelpers.toConsumableArray(row.parentNode.children).indexOf(button.parentNode.parentNode);
	          var count = 0;
	          var lastElementPosition = 0;
	          tableEditor.tBody.childNodes.forEach(function (element) {
	            if (element.nodeType === 1) {
	              lastElementPosition = count;
	            }
	            count++;
	          });
	          var tr = tableEditor.tBody.childNodes[lastElementPosition];
	          var newTd = document.createElement('td');
	          newTd.classList.add('landing-table-th', 'landing-table-td');
	          newTd.style.width = '50px';
	          var table = tableEditor.node.querySelector('.landing-table');
	          if (table.hasAttribute('bg-color')) {
	            newTd.style.backgroundColor = table.getAttribute('bg-color');
	          }
	          if (table.hasAttribute('text-color')) {
	            newTd.style.color = table.getAttribute('text-color');
	          }
	          var newTr = document.createElement('tr');
	          newTr.classList.add('landing-table-tr');
	          trDnd.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_DND_ROWS'));
	          trDnd.style.width = '16px';
	          var divAddRow = document.createElement('div');
	          divAddRow.classList.add('landing-table-row-add');
	          divAddRow.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_BUTTON_ADD_COL'));
	          var divLineX = document.createElement('div');
	          divLineX.classList.add('landing-table-row-add-line');
	          var divRowDnd = document.createElement('div');
	          divRowDnd.classList.add('landing-table-div-row-dnd');
	          divAddRow.appendChild(divLineX);
	          trDnd.appendChild(divAddRow);
	          trDnd.appendChild(divRowDnd);
	          if (tr) {
	            var _count = tr.children.length;
	            var setTd = [];
	            button.parentNode.parentNode.childNodes.forEach(function (item) {
	              if (item.nodeType === 1) {
	                setTd.push(item);
	              }
	            });
	            for (var i = 0; i < _count; i++) {
	              var newTdCloned = newTd.cloneNode(true);
	              if (i === selectedCellPos) {
	                newTdCloned.classList.add('landing-table-th-selected', 'landing-table-th-selected-x');
	              }
	              if (i === 0) {
	                newTr.appendChild(trDnd);
	              } else {
	                newTdCloned.style.width = setTd[i].style.width;
	                newTdCloned.style.height = setTd[i].style.height;
	                newTr.appendChild(newTdCloned);
	              }
	            }
	          }
	          button.parentNode.parentNode.parentNode.insertBefore(newTr, button.parentNode.parentNode.nextSibling);
	          tableEditor.buildLines(tableEditor);
	          tableEditor.enableEditCells(tableEditor.node);
	          _this.textNode.onChange(true);
	          tableEditor.selectRow(tableEditor, neededPosition);
	          tableEditor.addRow(tableEditor, neededPosition);
	          tableEditor.unselect(tableEditor);
	          BX.Landing.UI.Panel.EditorPanel.getInstance().hide();
	        });
	      });
	    }
	  }, {
	    key: "getButtonsAddCol",
	    value: function getButtonsAddCol(node) {
	      return node.querySelectorAll('.landing-table-col-add');
	    }
	  }, {
	    key: "addCol",
	    value: function addCol(tableEditor) {
	      var _this2 = this;
	      var neededPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
	      var buttons = tableEditor.getButtonsAddCol(tableEditor.node);
	      if (neededPosition === null) {
	        buttons = Array.prototype.slice.call(buttons, 0);
	      } else {
	        var button = buttons[neededPosition];
	        buttons = [];
	        buttons[0] = button;
	      }
	      buttons.forEach(function (button) {
	        main_core.Event.bind(button, 'click', function () {
	          var selectedRow = tableEditor.table.querySelector('.landing-table-row-selected');
	          var selectedRowPos = 0;
	          var countNode = 0;
	          if (selectedRow) {
	            selectedRow.parentNode.childNodes.forEach(function (node) {
	              if (node === selectedRow && selectedRowPos === 0) {
	                selectedRowPos = countNode;
	              }
	              if (node.nodeType === 1) {
	                countNode++;
	              }
	            });
	          }
	          var newThFirst;
	          var newThFirstCloned;
	          newThFirst = document.createElement('th');
	          newThFirst.classList.add('landing-table-th', 'landing-table-col-dnd');
	          newThFirst.style.width = '50px';
	          if (tableEditor.table.classList.contains('table-selected-all')) {
	            newThFirst.classList.add('landing-table-cell-selected');
	          }
	          var row = button.parentNode.parentNode;
	          var position = babelHelpers.toConsumableArray(row.children).indexOf(button.parentNode);
	          if (tableEditor.tBody.childNodes.length > 0) {
	            var count = 0;
	            tableEditor.tBody.childNodes.forEach(function (element) {
	              if (element.nodeType === 1) {
	                newThFirstCloned = newThFirst.cloneNode(true);
	                var divColumnDnd = document.createElement('div');
	                divColumnDnd.classList.add('landing-table-div-col-dnd');
	                divColumnDnd.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_DND_COLS'));
	                var divColumnResize = document.createElement('div');
	                divColumnResize.classList.add('landing-table-col-resize');
	                divColumnResize.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_RESIZE_COLS'));
	                var divAddColHere = document.createElement('div');
	                divAddColHere.classList.add('landing-table-col-add');
	                divAddColHere.title = BX.Landing.Utils.escapeText(BX.Landing.Loc.getMessage('LANDING_TABLE_BUTTON_ADD_COL'));
	                var divLineY = document.createElement('div');
	                divLineY.classList.add('landing-table-col-add-line');
	                divAddColHere.appendChild(divLineY);
	                newThFirstCloned.appendChild(divColumnDnd);
	                newThFirstCloned.appendChild(divColumnResize);
	                newThFirstCloned.appendChild(divAddColHere);
	                var newTd = document.createElement('td');
	                newTd.classList.add('landing-table-th', 'landing-table-td');
	                newTd.style.width = '50px';
	                var table = tableEditor.node.querySelector('.landing-table');
	                if (table.hasAttribute('bg-color')) {
	                  newTd.style.backgroundColor = table.getAttribute('bg-color');
	                }
	                if (table.hasAttribute('text-color')) {
	                  newTd.style.color = table.getAttribute('text-color');
	                }
	                if (selectedRowPos > 0 && selectedRowPos === count) {
	                  newTd.classList.add('landing-table-tr-selected-y');
	                }
	                var countChild = 0;
	                var countNodes = 0;
	                var newNeededPosition = 0;
	                element.childNodes.forEach(function (node) {
	                  if (node.nodeType === 1) {
	                    if (countNodes === position) {
	                      newNeededPosition = countChild;
	                    }
	                    countNodes++;
	                  }
	                  countChild++;
	                });
	                if (count === 0) {
	                  element.childNodes[newNeededPosition].parentNode.insertBefore(newThFirstCloned, element.childNodes[newNeededPosition].nextSibling);
	                } else {
	                  element.childNodes[newNeededPosition].parentNode.insertBefore(newTd, element.childNodes[newNeededPosition].nextSibling);
	                }
	                count++;
	              }
	            });
	          }
	          tableEditor.buildLines(tableEditor);
	          tableEditor.enableEditCells(tableEditor.node);
	          _this2.textNode.onChange(true);
	          tableEditor.selectCol(tableEditor, position);
	          tableEditor.addCol(tableEditor, position);
	          tableEditor.unselect(tableEditor);
	          BX.Landing.UI.Panel.EditorPanel.getInstance().hide();
	        });
	      });
	    }
	  }, {
	    key: "dragAndDropRows",
	    value: function dragAndDropRows(tableEditor) {
	      var _this3 = this;
	      this.draggableRows = new ui_draganddrop_draggable.Draggable({
	        container: tableEditor.tBody,
	        draggable: '.landing-table-tr',
	        dragElement: '.landing-table-row-dnd',
	        type: ui_draganddrop_draggable.Draggable.HEADLESS
	      });
	      var rows = [];
	      var setRowPositionsY;
	      var setRowHeights;
	      var currentPositionRow;
	      var newPositionRow = 0;
	      var draggableRowOffsetY;
	      var tablePositionLeft;
	      var tablePositionTop;
	      var currentPositionRowX;
	      var currentPositionRowY;
	      var cloneRow;
	      var originalSource;
	      this.draggableRows.subscribe('start', function (event) {
	        originalSource = _this3.draggableRows.dragStartEvent.data.originalSource;
	        tablePositionLeft = tableEditor.tBody.getBoundingClientRect().left;
	        tablePositionTop = tableEditor.tBody.getBoundingClientRect().top;
	        setRowPositionsY = [];
	        setRowHeights = [];
	        draggableRowOffsetY = 0;
	        currentPositionRow = event.getData().sourceIndex;
	        rows = tableEditor.tBody.querySelectorAll('.landing-table-tr');
	        rows.forEach(function (row) {
	          setRowPositionsY.push(row.getBoundingClientRect().y);
	          setRowHeights.push(row.getBoundingClientRect().height);
	        });
	        currentPositionRowX = rows[currentPositionRow].getBoundingClientRect().x;
	        currentPositionRowY = rows[currentPositionRow].getBoundingClientRect().y;
	        cloneRow = document.createElement('tr');
	        cloneRow.classList.add('landing-table-tr-draggable');
	        rows[currentPositionRow].childNodes.forEach(function (node) {
	          cloneRow.append(node.cloneNode(true));
	        });
	        if (rows[currentPositionRow].classList.contains('landing-table-row-selected')) {
	          cloneRow.classList.add('landing-table-row-selected');
	        }
	        var indexFirstNode;
	        var count = 0;
	        while (!indexFirstNode) {
	          if (rows[currentPositionRow].childNodes[count].nodeType === 1) {
	            indexFirstNode = count;
	          }
	          count++;
	        }
	        cloneRow.childNodes[indexFirstNode].style.borderRadius = getComputedStyle(rows[currentPositionRow].childNodes[indexFirstNode]).borderRadius;
	      }).subscribe('move', function (event) {
	        if (!originalSource.classList.contains('landing-table-row-add')) {
	          tableEditor.tBody.classList.add('landing-table-draggable');
	          rows[currentPositionRow].classList.add('landing-table-tr-taken');
	          draggableRowOffsetY = event.getData().offsetY;
	          tableEditor.tBody.append(cloneRow);
	          cloneRow.style.position = 'absolute';
	          cloneRow.style.top = "".concat(currentPositionRowY - tablePositionTop + draggableRowOffsetY - 0.5, "px");
	          cloneRow.style.left = "".concat(currentPositionRowX - tablePositionLeft - 0.5, "px");
	          if (draggableRowOffsetY > 0) {
	            cloneRow.style.transform = 'rotate(-1deg)';
	          } else {
	            cloneRow.style.transform = 'rotate(1deg)';
	          }
	        }
	      }).subscribe('end', function () {
	        cloneRow.remove();
	        rows[currentPositionRow].classList.remove('landing-table-tr-taken');
	        rows[currentPositionRow].style = '';
	        var newDraggableRowPositionY = currentPositionRowY + draggableRowOffsetY;
	        var newDraggableRowPositionBottomY = newDraggableRowPositionY + rows[currentPositionRow].getBoundingClientRect().height;
	        if (draggableRowOffsetY < 0) {
	          var _iterator = _createForOfIteratorHelper(setRowPositionsY.entries()),
	            _step;
	          try {
	            for (_iterator.s(); !(_step = _iterator.n()).done;) {
	              var _step$value = babelHelpers.slicedToArray(_step.value, 2),
	                i = _step$value[0],
	                transitivePositionY = _step$value[1];
	              if (i === currentPositionRow) {
	                transitivePositionY -= setRowHeights[i - 1] / 2;
	              }
	              if (newDraggableRowPositionY >= transitivePositionY) {
	                newPositionRow = i;
	              }
	            }
	          } catch (err) {
	            _iterator.e(err);
	          } finally {
	            _iterator.f();
	          }
	        }
	        if (draggableRowOffsetY === 0) {
	          newPositionRow = currentPositionRow;
	        }
	        if (draggableRowOffsetY > 0) {
	          var _iterator2 = _createForOfIteratorHelper(setRowPositionsY.entries()),
	            _step2;
	          try {
	            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
	              var _step2$value = babelHelpers.slicedToArray(_step2.value, 2),
	                _i = _step2$value[0],
	                element = _step2$value[1];
	              var _transitivePositionY = element + setRowHeights[_i] / 2;
	              if (_i === currentPositionRow) {
	                _transitivePositionY = element;
	              }
	              if (newDraggableRowPositionBottomY >= _transitivePositionY) {
	                newPositionRow = _i;
	              }
	            }
	          } catch (err) {
	            _iterator2.e(err);
	          } finally {
	            _iterator2.f();
	          }
	        }

	        // draggable row can only be in the 1 position, 0 position for technical row
	        if (newPositionRow === 0) {
	          newPositionRow++;
	        }

	        // need to move
	        if (currentPositionRow !== newPositionRow) {
	          var referenceNode = null;
	          var referenceNodeNext = null;
	          if (rows[newPositionRow]) {
	            referenceNode = rows[newPositionRow];
	            referenceNodeNext = referenceNode.nextSibling;
	            while (referenceNodeNext && referenceNodeNext.nodeType !== 1) {
	              referenceNodeNext = referenceNodeNext.nextSibling;
	            }
	          }
	          if (currentPositionRow > newPositionRow) {
	            tableEditor.tBody.insertBefore(rows[currentPositionRow], referenceNode);
	          }
	          if (currentPositionRow < newPositionRow) {
	            tableEditor.tBody.insertBefore(rows[currentPositionRow], referenceNodeNext);
	          }
	        }
	        tableEditor.tBody.classList.remove('landing-table-draggable');
	        _this3.textNode.onChange(true);
	      });
	    }
	  }, {
	    key: "dragAndDropCols",
	    value: function dragAndDropCols(tableEditor) {
	      var _this4 = this;
	      this.draggableCols = new ui_draganddrop_draggable.Draggable({
	        container: tableEditor.tBody,
	        draggable: '.landing-table-div-col-dnd',
	        type: ui_draganddrop_draggable.Draggable.HEADLESS
	      });
	      var currentPositionCol;
	      var newPositionCol = 0;
	      var draggableColOffsetX;
	      var draggableColOffsetY;
	      var setColCells = [];
	      var setColPositionsX;
	      var setColWidths;
	      var setRows;
	      var tablePositionLeft;
	      var currentPositionColX;
	      var setColCellsStyles;
	      var draggableCol;
	      this.draggableCols.subscribe('start', function (event) {
	        tablePositionLeft = tableEditor.tBody.getBoundingClientRect().left;
	        setColPositionsX = [];
	        setColWidths = [];
	        setColCellsStyles = [];
	        draggableColOffsetX = 0;
	        draggableColOffsetY = 0;
	        currentPositionCol = event.getData().originalSource.parentNode.cellIndex;
	        if (currentPositionCol) {
	          setColCells = babelHelpers.toConsumableArray(tableEditor.tBody.querySelectorAll('.landing-table-tr')).map(function (row) {
	            return row.children[currentPositionCol];
	          });
	          setRows = tableEditor.tBody.querySelectorAll('.landing-table-tr');
	          setRows[0].childNodes.forEach(function (thOfFirstRow) {
	            if (thOfFirstRow.nodeType === 1) {
	              setColPositionsX.push(thOfFirstRow.getBoundingClientRect().x);
	              setColWidths.push(thOfFirstRow.getBoundingClientRect().width);
	            }
	          });
	        }
	        currentPositionColX = setColCells[0].getBoundingClientRect().x;
	        draggableCol = document.createElement('div');
	        setColCells.forEach(function (cell) {
	          setColCellsStyles.push(cell.getAttribute('style'));
	          draggableCol.append(cell.cloneNode(true));
	          draggableCol.lastChild.style.borderRadius = getComputedStyle(cell).borderRadius;
	          draggableCol.lastChild.style.height = "".concat(cell.getBoundingClientRect().height, "px");
	          draggableCol.lastChild.style.width = "".concat(cell.getBoundingClientRect().width, "px");
	        });
	        draggableCol.hidden = true;
	        draggableCol.classList.add('landing-table-col-draggable');
	        tableEditor.tBody.append(draggableCol);
	      }).subscribe('move', function (event) {
	        tableEditor.tBody.classList.add('landing-table-draggable');
	        setColCells.forEach(function (cell) {
	          cell.classList.add('landing-table-col-taken');
	        });
	        draggableColOffsetX = event.getData().offsetX;
	        draggableColOffsetY = event.getData().offsetY;
	        draggableCol.hidden = false;
	        draggableCol.style.position = 'absolute';
	        draggableCol.style.left = "".concat(currentPositionColX - tablePositionLeft + draggableColOffsetX, "px");
	        draggableCol.style.top = "".concat(0, "px");
	        if (draggableColOffsetX < 0) {
	          draggableCol.style.transform = 'rotate(-1deg)';
	        }
	        if (draggableColOffsetX > 0) {
	          draggableCol.style.transform = 'rotate(1deg)';
	        }
	      }).subscribe('end', function () {
	        draggableCol.remove();
	        setColCells.forEach(function (cell) {
	          cell.hidden = false;
	        });
	        if (currentPositionCol) {
	          var newDraggableColPositionX = setColPositionsX[currentPositionCol] + draggableColOffsetX;
	          var newDraggableColPositionRightX = setColPositionsX[currentPositionCol] + draggableColOffsetX + setColCells[0].getBoundingClientRect().width;
	          var i = 0;
	          setColCells.forEach(function (cell) {
	            cell.style = setColCellsStyles[i];
	            cell.classList.remove('landing-table-col-taken');
	            i++;
	          });
	          if (draggableColOffsetX < 0) {
	            var _iterator3 = _createForOfIteratorHelper(setColPositionsX.entries()),
	              _step3;
	            try {
	              for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
	                var _step3$value = babelHelpers.slicedToArray(_step3.value, 2),
	                  _i2 = _step3$value[0],
	                  transitivePositionX = _step3$value[1];
	                if (_i2 > 0) {
	                  transitivePositionX -= setColWidths[_i2 - 1] / 2;
	                }
	                if (newDraggableColPositionX > transitivePositionX) {
	                  newPositionCol = _i2;
	                }
	              }
	            } catch (err) {
	              _iterator3.e(err);
	            } finally {
	              _iterator3.f();
	            }
	          }
	          if (draggableColOffsetX === 0) {
	            newPositionCol = currentPositionCol;
	          }
	          if (draggableColOffsetX > 0) {
	            var _iterator4 = _createForOfIteratorHelper(setColPositionsX.entries()),
	              _step4;
	            try {
	              for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
	                var _step4$value = babelHelpers.slicedToArray(_step4.value, 2),
	                  _i3 = _step4$value[0],
	                  element = _step4$value[1];
	                var _transitivePositionX = element + setColWidths[_i3] / 2;
	                if (_i3 === currentPositionCol) {
	                  _transitivePositionX = element;
	                }
	                if (newDraggableColPositionRightX > _transitivePositionX) {
	                  newPositionCol = _i3;
	                }
	              }
	            } catch (err) {
	              _iterator4.e(err);
	            } finally {
	              _iterator4.f();
	            }
	          }

	          // draggable col can only be in the 1 position, 0 position for technical
	          if (newPositionCol === 0) {
	            newPositionCol++;
	          }
	          if (currentPositionCol !== newPositionCol) {
	            setRows.forEach(function (row) {
	              var childCells = [];
	              row.childNodes.forEach(function (th) {
	                if (th.nodeType === 1) {
	                  childCells.push(th);
	                }
	              });
	              var referenceNode = null;
	              var referenceNodeNext = null;
	              if (childCells[newPositionCol]) {
	                referenceNode = childCells[newPositionCol];
	                referenceNodeNext = referenceNode.nextSibling;
	                while (referenceNodeNext && referenceNodeNext.nodeType !== 1) {
	                  referenceNodeNext = referenceNodeNext.nextSibling;
	                }
	              }
	              if (currentPositionCol > newPositionCol) {
	                row.insertBefore(childCells[currentPositionCol], referenceNode);
	              }
	              if (currentPositionCol < newPositionCol) {
	                row.insertBefore(childCells[currentPositionCol], referenceNodeNext);
	              }
	            });
	          }
	          tableEditor.tBody.classList.remove('landing-table-draggable');
	          _this4.textNode.onChange(true);
	        }
	      });
	    }
	  }, {
	    key: "resizeColumn",
	    value: function resizeColumn(tableEditor) {
	      var _this5 = this;
	      var tbody = this.tBody;
	      this.resizeElement = new ui_draganddrop_draggable.Draggable({
	        container: tbody,
	        draggable: '.landing-table-col-resize',
	        type: ui_draganddrop_draggable.Draggable.HEADLESS
	      });
	      var thWidth;
	      var setTh;
	      this.resizeElement.subscribe('start', function (event) {
	        setTh = [];
	        var th = event.getData().draggable.parentNode;
	        thWidth = th.getBoundingClientRect().width;
	        var currentPosition = th.cellIndex;
	        var setTr = tbody.querySelectorAll('.landing-table-tr');
	        setTr.forEach(function (tr) {
	          setTh.push(tr.children[currentPosition]);
	        });
	      }).subscribe('move', function (event) {
	        var offsetX = event.getData().offsetX;
	        var thNewWidth = thWidth + offsetX;
	        setTh.forEach(function (th) {
	          BX.Dom.style(th, 'width', "".concat(thNewWidth, "px"));
	        });
	      }).subscribe('end', function () {
	        var tBodyWidth = tbody.getBoundingClientRect().width;
	        var tableContainerWidth = tbody.parentElement.parentElement.getBoundingClientRect().width;
	        if (tableContainerWidth > tBodyWidth) {
	          tbody.parentElement.parentElement.classList.add('landing-table-scroll-hidden');
	        } else {
	          tbody.parentElement.parentElement.classList.remove('landing-table-scroll-hidden');
	        }
	        tableEditor.buildLines(tableEditor);
	        _this5.textNode.onChange(true);
	      });
	    }
	  }, {
	    key: "enableEditCells",
	    value: function enableEditCells(table) {
	      var thContentList = table.querySelectorAll('.landing-table-td');
	      thContentList.forEach(function (td) {
	        td.setAttribute('contenteditable', 'true');
	      });
	    }
	  }, {
	    key: "removeClasses",
	    value: function removeClasses(element, className) {
	      var setElements = element.querySelectorAll(".".concat(className));
	      setElements.forEach(function (element) {
	        element.classList.remove(className);
	      });
	    }
	  }, {
	    key: "onCopyTable",
	    value: function onCopyTable(tableEditor) {
	      BX.Event.EventEmitter.subscribe('BX.Landing.TableEditor:onCopyTable', function () {
	        tableEditor.unselect(tableEditor);
	        BX.Landing.UI.Panel.EditorPanel.getInstance().hide();
	      });
	    }
	  }, {
	    key: "onShowPopupMenu",
	    value: function onShowPopupMenu(tableEditor) {
	      BX.Event.EventEmitter.subscribe('BX.Landing.PopupMenuWindow:onShow', function () {
	        tableEditor.unselect(tableEditor);
	        BX.Landing.UI.Panel.EditorPanel.getInstance().hide();
	      });
	    }
	  }, {
	    key: "onDeleteElementTable",
	    value: function onDeleteElementTable(tableEditor) {
	      BX.Event.EventEmitter.subscribe('BX.Landing.TableEditor:onDeleteElementTable', function () {
	        tableEditor.buildLines(tableEditor);
	      });
	    }
	  }]);
	  return TableEditor;
	}();

	exports.TableEditor = TableEditor;

}((this.BX.Landing.Node.TableEditor = this.BX.Landing.Node.TableEditor || {}),BX.UI.DragAndDrop,BX));
//# sourceMappingURL=tableeditor.bundle.js.map