WP Table Builder – WordPress Table Plugin - Version 1.2.8

Version Description

  • FIX: Fixed an issue affecting browser caches, forcing them to use old version of js files.
Download this release

Release Info

Developer imtiazrayhan
Plugin Icon 128x128 WP Table Builder – WordPress Table Plugin
Version 1.2.8
Comparing to
See all releases

Code changes from version 1.2.7 to 1.2.8

inc/admin/js/admin.js CHANGED
@@ -1,95 +1,5 @@
1
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2
 
3
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
4
-
5
- var applyGenericItemSettings = function applyGenericItemSettings(element, kindIndexProt) {
6
- var copy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7
-
8
- var node = element.getDOMElement(),
9
- index,
10
- copy;
11
- if (node.classList.contains('wptb-ph-element')) {
12
- if (kindIndexProt == undefined || copy == true) {
13
- //index = document.counter.nextIndex( element.kind );
14
- var wptbElements = document.getElementsByClassName('wptb-ph-element');
15
- var elementIndexesArr = [];
16
- for (var i = 0; i < wptbElements.length; i++) {
17
- var regex = new RegExp('wptb-element-' + element.kind + '-(\\d+)', "i");
18
- var infArr = wptbElements[i].className.match(regex);
19
- if (infArr) {
20
- elementIndexesArr.push(infArr[1]);
21
- }
22
- }
23
- if (elementIndexesArr.length > 0) {
24
- var elementIndexMax = Math.max.apply(Math, elementIndexesArr);
25
- index = elementIndexMax + 1;
26
- } else {
27
- index = 1;
28
- }
29
-
30
- if (copy) {
31
- // change all data-elements which save parameters for different controls
32
- var wptbNodeattributes = [].concat(_toConsumableArray(node.attributes));
33
- for (var _i = 0; _i < wptbNodeattributes.length; _i++) {
34
- if (wptbNodeattributes[_i] && _typeof(wptbNodeattributes[_i]) === 'object' && wptbNodeattributes[_i].nodeName) {
35
- var regularText = new RegExp('data-wptb-el-' + element.kind + '-(\\d+)-([a-zA-Z0-9_-]+)', "i");
36
- var attr = wptbNodeattributes[_i].nodeName.match(regularText);
37
- if (attr && Array.isArray(attr)) {
38
- var newDataAttributeName = wptbNodeattributes[_i].nodeName.replace(element.kind + '-' + attr[1], element.kind + '-' + index);
39
- var newDataAttributeValue = wptbNodeattributes[_i].nodeValue;
40
- node.removeAttribute(wptbNodeattributes[_i].nodeName);
41
- node.setAttribute(newDataAttributeName, newDataAttributeValue);
42
- }
43
- }
44
- }
45
- }
46
- } else if (kindIndexProt && !copy) {
47
- var kindIndexProtArr = kindIndexProt.split('-');
48
- index = kindIndexProtArr[kindIndexProtArr.length - 1];
49
- // start element javascript if element is new
50
- }
51
-
52
- var node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\d+)/i);
53
- if (node_wptb_element_kind_num) {
54
- node.classList.remove(node_wptb_element_kind_num[0]);
55
- }
56
- if (!node.classList.contains('wptb-ph-element')) {
57
- node.classList.add('wptb-ph-element');
58
- if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
59
- node.classList.add('wptb-element-' + element.kind + '-' + index);
60
- }
61
- } else {
62
- if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
63
- node.classList.add('wptb-element-' + element.kind + '-' + index);
64
- }
65
- }
66
- WPTB_Helper.elementStartScript(element.getDOMElement());
67
- new WPTB_ElementOptions(element, index, kindIndexProt);
68
- document.counter.increment(element.kind);
69
- }
70
-
71
- node.onmouseenter = function (event) {
72
- if (event.target.classList.contains('wptb-moving-mode')) {
73
- return;
74
- }
75
-
76
- var wptbActionsField = new WPTB_ActionsField();
77
-
78
- wptbActionsField.addActionField(1, node);
79
-
80
- wptbActionsField.setParameters(node);
81
-
82
- node.classList.remove('wptb-ondragenter');
83
- };
84
-
85
- node.onmouseleave = function (event) {
86
- var wptbActionsField = new WPTB_ActionsField();
87
-
88
- wptbActionsField.leaveFromField(event, node);
89
- };
90
- };
91
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
92
-
93
  var WPTB_ActionsField = function WPTB_ActionsField() {
94
  var _this = this;
95
 
@@ -3461,115 +3371,6 @@ var WPTB_Initializer = function WPTB_Initializer() {
3461
  WPTB_Helper.activateSection('elements');
3462
  });
3463
  };
3464
- var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
3465
-
3466
- element.ondragenter = function (e) {
3467
- var div;
3468
- if (e.dataTransfer.types.indexOf('wptbelement') == -1 && e.dataTransfer.types.indexOf('wptb-moving-mode') == -1) {
3469
- return;
3470
- }
3471
- WPTB_DropHandle(this, e);
3472
-
3473
- element.classList.add('wptb-ondragenter');
3474
- };
3475
- element.ondragover = function (e) {
3476
- e.preventDefault();
3477
- WPTB_DropHandle(this, e);
3478
- };
3479
- element.ondragleave = function (e) {
3480
- WPTB_DropHandle(this, e, true);
3481
- };
3482
- element.ondrop = function (e) {
3483
- this.classList.remove('wptb-ondragenter');
3484
- var element = void 0,
3485
- classId = void 0;
3486
- e.preventDefault();
3487
- e.stopPropagation();
3488
-
3489
- if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {
3490
- return;
3491
- }
3492
- var wptbDropHandle = void 0,
3493
- wptbDropBorderMarker = void 0;
3494
- if (document.getElementsByClassName('wptb-drop-handle').length > 0) {
3495
- wptbDropHandle = document.getElementsByClassName('wptb-drop-handle')[0];
3496
- }
3497
- if (document.getElementsByClassName('wptb-drop-border-marker').length > 0) {
3498
- wptbDropBorderMarker = document.getElementsByClassName('wptb-drop-border-marker')[0];
3499
- }
3500
-
3501
- if (e.dataTransfer.getData('wptbElement')) {
3502
- element = WPTB_Helper.newElementProxy(e.dataTransfer.getData('wptbElement'));
3503
- element = element.getDOMElement();
3504
- } else {
3505
- classId = e.dataTransfer.getData('node');
3506
- element = document.getElementsByClassName(classId)[0];
3507
- //element.classList.remove( 'wptb-moving-mode' );
3508
- }
3509
-
3510
- if (WPTB_Helper.getDragRelativeType() === 'td_relative') {
3511
- WPTB_DropHandle(this, e, true);
3512
- var parentCell = WPTB_Helper.getParentOfType('td', e.target);
3513
-
3514
- parentCell.appendChild(element);
3515
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3516
- } else if (wptbDropHandle.style.display == 'block') {
3517
- var td = void 0;
3518
- if (wptbDropHandle.dataset.text == 'Drop Here') {
3519
- td = wptbDropHandle.getDOMParentElement();
3520
- td.appendChild(element);
3521
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3522
- } else {
3523
- var innerElement = wptbDropHandle.getDOMParentElement();
3524
- td = innerElement.parentNode;
3525
-
3526
- if (wptbDropHandle.dataset.text == 'Above Element') {
3527
- td.insertBefore(element, innerElement);
3528
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3529
- } else if (wptbDropHandle.dataset.text == 'Below Element') {
3530
- var innerElementNext = innerElement.nextSibling;
3531
- td.insertBefore(element, innerElementNext);
3532
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3533
- }
3534
- }
3535
-
3536
- var thisRow = td.parentNode;
3537
- if (WPTB_Helper.rowIsTop(thisRow)) {
3538
- var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
3539
-
3540
- if (table.classList.contains('wptb-table-preview-head')) {
3541
- WPTB_Helper.dataTitleColumnSet(table);
3542
- }
3543
- }
3544
-
3545
- // start item javascript if item is new
3546
- var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
3547
- var elemKind = infArr[1];
3548
- if (e.dataTransfer.getData('wptbElement') && (elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list')) {
3549
- //WPTB_Helper.elementStartScript( element );
3550
- }
3551
- } else {
3552
- return;
3553
- }
3554
-
3555
- if (wptbDropHandle) {
3556
- wptbDropHandle.style.display = 'none';
3557
- wptbDropBorderMarker.style.display = 'none';
3558
- }
3559
-
3560
- WPTB_innerElementSet(element);
3561
-
3562
- if (!element.classList.contains('wptb-image-container') || element.classList.contains('wptb-moving-mode')) {
3563
- element.classList.remove('wptb-moving-mode');
3564
- var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
3565
- wptbTableStateSaveManager.tableStateSet();
3566
- }
3567
- return true;
3568
- };
3569
- element.onmouseover = function (e) {
3570
- element.classList.remove('wptb-ondragenter');
3571
- };
3572
- };
3573
  var WPTB_LeftPanel = function WPTB_LeftPanel() {
3574
 
3575
  var table = document.getElementsByClassName('wptb-preview-table')[0],
@@ -6609,4 +6410,203 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
6609
  }
6610
  };
6611
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6612
  //# sourceMappingURL=admin.js.map
1
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  var WPTB_ActionsField = function WPTB_ActionsField() {
4
  var _this = this;
5
 
3371
  WPTB_Helper.activateSection('elements');
3372
  });
3373
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3374
  var WPTB_LeftPanel = function WPTB_LeftPanel() {
3375
 
3376
  var table = document.getElementsByClassName('wptb-preview-table')[0],
6410
  }
6411
  };
6412
  };
6413
+ var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
6414
+
6415
+ element.ondragenter = function (e) {
6416
+ var div;
6417
+ if (e.dataTransfer.types.indexOf('wptbelement') == -1 && e.dataTransfer.types.indexOf('wptb-moving-mode') == -1) {
6418
+ return;
6419
+ }
6420
+ WPTB_DropHandle(this, e);
6421
+
6422
+ element.classList.add('wptb-ondragenter');
6423
+ };
6424
+ element.ondragover = function (e) {
6425
+ e.preventDefault();
6426
+ WPTB_DropHandle(this, e);
6427
+ };
6428
+ element.ondragleave = function (e) {
6429
+ WPTB_DropHandle(this, e, true);
6430
+ };
6431
+ element.ondrop = function (e) {
6432
+ this.classList.remove('wptb-ondragenter');
6433
+ var element = void 0,
6434
+ classId = void 0;
6435
+ e.preventDefault();
6436
+ e.stopPropagation();
6437
+
6438
+ if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {
6439
+ return;
6440
+ }
6441
+ var wptbDropHandle = void 0,
6442
+ wptbDropBorderMarker = void 0;
6443
+ if (document.getElementsByClassName('wptb-drop-handle').length > 0) {
6444
+ wptbDropHandle = document.getElementsByClassName('wptb-drop-handle')[0];
6445
+ }
6446
+ if (document.getElementsByClassName('wptb-drop-border-marker').length > 0) {
6447
+ wptbDropBorderMarker = document.getElementsByClassName('wptb-drop-border-marker')[0];
6448
+ }
6449
+
6450
+ if (e.dataTransfer.getData('wptbElement')) {
6451
+ element = WPTB_Helper.newElementProxy(e.dataTransfer.getData('wptbElement'));
6452
+ element = element.getDOMElement();
6453
+ } else {
6454
+ classId = e.dataTransfer.getData('node');
6455
+ element = document.getElementsByClassName(classId)[0];
6456
+ //element.classList.remove( 'wptb-moving-mode' );
6457
+ }
6458
+
6459
+ if (WPTB_Helper.getDragRelativeType() === 'td_relative') {
6460
+ WPTB_DropHandle(this, e, true);
6461
+ var parentCell = WPTB_Helper.getParentOfType('td', e.target);
6462
+
6463
+ parentCell.appendChild(element);
6464
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
6465
+ } else if (wptbDropHandle.style.display == 'block') {
6466
+ var td = void 0;
6467
+ if (wptbDropHandle.dataset.text == 'Drop Here') {
6468
+ td = wptbDropHandle.getDOMParentElement();
6469
+ td.appendChild(element);
6470
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
6471
+ } else {
6472
+ var innerElement = wptbDropHandle.getDOMParentElement();
6473
+ td = innerElement.parentNode;
6474
+
6475
+ if (wptbDropHandle.dataset.text == 'Above Element') {
6476
+ td.insertBefore(element, innerElement);
6477
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
6478
+ } else if (wptbDropHandle.dataset.text == 'Below Element') {
6479
+ var innerElementNext = innerElement.nextSibling;
6480
+ td.insertBefore(element, innerElementNext);
6481
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
6482
+ }
6483
+ }
6484
+
6485
+ var thisRow = td.parentNode;
6486
+ if (WPTB_Helper.rowIsTop(thisRow)) {
6487
+ var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
6488
+
6489
+ if (table.classList.contains('wptb-table-preview-head')) {
6490
+ WPTB_Helper.dataTitleColumnSet(table);
6491
+ }
6492
+ }
6493
+
6494
+ // start item javascript if item is new
6495
+ var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
6496
+ var elemKind = infArr[1];
6497
+ if (e.dataTransfer.getData('wptbElement') && (elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list')) {
6498
+ //WPTB_Helper.elementStartScript( element );
6499
+ }
6500
+ } else {
6501
+ return;
6502
+ }
6503
+
6504
+ if (wptbDropHandle) {
6505
+ wptbDropHandle.style.display = 'none';
6506
+ wptbDropBorderMarker.style.display = 'none';
6507
+ }
6508
+
6509
+ WPTB_innerElementSet(element);
6510
+
6511
+ if (!element.classList.contains('wptb-image-container') || element.classList.contains('wptb-moving-mode')) {
6512
+ element.classList.remove('wptb-moving-mode');
6513
+ var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
6514
+ wptbTableStateSaveManager.tableStateSet();
6515
+ }
6516
+ return true;
6517
+ };
6518
+ element.onmouseover = function (e) {
6519
+ element.classList.remove('wptb-ondragenter');
6520
+ };
6521
+ };
6522
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6523
+
6524
+ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
6525
+
6526
+ var applyGenericItemSettings = function applyGenericItemSettings(element, kindIndexProt) {
6527
+ var copy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
6528
+
6529
+ var node = element.getDOMElement(),
6530
+ index,
6531
+ copy;
6532
+ if (node.classList.contains('wptb-ph-element')) {
6533
+ if (kindIndexProt == undefined || copy == true) {
6534
+ //index = document.counter.nextIndex( element.kind );
6535
+ var wptbElements = document.getElementsByClassName('wptb-ph-element');
6536
+ var elementIndexesArr = [];
6537
+ for (var i = 0; i < wptbElements.length; i++) {
6538
+ var regex = new RegExp('wptb-element-' + element.kind + '-(\\d+)', "i");
6539
+ var infArr = wptbElements[i].className.match(regex);
6540
+ if (infArr) {
6541
+ elementIndexesArr.push(infArr[1]);
6542
+ }
6543
+ }
6544
+ if (elementIndexesArr.length > 0) {
6545
+ var elementIndexMax = Math.max.apply(Math, elementIndexesArr);
6546
+ index = elementIndexMax + 1;
6547
+ } else {
6548
+ index = 1;
6549
+ }
6550
+
6551
+ if (copy) {
6552
+ // change all data-elements which save parameters for different controls
6553
+ var wptbNodeattributes = [].concat(_toConsumableArray(node.attributes));
6554
+ for (var _i = 0; _i < wptbNodeattributes.length; _i++) {
6555
+ if (wptbNodeattributes[_i] && _typeof(wptbNodeattributes[_i]) === 'object' && wptbNodeattributes[_i].nodeName) {
6556
+ var regularText = new RegExp('data-wptb-el-' + element.kind + '-(\\d+)-([a-zA-Z0-9_-]+)', "i");
6557
+ var attr = wptbNodeattributes[_i].nodeName.match(regularText);
6558
+ if (attr && Array.isArray(attr)) {
6559
+ var newDataAttributeName = wptbNodeattributes[_i].nodeName.replace(element.kind + '-' + attr[1], element.kind + '-' + index);
6560
+ var newDataAttributeValue = wptbNodeattributes[_i].nodeValue;
6561
+ node.removeAttribute(wptbNodeattributes[_i].nodeName);
6562
+ node.setAttribute(newDataAttributeName, newDataAttributeValue);
6563
+ }
6564
+ }
6565
+ }
6566
+ }
6567
+ } else if (kindIndexProt && !copy) {
6568
+ var kindIndexProtArr = kindIndexProt.split('-');
6569
+ index = kindIndexProtArr[kindIndexProtArr.length - 1];
6570
+ // start element javascript if element is new
6571
+ }
6572
+
6573
+ var node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\d+)/i);
6574
+ if (node_wptb_element_kind_num) {
6575
+ node.classList.remove(node_wptb_element_kind_num[0]);
6576
+ }
6577
+ if (!node.classList.contains('wptb-ph-element')) {
6578
+ node.classList.add('wptb-ph-element');
6579
+ if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
6580
+ node.classList.add('wptb-element-' + element.kind + '-' + index);
6581
+ }
6582
+ } else {
6583
+ if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
6584
+ node.classList.add('wptb-element-' + element.kind + '-' + index);
6585
+ }
6586
+ }
6587
+ WPTB_Helper.elementStartScript(element.getDOMElement());
6588
+ new WPTB_ElementOptions(element, index, kindIndexProt);
6589
+ document.counter.increment(element.kind);
6590
+ }
6591
+
6592
+ node.onmouseenter = function (event) {
6593
+ if (event.target.classList.contains('wptb-moving-mode')) {
6594
+ return;
6595
+ }
6596
+
6597
+ var wptbActionsField = new WPTB_ActionsField();
6598
+
6599
+ wptbActionsField.addActionField(1, node);
6600
+
6601
+ wptbActionsField.setParameters(node);
6602
+
6603
+ node.classList.remove('wptb-ondragenter');
6604
+ };
6605
+
6606
+ node.onmouseleave = function (event) {
6607
+ var wptbActionsField = new WPTB_ActionsField();
6608
+
6609
+ wptbActionsField.leaveFromField(event, node);
6610
+ };
6611
+ };
6612
  //# sourceMappingURL=admin.js.map
inc/admin/js/admin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["applyGenericItemSettings.js","WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_CutGlueTable.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementOptions.js","WPTB_HeaderToolbox.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_innerElementSet.js","WPTB_LeftPanel.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_RecalculateIndexes.js","WPTB_Responsive.js","WPTB_Settings.js","WPTB_SortableTable.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableSettingsData.js","WPTB_TableStateSaveManager.js"],"names":["applyGenericItemSettings","element","kindIndexProt","copy","node","getDOMElement","index","classList","contains","undefined","wptbElements","document","getElementsByClassName","elementIndexesArr","i","length","regex","RegExp","kind","infArr","className","match","push","elementIndexMax","Math","max","wptbNodeattributes","attributes","nodeName","regularText","attr","Array","isArray","newDataAttributeName","replace","newDataAttributeValue","nodeValue","removeAttribute","setAttribute","kindIndexProtArr","split","node_wptb_element_kind_num","remove","add","WPTB_Helper","elementStartScript","WPTB_ElementOptions","counter","increment","onmouseenter","event","target","wptbActionsField","WPTB_ActionsField","addActionField","setParameters","onmouseleave","leaveFromField","wptbActions","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","parentNode","removeChild","btnDelete","btnCopy","createElement","appendChild","type","onclick","act","el","hasOwnProperty","thisRow","rowIsTop","table","findAncestor","dataTitleColumnSet","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","wptbDocumentEventGenerate","activeElement","activeElemParent","data","elemProt","tinyMceClear","WPTB_ElementObject","insertBefore","nextSibling","elementCopy","cloneNode","WPTB_innerElementSet","btnMove","draggable","ondragstart","wptbElementIconsDirectories","tmplIconsDirectories","wp","template","jsonIconsDirectories","IconsDirectories","JSON","parse","dragImages","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","actionsHide","ondragend","elementDragEndClear","coordinatesElement","getBoundingClientRect","wptbContainer","correctTop","top","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","relatedTarget","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","querySelector","dataset","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","send","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","url","window","location","href","results","exec","WPTB_Cell","callback","DOMElement","highlightRow","td","parentRow","columnCount","parseInt","tds","classToAdd","ttd","highlightColumn","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","ondblclick","stopPropagation","wptbTableSetup","yIndex","wptbSortableTable","currentTarget","newElementProxy","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","offsetWidth","height","offsetHeight","borderCollapse","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","toLowerCase","firstChild","lastChild","WPTB_CutGlueTable","cutTableHorizontally","rowBefore","rows","tableRowsIChildren","children","rowSpan","newTdRowspan","sameCellBeforeDivision","wptbCell","mark","tdTopStyle","getAttribute","colSpan","dataXIndex","dataXIndexNext","beforeTd","maxCols","WPTB_RecalculateIndexes","glueTableHorizontally","hasAttribute","dataSameCellBeforeDivision","tdsSameBeforeDivision","querySelectorAll","tdsSameBeforeDivisionJPlusChildren","k","nextRow","cutTableVertically","col","rowChildren","rowChildrenLength","afterTd","rowSpanNewTd","colSpanOld","colSpanNewTd","tdLeftStyle","tdAnalogThisX","tdAnalogThisY","glueTableVertically","jFirstTdGlue","WPTB_DropHandle","thisElem","e","hide","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","toPx","getDragRelativeType","cellRelatedDropHandle","range","createRange","setStart","shadowRoot","createContextualFragment","parentTd","getParentOfType","ondragenter","preventDefault","ondragover","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","key","nextIndex","wpTemplateId","itemHtml","trim","innerHTML","wptbElementMutch","elementClearFromTinyMce","inElems","inElemObj","elementOptionsSet","capture","WPTB_HeaderToolbox","wrapperQuery","topMargin","assignButtons","manageCellsButton","activateSection","toggleToolboxVisibility","show","init","detail","hexToRgb","hex","result","rgbToHex","rgb","isHex","rgbm","round","toString","toUpperCase","slice","test","icon_directory","hostName","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","convertToAbs","currentLocation","origin","linkArr","linkClean","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","decodeURIComponent","getTableId","tableId","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","color","classe","ps","number","affectedEl","backgroundColor","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","bubbles","dispatchEvent","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","dataMceStyle","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","controlsInclude","functionHandler","acceptEventValues","controlConnectFunctionsName","name","elementKind","elementOptionsGroupIds","optionsGroupIds","elementOptionsGroupId","controlActiveElements","map","controlInfArr","controlActiveElement","controlUnicClassName","controls","controlName","control","targetControlValue","targetControlValueGet","targetValue","eventValue","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","valueDependOnControl","dependOnControlName","targetControlElementClass","valueDependOnControlCorrect","dependOnControlDataGet","dependOnControlElementsArr","dependOnControlElements","valueDependOnControlCorrectObj","s","dependOnControlElementClass","dependOnControlData","Object","keys","forEach","unicClass","appearDependOnControl","dependOnMain","dependOnControlElementChangeHandler","controlContainerElem","dependOnControlElementsValue","dependOn","dependOnControlElementValue","showHideTargetControlElement","prototype","call","targetControlElement","dependOnControlElement","bind","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","elementSettings","elementsSettings","stringify","checked","alignmentValue","elementControlsStateCopy","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementsSettingsTemplateJs","elementSettingsProt","elementSettingsCopy","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","controlElementParent","elementOptionsScriptsContainer","cellEditActiveClass","startsWith","wptbelementOptionClass","childNodes","controlsConfigJson","controlsConfig","elementOptionsGroupIdsInvolved","elementOptionsGroupInvolved","elementOptionsContainerInvolved","controlScriptsObj","controlappearDependOnControl","controlValueDependOnControl","elementOptionsScriptsContainerIndic","controlsConfigNew","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlParamCalculateValue","controlTemplate","elementOptionsContainerInvolvedGet","elementOptionsContainer","elementOptionsGroupChildren","elementOptionsContainerOn","elementOptionContainerOn","elementOptionContainer","elementOptionClass","controlContainerElemParent","helperJavascriptElem","helperJavascriptCode","innerText","script","controlScriptsArr","id","unicClassP","controlParamCalculateValueCreateFunction","handlerFunction","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","registerSections","sections","currentSection","sectionElement","sectionDataId","displayType","triggerSectionEvent","visibility","getCurrentSection","getSectionFromUrl","parsedUrl","URL","urlSection","searchParams","get","some","setupSectionButtons","sectionButtons","from","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","activeElemClass","cssForActiveElement","cssForNewElement","infArrCopyEl","cssForActiveElementInnerHTML","cssForNewElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","elementsStylesSetFromObject","jsonObject","styleCss","saveTable","startSaving","previewSaving","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","wptb_admin_object","t","messagingArea","code","datas","postId","rs","wptbId","paramIdsNecessaryChange","codeClone","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","action","builderPageUrl","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","toggleEditMode","deactivateMultipleSelectMode","wptbPreviewTableTds","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","check","countEmpty","maxPropName","recalculateIndexes","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","parentType","dragRelativeType","setDragRelativeType","getElementColorStylesHex","showControlsOnElementMount","showElementsListOnRemove","blockTinyMCEManageCells","addBlocker","blockerElement","removeBlocker","cells","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","WptbResponsive","div","classId","parentCell","elemKind","onmouseover","WPTB_LeftPanel","wptbElementButtons","wptbElement","wptbTablesEditModeCloseButton","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","columnTitleMobile","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","trs","maxColsFull","tdsArr","jMainIter","z","responsiveWrapperId","mainContainerQuery","responsiveTable","loaded","addContainerToDom","responsiveContainer","mainContainer","Error","responsiveElement","load","WPTB_ControlsManager","callControlScript","startUp","tablePreview","elems","wptbRelativeElements","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","floor","random","newHref","tableTitleField","onchange","WPTB_SortableTable","topRow","sortModeSwitcher","active","sortableTableVerticalStart","sortingCellMouseMoveSwitcher","wptbSortableTableVertical","sortableTableHorizontalStart","wptbSortableTableHorizontal","sortableTableInitialization","sortingCellMouseMoveVertical","tdMouseLeave","sortingCellMouseMoveHorizontal","sortingCellMouseMov","tagName","offsetX","layerX","xMatch","clientHeight","sortableTable","tableWasSorted","rowspan","rowNum","rowsValuesArr","rowsTdFirst","tdYCoordsRowSpanPrevious","tdsChanged","changeSortingTdsCollection","tdRowspan","textElementsValues","textElementsValuesGet","rowsTd","orderBy","setSortedAscDataAttr","sort","prev","next","sortOrder","unshift","tBody","rowsValObj","colspan","colNum","columnsValuesArr","columnsTdFirst","tdXCoordsColSpanPrevious","tdColspan","columnsTd","tdsColumn","columnsValObj","removeCellsAttrAfterDivision","tableSM","dataAttr","prevValue","nextValue","textElements","p","tdIndexSpanPrev","tdsCollectionChanged","collectionTds","collectionTdsJSpan","collectionTdsJSpanProperty","indexName","indexNameCamelCase","indexNamePerpendicularCamelCase","tdSpanProperty","tableGroupCount","tdSpan","tdsAll","codeMain","tableColumns","minWidth","innerElements","wptbActionsLength","dataMceBogus","array","wptb_preview_table","maxAmountOfCells","maxAmountOfRows","cs","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","markedCells","controlElemIds","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","sizeName","getSizeFunctionName","size","cellSizeInputs","cellSizeFixedInput","isSquare","settingId","settingElem","countMarkedCells","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","colspanSumInRow","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","borderWidth","setMaxAmountOfCells","getMaxAmountOfCells","addColumnWidth","cleaner","highlighted","tableTdsFor","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTdWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","wptbTableAlignment","float","addRowHeight","dataYIndex","heightIsSet","arrayTdsPrevious","wptbFixedHeight","mergingCellsVertically","forBreak","addColumnEnd","currentTable","currentTableTd","currentTdStyle","borderColor","WPTB_TableSettingsData","getTableSetting","addColumnStart","firstCell","addColumnAfter","c_pos","cellStyle","pos","newTd","nextSib","addColumnBefore","addRowToTheEnd","r","aux","addRowToTheStart","addRowBefore","cellNew","addRowAfter","cellRowSpan","rowAfter","cellsColSpan","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","mergeCells","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","splitCell","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","deleteRow","thisRowChildren","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","deleteColumn","onresize","setTableSetting","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","tableStateClear"],"mappings":"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","file":"admin.js","sourcesContent":["var applyGenericItemSettings = function ( element, kindIndexProt, copy = false ) {\r\n var node = element.getDOMElement(),\r\n index,\r\n copy;\r\n if( node.classList.contains( 'wptb-ph-element' ) ) {\r\n if ( kindIndexProt == undefined || copy == true ) {\r\n //index = document.counter.nextIndex( element.kind );\r\n let wptbElements = document.getElementsByClassName( 'wptb-ph-element' );\r\n let elementIndexesArr = [];\r\n for( let i = 0; i < wptbElements.length; i++ ) {\r\n var regex = new RegExp( 'wptb-element-' + element.kind + '-(\\\\d+)', \"i\" );\r\n let infArr = wptbElements[i].className.match( regex );\r\n if( infArr ) {\r\n elementIndexesArr.push( infArr[1] );\r\n }\r\n }\r\n if( elementIndexesArr.length > 0 ) {\r\n let elementIndexMax = Math.max( ...elementIndexesArr );\r\n index = elementIndexMax + 1;\r\n } else { \r\n index = 1;\r\n }\r\n\r\n if( copy ) {\r\n // change all data-elements which save parameters for different controls\r\n let wptbNodeattributes = [...node.attributes];\r\n for( let i = 0; i < wptbNodeattributes.length; i++ ) {\r\n if( wptbNodeattributes[i] && typeof wptbNodeattributes[i] === 'object' && wptbNodeattributes[i].nodeName ) {\r\n let regularText = new RegExp( 'data-wptb-el-' + element.kind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\r\n let attr = wptbNodeattributes[i].nodeName.match( regularText );\r\n if( attr && Array.isArray( attr ) ) {\r\n let newDataAttributeName = wptbNodeattributes[i].nodeName.replace( element.kind + '-' + attr[1], element.kind + '-' + index );\r\n let newDataAttributeValue = wptbNodeattributes[i].nodeValue;\r\n node.removeAttribute( wptbNodeattributes[i].nodeName );\r\n node.setAttribute( newDataAttributeName, newDataAttributeValue );\r\n }\r\n }\r\n }\r\n }\r\n } else if ( kindIndexProt && ! copy ) {\r\n let kindIndexProtArr = kindIndexProt.split('-');\r\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\r\n // start element javascript if element is new\r\n \r\n }\r\n\r\n let node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n if ( node_wptb_element_kind_num ) {\r\n node.classList.remove( node_wptb_element_kind_num[0] );\r\n }\r\n if ( ! node.classList.contains( 'wptb-ph-element' ) ) {\r\n node.classList.add( 'wptb-ph-element' );\r\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\r\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\r\n }\r\n } else {\r\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\r\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\r\n }\r\n }\r\n WPTB_Helper.elementStartScript( element.getDOMElement() );\r\n new WPTB_ElementOptions( element, index, kindIndexProt );\r\n document.counter.increment(element.kind);\r\n }\r\n \r\n node.onmouseenter = function ( event ) {\r\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\r\n return;\r\n }\r\n \r\n let wptbActionsField = new WPTB_ActionsField();\r\n \r\n wptbActionsField.addActionField( 1, node );\r\n \r\n wptbActionsField.setParameters( node );\r\n \r\n node.classList.remove( 'wptb-ondragenter' );\r\n };\r\n \r\n node.onmouseleave = function ( event ) {\r\n let wptbActionsField = new WPTB_ActionsField();\r\n \r\n wptbActionsField.leaveFromField( event, node );\r\n };\r\n};","var WPTB_ActionsField = function() {\r\n //this.wptbBorderMarker;\r\n this.wptbActions;\r\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\r\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\r\n }\r\n \r\n this.addActionField = ( actionType, thisNode ) => {\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n \r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length != 0 ) {\r\n let previousNode = actions[0].activeElem;\r\n if( previousNode ) {\r\n previousNode.classList.remove( 'wptb-directlyhovered' );\r\n }\r\n \r\n while( actions.length != 0 ) {\r\n actions[0].parentNode.removeChild( actions[0] );\r\n }\r\n }\r\n \r\n if( actionType == 1 ) {\r\n \r\n let btnDelete, btnCopy;\r\n\r\n btnDelete = document.createElement( 'span' ),\r\n btnCopy = document.createElement( 'span' ),\r\n actions = document.createElement( 'div' );\r\n\r\n actions.classList.add( 'wptb-actions' );\r\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\r\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\r\n \r\n actions.appendChild( btnCopy );\r\n actions.appendChild( btnDelete );\r\n \r\n body.appendChild( actions );\r\n\r\n actions.activeElem = thisNode;\r\n\r\n actions.type = 1;\r\n\r\n btnDelete.onclick = function( event ) {\r\n let act = event.target.parentNode.activeElem,\r\n el = act.parentNode;\r\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n// if( act && infArr && Array.isArray( infArr ) ) {\r\n// WPTB_Helper.elementControlsStateDelete( act );\r\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\r\n// }\r\n \r\n if( act ) {\r\n el.removeChild( act );\r\n }\r\n\r\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\r\n let thisRow = el.parentNode;\r\n \r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n\r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n }\r\n\r\n let wptbActionsField = new WPTB_ActionsField();\r\n wptbActionsField.actionsRemove();\r\n \r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('element:removed:dom', document, act);\r\n };\r\n\r\n btnCopy.onclick = ( event ) => {\r\n let copy,\r\n infArr,\r\n type;\r\n let activeElement = event.target.parentNode.activeElem;\r\n let activeElemParent = activeElement.parentNode;\r\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n type = infArr[1];\r\n let data = {};\r\n data.kind = type;\r\n data.elemProt = activeElement;\r\n data.tinyMceClear = true;\r\n copy = new WPTB_ElementObject( data );\r\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\r\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\r\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\r\n \r\n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\r\n } else {\r\n copy = {};\r\n let elementCopy = activeElement.cloneNode( true );\r\n elementCopy.classList.remove( 'wptb-directlyhovered' );\r\n \r\n copy.getDOMElement = function() {\r\n return elementCopy;\r\n }\r\n \r\n applyGenericItemSettings( copy );\r\n \r\n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\r\n \r\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-inner-element:copy', activeElement, copy.getDOMElement() );\r\n }\r\n \r\n WPTB_innerElementSet( copy.getDOMElement() );\r\n\r\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\r\n wptbActionsField.setParameters( activeElement );\r\n \r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n \r\n \r\n if( thisNode.classList.contains( 'wptb-ph-element' ) ) {\r\n let btnMove;\r\n btnMove = document.createElement( 'span' );\r\n btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\r\n btnMove.draggable = true;\r\n actions.appendChild( btnMove );\r\n \r\n btnMove.ondragstart = ( event ) => {\r\n let wptbElementIconsDirectories = 'wptb-element-icons-directories';\r\n let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );\r\n let data = {};\r\n let jsonIconsDirectories = tmplIconsDirectories( data );\r\n let IconsDirectories = JSON.parse( jsonIconsDirectories );\r\n\r\n let dragImages,\r\n actions = event.target.parentNode,\r\n activeElem = actions.activeElem,\r\n infArr,\r\n type;\r\n infArr = activeElem.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n type = infArr[1];\r\n activeElem.classList.add( 'wptb-moving-mode' );\r\n\r\n if( IconsDirectories && typeof IconsDirectories === 'object' && IconsDirectories[type] ) {\r\n dragImages = WPTB_Helper.getElementIcon( IconsDirectories[type] );\r\n }\r\n\r\n event.dataTransfer.effectAllowed = 'move';\r\n event.dataTransfer.setDragImage( dragImages, 0, 0 );\r\n event.dataTransfer.setData( 'node', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\r\n event.dataTransfer.setData( 'wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\r\n event.dataTransfer.setData( 'wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1] );\r\n let act = event.target.parentNode.activeElem;\r\n if( act.kind == 'text' ) {\r\n let thisRow = act.parentNode.parentNode;\r\n \r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n\r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n }\r\n } else {\r\n this.style.display = 'none';\r\n }\r\n\r\n this.actionsHide();\r\n };\r\n\r\n btnMove.ondragend = ( event ) => {\r\n WPTB_Helper.elementDragEndClear();\r\n }\r\n }\r\n\r\n actions.style.display = 'flex';\r\n\r\n this.wptbActions = actions;\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wptb:actionfield:generated', document);\r\n }\r\n \r\n this.setParameters = ( thisNode ) => {\r\n \r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n } else {\r\n this.wptbActions = false;\r\n }\r\n }\r\n \r\n if( this.wptbActions && this.wptbActions.classList.contains( 'wptb-actions' ) ) {\r\n this.wptbActions.style.display = 'flex';\r\n } else {\r\n return;\r\n }\r\n \r\n let coordinatesElement = thisNode.getBoundingClientRect();\r\n \r\n let wptbContainer = document.getElementsByClassName( 'wptb-container' )[0];\r\n let correctTop = () => {\r\n let coordinatesElement = thisNode.getBoundingClientRect();\r\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\r\n }\r\n wptbContainer.removeEventListener( 'scroll', correctTop, false );\r\n \r\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\r\n this.wptbActions.style.left = ( parseFloat( coordinatesElement.right ) - parseFloat( this.wptbActions.clientWidth ) ) + 1 + 'px';\r\n \r\n this.wptbActions.style.display = 'flex';\r\n thisNode.classList.add( 'wptb-directlyhovered' );\r\n \r\n wptbContainer.addEventListener( 'scroll', correctTop, false );\r\n }\r\n \r\n this.leaveFromField = ( event, node, actionType ) => {\r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n } else {\r\n this.wptbActions = false;\r\n }\r\n }\r\n \r\n if( ! this.wptbActions ) {\r\n return;\r\n }\r\n \r\n if( event.relatedTarget ) {\r\n if ( event.relatedTarget.classList.contains( 'wptb-actions' ) ||\r\n event.relatedTarget.classList.contains( 'wptb-move-action' ) ||\r\n event.relatedTarget.classList.contains( 'wptb-duplicate-action' ) ||\r\n event.relatedTarget.classList.contains( 'wptb-delete-action' ) || event.relatedTarget.classList.contains( 'wptb-prebuilt-mark-action' ) )\r\n {\r\n if( ! this.wptbActions ) {\r\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\r\n }\r\n this.wptbActions.onmouseleave = ( event ) => {\r\n if( event.relatedTarget != null && ( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || \r\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element') ) && event.relatedTarget != this.wptbActions.activeElem &&\r\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered' ) != this.wptbActions.activeElem ) {\r\n \r\n// this.wptbActions.style.display = 'none';\r\n// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );\r\n//\r\n// let wptbActionsField = new WPTB_ActionsField();\r\n//\r\n// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\r\n//\r\n// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\r\n } else {\r\n \r\n }\r\n \r\n let wptbActionsField = new WPTB_ActionsField();\r\n\r\n wptbActionsField.leaveFromField( event, event.relatedTarget.parentNode.parentNode );\r\n \r\n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\r\n }\r\n\r\n return;\r\n } \r\n }\r\n \r\n node.classList.remove( 'wptb-directlyhovered' );\r\n this.wptbActions.style.display = 'none';\r\n \r\n if( event.relatedTarget ) {\r\n if( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element' ) ) {\r\n this.addActionField( 1, event.relatedTarget.parentNode );\r\n\r\n this.setParameters( event.relatedTarget.parentNode );\r\n }\r\n }\r\n }\r\n \r\n this.actionsRemove = () => {\r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n }\r\n }\r\n \r\n if( this.wptbActions ) {\r\n this.wptbActions.parentNode.removeChild( this.wptbActions );\r\n }\r\n }\r\n \r\n this.actionsHide = () => {\r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n }\r\n }\r\n \r\n if( this.wptbActions ) {\r\n this.wptbActions.style.opacity = 0;\r\n }\r\n }\r\n}","(function () {\r\n var WPTB_Builder = function () {\r\n var table_id = WPTB_Helper.detectMode();\r\n if ( table_id ) {\r\n var http = new XMLHttpRequest(),\r\n urlSet = ajaxurl + \"?action=get_table\" + '&id=' + table_id;\r\n http.open('GET', urlSet, true);\r\n http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\r\n http.onreadystatechange = function (d) {\r\n if (this.readyState == 4 && this.status == 200) {\r\n var ans = JSON.parse( http.responseText );\r\n document.getElementById('wptb-setup-name').value = ans[0];\r\n \r\n if( ans[1] ) {\r\n // @deprecated old generate logic\r\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\r\n let wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];\r\n wptbTableSetupEl.appendChild( WPTB_Parser( ans[1] ) );\r\n \r\n let body = document.getElementsByTagName('body')[0];\r\n \r\n WPTB_Table();\r\n let element = document.querySelector( '.wptb-preview-table' );\r\n if( element ) {\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( ! infArr ) {\r\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\r\n }\r\n \r\n if( element.dataset.wptbTableContainerMaxWidth ) {\r\n wptbTableSetupEl.style.maxWidth = element.dataset.wptbTableContainerMaxWidth + 'px';\r\n \r\n element.tdDefaultWidth();\r\n }\r\n }\r\n \r\n //WPTB_LeftPanel();\r\n WPTB_Settings();\r\n \r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n } else {\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n }\r\n \r\n return;\r\n }\r\n };\r\n http.send(null);\r\n } else {\r\n // @deprecated old generate logic\r\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n document.counter = new ElementCounters();\r\n document.select = new MultipleSelect();\r\n\r\n var initializer = WPTB_Initializer();\r\n settings = WPTB_Settings();\r\n };\r\n\r\n let url = window.location.href,\r\n regex = new RegExp('[?&]page=wptb-builder'),\r\n results = regex.exec( url );\r\n if ( results ) {\r\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\r\n }\r\n})();","var WPTB_Cell = function ( callback, DOMElement ) {\r\n\r\n function highlightRow(td) {\r\n var parentRow = td.parentNode,\r\n columnCount = parseInt(document.getElementById('wptb-columns-number').value),\r\n tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\r\n for (var i = 0; i < tds.length; i++) {\r\n tds[i].classList.remove('wptb-highlighted-row-first', 'wptb-highlighted-row-last', 'wptb-highlighted-row-inner', 'wptb-highlighted-column-first', 'wptb-highlighted-column-last', 'wptb-highlighted-column-inner');\r\n }\r\n for (var i = 0; i < columnCount; i++) {\r\n\r\n var classToAdd = i == 0 ? 'wptb-highlighted-row-first' : i == columnCount - 1 ? 'wptb-highlighted-row-last' : 'wptb-highlighted-row-inner';\r\n var ttd = parentRow.getElementsByTagName('td')[i];\r\n if (ttd !== td) {\r\n ttd.classList.add(classToAdd);\r\n }\r\n }\r\n }\r\n\r\n function highlightColumn(td) {\r\n\r\n var index,\r\n parentRow = td.parentNode,\r\n columnCount = parseInt(document.getElementById('wptb-columns-number').value), rowCount = parseInt(document.getElementById('wptb-rows-number').value), table = document.getElementsByClassName('wptb-preview-table')[0];\r\n for (var i = 0; i < columnCount; i++) {\r\n if (parentRow.getElementsByTagName('td')[i] === td) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n for (var i = 0; i < rowCount; i++) {\r\n var classToAdd = i == 0 ? 'wptb-highlighted-column-first' : i == rowCount - 1 ? 'wptb-highlighted-column-last' : 'wptb-highlighted-column-inner';\r\n var tr = table.getElementsByTagName('tr')[i];\r\n if (tr.getElementsByTagName('td')[index] !== td) {\r\n tr.getElementsByTagName('td')[index].classList.add(classToAdd);\r\n }\r\n }\r\n }\r\n\r\n if( ! DOMElement ) {\r\n DOMElement = document.createElement(\"td\");\r\n\r\n DOMElement.style.padding = jQuery('#wptb-table-padding-number').val() + 'px';\r\n\r\n var innerBorderWidth = jQuery('#wptb-table-inner-border-number').val();\r\n\r\n if (innerBorderWidth != '' && parseInt(innerBorderWidth) != 0) {\r\n DOMElement.style.border = innerBorderWidth + 'px solid ' + jQuery('#wptb-table-border-color').val();\r\n }\r\n\r\n DOMElement.classList.add('wptb-droppable', 'wptb-cell');\r\n }\r\n\r\n DOMElement.draggable = false;\r\n if ( callback ) {\r\n DOMElement.onclick = callback;\r\n }\r\n\r\n // Cell double click handler\r\n DOMElement.ondblclick = function( event ) {\r\n event.stopPropagation();\r\n let wptbTableSetup = document.querySelector('.wptb-table-setup')\r\n if(wptbTableSetup && !wptbTableSetup.classList.contains('wptb-preview-table-manage-cells') &&\r\n (event.target.dataset.yIndex !== '0' || wptbTableSetup.dataset.wptbSortableTable !== '1') &&\r\n event.target == event.currentTarget) {\r\n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target )\r\n\r\n let element = WPTB_Helper.newElementProxy( 'text' )\r\n element = element.getDOMElement()\r\n\r\n DOMElement.appendChild( element )\r\n\r\n WPTB_innerElementSet( element );\r\n }\r\n }\r\n\r\n WPTB_innerElementSet( DOMElement );\r\n\r\n WPTB_Helper.elementStartScript( DOMElement, 'table_cell_setting' );\r\n\r\n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\r\n\r\n if ( wptbPhElement.length > 0 ) {\r\n for( let i = 0; i < wptbPhElement.length; i++ ) {\r\n wptbPhElement[i].getDOMElement = function() {\r\n return wptbPhElement[i];\r\n }\r\n\r\n WPTB_innerElementSet( wptbPhElement[i] );\r\n\r\n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\r\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\r\n wptbPhElement[i].kind = wptbTypeElementArr[0];\r\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\r\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\r\n if ( wptbInternalActiveElement.length > 0 ) {\r\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\r\n let wptbInternalActiveElementObj = {};\r\n wptbInternalActiveElementObj.getDOMElement = function() {\r\n return wptbInternalActiveElement[j];\r\n }\r\n\r\n applyGenericItemSettings( wptbInternalActiveElementObj );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n\r\n this.setCoords = function (y, x) {\r\n var el = this.getDOMElement();\r\n el.dataset.yIndex = y;\r\n el.dataset.xIndex = x;\r\n };\r\n\r\n this.getCoords = function () {\r\n var coords,\r\n el = this.getDOMElement();\r\n coords.x = el.dataset.xIndex;\r\n coords.y = el.dataset.yIndex;\r\n return coords;\r\n };\r\n\r\n this.appendElement = function (node) {\r\n getDOMElement().appendChild(node);\r\n };\r\n\r\n DOMElement.getCellDimensions = function() {\r\n\r\n let tdStyleObj = window.getComputedStyle( this, null );\r\n\r\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\r\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\r\n\r\n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\r\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\r\n\r\n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\r\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\r\n\r\n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\r\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\r\n\r\n let width = parseInt( this.offsetWidth, 10 ) -\r\n parseInt( tdPaddingLeft, 10 ) -\r\n parseInt( tdPaddingRight, 10 );\r\n\r\n let height = parseInt( this.offsetHeight, 10 ) -\r\n parseInt( tdPaddingTop, 10 ) -\r\n parseInt( tdPaddingBottom, 10 );\r\n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\r\n if(table) {\r\n if(table.style.borderCollapse === 'collapse') {\r\n width = width - ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\r\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\r\n height = height - ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\r\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 );\r\n let tableFullStyleObj = window.getComputedStyle( table, null );\r\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\r\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\r\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\r\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\r\n\r\n let tr = this.parentNode;\r\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\r\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\r\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\r\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\r\n }\r\n }\r\n\r\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\r\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\r\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\r\n }\r\n }\r\n\r\n let body = tr.parentNode;\r\n if( body && body.nodeName.toLowerCase() === 'body' ) {\r\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\r\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\r\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\r\n }\r\n }\r\n\r\n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\r\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\r\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\r\n }\r\n }\r\n }\r\n }\r\n } else if(table.style.borderCollapse === 'separate') {\r\n width = width - parseInt( tdBorderLeftWidth, 10 ) -\r\n parseInt( tdBorderRightWidth, 10 );\r\n height = height - parseInt( tdBorderTopWidth, 10 ) -\r\n parseInt( tdBorderBottomWidth, 10 );\r\n }\r\n }\r\n\r\n return {\r\n width: parseInt( width ),\r\n height: parseInt( height )\r\n };\r\n }\r\n\r\n return this;\r\n};\r\n","let WPTB_CutGlueTable = {\n cutTableHorizontally: function (rowBefore, table) {\n if( table && table.rows[rowBefore] ) {\n for( let i = 0; i < rowBefore; i++ ) {\n let tableRowsIChildren = table.rows[i].children;\n\n for( let j = 0; j < tableRowsIChildren.length; j++ ) {\n if ( tableRowsIChildren[j].rowSpan > 1 && tableRowsIChildren[j].rowSpan > rowBefore - i ) {\n let newTdRowspan = tableRowsIChildren[j].rowSpan - rowBefore + i;\n tableRowsIChildren[j].rowSpan = rowBefore - i;\n if( ! tableRowsIChildren[j].dataset.sameCellBeforeDivision ) {\n tableRowsIChildren[j].dataset.sameCellBeforeDivision = 'r' + i + 'c' + j;\n }\n\n let td;\n if(table.hasOwnProperty('wptbCell')) {\n td = new table.wptbCell( table.mark );\n td = td.getDOMElement();\n } else {\n td = document.createElement('td');\n }\n\n let tdTopStyle = tableRowsIChildren[j].getAttribute( 'style' );\n td.setAttribute( 'style', tdTopStyle );\n td.colSpan = tableRowsIChildren[j].colSpan;\n td.rowSpan = newTdRowspan;\n td.dataset.sameCellBeforeDivision = tableRowsIChildren[j].dataset.sameCellBeforeDivision;\n\n let dataXIndex = tableRowsIChildren[j].dataset.xIndex;\n let dataXIndexNext = parseInt( dataXIndex ) + parseInt( tableRowsIChildren[j].colSpan );\n let beforeTd;\n while( ! beforeTd && dataXIndexNext < table.maxCols ) {\n beforeTd = table.rows[rowBefore].querySelector( '[data-x-index=\"' + dataXIndexNext + '\"]' );\n dataXIndexNext++;\n }\n table.rows[rowBefore].insertBefore( td, beforeTd );\n\n WPTB_RecalculateIndexes(table);\n }\n }\n }\n }\n },\n glueTableHorizontally: function (table) {\n if(table) {\n let tds = [...table.getElementsByTagName( 'td' )];\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].hasAttribute( 'data-same-cell-before-division' ) ) {\n let dataSameCellBeforeDivision = tds[i].dataset.sameCellBeforeDivision;\n let tdsSameBeforeDivision = table.querySelectorAll( '[data-same-cell-before-division=\"' + dataSameCellBeforeDivision + '\"]' );\n for( let j = 0; j < tdsSameBeforeDivision.length; j++ ) {\n if( tdsSameBeforeDivision[j] && tdsSameBeforeDivision[j + 1] ) {\n if( tdsSameBeforeDivision[j].parentNode && tdsSameBeforeDivision[j + 1].parentNode &&\n ! tdsSameBeforeDivision[j].parentNode.classList.contains( 'wptb-row-moving' ) &&\n ! tdsSameBeforeDivision[j + 1].parentNode.classList.contains( 'wptb-row-moving' ) ) {\n if( ( tdsSameBeforeDivision[j + 1].dataset.yIndex == parseInt( tdsSameBeforeDivision[j].dataset.yIndex ) +\n parseInt( tdsSameBeforeDivision[j].rowSpan ) ) ) {\n tdsSameBeforeDivision[j].rowSpan += tdsSameBeforeDivision[j + 1].rowSpan;\n\n let tdsSameBeforeDivisionJPlusChildren = [...tdsSameBeforeDivision[j + 1].children];\n\n for( let k = 0; k < tdsSameBeforeDivisionJPlusChildren.length; k++ ) {\n tdsSameBeforeDivision[j].appendChild( tdsSameBeforeDivisionJPlusChildren[k] );\n }\n\n let nextRow = tdsSameBeforeDivision[j + 1].parentNode;\n nextRow.removeChild( tdsSameBeforeDivision[j + 1] );\n }\n }\n }\n }\n }\n }\n\n WPTB_RecalculateIndexes(table);\n }\n },\n cutTableVertically: function (col, table) {\n for ( let i = 0; i < table.rows.length; i++ ) {\n if( col < table.maxCols ) {\n if( col != 0 && ( ! table.rows[i].querySelector( '[data-x-index=\"' + col + '\"]' ) ) ) {\n let rowChildren = table.rows[i].children;\n\n let td,\n rowChildrenLength = rowChildren.length,\n afterTd,\n rowSpanNewTd,\n colSpanOld,\n colSpanNewTd;\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].colSpan > 1 && parseInt( rowChildren[j].dataset.xIndex ) < col &&\n parseInt( rowChildren[j].dataset.xIndex ) + parseInt( rowChildren[j].colSpan ) > col ) {\n if(table.hasOwnProperty('wptbCell')) {\n td = new table.wptbCell( table.mark );\n td = td.getDOMElement();\n } else {\n td = document.createElement('td');\n }\n\n rowSpanNewTd = rowChildren[j].rowSpan;\n colSpanOld = rowChildren[j].colSpan;\n rowChildren[j].colSpan = col - rowChildren[j].dataset.xIndex;\n colSpanNewTd = colSpanOld - rowChildren[j].colSpan;\n\n if( ! rowChildren[j].dataset.sameCellBeforeDivision ) {\n rowChildren[j].dataset.sameCellBeforeDivision = 'r' + i + 'c' + j;\n }\n\n let tdLeftStyle = rowChildren[j].getAttribute( 'style' );\n td.setAttribute( 'style', tdLeftStyle );\n\n let tdAnalogThisX = table.querySelector( '[data-x-index=\"' + col + '\"]' );\n if( tdAnalogThisX ) {\n td.style.width = tdAnalogThisX.style.width;\n }\n\n let tdAnalogThisY = table.querySelector( '[data-y-index=\"' + i + '\"]' );\n if( tdAnalogThisY ) {\n td.style.height = tdAnalogThisY.style.height;\n }\n if( rowChildren[j + 1] ) {\n afterTd = rowChildren[j + 1];\n } else {\n afterTd = null;\n }\n\n table.rows[i].insertBefore( td, afterTd );\n td.colSpan = colSpanNewTd;\n td.rowSpan = rowSpanNewTd;\n td.dataset.sameCellBeforeDivision = rowChildren[j].dataset.sameCellBeforeDivision;\n i += rowSpanNewTd - 1;\n break\n }\n }\n }\n }\n WPTB_RecalculateIndexes(table);\n }\n },\n glueTableVertically: function (table) {\n if( table ) {\n let tds = [...table.getElementsByTagName( 'td' )];\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].hasAttribute( 'data-same-cell-before-division' ) ) {\n let dataSameCellBeforeDivision = tds[i].dataset.sameCellBeforeDivision;\n let tdsSameBeforeDivision = [...table.querySelectorAll( '[data-same-cell-before-division=\"' + dataSameCellBeforeDivision + '\"]' )];\n\n let jFirstTdGlue = null;\n for( let j = 0; j < tdsSameBeforeDivision.length; j++ ) {\n if( tdsSameBeforeDivision[j] && tdsSameBeforeDivision[j + 1] &&\n ! tdsSameBeforeDivision[j].classList.contains( 'wptb-column-moving' ) &&\n ! tdsSameBeforeDivision[j + 1].classList.contains( 'wptb-column-moving' ) ) {\n if( ( tdsSameBeforeDivision[j + 1].dataset.xIndex == parseInt( tdsSameBeforeDivision[j].dataset.xIndex ) +\n parseInt( tdsSameBeforeDivision[j].colSpan ) ) ) {\n if( jFirstTdGlue == null ) {\n jFirstTdGlue = j;\n }\n tdsSameBeforeDivision[jFirstTdGlue].colSpan += tdsSameBeforeDivision[j + 1].colSpan;\n\n let tdsSameBeforeDivisionJPlusChildren = [...tdsSameBeforeDivision[j + 1].children];\n\n for( let k = 0; k < tdsSameBeforeDivisionJPlusChildren.length; k++ ) {\n tdsSameBeforeDivision[jFirstTdGlue].appendChild( tdsSameBeforeDivisionJPlusChildren[k] );\n }\n\n let thisRow = tdsSameBeforeDivision[j + 1].parentNode;\n thisRow.removeChild( tdsSameBeforeDivision[j + 1] );\n }\n }\n }\n }\n }\n\n WPTB_RecalculateIndexes(table);\n }\n }\n}\n","var WPTB_DropHandle = function (thisElem, e, hide = false) {\r\n\r\n let wptbDropHandle,\r\n wptbDropBorderMarker,\r\n wptbDropBorderMarkerTop,\r\n wptbDropBorderMarkerRight,\r\n wptbDropBorderMarkerBottom,\r\n wptbDropBorderMarkerLeft;\r\n\r\n /**\r\n * Add px suffix to a value\r\n *\r\n * @param {any} val value\r\n * @returns {string} string value suffixed with px\r\n */\r\n function toPx(val){\r\n return `${val}px`;\r\n }\r\n\r\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\r\n let cellRelatedDropHandle = document.querySelector('.wptb-cell-related-drop-handle');\r\n if(hide && cellRelatedDropHandle ){\r\n cellRelatedDropHandle.style.display = 'none';\r\n return;\r\n }\r\n if(cellRelatedDropHandle === null){\r\n const range = document.createRange();\r\n range.setStart(document.body , 0);\r\n\r\n const shadowRoot = range.createContextualFragment('<div class=\"wptb-cell-related-drop-handle\">Add to cell</div>').children[0];\r\n\r\n document.body.appendChild(shadowRoot);\r\n cellRelatedDropHandle = shadowRoot.children[0];\r\n }\r\n\r\n const parentTd = WPTB_Helper.getParentOfType('td', thisElem);\r\n const {top,left,width,height} = parentTd.getBoundingClientRect();\r\n\r\n if(!cellRelatedDropHandle){\r\n return;\r\n }\r\n\r\n cellRelatedDropHandle.style.display = 'flex';\r\n cellRelatedDropHandle.style.top = toPx(top);\r\n cellRelatedDropHandle.style.width = toPx(width);\r\n cellRelatedDropHandle.style.height = toPx(height);\r\n cellRelatedDropHandle.style.left = toPx(left);\r\n\r\n return;\r\n }\r\n\r\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\r\n wptbDropHandle = document.createElement( 'div' );\r\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\r\n \r\n wptbDropBorderMarker = document.createElement( 'div' );\r\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\r\n \r\n wptbDropBorderMarkerTop = document.createElement( 'div' ),\r\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\r\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\r\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\r\n \r\n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\r\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\r\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\r\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\r\n \r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\r\n \r\n let body = document.getElementsByTagName( 'body' );\r\n if ( body.length > 0 ) {\r\n body[0].appendChild( wptbDropHandle );\r\n body[0].appendChild( wptbDropBorderMarker );\r\n }\r\n \r\n wptbDropHandle.ondragenter = function () {\r\n if (e.target.classList.contains('wptb-empty')) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n wptbDropHandle.ondragover = function (e) {\r\n e.preventDefault(); \r\n }\r\n\r\n wptbDropHandle.ondragleave = function () {\r\n\r\n }\r\n wptbDropHandle.ondrop = function (e) {\r\n e.preventDefault();\r\n let element;\r\n \r\n if ( e.dataTransfer.getData('wptbElement') ) {\r\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\r\n element = element.getDOMElement();\r\n } else {\r\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\r\n element.classList.remove( 'wptb-moving-mode' );\r\n element.classList.remove( 'wptb-moving-into-same-elem' );\r\n element.wptbMovingMode = 1;\r\n }\r\n \r\n let td;\r\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\r\n thisElem = wptbDropHandle.getDOMParentElement();\r\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\r\n td = wptbDropHandle.getDOMParentElement();\r\n td.appendChild( element );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n }\r\n } else {\r\n let innerElement = wptbDropHandle.getDOMParentElement();\r\n td = innerElement.parentNode;\r\n \r\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\r\n td.insertBefore( element, innerElement );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\r\n let innerElementNext = innerElement.nextSibling;\r\n td.insertBefore( element, innerElementNext );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n }\r\n }\r\n \r\n let thisRow = td.parentNode;\r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n\r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n \r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\r\n \r\n WPTB_innerElementSet( element );\r\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n element.wptbMovingMode == undefined;\r\n }\r\n }\r\n let wptbContainer = document.querySelector( '.wptb-container' );\r\n wptbContainer.onscroll = function() {\r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\r\n }\r\n } else {\r\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\r\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\r\n }\r\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \r\n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0) {\r\n return;\r\n }\r\n\r\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \r\n thisElem.classList.contains('wptb-empty')) {\r\n return;\r\n }\r\n \r\n let thisRow;\r\n if ( thisElem.localName == 'td' ) {\r\n thisRow = thisElem.parentNode;\r\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\r\n thisRow = thisElem.parentNode.parentNode;\r\n }\r\n \r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n \r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n let indics = e.dataTransfer.types;\r\n let notDragEnter = false;\r\n for ( let i = 0; i < indics.length; i++ ) {\r\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\r\n if ( infArr && infArr[1] != 'text' ) {\r\n notDragEnter = true;\r\n break;\r\n }\r\n }\r\n if( notDragEnter ) {\r\n return;\r\n }\r\n }\r\n }\r\n \r\n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\r\n let height = thisElem.offsetHeight,\r\n coordinatesElement = thisElem.getBoundingClientRect(),\r\n left = parseFloat( coordinatesElement.left ),\r\n top;\r\n wptbDropHandle.style.left = left + 'px';\r\n \r\n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\r\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\r\n if( thisElem == elementDrag ) {\r\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\r\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\r\n } else {\r\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\r\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\r\n }\r\n }\r\n \r\n wptbDropHandle.getDOMParentElement = function() {\r\n return thisElem;\r\n }\r\n \r\n wptbDropHandle.style.display = 'block';\r\n wptbDropBorderMarker.style.display = 'block';\r\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\r\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\r\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\r\n wptbDropHandle.dataset.text = 'Above Element';\r\n if ( y > height/2 ) {\r\n top = parseFloat( coordinatesElement.top ) + height - 1;\r\n wptbDropHandle.dataset.text = 'Below Element';\r\n }\r\n } else {\r\n wptbDropHandle.dataset.text = 'Drop Here';\r\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\r\n }\r\n wptbDropHandle.style.top = top + 'px';\r\n\r\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\r\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\r\n\r\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\r\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\r\n\r\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\r\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\r\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\r\n\r\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\r\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\r\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\r\n\r\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\r\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\r\n}","var ElementCounters = function () {\r\n\r\n\tvar priv = [];\r\n\tpriv['text'] = 0;\r\n\tpriv['image'] = 0;\r\n\tpriv['list'] = 0;\r\n\tpriv['button'] = 0;\r\n\r\n\tthis.increment = function (key) {\r\n\t\tif (!(key in priv)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tpriv[key]++;\r\n\t}\r\n\r\n\tthis.nextIndex = function (key) {\r\n\t\tif (!(key in priv)) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\treturn priv[key] + 1;\r\n\t}\r\n\r\n\treturn this;\r\n\r\n};","var WPTB_ElementObject = function ( data ) {\r\n let DOMElement, kindIndexProt, copy;\r\n if( ! data.elemProt ) {\r\n DOMElement = document.createElement('div'),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\r\n \r\n let wpTemplateId = 'wptb-' + data.kind + '-content';\r\n let template = wp.template( wpTemplateId );\r\n data.node = DOMElement;\r\n let itemHtml = template( data );\r\n\r\n itemHtml = itemHtml.replace(/\\r|\\n|\\t/g, '').trim();\r\n DOMElement.innerHTML = itemHtml;\r\n } else {\r\n DOMElement = data.elemProt.cloneNode( true );\r\n DOMElement.classList.remove( 'wptb-directlyhovered' );\r\n let wptbElementMutch = data.elemProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n };\r\n copy = true;\r\n \r\n if( data.tinyMceClear ) {\r\n DOMElement = WPTB_Helper.elementClearFromTinyMce( DOMElement );\r\n }\r\n }\r\n \r\n let inElems = DOMElement.querySelectorAll( '.wptb-in-element' );\r\n if( inElems.length > 0 ) {\r\n for ( let i = 0; i < inElems.length; i++ ) {\r\n let inElemObj = {};\r\n inElemObj.getDOMElement = function() {\r\n return inElems[i];\r\n }\r\n \r\n applyGenericItemSettings( inElemObj );\r\n }\r\n }\r\n \r\n window.addEventListener( 'item:onmouseenter', function( event ) {\r\n //console.log( event );\r\n }, false);\r\n \r\n \r\n this.kind = data.kind;\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n \r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n return this;\r\n}\r\n\r\n\r\n","var WPTB_ElementOptions = function ( element, index, kindIndexProt ) {\r\n\r\n var node = element.getDOMElement();\r\n node.addEventListener( 'click', function() {\r\n WPTB_Helper.elementOptionsSet( element.kind, this );\r\n }, {capture: true} );\r\n};","/**\r\n * WPTB_HeaderToolbox\r\n *\r\n * @param {string} wrapperQuery wrapper query for toolbox items\r\n * @return {object} header toolbox object\r\n * @constructor\r\n */\r\n// eslint-disable-next-line camelcase,no-unused-vars\r\nconst WPTB_HeaderToolbox = function (wrapperQuery) {\r\n\tthis.wrapperQuery = wrapperQuery;\r\n\tthis.element = document.querySelector(wrapperQuery);\r\n\tthis.topMargin = 2;\r\n\r\n\t/**\r\n\t * Assign events to toolbox buttons\r\n\t */\r\n\tconst assignButtons = () => {\r\n\t\tconst manageCellsButton = this.element.querySelector('[data-button-type=\"table_settings_menu\"]');\r\n\r\n\t\tif (manageCellsButton) {\r\n\t\t\tmanageCellsButton.addEventListener('click', () => {\r\n\t\t\t\tWPTB_Helper.activateSection('manage_cells');\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Toggle visibility of toolbox with the given argument.\r\n\t *\r\n\t * @param {boolean} show show toolbox\r\n\t */\r\n\tconst toggleToolboxVisibility = (show = false) => {\r\n\t\tlet { height } = this.element.getBoundingClientRect();\r\n\r\n\t\tif (show) {\r\n\t\t\theight = 0;\r\n\t\t}\r\n\r\n\t\tthis.element.style.top = `calc( 100% - ${height + this.topMargin}px)`;\r\n\t};\r\n\r\n\t/**\r\n\t * Initialize header toolbox.\r\n\t */\r\n\tconst init = () => {\r\n\t\tassignButtons();\r\n\t\t// bind toolbox to table generated event\r\n\t\tdocument.addEventListener('wptb:table:generated', () => {\r\n\t\t\tthis.element.style.display = 'unset';\r\n\t\t\tconst { width } = this.element.getBoundingClientRect();\r\n\t\t\tthis.element.style.left = `calc( 50% - ${width / 2}px)`;\r\n\r\n\t\t\t// hide toolbox at manage cells and responsive menus\r\n\t\t\tdocument.addEventListener('wptbSectionChanged', ({ detail }) => {\r\n\t\t\t\ttoggleToolboxVisibility(\r\n\t\t\t\t\tdetail !== 'manage_cells' && detail !== 'table_responsive_menu' && detail !== 'cell_settings'\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\treturn { init };\r\n};\r\n","var WPTB_Helper = {\r\n hexToRgb: function( hex ) {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\r\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\r\n },\r\n rgbToHex: function ( rgb ) {\r\n if( rgb ) {\r\n if( WPTB_Helper.isHex( rgb ) ) return rgb;\r\n\r\n let rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i);\r\n if ( rgbm && rgbm.length === 5) {\r\n return \"#\" +\r\n ('0' + Math.round(parseFloat(rgbm[4], 10) * 255).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\r\n } else {\r\n rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n if (rgbm && rgbm.length === 4) {\r\n return \"#\" +\r\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\r\n } else {\r\n return '';\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n\r\n },\r\n isHex: function( hex ) {\r\n let regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');\r\n return regex.test( hex );\r\n },\r\n getElementIcon: function ( icon_directory ) {\r\n let hostName = location.protocol + '//' + location.hostname;\r\n let img = document.createElement( 'img' );\r\n img.src = icon_directory;\r\n return img;\r\n },\r\n elementDragEndClear: function() {\r\n let wptbMovingMode = document.getElementsByClassName( 'wptb-moving-mode' );\r\n if ( wptbMovingMode.length > 0 ) {\r\n for( let i = 0; i < wptbMovingMode.length; i++ ) {\r\n wptbMovingMode[i].classList.remove( 'wptb-moving-mode' );\r\n }\r\n }\r\n\r\n let wptbDropHandles = document.getElementsByClassName( 'wptb-drop-handle' );\r\n if ( wptbDropHandles.length > 0 ) {\r\n for( let i = 0; i < wptbDropHandles.length; i++ ) {\r\n wptbDropHandles[i].style.display = 'none';\r\n }\r\n }\r\n\r\n let wptbDropBorderMarkers = document.getElementsByClassName( 'wptb-drop-border-marker' );\r\n if ( wptbDropBorderMarkers.length > 0 ) {\r\n for( let i = 0; i < wptbDropBorderMarkers.length; i++ ) {\r\n wptbDropBorderMarkers[i].style.display = 'none';\r\n }\r\n }\r\n },\r\n linkHttpCheckChange: function( link, convertToAbs = false ) {\r\n if ( link ) {\r\n // even though it is not a best practice and a huge security risk, sometimes our users use javascript tag at href attributes, this check will make sure those tags will not be modified and returned as they are\r\n if(link.match(/^(javascript:)(.+)$/)){\r\n return link;\r\n }\r\n // relative link checking\r\n // if link starts with '/', assume it is a relative link to the origin of the current site\r\n else if( link.match(/^\\/([\\S]+)$/) ){\r\n if (convertToAbs) {\r\n const currentLocation = document.location;\r\n let {origin} = currentLocation;\r\n\r\n\r\n // strip out the '/' at the end of the origin name if there is any\r\n if (origin.match(/^(.+)\\/$/)) {\r\n origin = origin.slice(-1);\r\n }\r\n\r\n return `${origin}${link}`;\r\n }else{\r\n return link;\r\n }\r\n }\r\n else if ( link.indexOf( 'http://' ) == -1 && link.indexOf( 'https://' ) == -1 ) {\r\n let linkArr = link.split( '/' ),\r\n linkClean;\r\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\r\n linkClean = linkArr[linkArr.length - 1];\r\n }\r\n return document.location.protocol + '//' + linkClean;\r\n } else {\r\n return link;\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n dataTitleColumnSet: function( table ) {\r\n // TODO dataTitleColumnSet\r\n // let rows = table.rows,\r\n // rowHead = rows[0];\r\n // let computedStyleRowHead = getComputedStyle( rowHead );\r\n //\r\n // let rowHeadChildren = rowHead.children;\r\n // let contentsForHeader = {};\r\n // for( let i = 0; i < rowHeadChildren.length; i++ ) {\r\n // let tdElements = rowHeadChildren[i].children;\r\n //\r\n // for( let j = 0; j < tdElements.length; j++ ) {\r\n // let element = tdElements[j];\r\n // if( element.classList.contains( 'wptb-ph-element' ) ) {\r\n // let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n // if( infArr[1] == 'text' ) {\r\n // let p = element.querySelector( 'p' ),\r\n // textContent = p.textContent,\r\n // textAlign = p.style.textAlign;\r\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize,\r\n // element.style.color, computedStyleRowHead.backgroundColor, textAlign];\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\r\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '',\r\n // '', computedStyleRowHead.backgroundColor, ''];\r\n // }\r\n // }\r\n // for ( let i = 1; i < rows.length; i++ ) {\r\n // let thisRow = rows[i],\r\n // thisRowChildren = thisRow.children;\r\n // for( let j = 0; j < thisRowChildren.length; j++ ) {\r\n // if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\r\n // thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\r\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\r\n // thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\r\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\r\n // thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\r\n // } else {\r\n // thisRowChildren[j].dataset.wptbTitleColumn = null;\r\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = null;\r\n // thisRowChildren[j].dataset.wptbTitleColumnColor = null;\r\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = null;\r\n // thisRowChildren[j].dataset.wptbTitleAlign = null;\r\n // }\r\n // }\r\n // }\r\n },\r\n findAncestor: function( el, cls ) {\r\n while ( ( el = el.parentElement ) && !el.classList.contains( cls ) );\r\n return el;\r\n },\r\n rowIsTop: function( row ) {\r\n var parent = row.parentNode;\r\n if( parent.children[0] == row ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n getSelectionText: function() {\r\n var txt = '';\r\n if (txt = window.getSelection) {\r\n txt = window.getSelection().toString();\r\n } else {\r\n txt = document.selection.createRange().text;\r\n }\r\n return txt;\r\n },\r\n elementOptionsPanelClear: function() {\r\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\r\n if( elementOptionsGroup ) {\r\n elementOptionsGroup.innerHTML = '';\r\n }\r\n },\r\n wpColorPickerCheckChangeForTableStateSaving: function( event ) {\r\n if( event.originalEvent.type == 'external' ) {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n } else {\r\n let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );\r\n if( wpPickerContainer ) {\r\n if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\r\n body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\r\n }\r\n }\r\n }\r\n },\r\n irisStripMouseUpStateSaveManager: function() {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\r\n },\r\n wpColorPickerClear: function( attribute, isId ) {\r\n let input;\r\n if( isId ) {\r\n input = [document.getElementById( attribute )];\r\n input.length = 1;\r\n } else {\r\n input = document.getElementsByClassName( attribute );\r\n }\r\n for( let i = 0; i < input.length; i++ ) {\r\n let wpPickerContainer = WPTB_Helper.findAncestor( input[i], 'wp-picker-container' );\r\n if( wpPickerContainer ) {\r\n let parent = wpPickerContainer.parentNode;\r\n parent.removeChild( wpPickerContainer );\r\n let newInput = document.createElement( 'input' );\r\n if( isId ) {\r\n newInput.setAttribute( 'id', attribute );\r\n } else {\r\n newInput.classList.add( 'wptb-element-property', attribute );\r\n }\r\n newInput.value = \"\";\r\n parent.appendChild( newInput );\r\n }\r\n }\r\n },\r\n detectMode: function() {\r\n var url = window.location.href,\r\n regex = new RegExp('[?&]table(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if ( ! results ) return false;\r\n if ( ! results[2] ) return '';\r\n return decodeURIComponent( results[2].replace(/\\+/g, ' ') );\r\n },\r\n getTableId() {\r\n let tableId = WPTB_Helper.detectMode();\r\n if (!tableId) {\r\n tableId = 'startedid-0';\r\n }\r\n\r\n return tableId;\r\n },\r\n getColumnWidth: function( table, cell ) {\r\n let xIndex = cell.dataset.xIndex;\r\n let xIndexes = table.querySelectorAll( '[data-x-index=\"' + xIndex + '\"]' );\r\n let cellWidth = cell.getCellDimensions().width;\r\n for( let i = 0; i < xIndexes.length; i++ ) {\r\n if( cellWidth > xIndexes[i].getCellDimensions().width ) {\r\n cellWidth = xIndexes[i].getCellDimensions().width;\r\n }\r\n }\r\n return cellWidth;\r\n },\r\n getRowHeight: function( table, cell ) {\r\n let yIndex = cell.dataset.yIndex;\r\n let yIndexes = table.querySelectorAll( '[data-y-index=\"' + yIndex + '\"]' );\r\n let cellHeight = cell.getCellDimensions().height;\r\n for( let i = 0; i < yIndexes.length; i++ ) {\r\n if( cellHeight > yIndexes[i].getCellDimensions().height ) {\r\n cellHeight = yIndexes[i].getCellDimensions().height;\r\n }\r\n }\r\n return cellHeight;\r\n },\r\n newElementProxy: function( el ) {\r\n if( el ) {\r\n let data = {kind: el};\r\n return new WPTB_ElementObject( data );\r\n }\r\n },\r\n wpColorPickerChange: function( event, ui ) {\r\n let uiColor;\r\n if( ui ) {\r\n uiColor = ui.color.toString();\r\n } else {\r\n uiColor = '';\r\n }\r\n\r\n let parent = WPTB_Helper.findAncestor( event.target, 'wp-picker-input-wrap' ).getElementsByClassName( 'wptb-color-picker' )[0], classe, type, ps, number;\r\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\r\n type = classe[1];\r\n number = classe[2];\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + type + '-' + number )[0];\r\n if ( type == 'button' ) {\r\n if ( parent.dataset.type == 'button-text-color' ) {\r\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.color = uiColor;\r\n } else {\r\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.backgroundColor = uiColor;\r\n }\r\n } else if( type == 'list' ) {\r\n let ps = affectedEl.querySelectorAll( 'p' );\r\n if( ps.length > 0 ) {\r\n for ( let i = 0; i < ps.length; i++ ) {\r\n ps[i].style.color = uiColor;\r\n }\r\n }\r\n } else if( type == 'star_rating' ) {\r\n if ( parent.dataset.type == 'star-color' ) {\r\n let ratingStar = affectedEl.querySelectorAll('li');\r\n for( let i = 0; i < ratingStar.length; i++ ) {\r\n let span = ratingStar[i].getElementsByTagName( 'span' );\r\n for( let j = 0; j < span.length; j++ ) {\r\n span[j].style.fill = uiColor;\r\n }\r\n }\r\n } else if( parent.dataset.type == 'numeral-rating-color' ) {\r\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');\r\n wptbTextMessageSize.style.color = uiColor;\r\n }\r\n\r\n } else {\r\n affectedEl.style.color = uiColor;\r\n }\r\n },\r\n numberImputSize: function ( wptbNumberInputs, maxCount, maxValue ) {\r\n wptbNumberInputs.onkeydown = function() {\r\n let thisValue = this.value;\r\n thisValue = String( thisValue );\r\n if ( thisValue[0] == 0 ) {\r\n this.value = \"\";\r\n } else {\r\n thisValue = thisValue.substring( 0, maxCount );\r\n this.value = thisValue;\r\n }\r\n }\r\n wptbNumberInputs.onkeyup = function( ) {\r\n let thisValue = this.value;\r\n if ( parseInt( thisValue, 10 ) > parseInt( maxValue, 10 ) ) {\r\n this.value = maxValue;\r\n }\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n },\r\n ucfirst: function( str ) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n },\r\n wptbDocumentEventGenerate: function( eventName, element, details ) {\r\n if( eventName && element ) {\r\n if( ! details ) {\r\n details = true;\r\n }\r\n let event = new CustomEvent( eventName, { detail: details, bubbles: true } );\r\n element.dispatchEvent( event );\r\n }\r\n },\r\n // run script for the pointed element\r\n elementStartScript: function( element, kind ) {\r\n //let script = element.getElementsByTagName( 'script' );\r\n if(!kind) {\r\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n if( infArr && Array.isArray( infArr ) ) {\r\n kind = infArr[1];\r\n }\r\n }\r\n\r\n if( kind ) {\r\n// let wpTemplateId = 'wptb-' + kind + '-script';\r\n// let template = wp.template( wpTemplateId );\r\n// let data = {elemClass: infArr[0]};\r\n// let elementScriptText = template( data );\r\n// elementScriptText = elementScriptText.replace(/\\r|\\n|\\t/g, '').trim();\r\n//\r\n// let scriptNew = document.createElement( 'script' );\r\n// scriptNew.setAttribute( 'type', 'text/javascript' );\r\n// scriptNew.innerHTML = elementScriptText;\r\n// element.parentNode.appendChild( scriptNew );\r\n\r\n// element.parentNode.removeChild( scriptNew );\r\n if( kind in WPTB_ElementsScriptsLauncher ) {\r\n WPTB_ElementsScriptsLauncher[kind]( element );\r\n }\r\n }\r\n },\r\n // deletes event handlers from the pointed option element and from all his daughter elements\r\n deleteEventHandlers: function( element ) {\r\n if( element ) {\r\n jQuery( element ).off();\r\n let elementChildren = element.children;\r\n if( elementChildren ) {\r\n for ( let i = 0; i < elementChildren.length; i++ ) {\r\n WPTB_Helper.deleteEventHandlers( elementChildren[i] );\r\n }\r\n }\r\n } else {\r\n return;\r\n }\r\n },\r\n // replace all occurrences in a string\r\n replaceAll: function( string, search, replace ){\r\n return string.split( search ).join( replace );\r\n },\r\n // clears code from TinyMCE attributes\r\n elementClearFromTinyMce: function( element ) {\r\n let mceContentBodys = element.querySelectorAll( '.mce-content-body' );\r\n if( mceContentBodys.length > 0 ) {\r\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\r\n mceContentBodys[k].classList.remove( 'mce-content-body' );\r\n }\r\n }\r\n\r\n let dataMceStyle = element.querySelectorAll( '[data-mce-style]' );\r\n if ( dataMceStyle.length > 0 ) {\r\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\r\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\r\n }\r\n }\r\n\r\n let mceEditFocus = element.querySelectorAll( '.mce-edit-focus' );\r\n if( mceEditFocus.length > 0 ) {\r\n for ( let k = 0; k < mceEditFocus.length; k++ ) {\r\n mceEditFocus[k].classList.remove( 'mce-edit-focus' );\r\n }\r\n }\r\n\r\n let contentEditable = element.querySelectorAll( '[contenteditable]' );\r\n if ( contentEditable.length > 0 ) {\r\n for ( let k = 0; k < contentEditable.length; k++ ) {\r\n contentEditable[k].removeAttribute( 'contenteditable' );\r\n }\r\n }\r\n\r\n let spellCheck = element.querySelectorAll( '[spellcheck]' );\r\n if ( spellCheck.length > 0 ) {\r\n for ( let k = 0; k < spellCheck.length; k++ ) {\r\n spellCheck[k].removeAttribute( 'spellcheck' );\r\n }\r\n }\r\n\r\n let mceIds = element.querySelectorAll( '[id^=mce_]' );\r\n if ( mceIds.length > 0 ) {\r\n for ( let k = 0; k < mceIds.length; k++ ) {\r\n mceIds[k].removeAttribute( 'id' );\r\n }\r\n }\r\n\r\n return element;\r\n },\r\n elementOptionContainerCustomClassSet: function( targetInput, customClassForContainer ) {\r\n if( targetInput && customClassForContainer ) {\r\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\r\n if( containerElement ) {\r\n containerElement.classList.add( customClassForContainer );\r\n }\r\n }\r\n },\r\n elementOptionContainerAdditionalStyles: function( targetInput, containerAdditionalStyles ) {\r\n if( targetInput && containerAdditionalStyles ) {\r\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\r\n let containerStylesArrOne = containerAdditionalStyles.split( ';' );\r\n\r\n if( containerElement && containerStylesArrOne ) {\r\n function containerStylesSet( containerStyleStr, containerElement ) {\r\n if( containerStyleStr ) {\r\n containerStyleStrArr = containerStyleStr.split( ':' );\r\n\r\n if( containerStyleStrArr && Array.isArray( containerStyleStrArr ) ) {\r\n containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];\r\n }\r\n }\r\n }\r\n if( containerStylesArrOne && Array.isArray( containerStylesArrOne ) ) {\r\n for( let i = 0; i < containerStylesArrOne.length; i++ ) {\r\n if( containerStylesArrOne[i] ) {\r\n containerStylesSet( containerStylesArrOne[i], containerElement );\r\n }\r\n }\r\n } else {\r\n containerStylesSet( containerStylesArrOne, containerElement );\r\n }\r\n }\r\n }\r\n },\r\n // function which set handler for event of changes of control\r\n controlsInclude: function( element, functionHandler, acceptEventValues = false ) {\r\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\r\n element.addEventListener( 'element:controls:active', function() {\r\n if(!element.hasOwnProperty('controlConnectFunctionsName') ||\r\n !Array.isArray(element.controlConnectFunctionsName) ||\r\n element.controlConnectFunctionsName.indexOf(functionHandler.name) == -1) {\r\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i ),\r\n elementKind;\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n elementKind = infArr[1];\r\n }\r\n\r\n// if( ! element.hasOwnProperty( 'сontrolsConnectIndic' ) || element.сontrolsConnectIndic !== true && elementKind ) {\r\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n// if( elementsSettingsTemplateJs.length > 0 ) {\r\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\r\n//\r\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\r\n// let controlClassesNames = [];\r\n// if( elementsSettings ) {\r\n// elementsSettings = elementsSettings.trim();\r\n// elementsSettings = JSON.parse( elementsSettings );\r\n// if( elementsSettings && typeof elementsSettings === 'object' ) {\r\n// if( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\r\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\r\n// if( elementSettings && typeof elementSettings === 'object' ) {\r\n// Object.keys( elementSettings ).forEach( function( key ) {\r\n// let regularText = new RegExp( 'data-wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\r\n// let keyInfArr = key.match( regularText );\r\n// if( keyInfArr && Array.isArray( keyInfArr ) ) {\r\n// let controlClass = key.replace( 'data-', '' );\r\n// controlClassesNames.push( [controlClass, keyInfArr[2]] );\r\n// }\r\n// });\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n if( elementKind ){\r\n let elementOptionsGroupIds = element.optionsGroupIds;\r\n if(elementOptionsGroupIds && Array.isArray(elementOptionsGroupIds)) {\r\n for(let i = 0; i < elementOptionsGroupIds.length; i++) {\r\n let elementOptionsGroupId = elementOptionsGroupIds[i];\r\n\r\n let elementOptionsGroup = document.getElementById(elementOptionsGroupId);\r\n\r\n let controlActiveElements = elementOptionsGroup.querySelectorAll('.wptb-element-property');\r\n controlActiveElements = [...controlActiveElements];\r\n\r\n controlActiveElements.map(controlActiveElement => {\r\n let regularText = new RegExp( 'wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\r\n let controlInfArr = controlActiveElement.className.match( regularText );\r\n if( controlInfArr && Array.isArray( controlInfArr ) ) {\r\n let controlUnicClassName = controlInfArr[0];\r\n\r\n element.addEventListener( 'wptb-control:' + controlUnicClassName, function(e) {\r\n let controls = {};\r\n let controlName = controlInfArr[2];\r\n let control = document.getElementsByClassName( controlUnicClassName );\r\n if( control.length > 0 && controlName ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\r\n\r\n if(acceptEventValues) {\r\n controls[controlName] = {\r\n targetValue: targetControlValue,\r\n eventValue: e.detail.value\r\n }\r\n }else {\r\n controls[controlName] = targetControlValue;\r\n }\r\n }\r\n functionHandler( controls, element );\r\n }, false );\r\n }\r\n });\r\n }\r\n }\r\n //let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\r\n\r\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\r\n // if(!elementOptionsContainer){\r\n // return;\r\n // }\r\n\r\n // let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\r\n // let controlActiveElements = elementOptions[i].querySelector( '.wptb-element-property' );\r\n //\r\n //\r\n // for( let i = 0; i < elementOptions.length; i++ ) {\r\n // let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\r\n // if( controlActiveElement ) {\r\n //\r\n // }\r\n // }\r\n\r\n if(!element.controlConnectFunctionsName && !Array.isArray(element.controlConnectFunctionsName)) {\r\n element.controlConnectFunctionsName = [];\r\n }\r\n\r\n element.controlConnectFunctionsName.push( functionHandler.name );\r\n }\r\n }\r\n }, false );\r\n }\r\n },\r\n oneControlInclude: function( element, functionHandler, controlName ) {\r\n if( element && typeof element === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string' ) {\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i ),\r\n elementKind;\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n elementKind = infArr[1].split( '-' )[0];\r\n\r\n let wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';\r\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\r\n let data = {\r\n container: '.' + infArr[0]\r\n };\r\n let jsonControlsConfigJson = tmplControlsConfig( data );\r\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\r\n\r\n if( jsonControlsConfig && typeof jsonControlsConfig === 'object' && jsonControlsConfig.hasOwnProperty( controlName ) ) {\r\n let controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;\r\n\r\n element.addEventListener( 'wptb-control:' + controlClassName, function( event ) {\r\n let control = document.getElementsByClassName( controlClassName );\r\n if( control.length > 0 ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\r\n\r\n functionHandler( targetControlValue, element );\r\n }\r\n }, false );\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n },\r\n //\r\n innerElementCopyIncludeHandler: function( element, functionHandler ) {\r\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\r\n element.addEventListener( 'wptb-inner-element:copy', function( event ) {\r\n let innerElement = event.detail;\r\n if( innerElement ) {\r\n WPTB_Helper.elementClearFromTinyMce( innerElement );\r\n functionHandler( innerElement, element );\r\n }\r\n }, false );\r\n }\r\n },\r\n /**\r\n * Sets the control elements when changing which to will restart this control\r\n * @param {array} dependOnControlName\r\n * @param {string} targetControlElementClass\r\n * @param {array} valueDependOnControlCorrect\r\n * @param {string} kind\r\n * @param {HTMLElement} element\r\n */\r\n valueDependOnControl: function(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect, kind, element) {\r\n function dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect) {\r\n if(typeof dependOnControlName === 'string') {\r\n dependOnControlName = [dependOnControlName];\r\n }\r\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\r\n let valueDependOnControl = {};\r\n let dependOnControlElementsArr = [];\r\n if (infArr && Array.isArray(infArr)) {\r\n let controlName = infArr[3];\r\n let dependOnControlElements;\r\n let valueDependOnControlCorrectObj = {};\r\n if(Array.isArray(valueDependOnControlCorrect)) {\r\n if(Array.isArray(valueDependOnControlCorrect[0])) {\r\n valueDependOnControlCorrect.map(s => {\r\n valueDependOnControlCorrectObj[s[0]] = [s[1], s[2]];\r\n });\r\n } else {\r\n valueDependOnControlCorrectObj[valueDependOnControlCorrect[0]] = [valueDependOnControlCorrect[1], valueDependOnControlCorrect[2]];\r\n }\r\n }\r\n dependOnControlName.map(s => {\r\n let dependOnControlElementClass = targetControlElementClass.replace(controlName, s);\r\n if(dependOnControlElementClass) {\r\n dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);\r\n if(dependOnControlElements.length > 0 && dependOnControlElements[0].type) {\r\n valueDependOnControl[s] = dependOnControlElements[0].value;\r\n if(s in valueDependOnControlCorrectObj) {\r\n if(valueDependOnControlCorrectObj[s][1] === 'integer') {\r\n valueDependOnControl[s] = parseInt(valueDependOnControl[s]) + parseInt(valueDependOnControlCorrectObj[s][0]);\r\n } else if(valueDependOnControlCorrectObj[s][1] === 'string') {\r\n valueDependOnControl[s] = valueDependOnControl[s] + valueDependOnControlCorrectObj[s][0];\r\n }\r\n }\r\n dependOnControlElementsArr.push(dependOnControlElements[0]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n return [valueDependOnControl, dependOnControlElementsArr];\r\n }\r\n\r\n let dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);\r\n WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);\r\n\r\n Object.keys(dependOnControlData[0]).forEach(function (key) {\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n let unicClass = 'wptb-el-' + infArr[1] + '-' + [key];\r\n element.addEventListener(`wptb-control:${unicClass}`, function(event){\r\n let dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);\r\n WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);\r\n }, false);\r\n });\r\n },\r\n /**\r\n * Sets the visibility of one control to depend on the state of other controls\r\n * @param dependOnMain\r\n * @param targetControlElementClass\r\n */\r\n appearDependOnControl: function( dependOnMain, targetControlElementClass ) {\r\n if( Array.isArray( dependOnMain ) ) {\r\n if(typeof dependOnMain[0] === 'string') {\r\n dependOnMain = [dependOnMain];\r\n } else if(!Array.isArray(dependOnMain[0])) {\r\n return;\r\n }\r\n let dependOnControlElementsValue = {};\r\n for(let i = 0; i < dependOnMain.length; i++) {\r\n let dependOn = dependOnMain[i];\r\n let dependOnControlName = dependOn[0];\r\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\r\n\r\n if (infArr && Array.isArray(infArr)) {\r\n let controlName = infArr[3];\r\n\r\n let dependOnControlElementClass = targetControlElementClass.replace(controlName, dependOnControlName);\r\n if(dependOnControlElementClass) {\r\n let dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);\r\n if(dependOnControlElements.length > 0) {\r\n dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];\r\n }\r\n }\r\n }\r\n }\r\n\r\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\r\n if( targetControlElement.length > 0 ) {\r\n targetControlElement = targetControlElement[0];\r\n let controlContainerElem = WPTB_Helper.findAncestor( targetControlElement, 'wptb-element-option' );\r\n\r\n if( controlContainerElem ) {\r\n showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue);\r\n\r\n Object.keys(dependOnControlElementsValue).map(k => {\r\n if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {\r\n let dependOnControlElements = dependOnControlElementsValue[k][1];\r\n let dependOnControlElement = dependOnControlElements[0];\r\n dependOnControlElement.addEventListener( 'change', dependOnControlElementChangeHandler.bind(null, controlContainerElem, dependOnControlElementsValue, k), false );\r\n }\r\n });\r\n }\r\n }\r\n\r\n function dependOnControlElementChangeHandler(controlContainerElem, dependOnControlElementsValue, k) {\r\n let dependOn = dependOnControlElementsValue[k][2];\r\n let dependOnControlElements = dependOnControlElementsValue[k][1];\r\n dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];\r\n showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue)\r\n }\r\n\r\n function showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue) {\r\n let display = 'block';\r\n Object.keys(dependOnControlElementsValue).map(k => {\r\n if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {\r\n if(dependOnControlElementsValue[k][0] === false){\r\n display = 'none';\r\n }\r\n }\r\n })\r\n\r\n controlContainerElem.style.display = display;\r\n }\r\n\r\n function dependOnControlElementValue(dependOnControlElements, dependOn) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet(dependOnControlElements);\r\n\r\n if(dependOn[1] && Array.isArray(dependOn[1]) &&\r\n (dependOn[1].indexOf(targetControlValue) !== -1 )) {\r\n return true;\r\n // let childCheck = controlContainerElem.querySelector('input[type=\"checkbox\"]')\r\n // if (childCheck) {\r\n // childCheck.checked = true;\r\n // }\r\n } else if(dependOn[2] && Array.isArray(dependOn[2]) &&\r\n (dependOn[2].indexOf(targetControlValue) !== -1)) {\r\n return false;\r\n }\r\n }\r\n }\r\n },\r\n //\r\n controlsStateManager: function ( targetControlClass, controlChangeIndic ) {\r\n let targetControls = document.getElementsByClassName( targetControlClass );\r\n if( targetControls.length > 0 ) {\r\n //targetControls = targetControls[0];\r\n\r\n let infArr = targetControlClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let selectorElement;\r\n selectorElement = document.querySelector( '.wptb-element-' + infArr[1] );\r\n\r\n if( selectorElement ) {\r\n let elementsSettingsTemplatesJs;\r\n let elementSettings = {};\r\n let elementsSettings;\r\n elementsSettingsTemplatesJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n if( elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '' ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\r\n elementSettings['data-' + targetControlClass] = targetControlValue;\r\n\r\n elementsSettings = {};\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;\r\n elementsSettings = JSON.stringify( elementsSettings );\r\n\r\n if( elementsSettingsTemplatesJs.length == 0 ) {\r\n elementsSettingsTemplatesJs = document.createElement( 'script' );\r\n elementsSettingsTemplatesJs.setAttribute( 'type', 'text/html' );\r\n elementsSettingsTemplatesJs.setAttribute( 'class', 'wptb-element-datas' );\r\n } else {\r\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\r\n }\r\n\r\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\r\n\r\n let body = document.getElementsByTagName('body')[0];\r\n body.appendChild( elementsSettingsTemplatesJs );\r\n } else {\r\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\r\n elementsSettings = elementsSettingsTemplatesJs.innerHTML;\r\n if( elementsSettings ) {\r\n elementsSettings = elementsSettings.trim();\r\n elementsSettings = JSON.parse( elementsSettings );\r\n\r\n if( elementsSettings && typeof elementsSettings === 'object' ) {\r\n\r\n\r\n if( controlChangeIndic ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\r\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\r\n }\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\r\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\r\n } else if( ! ( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\r\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\r\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\r\n }\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\r\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\r\n } else if( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\r\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) {\r\n for( let i = 0; i < targetControls.length; i++ ) {\r\n if( targetControls[i].type == 'checkbox' ) {\r\n let targetControlValue;\r\n if( targetControls[i].name ) {\r\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\r\n } else {\r\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\r\n }\r\n\r\n if( targetControlValue == 'checked' ) {\r\n targetControls[i].checked = true;\r\n } else if( targetControlValue == 'unchecked' ) {\r\n targetControls[i].checked = false;\r\n }\r\n } else {\r\n targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n targetControlValueGet: function( targetControls ) {\r\n let targetControlValue;\r\n for( let i = 0; i < targetControls.length; i++ ) {\r\n if( targetControls[i].type == 'checkbox' && targetControls[i].name ) {\r\n if( ! targetControlValue ) targetControlValue = {};\r\n if( targetControls[i].checked == true ) {\r\n targetControlValue[targetControls[i].name] = 'checked';\r\n } else {\r\n targetControlValue[targetControls[i].name] = 'unchecked';\r\n }\r\n } else if( targetControls[i].type == 'checkbox' ) {\r\n if( targetControls[i].checked == true ) {\r\n targetControlValue = 'checked';\r\n } else {\r\n targetControlValue = 'unchecked';\r\n }\r\n } else if( targetControls[i].type ) {\r\n targetControlValue = targetControls[i].value;\r\n } else if( targetControls[i].dataset.alignmentValue && targetControls[i].classList.contains( 'selected' ) ){\r\n targetControlValue = targetControls[i].dataset.alignmentValue;\r\n }\r\n }\r\n return targetControlValue;\r\n },\r\n //\r\n elementControlsStateCopy: function( elementProt, copyElem ) {\r\n if( elementProt && copyElem ) {\r\n let infArrProt = elementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n let infArrCopy = copyElem.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( infArrProt && Array.isArray( infArrProt ) &&\r\n infArrCopy && Array.isArray( infArrCopy )) {\r\n let elemProtKind = infArrProt[1];\r\n let elemCopyKind = infArrCopy[1];\r\n let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n if( elementsSettingsTemplateJs.length > 0 ) {\r\n elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\r\n\r\n let elementsSettings = elementsSettingsTemplateJs.innerHTML;\r\n if( elementsSettings ) {\r\n elementsSettings = elementsSettings.trim();\r\n elementsSettings = JSON.parse( elementsSettings );\r\n\r\n if( elementsSettings && typeof elementsSettings === 'object' ) {\r\n let elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];\r\n if( elementSettingsProt && typeof elementSettingsProt === 'object' ) {\r\n let elementSettingsCopy = {};\r\n\r\n Object.keys( elementSettingsProt ).forEach( function( key ) {\r\n let elementSettingValue = elementSettingsProt[key];\r\n let elementSettingKeyCopy = key.replace( elemProtKind, elemCopyKind );\r\n elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;\r\n });\r\n\r\n if( Object.keys( elementSettingsCopy ).length > 0 ) {\r\n elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;\r\n\r\n elementsSettings = JSON.stringify( elementsSettings );\r\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n elementControlsStateDelete: function( element, nameControl ) {\r\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n let wptbElementDatas = body.getElementsByClassName( 'wptb-element-datas' );\r\n if( infArr && Array.isArray( infArr ) && wptbElementDatas.length > 0 ) {\r\n wptbElementDatas = wptbElementDatas[0];\r\n let elementsSettings = wptbElementDatas.innerHTML;\r\n if( elementsSettings ) {\r\n elementsSettings = elementsSettings.trim();\r\n elementsSettings = JSON.parse( elementsSettings );\r\n if( elementsSettings && typeof elementsSettings === 'object' &&\r\n ( ( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\r\n if( ! nameControl ) {\r\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\r\n } else {\r\n if( elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] &&\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] === 'object' &&\r\n ( 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] ) {\r\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];\r\n }\r\n }\r\n\r\n if( Object.keys( elementsSettings ).length == 0 ) {\r\n body.removeChild( wptbElementDatas );\r\n } else {\r\n elementsSettings = JSON.stringify( elementsSettings );\r\n wptbElementDatas.innerHTML = elementsSettings;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n elementOptionsSet: function( kind, element, valueDependOnControl, targetControlElementClass ) {\r\n // get controls config for this element\r\n let wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';\r\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\r\n let data;\r\n let elementContainerClass;\r\n let elementOptionClassIndic;\r\n let elementOptionsGroup;\r\n\r\n let controlElementParent;\r\n let elementOptionsScriptsContainer;\r\n\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( ! infArr ) {\r\n let table_id = WPTB_Helper.detectMode();\r\n if (!table_id) {\r\n table_id = 'startedid-0';\r\n }\r\n if( element.classList.contains( 'wptb-preview-table' ) ) {\r\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\r\n } else if( element.classList.contains( 'wptb-cell' ) ) {\r\n let cellEditActiveClass = document.querySelector('.wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\r\n if( ! cellEditActiveClass ) element.classList.add('wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\r\n }else if (element.classList.contains('wptb-responsive')){\r\n // if table id parsed from url is starting with 'wptb-team', it means it is team built prebuilt table with a unique id that doesn't fit infArr match regex, in that case, use default id for elements options\r\n if(table_id.startsWith('wptb_team')){\r\n table_id = 'startedid-0';\r\n }\r\n element.classList.add('wptb-element-table_responsive_setting-' + table_id);\r\n }\r\n\r\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n }\r\n\r\n data = {\r\n container: '.' + infArr[0]\r\n };\r\n let controlName;\r\n data.valueDependOnControl = {};\r\n if(valueDependOnControl) {\r\n Object.keys(valueDependOnControl).forEach(function (key) {\r\n data.valueDependOnControl[key] = valueDependOnControl[key];\r\n });\r\n }\r\n if(targetControlElementClass) {\r\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\r\n\r\n if (infArr && Array.isArray(infArr)) {\r\n controlName = infArr[3];\r\n }\r\n }\r\n\r\n elementContainerClass = infArr[0];\r\n elementOptionClassIndic = infArr[1];\r\n\r\n if( element.classList.contains( 'wptb-preview-table' ) ) {\r\n\r\n } else if( element.classList.contains( 'wptb-cell' ) ) {\r\n this.activateSection('cell_settings');\r\n }else if (element.classList.contains('wptb-responsive')){\r\n elementOptionsGroupId = 'table-responsive-group';\r\n wptbelementOptionClass = 'wptb-element-option';\r\n }\r\n else {\r\n let children = document.getElementById( 'element-options-group' ).childNodes;\r\n for ( let i = 0; i < children.length; i++) {\r\n if ( children[i].style )\r\n children[i].style.display = 'none';\r\n }\r\n this.activateSection('options_group');\r\n }\r\n\r\n let controlsConfigJson = tmplControlsConfig( data );\r\n let controlsConfig = JSON.parse( controlsConfigJson );\r\n\r\n let elementOptionsGroupIdsInvolved = [],\r\n elementOptionsGroupInvolved = {},\r\n elementOptionsContainerInvolved = {};\r\n\r\n // object for save all scrips for each controls\r\n let controlScriptsObj = {};\r\n\r\n // array for keep \"appear depend on\" params\r\n let controlappearDependOnControl = [];\r\n\r\n // array for keep \"value depend on\" params\r\n let controlValueDependOnControl = [];\r\n\r\n // create controls\r\n let elementOptionsScriptsContainerIndic = false;\r\n if(controlName) {\r\n let controlsConfigNew = {};\r\n controlsConfigNew[controlName] = controlsConfig[controlName];\r\n controlsConfig = controlsConfigNew;\r\n }\r\n let i = 0;\r\n Object.keys( controlsConfig ).forEach( function( key ) {\r\n let data = controlsConfig[key];\r\n data.controlKey = key;\r\n\r\n // get necessary wp js template\r\n let tmplControlTemplate = wp.template( 'wptb-' + data.type + '-control' );\r\n\r\n data.elemContainer = elementContainerClass;\r\n data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;\r\n Object.keys(data).map(k => {\r\n if (Object.prototype.hasOwnProperty.call(data, k) && data[k] === 'control_param_calculate_value') {\r\n data[k] = WPTB_Helper.controlParamCalculateValue(data.elementControlTargetUnicClass, k);\r\n }\r\n });\r\n let controlTemplate = tmplControlTemplate( data );\r\n if( 'appearDependOnControl' in data ) {\r\n if( Array.isArray( data.appearDependOnControl ) ) {\r\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\r\n }\r\n }\r\n\r\n if('valueDependOnControl' in data && !valueDependOnControl && !targetControlElementClass) {\r\n let valueDependOnControlCorrect = '';\r\n if(data.valueDependOnControlCorrect) valueDependOnControlCorrect = data.valueDependOnControlCorrect;\r\n controlValueDependOnControl.push([data.valueDependOnControl, data.elementControlTargetUnicClass, valueDependOnControlCorrect]);\r\n }\r\n\r\n function elementOptionsContainerInvolvedGet(elementOptionsGroupId, elementOptionsContainerInvolved) {\r\n if(!elementOptionsContainerInvolved[elementOptionsGroupId]){\r\n let elementOptionsContainer = document.createElement( 'div' );\r\n elementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\r\n document.getElementById( elementOptionsGroupId ).appendChild(elementOptionsContainer);\r\n elementOptionsContainerInvolved[elementOptionsGroupId] = elementOptionsContainer;\r\n }\r\n\r\n return elementOptionsContainerInvolved[elementOptionsGroupId];\r\n }\r\n\r\n if(elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) == -1 && !controlName) {\r\n elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);\r\n // clear elements from options group\r\n //document.getElementById( 'element-options-group' ).innerHTML = '';\r\n elementOptionsGroup = document.getElementById(data.elementOptionsGroupId);\r\n let elementOptionsGroupChildren = [...elementOptionsGroup.children];\r\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\r\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\r\n }\r\n elementOptionsGroupInvolved[data.elementOptionsGroupId] = elementOptionsGroup;\r\n }\r\n\r\n controlElementParent = elementOptionsGroupInvolved[data.elementOptionsGroupId];\r\n\r\n if(data.elementOptionsContainerOn === 'true' && !controlName) {\r\n controlElementParent = elementOptionsContainerInvolvedGet(data.elementOptionsGroupId, elementOptionsContainerInvolved);\r\n }\r\n\r\n\r\n if(data.elementOptionContainerOn === 'true') {\r\n let elementOptionContainer = document.createElement( 'div' );\r\n elementOptionContainer.classList.add( data.elementOptionClass, 'wptb-settings-items' );\r\n\r\n if( data.customClassForContainer ) {\r\n elementOptionContainer.classList.add( data.customClassForContainer );\r\n }\r\n\r\n if( data.containerAdditionalStyles ) {\r\n elementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\r\n }\r\n\r\n if(targetControlElementClass) {\r\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\r\n if( targetControlElement.length > 0 ) {\r\n targetControlElement = targetControlElement[0];\r\n let controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');\r\n\r\n if (controlContainerElem) {\r\n let controlContainerElemParent = controlContainerElem.parentNode;\r\n controlContainerElemParent.insertBefore(elementOptionContainer, controlContainerElem);\r\n controlContainerElemParent.removeChild(controlContainerElem);\r\n }\r\n }\r\n } else {\r\n controlElementParent.appendChild( elementOptionContainer );\r\n }\r\n controlElementParent = elementOptionContainer;\r\n }\r\n controlElementParent.innerHTML = controlElementParent.innerHTML + controlTemplate;\r\n\r\n let helperJavascriptElem = controlElementParent.getElementsByTagName( 'wptb-template-script' );\r\n if( helperJavascriptElem.length > 0 ) {\r\n helperJavascriptElem = helperJavascriptElem[0];\r\n let helperJavascriptCode = helperJavascriptElem.innerText;\r\n controlElementParent.removeChild( helperJavascriptElem );\r\n let script = document.createElement( 'script' );\r\n script.setAttribute( 'type', 'text/javascript' );\r\n script.setAttribute('id', kind + '-' + data.controlKey);\r\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\r\n if(!controlScriptsObj[data.elementOptionsGroupId] || !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])) {\r\n controlScriptsObj[data.elementOptionsGroupId] = [];\r\n }\r\n controlScriptsObj[data.elementOptionsGroupId].push( script );\r\n }\r\n\r\n i++;\r\n });\r\n\r\n element.optionsGroupIds = elementOptionsGroupIdsInvolved;\r\n\r\n Object.keys( controlScriptsObj ).forEach( function( elementOptionsGroupId ) {\r\n if(!targetControlElementClass) {\r\n elementOptionsScriptsContainer = document.createElement( 'div' );\r\n elementOptionsScriptsContainer.classList.add( 'wptb-element-options-scripts', 'wptb-options-' + infArr[1] );\r\n elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(elementOptionsScriptsContainer);\r\n }\r\n\r\n let controlScriptsArr = controlScriptsObj[elementOptionsGroupId];\r\n if( controlScriptsArr.length > 0 ) {\r\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\r\n if(targetControlElementClass) {\r\n let id = kind + '-' + controlName;\r\n let script = document.getElementById(id);\r\n elementOptionsScriptsContainer = script.parentNode;\r\n elementOptionsScriptsContainer.insertBefore(controlScriptsArr[i], script);\r\n elementOptionsScriptsContainer.removeChild(script);\r\n } else {\r\n elementOptionsScriptsContainer.appendChild(controlScriptsArr[i]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // run the scripts of controls\r\n\r\n // run appearDependOnControl function\r\n for ( let i = 0; i < controlappearDependOnControl.length; i++ ) {\r\n WPTB_Helper.appearDependOnControl( controlappearDependOnControl[i][0], controlappearDependOnControl[i][1] );\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\r\n // run valueDependOnControl function\r\n for (let i = 0; i < controlValueDependOnControl.length; i++) {\r\n WPTB_Helper.valueDependOnControl(controlValueDependOnControl[i][0], controlValueDependOnControl[i][1], controlValueDependOnControl[i][2], kind, element);\r\n }\r\n\r\n },\r\n\r\n /**\r\n *\r\n * @param unicClass\r\n * @param controlKey\r\n * @param key\r\n * @returns {*}\r\n */\r\n controlParamCalculateValue: function(unicClass, key) {\r\n let unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');\r\n if (window['paramCalculateValue_' + unicClassP + '_' + key] && typeof (window['paramCalculateValue_' + unicClassP + '_' + key]) === \"function\") {\r\n return window['paramCalculateValue_' + unicClassP + '_' + key]();\r\n }\r\n },\r\n\r\n controlParamCalculateValueCreateFunction: function(element, controlKey, key, handlerFunction) {\r\n const infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n const unicClass = 'wptb-el-' + infArr[1] + '-' + controlKey;\r\n let unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');\r\n window['paramCalculateValue_' + unicClassP + '_' + key] = function () {\r\n return handlerFunction(element);\r\n };\r\n },\r\n\r\n /**\r\n * function for create, update css for element\r\n *\r\n * @param elementContainer\r\n * @param selector\r\n * @param cssName\r\n * @param cssValue\r\n */\r\n managerExternalCssStyles: function( elementContainer, selector, cssName, cssValue ) {\r\n let infArr = elementContainer.match( /wptb-element-main(.+)-(\\d+)/i );\r\n if( ! infArr || ! Array.isArray( infArr ) ) {\r\n let table = document.getElementsByClassName( 'wptb-preview-table' );\r\n\r\n if( table.length > 0 ) {\r\n table = table[0];\r\n\r\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n selector = '.' + infArr[0] + ' ' + selector;\r\n }\r\n }\r\n }\r\n\r\n let head = document.head;\r\n if( head ) {\r\n let cssForThisElement = head.querySelector( '#styles-' + elementContainer );\r\n if( cssForThisElement ) {\r\n let cssText = cssForThisElement.innerHTML;\r\n if( cssText ) {\r\n let cssTextArrFirst = cssText.split( '}' );\r\n cssTextArrFirst.pop();\r\n let selectorExists = false;\r\n for( let i = 0; i < cssTextArrFirst.length; i++ ) {\r\n let cssTextArrSecond = cssTextArrFirst[i].split( '{' );\r\n if( cssTextArrSecond[0] === selector ) {\r\n let cssTextArrThird = cssTextArrSecond[1].split( ';' );\r\n cssTextArrThird.pop();\r\n let cssNameExists = false;\r\n for( let j = 0; j < cssTextArrThird.length; j++ ) {\r\n let cssTextArrFourth = cssTextArrThird[j].split( ':' );\r\n if( cssTextArrFourth[0] === cssName ) {\r\n if( cssValue ) {\r\n cssTextArrThird[j] = cssName + ':' + cssValue;\r\n } else {\r\n cssTextArrThird.splice( j, 1 );\r\n }\r\n\r\n cssTextArrSecond[1] = cssTextArrThird.join( ';' ) ? cssTextArrThird.join( ';' ) + ';' : '';\r\n cssNameExists = true;\r\n break;\r\n }\r\n }\r\n if( ! cssNameExists ) {\r\n if( cssValue ) {\r\n cssTextArrSecond[1] += cssName + ':' + cssValue + ';';\r\n }\r\n }\r\n if( cssTextArrSecond[1] ) {\r\n cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1]\r\n } else {\r\n cssTextArrFirst.splice( i, 1 );\r\n }\r\n if( cssTextArrFirst.join( '}' ) ) {\r\n cssForThisElement.innerHTML = cssTextArrFirst.join( '}' ) + '}';\r\n } else {\r\n head.removeChild( cssForThisElement );\r\n }\r\n\r\n selectorExists = true;\r\n break;\r\n }\r\n }\r\n\r\n if( ! selectorExists ) {\r\n if( cssValue ) {\r\n cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';\r\n } else {\r\n cssForThisElement.innerHTML = cssText;\r\n }\r\n }\r\n } else {\r\n if( cssValue ) {\r\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\r\n } else {\r\n head.removeChild( cssForThisElement );\r\n }\r\n }\r\n } else {\r\n if( cssValue ) {\r\n let cssForThisElement = document.createElement( 'style' );\r\n cssForThisElement.setAttribute( 'id', 'styles-' + elementContainer );\r\n cssForThisElement.classList.add( 'styles-wptb-elements' );\r\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\r\n head.appendChild( cssForThisElement );\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n *\r\n * Register section parts for sidebar\r\n *\r\n * @param {array} sections an array of section names\r\n */\r\n registerSections(sections) {\r\n this.sections = {};\r\n this.currentSection = '';\r\n if (!Array.isArray(sections)) {\r\n sections = [sections];\r\n }\r\n\r\n sections.map(s => {\r\n const sectionElement = document.querySelector(`[data-wptb-section=${s}]`);\r\n if (sectionElement) {\r\n this.sections[s] = sectionElement;\r\n }\r\n })\r\n },\r\n /**\r\n * Activate a registered section and deactivates others\r\n *\r\n * @param {string} sectionDataId section name to be activated\r\n * @param {string} displayType display type override for section to be used in its display style property\r\n */\r\n activateSection(sectionDataId, displayType = 'block') {\r\n this.currentSection=sectionDataId;\r\n this.triggerSectionEvent(sectionDataId);\r\n Object.keys(this.sections).map(k => {\r\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\r\n const visibility = sectionDataId === k ? displayType : 'none';\r\n this.sections[k].style = `display: ${visibility} !important`;\r\n }\r\n })\r\n },\r\n /**\r\n * Get id of current active section\r\n *\r\n * @returns {string} active section i\r\n */\r\n getCurrentSection(){\r\n return this.currentSection;\r\n },\r\n /**\r\n * Get current section from search parameter 'wptb-builder-section' of window location\r\n */\r\n getSectionFromUrl(){\r\n const parsedUrl = new URL(window.location.href);\r\n const urlSection = parsedUrl.searchParams.get('wptb-builder-section');\r\n if(urlSection){\r\n if(Object.keys(this.sections).some(key => key===urlSection)){\r\n this.activateSection(urlSection);\r\n }\r\n }\r\n },\r\n /**\r\n * Set up related buttons and links to trigger certain elements\r\n */\r\n setupSectionButtons() {\r\n const sectionButtons = Array.from( document.querySelectorAll('[data-wptb-section-button'));\r\n const vm = this;\r\n\r\n sectionButtons.map(s => {\r\n const sectionName = s.dataset.wptbSectionButton;\r\n s.addEventListener('click', function() {\r\n const displayType = s.dataset.wptbSectionDisplayType;\r\n vm.activateSection(sectionName, displayType);\r\n })\r\n\r\n document.addEventListener('wptbSectionChanged', (e)=> {\r\n if(e.detail === sectionName){\r\n s.classList.remove('disabled');\r\n s.classList.add('active');\r\n }else{\r\n s.classList.remove('active');\r\n s.classList.add('disabled');\r\n }\r\n })\r\n })\r\n },\r\n setupPanelToggleButtons(){\r\n const $ = jQuery;\r\n\r\n $('.wptb-panel-toggle-group').each(function(){\r\n const vm = $(this);\r\n $(this).find('.toggle-icon').click(() => {\r\n vm.find('.wptb-panel-toggle-target').slideToggle();\r\n vm.toggleClass('wptb-panel-toggle-content');\r\n })\r\n })\r\n },\r\n /**\r\n * Trigger a section change event\r\n *\r\n * @param {string} sectionName section name\r\n */\r\n triggerSectionEvent(sectionName){\r\n const sectionEvent = new CustomEvent('wptbSectionChanged', {detail: sectionName});\r\n\r\n document.dispatchEvent(sectionEvent);\r\n },\r\n /**\r\n * Setup sidebar toggle element\r\n *\r\n * @param {string} toggleSelector query selector for drawer toggle element\r\n */\r\n setupSidebarToggle(toggleSelector){\r\n const toggleButton = document.querySelector(toggleSelector);\r\n if(toggleButton){\r\n toggleButton.addEventListener('click', (e)=>{\r\n e.preventDefault();\r\n document.body.classList.toggle('collapsed');\r\n })\r\n }\r\n },\r\n // function for deleting all external CSS for the element\r\n externalCssStylesDelete: function( elementContainerClass ) {\r\n let head = document.head;\r\n if( head ) {\r\n let cssForThisElement = head.querySelector( '#styles-' + elementContainerClass );\r\n\r\n if( cssForThisElement ) {\r\n head.removeChild( cssForThisElement );\r\n }\r\n }\r\n },\r\n // function for copy all external CSS for the element\r\n externalCssStylesCopy: function( activeElement, copyElement ) {\r\n if( activeElement ) {\r\n let infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let activeElemClass = infArr[0];\r\n\r\n let head = document.head;\r\n if( head ) {\r\n let cssForActiveElement = head.querySelector( '#styles-' + activeElemClass );\r\n\r\n if( cssForActiveElement ) {\r\n let cssForNewElement = cssForActiveElement.cloneNode( true );\r\n\r\n cssForNewElement.removeAttribute( 'id', 'styles-' + activeElemClass );\r\n\r\n let infArrCopyEl = copyElement.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArrCopyEl && Array.isArray( infArrCopyEl ) ) {\r\n cssForNewElement.setAttribute( 'id', 'styles-' + infArrCopyEl[0] );\r\n let cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;\r\n let cssForNewElementInnerHTML = WPTB_Helper.replaceAll( cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0] );\r\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\r\n head.appendChild( cssForNewElement );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n // function for convertation elements stiles in json\r\n elementsStylesConvertToObject: function() {\r\n let head = document.head;\r\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\r\n let stylesObj = {};\r\n for( let i = 0; i < stylesElements.length; i++ ) {\r\n let styleElemId = stylesElements[i].getAttribute( 'id' );\r\n if( styleElemId && stylesElements[i].innerHTML ) {\r\n stylesObj[styleElemId] = stylesElements[i].innerHTML;\r\n }\r\n }\r\n\r\n if( Object.keys( stylesObj ).length != 0 ) {\r\n return JSON.stringify( stylesObj );\r\n }\r\n return '';\r\n },\r\n // function for set scc styles tags to head\r\n elementsStylesSetFromObject: function( jsonObject ) {\r\n let head = document.head;\r\n if( head ) {\r\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\r\n if( stylesElements.length > 0 ) {\r\n stylesElements = [...stylesElements];\r\n for( let i = 0; i < stylesElements.length; i++ ) {\r\n head.removeChild( stylesElements[i] );\r\n }\r\n }\r\n if( jsonObject ) {\r\n let stylesObj = JSON.parse( jsonObject );\r\n if( Object.keys( stylesObj ).length != 0 ) {\r\n Object.keys( stylesObj ).forEach( function( key ) {\r\n let cssText = stylesObj[key];\r\n let styleCss = document.createElement( 'style' );\r\n styleCss.setAttribute( 'id', key );\r\n styleCss.classList.add( 'styles-wptb-elements' );\r\n styleCss.innerHTML = cssText;\r\n head.appendChild( styleCss );\r\n });\r\n }\r\n }\r\n }\r\n },\r\n // function for table saving\r\n saveTable: function( event, startSaving, previewSaving ) {\r\n if( ! previewSaving && ! startSaving ) {\r\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) ||\r\n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\r\n //return;\r\n }\r\n }\r\n\r\n if( ! previewSaving ) {\r\n let bar = document.querySelector( '.wptb-edit-bar' );\r\n if ( bar && bar.classList.contains( 'visible' ) ) {\r\n let table = document.getElementsByClassName( 'wptb-preview-table' )[0];\r\n WPTB_Helper.toggleTableEditMode();\r\n }\r\n }\r\n\r\n // before save event trigger\r\n WPTB_Helper.wptbDocumentEventGenerate('wptb:save:before', document);\r\n\r\n let http = new XMLHttpRequest(),\r\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=save_table\",\r\n t = document.getElementById( 'wptb-setup-name' ).value.trim(),\r\n messagingArea,\r\n code,\r\n datas;\r\n\r\n code = document.getElementsByClassName( 'wptb-preview-table' );\r\n\r\n let postId;\r\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\r\n postId = rs;\r\n }\r\n let paramIdsNecessaryChange = false;\r\n if( code.length > 0 ) {\r\n code = code[0];\r\n let codeClone = code.cloneNode( true );\r\n if( postId ) {\r\n if( codeClone.classList.contains( 'wptb-element-main-table_setting-startedid-0' ) ) {\r\n codeClone.classList.remove( 'wptb-element-main-table_setting-startedid-0' );\r\n codeClone.classList.add( 'wptb-element-main-table_setting-' + postId );\r\n let wptbTableSetup = document.querySelector('.wptb-table-setup');\r\n if(wptbTableSetup) {\r\n wptbTableSetup.innerHTML = '';\r\n wptbTableSetup.appendChild(codeClone);\r\n WPTB_Table();\r\n }\r\n paramIdsNecessaryChange = true;\r\n }\r\n }\r\n codeClone.columns = code.columns;\r\n code = WPTB_Stringifier( codeClone );\r\n code = code.outerHTML;\r\n } else {\r\n code = '';\r\n }\r\n\r\n if( ! previewSaving ) {\r\n datas = '';\r\n let datas_containers = document.getElementsByClassName( 'wptb-element-datas' );\r\n\r\n if( datas_containers.length > 0 ) {\r\n if( datas_containers[0].innerHTML ) {\r\n datas = datas_containers[0].innerHTML;\r\n\r\n if( paramIdsNecessaryChange ) {\r\n datas = WPTB_Helper.replaceAll( datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0',\r\n 'tmpl-wptb-el-datas-main-table_setting-' + postId );\r\n\r\n datas = WPTB_Helper.replaceAll( datas, 'data-wptb-el-main-table_setting-startedid-0',\r\n 'data-wptb-el-main-table_setting-' + postId );\r\n }\r\n }\r\n }\r\n }\r\n\r\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\r\n if( paramIdsNecessaryChange ) {\r\n styleObjJson = WPTB_Helper.replaceAll( styleObjJson, '.wptb-element-main-table_setting-startedid-0',\r\n '.wptb-element-main-table_setting-' + postId );\r\n }\r\n\r\n if ( t === '' && code === '' ) {\r\n let messagingAreaText = '';\r\n if( t === '' ) messagingAreaText += 'You must assign a name to the table before saving it.</br>';\r\n if( code === '' ) messagingAreaText += 'Table wasn\\'t created';\r\n messagingArea = document.getElementById( 'wptb-messaging-area' );\r\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Error: ' + messagingAreaText + '</div>';\r\n messagingArea.classList.add( 'wptb-warning' );\r\n setTimeout(function () {\r\n messagingArea.removeChild( messagingArea.firstChild );\r\n }, 4000 );\r\n return;\r\n }\r\n\r\n let params = {\r\n title: t,\r\n content: code,\r\n elements_datas: datas,\r\n elements_styles: styleObjJson,\r\n security_code: wptb_admin_object.security_code\r\n };\r\n\r\n\r\n if( previewSaving ) {\r\n params.preview_saving = previewSaving;\r\n }\r\n\r\n if ( postId ) {\r\n params.id = postId;\r\n }\r\n\r\n // wptb save before event\r\n WPTB_Helper.wptbDocumentEventGenerate('wptb:save:before', document, params);\r\n\r\n params = JSON.stringify( params );\r\n\r\n http.open('POST', url, true);\r\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\r\n\r\n http.onreadystatechange = function ( action ) {\r\n if ( this.readyState == 4 && this.status == 200 ) {\r\n var data = JSON.parse( http.responseText );\r\n messagingArea = document.getElementById( 'wptb-messaging-area' );\r\n\r\n if ( data[0] == 'saved' ) {\r\n let builderPageUrl = document.location.href.replace( '#', '' );\r\n let regex = new RegExp( '&table=(.+)', \"i\" );\r\n builderPageUrl = builderPageUrl.replace( regex, '' );\r\n window.history.pushState( null, null, builderPageUrl + '&table=' + data[1] );\r\n\r\n document.wptbId = data[1];\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\r\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\r\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\r\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\r\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\r\n if( wptbPreviewBtn.length > 0 ) {\r\n wptbPreviewBtn = wptbPreviewBtn[0];\r\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\r\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\r\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\r\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\r\n }\r\n\r\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n // WPTB_Helper.saveTable( event, true );\r\n return;\r\n } else if( data[0] == 'edited' && startSaving ) {\r\n document.wptbId = data[1];\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\r\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\r\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\r\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\r\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\r\n if( wptbPreviewBtn.length > 0 ) {\r\n wptbPreviewBtn = wptbPreviewBtn[0];\r\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\r\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\r\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\r\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\r\n }\r\n\r\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else if( data[0] == 'edited' ) {\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\r\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\r\n\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else if( data[0] == 'preview_edited' ) {\r\n return;\r\n } else {\r\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Safety problems</div>';\r\n }\r\n messagingArea.classList.add( 'wptb-success' );\r\n setTimeout( function () {\r\n messagingArea.removeChild( messagingArea.firstChild );\r\n }, 4000 );\r\n }\r\n }\r\n http.send( params );\r\n },\r\n //\r\n clickOnFreeSpace: function() {\r\n // if current active section is responsive menu, ignore this functionality\r\n if(this.getCurrentSection() === 'table_responsive_menu'){\r\n return;\r\n }\r\n\r\n let cellModeBackground = document.querySelector( '#wptb-cell_mode_background' );\r\n if( cellModeBackground && cellModeBackground.classList.contains( 'visible' ) ) {\r\n return;\r\n }\r\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'table';\r\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'block';\r\n // document.getElementById( 'element-options-group' ).style.display = 'none';\r\n this.activateSection('elements');\r\n\r\n let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\r\n if( wpcdFixedToolbar.hasAttribute( 'data-toolbar-active-id' ) ) {\r\n document.getElementById( wpcdFixedToolbar.getAttribute( 'data-toolbar-active-id' ) ).classList.remove( 'toolbar-active' );\r\n }\r\n let element = document.querySelector( '.wptb-preview-table' );\r\n if( element ) {\r\n WPTB_Helper.elementOptionsSet( 'table_setting', element );\r\n }\r\n },\r\n\r\n /*\r\n * function for sending of element ajax request\r\n */\r\n elementAjax: function( dataAjaxData, element ) {\r\n let http = new XMLHttpRequest(),\r\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=wptb_element_ajax\";\r\n let element_name;\r\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n element_name = infArr[1];\r\n }\r\n\r\n let params = {\r\n element_ajax_data: dataAjaxData,\r\n element_name: element_name,\r\n security_code: wptb_admin_object.security_code\r\n };\r\n params = JSON.stringify( params );\r\n\r\n http.open( 'POST', url, true );\r\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\r\n\r\n http.onreadystatechange = function ( action ) {\r\n if ( this.readyState == 4 && this.status == 200 ) {\r\n var data = JSON.parse( http.responseText );\r\n let detail;\r\n if ( data && Array.isArray( data ) && data[0] == 'element_ajax_responce' ) {\r\n detail = {value: data[1]};\r\n } else {\r\n detail = '';\r\n }\r\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-element:ajax-response', element, detail );\r\n }\r\n }\r\n http.send( params );\r\n },\r\n\r\n /*\r\n * This just toggles visibility of cell edit bar, and toggles\r\n * cell selecting mode.\r\n */\r\n toggleTableEditMode: function ( close = false ) {\r\n let bar = document.getElementsByClassName('wptb-edit-bar'),\r\n cellModeBackground = document.getElementById('wptb-cell_mode_background'),\r\n leftScrollPanelCurtain = document.getElementById('wptb-left-scroll-panel-curtain'),\r\n leftScrollPanelCellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\r\n wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\r\n if (wptbPreviewTable.length > 0) {\r\n wptbPreviewTable = wptbPreviewTable[0];\r\n }\r\n\r\n if ( bar.length > 0 ) {\r\n let toggleEditMode = '';\r\n for ( let i = 0; i < bar.length; i++ ) {\r\n if ( bar[i].classList.contains( 'visible' ) ) {\r\n document.select.deactivateMultipleSelectMode();\r\n bar[i].classList.remove( 'visible' );\r\n cellModeBackground.classList.remove( 'visible' );\r\n leftScrollPanelCurtain.classList.remove( 'visible' );\r\n leftScrollPanelCellSettings.classList.remove( 'visible' );\r\n wptbPreviewTable.parentNode.classList.remove( 'wptb-preview-table-manage-cells' );\r\n let wptbPreviewTableTds = wptbPreviewTable.getElementsByTagName( 'td' );\r\n if ( wptbPreviewTableTds.length > 0 ) {\r\n for ( let i = 0; i < wptbPreviewTableTds.length; i++ ) {\r\n wptbPreviewTableTds[i].classList.remove( 'wptb-highlighted' );\r\n }\r\n }\r\n toggleEditMode = 'closed';\r\n WPTB_Helper.activateSection('elements')\r\n\r\n } else if( ! close ) {\r\n document.select.activateMultipleSelectMode();\r\n bar[i].classList.add( 'visible' );\r\n cellModeBackground.classList.add( 'visible' );\r\n leftScrollPanelCurtain.classList.add( 'visible' );\r\n wptbPreviewTable.parentNode.classList.add( 'wptb-preview-table-manage-cells' );\r\n\r\n toggleEditMode = 'opened';\r\n }\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-edit-mode/' + toggleEditMode, wptbPreviewTable)\r\n }\r\n },\r\n\r\n /*\r\n * checking of dimension of value\r\n */\r\n checkingDimensionValue: function ( value, dimension ) {\r\n value = String( value );\r\n dimension = String( dimension );\r\n if( value && dimension ) {\r\n let searchIndex = value.indexOf( dimension );\r\n if ( searchIndex != -1 && searchIndex == ( value.length - dimension.length ) ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n /*\r\n * if dimension is included - checking and if it necessary setting value\r\n * without dimension - return value\r\n */\r\n checkSetGetStyleSizeValue: function( element, styleName, computedStyleName, dimension ) {\r\n let elemStyleValue = element.style[styleName];\r\n elemStyleValue = String( elemStyleValue );\r\n\r\n if( ! elemStyleValue || dimension ? ! ( WPTB_Helper.checkingDimensionValue( elemStyleValue, dimension ) ) : false ){\r\n let elementStyles = window.getComputedStyle( element );\r\n if( computedStyleName && elementStyles.getPropertyValue( computedStyleName ) && dimension ? WPTB_Helper.checkingDimensionValue( elementStyles.getPropertyValue( computedStyleName ), dimension ) : true ) {\r\n if( ! dimension ) {\r\n return elementStyles.getPropertyValue( computedStyleName );\r\n } else {\r\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\r\n }\r\n } else {\r\n if( ! dimension ) {\r\n return false;\r\n } else {\r\n element.style[styleName] = null;\r\n }\r\n }\r\n } else if( ! dimension ) {\r\n return elemStyleValue;\r\n }\r\n\r\n return element.style[styleName];\r\n },\r\n\r\n /*\r\n * function checking that element has the style\r\n * if this style is present - checking the format color\r\n * if param set is true - setting style for element (consider hex format of color)\r\n * if param set is false - getting style from element\r\n */\r\n checkSetGetStyleColorValue: function ( element, styleName, computedStyleName, set = false ) {\r\n let elemStyleColorValue = element.style[styleName];\r\n\r\n if( ! elemStyleColorValue ) {\r\n let elementStyles = window.getComputedStyle( element, null );\r\n\r\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\r\n\r\n if( set ) {\r\n elemStyleColorValue = WPTB_Helper.rgbToHex( elementStyles.getPropertyValue( computedStyleName ) );\r\n if( WPTB_Helper.isHex( elemStyleColorValue ) ) {\r\n element.style[styleName] = elemStyleColorValue;\r\n } else {\r\n element.style[styleName] = '';\r\n }\r\n } else {\r\n return elementStyles.getPropertyValue( computedStyleName );\r\n }\r\n\r\n } else {\r\n if( set ) {\r\n element.style[styleName] = '';\r\n } else {\r\n return '';\r\n }\r\n }\r\n } else if( ! set ) {\r\n return elemStyleColorValue;\r\n }\r\n },\r\n\r\n /*\r\n * function checking that element has the style\r\n * if this style is present - checking the format color\r\n * if param set is true - setting style for element (consider hex format of color)\r\n * if param set is false - getting style from element\r\n */\r\n checkSetGetStyleValue: function ( element, styleName, computedStyleName, set = false ) {\r\n let elemStyleColorValue = element.style[styleName];\r\n\r\n if( ! elemStyleColorValue ) {\r\n let elementStyles = window.getComputedStyle( element, null );\r\n\r\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\r\n\r\n if( set ) {\r\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\r\n } else {\r\n return elementStyles.getPropertyValue( computedStyleName );\r\n }\r\n\r\n } else if( ! set ) {\r\n return '';\r\n }\r\n } else if( ! set ) {\r\n return elemStyleColorValue;\r\n }\r\n },\r\n\r\n /*\r\n * get the value of the same elements that have the most count\r\n */\r\n getValueMaxCountSameElementsInArray: function ( arr ) {\r\n if( arr && Array.isArray( arr ) ) {\r\n let check = {};\r\n let countEmpty = 0;\r\n for( let i = 0; i < arr.length; i++ ) {\r\n if(arr[i]) {\r\n if( check[arr[i]] ) {\r\n check[arr[i]]++;\r\n } else {\r\n check[arr[i]] = 1;\r\n }\r\n } else {\r\n countEmpty++;\r\n }\r\n }\r\n\r\n let maxPropName;\r\n for ( let key in check ) {\r\n if( ! maxPropName ) {\r\n maxPropName = key;\r\n continue;\r\n } else {\r\n if( check[maxPropName] < check[key] ) {\r\n maxPropName = key;\r\n }\r\n }\r\n }\r\n\r\n return check[maxPropName] >= countEmpty ? maxPropName : '';\r\n }\r\n },\r\n\r\n /*\r\n * For assigning to each cell xIndex and y Index attributes,\r\n * these are the column number and row number of cell in table.\r\n */\r\n recalculateIndexes: function ( table ) {\r\n WPTB_RecalculateIndexes(table);\r\n },\r\n\r\n /**\r\n * Table Rows colors reinstall\r\n */\r\n tableRowsColorsReinstall: function ( table ) {\r\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let tableIndex = '';\r\n if( infArr[infArr.length -1] == '0' ) {\r\n tableIndex = 'startedid-0';\r\n } else {\r\n tableIndex = infArr[infArr.length -1];\r\n }\r\n\r\n let tableHeaderBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableHeaderBackground' );\r\n if( tableHeaderBackground ) {\r\n let details = {value: tableHeaderBackground.value};\r\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableHeaderBackground, details );\r\n }\r\n\r\n let tableEvenRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableEvenRowBackground' );\r\n if( tableEvenRowBackground ) {\r\n let details = {value: tableEvenRowBackground.value};\r\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableEvenRowBackground, details );\r\n }\r\n\r\n let tableOddRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableOddRowBackground' );\r\n if( tableOddRowBackground ) {\r\n let details = {value: tableOddRowBackground.value};\r\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableOddRowBackground, details );\r\n }\r\n }\r\n },\r\n /**\r\n * Get parent html element of given type\r\n *\r\n * @param {string} parentType type of parent element\r\n * @param {HTMLElement} el current element\r\n * @returns {*} html element of type\r\n */\r\n getParentOfType: (parentType, el) => {\r\n if(el.nodeName === parentType.toUpperCase()) {\r\n return el;\r\n }\r\n\r\n return WPTB_Helper.getParentOfType(parentType , el.parentElement);\r\n },\r\n // current relative type of drag element\r\n // this type is used on differentiating certain elements based on their positioning on table\r\n dragRelativeType : '',\r\n /**\r\n *\r\n * @param {string} val drag relative type\r\n */\r\n setDragRelativeType: function (val){\r\n this.dragRelativeType = val;\r\n },\r\n // get drag relative type\r\n getDragRelativeType : function(){\r\n return this.dragRelativeType;\r\n },\r\n /**\r\n *\r\n * @param {HTMLElement} element\r\n * @param {string} styleName\r\n */\r\n getElementColorStylesHex: function (element, styleName) {\r\n let color = element.style[styleName];\r\n color = WPTB_Helper.rgbToHex( color );\r\n if( ! WPTB_Helper.isHex( color ) ) {\r\n color = '';\r\n }\r\n return color;\r\n },\r\n /**\r\n * Show element controls on adding them to table.\r\n */\r\n showControlsOnElementMount(){\r\n document.addEventListener('element:mounted:dom', function(e){\r\n e.target.click();\r\n });\r\n },\r\n /**\r\n * Show elements list menu on left panel on removing element from table\r\n */\r\n showElementsListOnRemove(){\r\n document.addEventListener('element:removed:dom', function(){\r\n WPTB_Helper.activateSection('elements');\r\n })\r\n },\r\n blockTinyMCEManageCells: function (){\r\n const addBlocker = (parent) => {\r\n const blockerElement = document.createElement('div');\r\n blockerElement.classList.add('wptb-plugin-blocker-element');\r\n parent.appendChild(blockerElement);\r\n }\r\n\r\n const removeBlocker = (parent) => {\r\n const blockerElement = parent.querySelector('.wptb-plugin-blocker-element');\r\n if(blockerElement){\r\n blockerElement.remove();\r\n }\r\n }\r\n document.addEventListener('wptbSectionChanged' , ({detail}) => {\r\n const table = document.querySelector('.wptb-table-setup table.wptb-preview-table');\r\n const cells = Array.from(table.querySelectorAll('td'));\r\n\r\n cells.map(removeBlocker);\r\n\r\n if(detail === 'manage_cells' || detail === 'cell_settings'){\r\n cells.map(addBlocker);\r\n }\r\n })\r\n\r\n document.addEventListener('wptb:save:before' , () => {\r\n const table = document.querySelector('.wptb-table-setup table.wptb-preview-table');\r\n const cells = Array.from(table.querySelectorAll('td'));\r\n\r\n cells.map(removeBlocker);\r\n })\r\n }\r\n}\r\n","var WPTB_Initializer = function () {\r\n\r\n const MIN_COLUMNS = 1,\r\n MIN_ROWS = 1,\r\n MAX_COLUMNS = 30,\r\n MAX_ROWS = 30;\r\n\r\n var tableGenerator = document.body;\r\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\r\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\r\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\r\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\r\n columnsInput = document.getElementById('wptb-columns-number'),\r\n rowsInput = document.getElementById('wptb-rows-number');\r\n \r\n // columnsDecrementButton.onclick = function () {\r\n // if (columnsInput.value > MIN_COLUMNS) {\r\n // columnsInput.value--;\r\n // }\r\n // };\r\n //\r\n // columnsIncrementButton.onclick = function () {\r\n // if (columnsInput.value < MAX_COLUMNS) {\r\n // columnsInput.value++;\r\n // }\r\n // };\r\n //\r\n // rowsDecrementButton.onclick = function () {\r\n // if (rowsInput.value > MIN_ROWS) {\r\n // rowsInput.value--;\r\n // }\r\n // };\r\n //\r\n // rowsIncrementButton.onclick = function () {\r\n // if (rowsInput.value < MAX_ROWS) {\r\n // rowsInput.value++;\r\n // }\r\n // };\r\n\r\n // document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\r\n // var columns = document.getElementById('wptb-columns-number').value,\r\n // rows = document.getElementById('wptb-rows-number').value;\r\n //\r\n // //wptbTableStateSaveManager.tableStateClear();\r\n //\r\n // WPTB_Table(columns, rows);\r\n //\r\n // let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n // wptbTableStateSaveManager.tableStateSet();\r\n // }\r\n\r\n // register and setup section buttons\r\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group' , 'table_responsive_menu', 'manage_cells']);\r\n WPTB_Helper.setupSectionButtons();\r\n\r\n // activate elements section for startup\r\n WPTB_Helper.activateSection('elements');\r\n\r\n // side bar toggle setup\r\n WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');\r\n\r\n // setup panel sections that have the ability to be toggled on/off\r\n WPTB_Helper.setupPanelToggleButtons();\r\n\r\n // setup responsive menu both at left and builder panel\r\n new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');\r\n\r\n // get builder section from url parameter for easy switch at page load\r\n WPTB_Helper.getSectionFromUrl();\r\n\r\n // automatically show element controls when dropped to table\r\n WPTB_Helper.showControlsOnElementMount();\r\n\r\n // show elements list menu on left panel on removing elements from table\r\n WPTB_Helper.showElementsListOnRemove();\r\n\r\n // block tinyMCE from activation at manage cells menu\r\n WPTB_Helper.blockTinyMCEManageCells();\r\n // initialize header toolbox\r\n new WPTB_HeaderToolbox('.wptb-plugin-header-toolbar').init();\r\n\r\n // redirect active menu to elements after closing manage cells menu\r\n document.addEventListener('wp-table-builder/table-edit-mode/closed', () => {\r\n WPTB_Helper.activateSection('elements');\r\n })\r\n};\r\n","var WPTB_innerElementSet = function ( element ) {\r\n \r\n element.ondragenter = function (e) {\r\n var div;\r\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\r\n return;\r\n }\r\n WPTB_DropHandle(this, e);\r\n \r\n element.classList.add( 'wptb-ondragenter' );\r\n }\r\n element.ondragover = function (e) {\r\n e.preventDefault();\r\n WPTB_DropHandle(this, e);\r\n }\r\n element.ondragleave = function (e) {\r\n WPTB_DropHandle(this, e, true);\r\n\r\n }\r\n element.ondrop = function(e) {\r\n this.classList.remove( 'wptb-ondragenter' );\r\n let element, classId;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\r\n return;\r\n }\r\n let wptbDropHandle,\r\n wptbDropBorderMarker;\r\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\r\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\r\n }\r\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\r\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\r\n }\r\n\r\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\r\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\r\n element = element.getDOMElement();\r\n } else {\r\n classId = e.dataTransfer.getData( 'node' );\r\n element = document.getElementsByClassName( classId )[0];\r\n //element.classList.remove( 'wptb-moving-mode' );\r\n }\r\n\r\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\r\n WPTB_DropHandle(this, e, true);\r\n const parentCell = WPTB_Helper.getParentOfType('td', e.target);\r\n\r\n parentCell.appendChild(element);\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n\r\n }else if( wptbDropHandle.style.display == 'block' ) {\r\n let td;\r\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\r\n td = wptbDropHandle.getDOMParentElement();\r\n td.appendChild( element );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n } else {\r\n let innerElement = wptbDropHandle.getDOMParentElement();\r\n td = innerElement.parentNode;\r\n\r\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\r\n td.insertBefore( element, innerElement );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\r\n let innerElementNext = innerElement.nextSibling;\r\n td.insertBefore( element, innerElementNext );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n }\r\n }\r\n \r\n let thisRow = td.parentNode;\r\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n \r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n \r\n // start item javascript if item is new\r\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n let elemKind = infArr[1];\r\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\r\n //WPTB_Helper.elementStartScript( element );\r\n }\r\n } else {\r\n return;\r\n }\r\n\r\n if(wptbDropHandle){\r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\r\n }\r\n\r\n WPTB_innerElementSet( element );\r\n \r\n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\r\n element.classList.remove( 'wptb-moving-mode' );\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n } \r\n return true;\r\n }\r\n element.onmouseover = function(e) {\r\n element.classList.remove( 'wptb-ondragenter' );\r\n }\r\n}","var WPTB_LeftPanel = function () {\r\n\r\n let table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n\r\n for (var i = 0; i < wptbElementButtons.length; i++) {\r\n wptbElementButtons[i].ondragstart = function (e) {\r\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\r\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\r\n }\r\n };\r\n \r\n if( table ) {\r\n let wptbTablesEditModeCloseButton = document.getElementsByClassName( 'wptb-table-edit-mode-close' );\r\n for ( let i = 0; i < wptbTablesEditModeCloseButton.length; i++ ) {\r\n wptbTablesEditModeCloseButton[i].onclick = WPTB_Helper.toggleTableEditMode;\r\n }\r\n };\r\n\r\n // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.onclick = function( e ) {\r\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \r\n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\r\n WPTB_Helper.clickOnFreeSpace();\r\n } \r\n };\r\n \r\n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\r\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\r\n wptbHeader.onclick = function() {\r\n WPTB_Helper.clickOnFreeSpace();\r\n };\r\n};","var MultipleSelect = function () {\r\n\r\n\tvar selectedCells = [],\r\n\t\tmultipleCellMode = false;\r\n\r\n\tthis.activateMultipleSelectMode = function () {\r\n\t\tselectedCells = [];\r\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\r\n\t\tfor (var i = 0; i < tds.length; i++) {\r\n\t\t\ttds[i].classList.remove('wptb-highlighted');\r\n\t\t}\r\n\t\tmultipleCellMode = true;\r\n\t}\r\n\r\n\tthis.deactivateMultipleSelectMode = function () {\r\n\t\tmultipleCellMode = false;\r\n\t}\r\n\r\n\tthis.isActivated = function () {\r\n\t\treturn multipleCellMode;\r\n\t}\r\n\r\n\tthis.pushSelectedCell = function (cell) {\r\n\t\tif (!multipleCellMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tselectedCells.push(cell);\r\n\t\tcell.classList.add('wptb-highlighted');\r\n\t};\r\n\r\n\tthis.selectedCells = function () {\r\n\t\treturn selectedCells;\r\n\t}\r\n\r\n\tthis.flushSelectedCells = function () {\r\n\t\tselectedCells = [];\r\n\t}\r\n\r\n\tthis.getFirst = function () {\r\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\r\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\r\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\r\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\r\n\t\t\t\tfirst = selectedCells[i];\r\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\r\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn first;\r\n\t}\r\n\r\n\tthis.getLast = function () {\r\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\r\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\r\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\r\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\r\n\t\t\t\tlast = selectedCells[i];\r\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\r\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn last;\r\n\t}\r\n\r\n\tthis.removeAllButFirst = function () {\r\n\t\tvar td = this.getFirst();\r\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\r\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n\r\n};","var WPTB_Parser = function ( code ) {\r\n let div = document.createElement( 'div' );\r\n div.innerHTML = code;\r\n \r\n let table = div.children[0];\r\n let columnTitleMobile = [...table.querySelectorAll( '.wptb-column-title-mobile-container' )];\r\n \r\n for( let i = 0; i < columnTitleMobile.length; i++ ) {\r\n let parent = columnTitleMobile[i].parentNode;\r\n parent.removeChild( columnTitleMobile[i] );\r\n }\r\n \r\n let tds = table.querySelectorAll( 'td' );\r\n for ( let i = 0; i < tds.length; i++ ) {\r\n tds[i].classList.add( 'wptb-droppable' );\r\n tds[i].classList.remove( 'wptb-column-title-mobile-not-elements' );\r\n }\r\n \r\n return table;\r\n}","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\r\nif (!Object.keys) {\r\n Object.keys = (function () {\r\n 'use strict';\r\n var hasOwnProperty = Object.prototype.hasOwnProperty,\r\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\r\n dontEnums = [\r\n 'toString',\r\n 'toLocaleString',\r\n 'valueOf',\r\n 'hasOwnProperty',\r\n 'isPrototypeOf',\r\n 'propertyIsEnumerable',\r\n 'constructor'\r\n ],\r\n dontEnumsLength = dontEnums.length;\r\n\r\n return function (obj) {\r\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\r\n throw new TypeError('Object.keys called on non-object');\r\n }\r\n\r\n var result = [], prop, i;\r\n\r\n for (prop in obj) {\r\n if (hasOwnProperty.call(obj, prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n\r\n if (hasDontEnumBug) {\r\n for (i = 0; i < dontEnumsLength; i++) {\r\n if (hasOwnProperty.call(obj, dontEnums[i])) {\r\n result.push(dontEnums[i]);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n }());\r\n}","const WPTB_RecalculateIndexes = function (table) {\r\n let trs = table.getElementsByTagName( 'tr' ),\r\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\r\n\r\n for ( let i = 0; i < trs.length; i++ ) {\r\n tds = trs[i].getElementsByTagName( 'td' );\r\n\r\n if ( tdsArr[i] == undefined ) {\r\n tdsArr[i] = [];\r\n }\r\n\r\n let jMainIter = 0;\r\n for ( let j = 0; j < tds.length; j++ ) {\r\n if ( tdsArr[i][j] != undefined ) {\r\n for ( let y = 0; y < 100; y++ ) {\r\n if ( tdsArr[i][jMainIter] != undefined ) {\r\n jMainIter++;\r\n continue;\r\n }\r\n tdsArr[i][jMainIter] = tds[j];\r\n tds[j].dataset.xIndex = jMainIter;\r\n break;\r\n }\r\n } else {\r\n tdsArr[i][j] = tds[j];\r\n tds[j].dataset.xIndex = jMainIter;\r\n }\r\n tds[j].dataset.yIndex = i;\r\n\r\n if ( tds[j].colSpan > 1 ) {\r\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\r\n jMainIter++;\r\n tdsArr[i][jMainIter] = 'tdDummy';\r\n }\r\n }\r\n\r\n if ( tds[j].rowSpan > 1 ) {\r\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\r\n if ( tdsArr[i + x] == undefined ) {\r\n tdsArr[i + x] = [];\r\n }\r\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\r\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\r\n }\r\n }\r\n }\r\n jMainIter++;\r\n }\r\n\r\n if ( tds.length > maxCols ) {\r\n maxCols = tds.length;\r\n }\r\n\r\n if( i == 0 ) {\r\n maxColsFull = jMainIter;\r\n }\r\n }\r\n table.columns = maxCols;\r\n table.maxCols = maxColsFull;\r\n}\r\n","/**\r\n * Responsive menu and options class.\r\n *\r\n * This class will be called and instanced at table builder menu to add it the responsive menu and its controls.\r\n *\r\n * @param {string} sectionName section name\r\n * @param {string} responsiveWrapperId id for mount point\r\n * @param {string} mainContainerQuery query to find parent container for responsive menu\r\n * @throws {Error} will throw an error if mainContainerQuery failed to find any element\r\n * @constructor\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction WptbResponsive(sectionName, responsiveWrapperId, mainContainerQuery) {\r\n\tthis.sectionName = sectionName;\r\n\tthis.responsiveWrapperId = responsiveWrapperId;\r\n\tthis.responsiveTable = null;\r\n\tthis.loaded = false;\r\n\r\n\t/**\r\n\t * Add responsive container to dom.\r\n\t */\r\n\tthis.addContainerToDom = () => {\r\n\t\tconst responsiveContainer = document.querySelector(`#${this.responsiveWrapperId}`);\r\n\t\tif (!responsiveContainer) {\r\n\t\t\tconst mainContainer = document.querySelector(mainContainerQuery);\r\n\r\n\t\t\t// parent container not found, throw error\r\n\t\t\tif (!mainContainer) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`[WPTB_Responsive]: no parent container is found with the given query of [${mainContainerQuery}]`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tconst range = document.createRange();\r\n\t\t\trange.setStart(mainContainer, 0);\r\n\r\n\t\t\tconst responsiveElement = range.createContextualFragment(\r\n\t\t\t\t`<div class=\"wptb-responsive\" id=\"${this.responsiveWrapperId}\">responsive element</div>`\r\n\t\t\t);\r\n\t\t\tmainContainer.appendChild(responsiveElement);\r\n\t\t\tthis.loaded = true;\r\n\t\t}\r\n\r\n\t\tthis.responsiveTable = document.querySelector(`#${this.responsiveWrapperId}`);\r\n\t};\r\n\r\n\t/**\r\n\t * Load and make necessary mount preparations for component.\r\n\t */\r\n\tthis.load = () => {\r\n\t\tif (!this.loaded) {\r\n\t\t\tthis.addContainerToDom();\r\n\r\n\t\t\tWPTB_Helper.elementStartScript(this.responsiveTable, 'table_responsive_menu');\r\n\t\t\tWPTB_Helper.elementOptionsSet('table_responsive_menu', this.responsiveTable);\r\n\t\t\tWPTB_ControlsManager.callControlScript('ResponsiveTable', this.responsiveWrapperId);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Startup hook for the component.\r\n\t */\r\n\tthis.startUp = () => {\r\n\t\t// event listener for section change events\r\n\t\tdocument.addEventListener('wptbSectionChanged', (e) => {\r\n\t\t\tconst tablePreview = document.querySelector('.wptb-preview-table');\r\n\r\n\t\t\t// check if activated section is related to responsive and there is a main table already in the view\r\n\t\t\tif (e.detail === this.sectionName && tablePreview) {\r\n\t\t\t\tthis.load();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// event listener for table ready signal\r\n\t\tdocument.addEventListener('wptb:table:generated', () => {\r\n\t\t\t// check current section to be sure that responsive menu is the active one before calling load related scripts\r\n\t\t\tif (WPTB_Helper.getCurrentSection() === 'table_responsive_menu') {\r\n\t\t\t\tthis.load();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tthis.startUp();\r\n}\r\n","var WPTB_Settings = function () {\r\n var elems = document.getElementsByClassName('wptb-element');\r\n\r\n for ( var i = 0; i < elems.length; i++ ) {\r\n elems[i].ondragstart = function ( event ) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\r\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\r\n\r\n // set drag relative helper field for future use\r\n WPTB_Helper.setDragRelativeType(this.dataset.wptbRelativeElements || '');\r\n }\r\n elems[i].ondragend = function () {\r\n WPTB_Helper.elementDragEndClear();\r\n }\r\n };\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\r\n if( wptbUndo.length > 0 ) {\r\n wptbUndo = wptbUndo[0];\r\n \r\n wptbUndo.onclick = function( event ) {\r\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\r\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\r\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\r\n if(wptbUndoRedoContainer.length > 0) {\r\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\r\n wptbUndoRedoContainer.onmouseleave = function( event ) {\r\n event.target.onmouseleave = '';\r\n let table = document.querySelector( '.wptb-preview-table' );\r\n WPTB_Table();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\r\n if( wptbRedo.length > 0 ) {\r\n wptbRedo = wptbRedo[0];\r\n \r\n wptbRedo.onclick = function( event ) {\r\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\r\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\r\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\r\n if(wptbUndoRedoContainer.length > 0) {\r\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\r\n wptbUndoRedoContainer.onmouseleave = function( event ) {\r\n event.target.onmouseleave = '';\r\n let table = document.querySelector( '.wptb-preview-table' );\r\n WPTB_Table();\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n let shortcodePopupWindow = document.getElementsByClassName( 'wptb-popup-window-modal' )[0];\r\n document.getElementsByClassName( 'wptb-embed-btn' )[0].onclick = function () {\r\n if( ! this.classList.contains( 'wptb-button-disable' ) ) {\r\n shortcodePopupWindow.classList.add( 'wptb-popup-show' );\r\n }\r\n }\r\n \r\n window.onbeforeunload = function(e) {\r\n let wptbSaveDisabled = document.getElementsByClassName( 'wptb-save-disabled' );\r\n if( wptbSaveDisabled.length == 0 ) {\r\n return true;\r\n } else {\r\n return null;\r\n }\r\n };\r\n \r\n \r\n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\r\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\r\n }\r\n \r\n document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {\r\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\r\n }\r\n \r\n document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( event ) {\r\n if( this.classList.contains( 'wptb-button-disable' ) ) {\r\n return;\r\n } \r\n \r\n let previewId = Math.floor( Math.random() * 10000 );\r\n \r\n var newHref = new URL( event.target.href );\r\n newHref.searchParams.set( 'preview_id', previewId );\r\n event.target.href = newHref.toString();\r\n WPTB_Helper.saveTable( event, false, previewId );\r\n }\r\n\r\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\r\n if( ! this.classList.contains( 'wptb-save-disabled' ) ) {\r\n WPTB_Helper.saveTable( event );\r\n }\r\n }\r\n\r\n let tableTitleField = document.querySelector( '#wptb-setup-name' );\r\n if( tableTitleField ) {\r\n tableTitleField.onchange = function () {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n }\r\n};\r\n","const WPTB_SortableTable = function (table) {\n\tthis.table = table;\n\tthis.topRow = table.rows.length ? table.rows[0] : null;\n\n\t/**\n\t * sets the table to sort mode\n\t * @param type\n\t * @param active\n\t */\n\tthis.sortModeSwitcher = function (type, active) {\n\t\tif (type === 'vertical') {\n\t\t\tthis.table.removeEventListener('click', this.sortableTableVerticalStart, false);\n\n\t\t\tif (active) {\n\t\t\t\tthis.sortModeSwitcher('horizontal', false);\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('vertical', true);\n\t\t\t\tthis.table.addEventListener('click', this.sortableTableVerticalStart, false);\n\t\t\t\tthis.table.dataset.wptbSortableTableVertical = '1';\n\t\t\t} else {\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('vertical', false);\n\t\t\t\tdelete this.table.dataset.wptbSortableTableVertical;\n\t\t\t}\n\t\t} else if (type === 'horizontal') {\n\t\t\tthis.table.removeEventListener('click', this.sortableTableHorizontalStart, false);\n\n\t\t\tif (active) {\n\t\t\t\tthis.sortModeSwitcher('vertical', false);\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('horizontal', true);\n\t\t\t\tthis.table.addEventListener('click', this.sortableTableHorizontalStart, false);\n\t\t\t\tthis.table.dataset.wptbSortableTableHorizontal = '1';\n\t\t\t} else {\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('horizontal', false);\n\t\t\t\tdelete this.table.dataset.wptbSortableTableHorizontal;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * checks whether the table should be in the sort state\n\t * and connects the necessary handlers\n\t */\n\tthis.sortableTableInitialization = function () {\n\t\tif (this.table.dataset.wptbSortableTableVertical && this.table.dataset.wptbSortableTableVertical === '1') {\n\t\t\tthis.sortModeSwitcher('vertical', true);\n\t\t} else if (\n\t\t\tthis.table.dataset.wptbSortableTableHorizontal &&\n\t\t\tthis.table.dataset.wptbSortableTableHorizontal === '1'\n\t\t) {\n\t\t\tthis.sortModeSwitcher('horizontal', true);\n\t\t}\n\t};\n\n\tthis.sortingCellMouseMoveSwitcher = function (type, active) {\n\t\tif (type === 'vertical') {\n\t\t\tlet tds = this.topRow ? this.topRow.querySelectorAll('td') : null;\n\t\t\ttds = [...tds];\n\t\t\ttds.map((td) => {\n\t\t\t\ttd.removeEventListener('mousemove', sortingCellMouseMoveVertical, false);\n\t\t\t\ttd.removeEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\tif (active) {\n\t\t\t\t\ttd.addEventListener('mousemove', sortingCellMouseMoveVertical, false);\n\t\t\t\t\ttd.addEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (type === 'horizontal') {\n\t\t\tlet tds = this.table.querySelectorAll('[data-x-index=\"0\"]');\n\t\t\ttds = [...tds];\n\t\t\ttds.map((td) => {\n\t\t\t\ttd.removeEventListener('mousemove', sortingCellMouseMoveHorizontal, false);\n\t\t\t\ttd.removeEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\tif (active) {\n\t\t\t\t\ttd.addEventListener('mousemove', sortingCellMouseMoveHorizontal, false);\n\t\t\t\t\ttd.addEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tfunction sortingCellMouseMov(e, type, element) {\n\t\tif (e.target.tagName === 'TD') {\n\t\t\tconst x = e.offsetX == undefined ? e.layerX : e.offsetX;\n\t\t\tconst y = e.offsetY == undefined ? e.layerY : e.offsetY;\n\t\t\tlet xMatch = false;\n\t\t\tif ((type === 'vertical' && e.target.clientWidth - x <= 35) || (type === 'horizontal' && x <= 35)) {\n\t\t\t\txMatch = true;\n\t\t\t}\n\t\t\tif (xMatch && (e.target.clientHeight - 35) / 2 < y && (e.target.clientHeight + 35) / 2 > y) {\n\t\t\t\telement.classList.add('sortable-hover');\n\t\t\t} else {\n\t\t\t\telement.classList.remove('sortable-hover');\n\t\t\t}\n\t\t} else {\n\t\t\telement.classList.remove('sortable-hover');\n\t\t}\n\t}\n\n\tfunction sortingCellMouseMoveVertical(e) {\n\t\tsortingCellMouseMov(e, 'vertical', this);\n\t}\n\n\tfunction sortingCellMouseMoveHorizontal(e) {\n\t\tsortingCellMouseMov(e, 'horizontal', this);\n\t}\n\n\tfunction tdMouseLeave() {\n\t\tthis.classList.remove('sortable-hover');\n\t}\n\n\t/**\n\t * function for sorting the table vertically by the numeric content of cells\n\t *\n\t * @param e\n\t * @param table\n\t */\n\tfunction sortableTable(e, table, type) {\n\t\tif (\n\t\t\te.target &&\n\t\t\te.target.tagName === 'TD' &&\n\t\t\t!table.classList.contains('wptb-plugin-responsive-base') &&\n\t\t\t!table.parentNode.classList.contains('wptb-preview-table-manage-cells')\n\t\t) {\n\t\t\tlet tableWasSorted = false;\n\t\t\tif (type === 'vertical' && e.target.dataset.yIndex === '0') {\n\t\t\t\tlet tds = table.querySelectorAll(`[data-x-index=\"${e.target.dataset.xIndex}\"]`);\n\t\t\t\ttds = [...tds];\n\n\t\t\t\t// preparing table for sorting\n\t\t\t\tlet rowspan;\n\t\t\t\tlet rowNum;\n\t\t\t\ttds.map((td) => {\n\t\t\t\t\tif (!(rowspan = parseInt(td.rowSpan, 10))) {\n\t\t\t\t\t\trowspan = 1;\n\t\t\t\t\t}\n\t\t\t\t\trowNum = td.dataset.yIndex;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableHorizontally(rowNum, table);\n\t\t\t\t\trowNum += rowspan;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableHorizontally(rowNum, table);\n\t\t\t\t});\n\n\t\t\t\tconst rowsValuesArr = [];\n\t\t\t\tlet rowsTdFirst;\n\t\t\t\tlet tdYCoordsRowSpanPrevious = 0;\n\t\t\t\tfor (let i = 0; i < tds.length; i++) {\n\t\t\t\t\tconst tdsChanged = changeSortingTdsCollection(\n\t\t\t\t\t\te,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\ttds,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\ttdYCoordsRowSpanPrevious,\n\t\t\t\t\t\t'vertical'\n\t\t\t\t\t);\n\t\t\t\t\tif (tdsChanged && tdsChanged.hasOwnProperty('i')) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\ti = tdsChanged.i;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (tdsChanged) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst td = tds[i];\n\n\t\t\t\t\tlet tdRowspan = parseInt(td.rowSpan, 10);\n\t\t\t\t\tif (!tdRowspan) tdRowspan = 1;\n\n\t\t\t\t\ttdYCoordsRowSpanPrevious = parseInt(td.dataset.yIndex, 10) + tdRowspan;\n\n\t\t\t\t\tconst textElementsValues = textElementsValuesGet(td);\n\n\t\t\t\t\tconst rowsTd = [];\n\t\t\t\t\tfor (let j = 0; j < tdRowspan; j++) {\n\t\t\t\t\t\trowsTd.push(table.rows[parseInt(td.dataset.yIndex, 10) + j]);\n\t\t\t\t\t}\n\t\t\t\t\tif (td.dataset.yIndex > 0) {\n\t\t\t\t\t\trowsValuesArr.push({\n\t\t\t\t\t\t\trowsTd,\n\t\t\t\t\t\t\tvalue: textElementsValues,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\trowsTdFirst = rowsTd;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst orderBy = setSortedAscDataAttr(e, 'sortedVertical');\n\t\t\t\tif (!orderBy) return;\n\n\t\t\t\tif (rowsValuesArr.length) rowsValuesArr.sort((prev, next) => sortOrder(orderBy, prev, next));\n\n\t\t\t\trowsValuesArr.unshift({ rowsTd: rowsTdFirst });\n\n\t\t\t\tconst tBody = table.querySelector('tbody');\n\t\t\t\ttBody.innerHTML = '';\n\n\t\t\t\trowsValuesArr.map((rowsValObj) => {\n\t\t\t\t\trowsValObj.rowsTd.map((row) => {\n\t\t\t\t\t\ttBody.appendChild(row);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tWPTB_RecalculateIndexes(table);\n\n\t\t\t\tWPTB_CutGlueTable.glueTableHorizontally(table);\n\n\t\t\t\ttableWasSorted = true;\n\t\t\t} else if (type === 'horizontal' && e.target.dataset.xIndex === '0') {\n\t\t\t\tlet tds = table.querySelectorAll(`[data-y-index=\"${e.target.dataset.yIndex}\"]`);\n\t\t\t\ttds = [...tds];\n\n\t\t\t\t// preparing table for sorting\n\t\t\t\tlet colspan;\n\t\t\t\tlet colNum;\n\t\t\t\ttds.map((td) => {\n\t\t\t\t\tif (!(colspan = parseInt(td.colSpan, 10))) {\n\t\t\t\t\t\tcolspan = 1;\n\t\t\t\t\t}\n\t\t\t\t\tcolNum = td.dataset.xIndex;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableVertically(colNum, table);\n\t\t\t\t\tcolNum += colspan;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableVertically(colNum, table);\n\t\t\t\t});\n\n\t\t\t\tconst columnsValuesArr = [];\n\t\t\t\tlet columnsTdFirst;\n\n\t\t\t\tlet tdXCoordsColSpanPrevious = 0;\n\t\t\t\tfor (let i = 0; i < tds.length; i++) {\n\t\t\t\t\tconst tdsChanged = changeSortingTdsCollection(\n\t\t\t\t\t\te,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\ttds,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\ttdXCoordsColSpanPrevious,\n\t\t\t\t\t\t'horizontal'\n\t\t\t\t\t);\n\t\t\t\t\tif (tdsChanged && tdsChanged.hasOwnProperty('i')) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\ti = tdsChanged.i;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (tdsChanged) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst td = tds[i];\n\t\t\t\t\tlet tdColspan = parseInt(td.colSpan, 10);\n\t\t\t\t\tif (!tdColspan) tdColspan = 1;\n\n\t\t\t\t\ttdXCoordsColSpanPrevious = parseInt(td.dataset.xIndex, 10) + tdColspan;\n\n\t\t\t\t\tconst textElementsValues = textElementsValuesGet(td);\n\t\t\t\t\tconst columnsTd = [];\n\t\t\t\t\tfor (let j = 0; j < tdColspan; j++) {\n\t\t\t\t\t\tconst tdsColumn = [\n\t\t\t\t\t\t\t...table.querySelectorAll(`[data-x-index=\"${parseInt(td.dataset.xIndex, 10) + j}\"]`),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tcolumnsTd.push(tdsColumn);\n\t\t\t\t\t}\n\t\t\t\t\tif (td.dataset.xIndex > 0) {\n\t\t\t\t\t\tcolumnsValuesArr.push({\n\t\t\t\t\t\t\tcolumnsTd,\n\t\t\t\t\t\t\tvalue: textElementsValues,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnsTdFirst = columnsTd;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst orderBy = setSortedAscDataAttr(e, 'sortedHorizontal');\n\t\t\t\tif (!orderBy) return;\n\n\t\t\t\tif (columnsValuesArr.length) columnsValuesArr.sort((prev, next) => sortOrder(orderBy, prev, next));\n\n\t\t\t\tcolumnsValuesArr.unshift({ columnsTd: columnsTdFirst });\n\n\t\t\t\tfor (let i = 0; i < table.rows.length; i++) {\n\t\t\t\t\ttable.rows[i].innerHTML = '';\n\t\t\t\t}\n\n\t\t\t\tcolumnsValuesArr.map((columnsValObj) => {\n\t\t\t\t\tcolumnsValObj.columnsTd.map((tdsColumn) => {\n\t\t\t\t\t\ttdsColumn.map((td) => {\n\t\t\t\t\t\t\ttable.rows[td.dataset.yIndex].appendChild(td);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tWPTB_RecalculateIndexes(table);\n\n\t\t\t\tWPTB_CutGlueTable.glueTableVertically(table);\n\n\t\t\t\ttableWasSorted = true;\n\t\t\t}\n\n\t\t\tif (tableWasSorted) {\n\t\t\t\tremoveCellsAttrAfterDivision(table);\n\n\t\t\t\tif (table.hasOwnProperty('tableSM')) {\n\t\t\t\t\tconst tableSM = table.tableSM();\n\t\t\t\t\tnew tableSM().tableStateSet();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Function that sets the data-attribute with the number of the row or column\n\t * that the table was sorted by. Returns the number of a row or column\n\t *\n\t * @param e\n\t * @param dataAttr\n\t * @returns {null|boolean}\n\t */\n\tfunction setSortedAscDataAttr(e, dataAttr) {\n\t\tif (e.currentTarget && e.currentTarget.classList.contains('wptb-preview-table')) {\n\t\t\tif (!e.target.dataset[dataAttr] || e.target.dataset[dataAttr] === 'ask') {\n\t\t\t\te.target.dataset[dataAttr] = 'desk';\n\t\t\t} else {\n\t\t\t\te.target.dataset[dataAttr] = 'ask';\n\t\t\t}\n\n\t\t\treturn e.target.dataset[dataAttr];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * defines the sorting order\n\t *\n\t * @param orderBy\n\t * @param prev\n\t * @param next\n\t * @returns {number}\n\t */\n\tfunction sortOrder(orderBy = 'ask', prev, next) {\n\t\tlet prevValue = prev.value;\n\t\tlet nextValue = next.value;\n\t\tif (parseInt(prevValue) && parseInt(nextValue)) {\n\t\t\tprevValue = parseInt(prevValue);\n\t\t\tnextValue = parseInt(nextValue);\n\t\t}\n\n\t\tif (orderBy === 'ask') {\n\t\t\tif (prevValue < nextValue) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (prevValue === nextValue) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn 1;\n\t\t}\n\t\tif (prevValue < nextValue) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (prevValue === nextValue) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * return cell text elements values\n\t *\n\t * @param cell {HTMLElement}\n\t * @returns {string}\n\t */\n\tfunction textElementsValuesGet(cell) {\n\t\tlet textElements = cell.querySelectorAll('.wptb-text-container');\n\t\ttextElements = [...textElements];\n\t\tlet value = '';\n\t\tfor (let j = 0; j < textElements.length; j++) {\n\t\t\tconst p = textElements[j].querySelector('p');\n\t\t\tvalue += p.innerText;\n\t\t\tif (j !== textElements.length - 1) value += ' ';\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * adds cells to the collection of cells in the row or column that the table is sorted by.\n\t * These added cells are not originally were added in the collection,\n\t * because they are combined with cells from higher rows or left-side columns\n\t *\n\t * @param table\n\t * @param tds\n\t * @param i\n\t * @param tdIndexSpanPrev\n\t * @returns {{tds: *}|boolean|{tds: *, i: *}}\n\t */\n\tfunction changeSortingTdsCollection(e, table, tds, i, tdIndexSpanPrev, type) {\n\t\tconst td = tds[i];\n\t\tlet tdsCollectionChanged = false;\n\t\tlet collectionTds;\n\t\tlet collectionTdsJSpan;\n\t\tlet collectionTdsJSpanProperty;\n\t\tlet indexName;\n\t\tlet indexNameCamelCase;\n\t\tlet indexNamePerpendicularCamelCase;\n\t\tlet tdSpanProperty;\n\t\t// max rows or columns column\n\t\tlet tableGroupCount;\n\n\t\tif (type === 'vertical') {\n\t\t\tcollectionTdsJSpanProperty = 'colSpan';\n\t\t\tindexName = 'data-y-index';\n\t\t\tindexNameCamelCase = 'yIndex';\n\t\t\tindexNamePerpendicularCamelCase = 'xIndex';\n\t\t\ttdSpanProperty = 'rowSpan';\n\t\t\ttableGroupCount = table.rows.length;\n\t\t} else if (type === 'horizontal') {\n\t\t\tcollectionTdsJSpanProperty = 'rowSpan';\n\t\t\tindexName = 'data-x-index';\n\t\t\tindexNameCamelCase = 'xIndex';\n\t\t\tindexNamePerpendicularCamelCase = 'yIndex';\n\t\t\ttdSpanProperty = 'colSpan';\n\t\t\ttableGroupCount = table.maxCols;\n\t\t}\n\n\t\tif (td.dataset[indexNameCamelCase] - tdIndexSpanPrev > 0) {\n\t\t\tcollectionTds = table.querySelectorAll(`[${indexName}=\"${tdIndexSpanPrev}\"]`);\n\n\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\tif (\n\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >=\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t) {\n\t\t\t\t\ttds.splice(i, 0, collectionTds[j]);\n\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\ti--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (tdsCollectionChanged) return { tds, i };\n\n\t\tlet tdSpan = parseInt(td[tdSpanProperty], 10);\n\t\tif (!tdSpan) tdSpan = 1;\n\t\tif (i == tds.length - 1 && parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan < tableGroupCount) {\n\t\t\tcollectionTds = table.querySelectorAll(\n\t\t\t\t`[${indexName}=\"${parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan}\"]`\n\t\t\t);\n\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\tif (\n\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >=\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t) {\n\t\t\t\t\ttds.push(collectionTds[j]);\n\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (tdsCollectionChanged) return { tds };\n\t\treturn false;\n\t}\n\n\t/**\n\t * remove cells attributes which were used for division table\n\t *\n\t * @param table\n\t */\n\tfunction removeCellsAttrAfterDivision(table) {\n\t\tconst tdsAll = [...table.getElementsByTagName('td')];\n\t\tfor (let i = 0; i < tdsAll.length; i++) {\n\t\t\tif (tdsAll[i].hasAttribute('data-same-cell-before-division')) {\n\t\t\t\ttdsAll[i].removeAttribute('data-same-cell-before-division');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * function for run sorting table vertically\n\t *\n\t * @param e\n\t */\n\tthis.sortableTableVerticalStart = function (e) {\n\t\tsortableTable(e, table, 'vertical');\n\t};\n\n\t/**\n\t * function for run sorting table horizontally\n\t *\n\t * @param e\n\t */\n\tthis.sortableTableHorizontalStart = function (e) {\n\t\tsortableTable(e, table, 'horizontal');\n\t};\n};\n","var WPTB_Stringifier = function ( codeMain ) {\r\n if ( codeMain ) {\r\n let code = codeMain.cloneNode( true );\r\n code.dataset.tableColumns = codeMain.columns;\r\n code.style.width = null;\r\n code.style.minWidth = null;\r\n code.style.maxWidth = null;\r\n\r\n let tds = code.getElementsByTagName( 'td' );\r\n if ( tds.length > 0 ) {\r\n for ( let i = 0; i < tds.length; i++ ) {\r\n\r\n // tds[i].removeAttribute( 'data-x-index' );\r\n // tds[i].removeAttribute( 'data-y-index' );\r\n tds[i].removeAttribute( 'draggable' );\r\n tds[i].classList.remove( 'wptb-droppable' );\r\n let infArr = tds[i].className.match( /wptb-element-((.+-)\\d+)/i );\r\n if(infArr) tds[i].classList.remove(infArr[0]);\r\n let innerElements = tds[i].getElementsByClassName( 'wptb-ph-element' );\r\n\r\n if ( innerElements.length > 0 ) {\r\n for ( let j = 0; j < innerElements.length; j++ ) {\r\n\r\n let mceContentBodys = innerElements[j].querySelectorAll( '.mce-content-body' );\r\n if( mceContentBodys.length > 0 ) {\r\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\r\n mceContentBodys[k].classList.remove( 'mce-content-body' );\r\n }\r\n }\r\n\r\n let dataMceStyle = innerElements[j].querySelectorAll( '[data-mce-style]' );\r\n if ( dataMceStyle.length > 0 ) {\r\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\r\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\r\n }\r\n }\r\n\r\n let contentEditable = innerElements[j].querySelectorAll( '[contenteditable]' );\r\n if ( contentEditable.length > 0 ) {\r\n for ( let k = 0; k < contentEditable.length; k++ ) {\r\n contentEditable[k].removeAttribute( 'contenteditable' );\r\n }\r\n }\r\n\r\n let spellCheck = innerElements[j].querySelectorAll( '[spellcheck]' );\r\n if ( spellCheck.length > 0 ) {\r\n for ( let k = 0; k < spellCheck.length; k++ ) {\r\n spellCheck[k].removeAttribute( 'spellcheck' );\r\n }\r\n }\r\n\r\n let mceIds = innerElements[j].querySelectorAll( '[id^=mce_]' );\r\n if ( mceIds.length > 0 ) {\r\n for ( let k = 0; k < mceIds.length; k++ ) {\r\n mceIds[k].removeAttribute( 'id' );\r\n }\r\n }\r\n\r\n let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );\r\n let wptbActionsLength = wptbActions.length;\r\n while ( wptbActionsLength > 0 ) {\r\n if( wptbActions[0] && wptbActions[0].parentNode ) {\r\n wptbActions[0].parentNode.removeChild( wptbActions[0] );\r\n wptbActionsLength--;\r\n } else {\r\n break;\r\n }\r\n\r\n }\r\n\r\n let dataMceBogus = innerElements[j].querySelectorAll( '[data-mce-bogus]' );\r\n if( dataMceBogus.length > 0 ) {\r\n dataMceBogus = [...dataMceBogus];\r\n for( let k = 0; k < dataMceBogus.length; k++ ) {\r\n if( dataMceBogus[k] && dataMceBogus[k].parentNode ) {\r\n dataMceBogus[k].parentNode.removeChild( dataMceBogus[k] );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // TODO dataTitleColumnSet\r\n // if( tds[i].hasAttribute( 'data-wptb-title-column' ) ) {\r\n // let columnNameDivContainer = document.createElement( 'div' ),\r\n // columnNameDiv = document.createElement( 'div' );\r\n // columnNameDivContainer.classList.add( 'wptb-column-title-mobile-container' );\r\n // columnNameDiv.classList.add( 'wptb-column-title-mobile' );\r\n // columnNameDiv.dataset.wptbTitleColumn = tds[i].dataset.wptbTitleColumn;\r\n // columnNameDiv.setAttribute( 'style', 'font-size:' + tds[i].dataset.wptbTitleColumnFontSize + '; \\n\\\r\n // color:' + tds[i].dataset.wptbTitleColumnColor + '; background-color:' + tds[i].dataset.wptbTitleBackgroundColor + '; text-align:' + tds[i].dataset.wptbTitleAlign + ';' );\r\n // columnNameDiv.style.padding = tds[i].style.padding;\r\n // if( tds[i].children.length == 0 ) {\r\n // tds[i].classList.add( 'wptb-column-title-mobile-not-elements' );\r\n // }\r\n // columnNameDivContainer.appendChild( columnNameDiv );\r\n // tds[i].insertBefore( columnNameDivContainer, tds[i].firstChild );\r\n // }\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n}\r\n","var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\r\n\r\n /* The members of the class */\r\n var settings = document.getElementsByClassName('wptb-settings-items'),\r\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\r\n table, row, cell,\r\n maxAmountOfCells,\r\n maxAmountOfRows;\r\n\r\n //HERE ARE THE PRIVATE FUNCTIONS\r\n /*\r\n * This function toggles buttons visibility in cell edit mode\r\n * (according to the amount of currently selected cells), and\r\n * highlights visually the clicked cell if it is not highlighted, or\r\n * removes highlight if clicked cell is already highlighted.\r\n * It too toggles the bits of our abstract representation.\r\n * @param Event this is the event instance of the click performed over a cell.\r\n */\r\n var mark = function ( event ) {\r\n let thisElem = event.currentTarget;\r\n let rs = thisElem.rowSpan,\r\n cs = thisElem.colSpan,\r\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\r\n singleCells = document.getElementsByClassName('wptb-single-action'),\r\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\r\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\r\n position = getCoords(thisElem),\r\n row = position[0],\r\n column = position[1];\r\n if ( ! document.select.isActivated() ) {\r\n return;\r\n }\r\n if (thisElem.className.match(/wptb-highlighted/)) {\r\n thisElem.classList.remove('wptb-highlighted');\r\n for (var i = 0; i < rs; i++) {\r\n for (var j = 0; j < cs; j++) {\r\n array[row + i][column + j] = 0;\r\n }\r\n }\r\n } else {\r\n thisElem.classList.add('wptb-highlighted');\r\n for (var i = 0; i < rs; i++) {\r\n for (var j = 0; j < cs; j++) {\r\n array[row + i][column + j] = 1;\r\n }\r\n }\r\n }\r\n\r\n let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\r\n markedCells = cellHighlighted.length;\r\n if (markedCells === 0) {\r\n for (var i = 0; i < multipleCells.length; i++) {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.add('visible');\r\n noCells[i].removeAttribute('disabled');\r\n }\r\n for (var i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.remove('visible');\r\n singleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n cellSettings.classList.remove( 'visible' );\r\n } else if (markedCells === 1) {\r\n for (var i = 0; i < multipleCells.length; i++) {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.remove('visible');\r\n noCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.add('visible');\r\n singleCells[i].removeAttribute('disabled');\r\n }\r\n\r\n cellHighlighted = cellHighlighted[0];\r\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\r\n\r\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\r\n\r\n const controlElemIds = ['cellWidth', 'cellHeight'];\r\n\r\n controlElemIds.map(s => {\r\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\r\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\r\n if(s === 'cellWidth' || s === 'cellHeight') {\r\n let sizeName = '',\r\n getSizeFunctionName = '';\r\n if(s === 'cellWidth') {\r\n sizeName = 'width';\r\n getSizeFunctionName = 'getColumnWidth';\r\n } else if(s === 'cellHeight') {\r\n sizeName = 'height';\r\n getSizeFunctionName = 'getRowHeight';\r\n }\r\n let size = cellHighlighted.style[sizeName],\r\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\r\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\r\n cellSizeInputs = [...cellSizeInputs];\r\n\r\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\r\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\r\n cellSizeInputs.map(s => {\r\n s.value = size;\r\n });\r\n\r\n cellSizeFixedInput.checked = false;\r\n } else {\r\n cellSizeInputs.map(s => {\r\n if( size ) {\r\n s.value = parseFloat( size, 10 );\r\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\r\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\r\n }\r\n });\r\n\r\n cellSizeFixedInput.checked = true;\r\n }\r\n }\r\n });\r\n\r\n cellSettings.classList.add( 'visible' );\r\n } else {\r\n for (var i = 0; i < multipleCells.length; i++) {\r\n if (table.isSquare(array)) {\r\n multipleCells[i].classList.add('visible');\r\n multipleCells[i].removeAttribute('disabled');\r\n } else {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n }\r\n for (var i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.remove('visible');\r\n noCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.remove('visible');\r\n singleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n cellSettings.classList.remove( 'visible' );\r\n }\r\n\r\n /**\r\n * empty cell setting\r\n */\r\n // let emptySetting = document.\r\n const infArr = thisElem.className.match(/wptb-element-table_cell_setting-((.+-)\\d+)/i);\r\n if (infArr && infArr.length > 1) {\r\n const controlKey = 'emptyCell';\r\n const settingId = `wptb-el-table_cell_setting-${infArr[1]}-${controlKey}`;\r\n const settingElem = document.getElementById(settingId);\r\n if (settingElem) {\r\n settingElem.querySelector('input[type=\"checkbox\"]').checked = thisElem.classList.contains('wptb-empty')\r\n }\r\n }\r\n\r\n\r\n let details = {countMarkedCells:markedCells};\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/cell/mark', thisElem, details);\r\n };\r\n\r\n /*\r\n * This function fills an array with 1's according to the actual design\r\n * of HTML table.\r\n * @returns an array of arrays containing an abstract representation\r\n * of HTML table.\r\n * @deprecated\r\n * */\r\n\r\n var realTimeArray = function () {\r\n var carried = [], tds, cols, matriz = [];\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n carried[i] = 0;\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n cols = [];\r\n\r\n var tds = table.rows[i].getElementsByTagName('td');\r\n\r\n for (items = 0; items < tds.length; items++) {\r\n\r\n for (var k = 0; k < tds[items].colSpan; k++) {\r\n cols.push(1);\r\n }\r\n\r\n if (tds[items].rowSpan > 1) {\r\n for (var k = 0; k < tds[items].colSpan; k++) {\r\n carried[items + k] = {\r\n justAssigned: true,\r\n amount: tds[items].rowSpan\r\n };\r\n }\r\n }\r\n }\r\n\r\n for (var k = 0; k < maxAmountOfCells; k++) {\r\n if (typeof carried[k] == 'object' && carried[k].amount > 0) {\r\n carried[k].amount--;\r\n if (carried[k].justAssigned) {\r\n carried[k].justAssigned = false;\r\n } else {\r\n cols.push(1);\r\n }\r\n }\r\n }\r\n\r\n matriz.push(cols);\r\n\r\n }\r\n return matriz;\r\n };\r\n\r\n /*\r\n * This function gets the number and position of cell spaces in current row that are occuped\r\n * by upper rowspanned cells.\r\n * @param number the number of row where we wish to calculate the carried rowspans up to.\r\n * @return an array with the remaining rowspans in each column.\r\n */\r\n var carriedRowspans = function (row) {\r\n var carried = [], tds, cols;\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n carried[i] = 0;\r\n }\r\n\r\n if (row == -1) {\r\n return carried;\r\n }\r\n\r\n for (var i = 0; i <= row; i++) {\r\n cellsBuffer = table.rows[i].getElementsByTagName('td');\r\n cellPointer = 0;\r\n\r\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\r\n stepsToMove = 1;\r\n\r\n if (carried[xPosition]) {\r\n carried[xPosition]--;\r\n } else {\r\n celda = cellsBuffer[cellPointer++];\r\n if (celda.rowSpan > 1) {\r\n for (k = 0; k < celda.colSpan; k++) {\r\n carried[xPosition + k] = celda.rowSpan - 1;\r\n }\r\n stepsToMove = celda.colSpan;\r\n } else if (celda.colSpan > 1) {\r\n stepsToMove = celda.colSpan;\r\n }\r\n }\r\n }\r\n\r\n }\r\n return carried;\r\n };\r\n\r\n /*\r\n * A helpful function for showing\r\n * the abstract table in console.\r\n * @param Array our abstract table.\r\n */\r\n var drawTable = function (a) {\r\n var string = 'DRAWING TABLE:\\n';\r\n for (var i = 0; i < a.length; i++) {\r\n\r\n for (var j = 0; j < a[i].length; j++) {\r\n string += ' ' + a[i][j];\r\n }\r\n string += '\\n';\r\n }\r\n table.isSquare(a);\r\n };\r\n\r\n /*\r\n * It resets all the bits of our abstract representation\r\n * to 0 and removes the highlighting class of all cells.\r\n */\r\n\r\n var undoSelect = function () {\r\n let noCells = document.getElementsByClassName('wptb-no-cell-action'),\r\n singleCells = document.getElementsByClassName('wptb-single-action'),\r\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\r\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\r\n tds = table.getElementsByClassName('wptb-highlighted');\r\n while (tds.length) {\r\n tds[0].classList.remove('wptb-highlighted');\r\n }\r\n cellSettings.classList.remove( 'visible' );\r\n for (let i = 0; i < array.length; i++) {\r\n for (let j = 0; j < array[i].length; j++) {\r\n array[i][j] = 0;\r\n }\r\n }\r\n for (let i = 0; i < multipleCells.length; i++) {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (let i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.add('visible');\r\n noCells[i].removeAttribute('disabled');\r\n }\r\n for (let i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.remove('visible');\r\n singleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/undo-select/active', table);\r\n };\r\n\r\n /*\r\n * This fills the abstract representation of our table with\r\n * zeros, at the start. the max amount of cells is the greatest sum\r\n * of all colspans for row.\r\n */\r\n\r\n var fillTableArray = function () {\r\n var colspansSums = [], a = [];\r\n\r\n //calculate max amount of cells inside a row\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var cells = table.rows[i].getElementsByTagName('td'),\r\n colspanSumInRow = 0;\r\n for (var j = 0; j < cells.length; j++) {\r\n colspanSumInRow += cells[j].colSpan;\r\n }\r\n colspansSums.push(colspanSumInRow);\r\n }\r\n\r\n maxAmountOfCells = Math.max.apply(null, colspansSums);\r\n //calculate max rows\r\n var maxAmountOfRows = table.rows.length;\r\n\r\n // fill with zeros from both values\r\n for (var i = 0; i < maxAmountOfRows; i++) {\r\n a[i] = [];\r\n for (var j = 0; j < maxAmountOfCells; j++) {\r\n a[i].push(0);\r\n }\r\n }\r\n drawTable(a);\r\n return a;\r\n };\r\n\r\n /*\r\n * This function gets the sum of all colspans in a row.\r\n * @param number the number of row to be used as reference.\r\n */\r\n var getActualPointsInRow = function (row) {\r\n var tds = table.rows[row].getElementsByTagName('td'),\r\n points = 0;\r\n for (var i = 0; i < tds.length; i++) {\r\n points += tds[i].colSpan;\r\n }\r\n return points;\r\n }\r\n\r\n /*\r\n * This function gets us the exact coordinates of\r\n * an exact cell, in a more reliable way than xIndex and yIndex,\r\n * these last ones were meant to be used for getting the cell trough them.\r\n * @param DOMElement the cell to get the coordinates.\r\n */\r\n var getCoords = function (search) {\r\n var skipInCols = [], cell;\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n skipInCols[i] = 0;\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\r\n cellPointer = 0;\r\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\r\n stepsToMove = 1;\r\n\r\n if (skipInCols[xPosition]) {\r\n skipInCols[xPosition]--;\r\n } else {\r\n var td = cellsBuffer[cellPointer++];\r\n if (td == search) {\r\n return [i, xPosition];\r\n }\r\n if (td.rowSpan > 1) {\r\n for ( let k = 0; k < td.colSpan; k++ ) {\r\n skipInCols[xPosition + k] = td.rowSpan - 1;\r\n }\r\n stepsToMove = td.colSpan;\r\n } else if (td.colSpan > 1) {\r\n stepsToMove = td.colSpan;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n jQuery('#wptb-table-border-color').val('');\r\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\r\n\r\n if ( columns || rows ) {\r\n //END OF PRIVATE FUNCTIONS\r\n for (var i = 0; i < settings.length; i++) {\r\n if (settings[i].id !== 'wptb-apply-inner-border') {\r\n settings[i].classList.add('visible');\r\n }\r\n }\r\n\r\n //Create a HTML Table element.\r\n table = document.createElement( 'table' );\r\n table.classList.add( 'wptb-preview-table', 'wptb-element-main-table_setting-startedid-0' );\r\n table.style.border = '0px solid';\r\n table.dataset.reconstraction = 1;\r\n //table.dataset.wptbAdaptiveTable = 1;\r\n //Add the data rows.\r\n for (var i = 0; i < rows; i++) {\r\n\r\n row = table.insertRow(-1);\r\n row.classList.add( 'wptb-row' );\r\n\r\n for (var j = 0; j < columns; j++) {\r\n cell = new WPTB_Cell(mark);\r\n cell.setCoords(i, j);\r\n cell.getDOMElement().style.borderWidth = '1px';\r\n row.appendChild(cell.getDOMElement());\r\n }\r\n }\r\n } else {\r\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\r\n\r\n if ( wptb_preview_table ) {\r\n table = wptb_preview_table;\r\n\r\n let cells = table.getElementsByTagName('td');\r\n\r\n if (cells.length > 0) {\r\n for (let i = 0; i < cells.length; i++) {\r\n WPTB_Cell(mark, cells[i]);\r\n }\r\n }\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * this method run \"mark\" method of WPTB_Table object\r\n * @param event\r\n */\r\n table.mark = (event) => {\r\n mark(event);\r\n }\r\n\r\n table.wptbCell = (callback, DOMElement) => {\r\n return WPTB_Cell(callback, DOMElement);\r\n }\r\n\r\n table.tableSM = () => {\r\n return WPTB_TableStateSaveManager;\r\n }\r\n\r\n /**\r\n * this method run \"undoSelect\" method of WPTB_Table object\r\n * @param event\r\n */\r\n table.undoSelect = () => {\r\n undoSelect();\r\n }\r\n\r\n /**\r\n * method for set value for maxAmountOfCells\r\n * @param value\r\n */\r\n table.setMaxAmountOfCells = (value) => {\r\n maxAmountOfCells = value;\r\n }\r\n\r\n /**\r\n * this method return maxAmountOfCells value\r\n * @returns {*}\r\n */\r\n table.getMaxAmountOfCells = () => {\r\n return maxAmountOfCells;\r\n }\r\n\r\n /**\r\n * this method run \"fillTableArray\" method of WPTB_Table object\r\n * @returns {[]}\r\n */\r\n table.fillTableArray = () => {\r\n return fillTableArray();\r\n }\r\n /*\r\n * For assigning to each cell xIndex and y Index attributes,\r\n * these are the column number and row number of cell in table.\r\n */\r\n\r\n table.recalculateIndexes = function () {\r\n WPTB_Helper.recalculateIndexes( this );\r\n }\r\n\r\n table.addColumnWidth = function( value, cleaner ) {\r\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\r\n if( highlighted.length > 0 ) {\r\n for( let k = 0; k < highlighted.length; k++ ) {\r\n let dataXIndex = highlighted[k].dataset.xIndex;\r\n if( dataXIndex ) {\r\n function tableTdsFor( dataXIndex, colspan ) {\r\n let tableRows = table.rows;\r\n let widthIsSet = false;\r\n let arrayTdsFromPreviousRow = [];\r\n for( let i = 0; i < tableRows.length; i++ ) {\r\n let row = tableRows[i];\r\n let tds = row.children;\r\n for( let j = 0; j < tds.length; j++ ) {\r\n let td = tds[j];\r\n if( td.dataset.xIndex == dataXIndex ) {\r\n if( value ) {\r\n if( td.colSpan == colspan ) {\r\n td.style.width = value + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n widthIsSet = true;\r\n } else {\r\n td.style.width = null;\r\n td.dataset.wptbFixedWidth = value;\r\n if( i == tableRows.length - 1 && ! widthIsSet ) {\r\n tableTdsFor( dataXIndex, colspan + 1 );\r\n }\r\n }\r\n } else if( cleaner ) {\r\n td.style.width = null;\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n } else {\r\n if( td.dataset.wptbFixedWidth ) {\r\n if( td.colSpan == colspan ) {\r\n td.style.width = td.dataset.wptbFixedWidth + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n }\r\n } else if( td.style.width ) {\r\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\r\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\r\n }\r\n arrayTdsFromPreviousRow = [];\r\n } else {\r\n arrayTdsFromPreviousRow.push( td );\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n tableTdsFor( dataXIndex, 1 );\r\n }\r\n }\r\n\r\n table.tdDefaultWidth();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n }\r\n }\r\n\r\n table.tdDefaultWidth = function() {\r\n let rows = table.rows;\r\n\r\n let tableTdsSumMaxWidth = 0;\r\n let tableTdsSumMaxWidthFixed = 0;\r\n let tableTdsSumMaxWidthAuto = 0;\r\n\r\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\r\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\r\n\r\n let arrayCellsWidthFixedHelper = [];\r\n let arrayCellsWidthAutoHelper = [];\r\n let tdPaddingCommon = 0;\r\n let tableTdBorderCommonWidth = 0;\r\n let cssForTdsWidthAuto = '';\r\n\r\n\r\n let tableFullStyleObj = window.getComputedStyle( table, null );\r\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\r\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\r\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\r\n\r\n for( let i = 0; i < rows.length; i++ ) {\r\n let tds = rows[i].children;\r\n for( let j = 0; j < tds.length; j++ ) {\r\n let td = tds[j];\r\n\r\n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\r\n if( td.style.width ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\r\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\r\n } else {\r\n if( ! td.dataset.wptbFixedWidth ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\r\n td.dataset.wptbCssTdAutoWidth = true;\r\n }\r\n }\r\n\r\n if( window.getComputedStyle( td, null ) ) {\r\n let tdStyleObj = window.getComputedStyle( td, null );\r\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\r\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\r\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\r\n\r\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\r\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\r\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\r\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\r\n\r\n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n\r\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\r\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\r\n }\r\n\r\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\r\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\r\n }\r\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n\r\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\r\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\r\n }\r\n\r\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\r\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\r\n }\r\n }\r\n }\r\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\r\n if( ! td.dataset.wptbFixedWidth ) {\r\n td.dataset.wptbCssTdAutoWidth = true;\r\n }\r\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\r\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\r\n }\r\n }\r\n }\r\n\r\n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\r\n if( arrayCellsWidthFixedHelper[i] ) {\r\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\r\n }\r\n }\r\n\r\n let CellsWidthAutoCount = 0;\r\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\r\n if( arrayCellsWidthAutoHelper[i] ) {\r\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\r\n CellsWidthAutoCount++;\r\n }\r\n }\r\n\r\n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\r\n\r\n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\r\n if( CellsWidthAutoCount ) {\r\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\r\n if( table.mergingСellsHorizontally ) {\r\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\r\n } else {\r\n table.removeAttribute( 'data-wptb-fixed-width-size' );\r\n }\r\n } else {\r\n table.removeAttribute( 'data-wptb-fixed-width-size' );\r\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\r\n }\r\n\r\n let styleElementCreate = false;\r\n let tableTdWidthAuto;\r\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\r\n if( CellsWidthAutoCount ) {\r\n table.style.minWidth = '100%';\r\n if( table.mergingСellsHorizontally ) {\r\n table.style.width = 'auto';\r\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\r\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\r\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\r\n styleElementCreate = true;\r\n } else {\r\n table.style.width = '100%';\r\n }\r\n } else {\r\n table.style.width = 'auto';\r\n table.style.minWidth = null;\r\n table.style.maxWidth = null;\r\n }\r\n } else {\r\n table.style.maxWidth = null;\r\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\r\n table.style.width = 'auto';\r\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\r\n styleElementCreate = true;\r\n }\r\n\r\n let head = document.head;\r\n if( head ) {\r\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\r\n if( cssForTdsWidthAutoOld ) {\r\n head.removeChild( cssForTdsWidthAutoOld );\r\n }\r\n }\r\n\r\n if( styleElementCreate ) {\r\n cssForTdsWidthAuto = document.createElement( 'style' );\r\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\r\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\r\n if( head ) {\r\n head.appendChild( cssForTdsWidthAuto );\r\n }\r\n }\r\n\r\n if( table.dataset.wptbTableAlignment ) {\r\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\r\n\r\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\r\n if( wptbTableSetupWidth < table.offsetWidth ) {\r\n table.style.float = null;\r\n } else {\r\n if( wptbTableAlignment == 'center' ) {\r\n table.style.float = null;\r\n } else {\r\n table.style.float = wptbTableAlignment;\r\n }\r\n }\r\n\r\n if( wptbTableAlignment == 'center' ) {\r\n wptbTableSetup.style.float = null;\r\n } else {\r\n wptbTableSetup.style.float = wptbTableAlignment;\r\n }\r\n\r\n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\r\n table.style.width = '100%';\r\n }\r\n } else {\r\n table.style.float = null;\r\n }\r\n }\r\n\r\n table.addRowHeight = function( value, cleaner ) {\r\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\r\n if( highlighted.length > 0 ) {\r\n for( let k = 0; k < highlighted.length; k++ ) {\r\n let dataYIndex = highlighted[k].dataset.yIndex;\r\n if( dataYIndex ) {\r\n function tableTdsFor( dataYIndex, rowspan ) {\r\n let tableRows = table.rows;\r\n let heightIsSet = false;\r\n let arrayTdsPrevious = [];\r\n for( let i = 0; i < tableRows.length; i++ ) {\r\n let row = tableRows[i];\r\n let tds = row.children;\r\n for( let j = 0; j < tds.length; j++ ) {\r\n let td = tds[j];\r\n if( td.dataset.yIndex == dataYIndex ) {\r\n if( value ) {\r\n if( td.rowSpan == rowspan ) {\r\n td.style.height = value + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-heidht' );\r\n heightIsSet = true;\r\n continue;\r\n } else {\r\n td.style.height = null;\r\n td.dataset.wptbFixedHeight = value;\r\n if( j == tds.length - 1 && ! heightIsSet ) {\r\n tableTdsFor( dataYIndex , rowspan + 1 );\r\n }\r\n }\r\n } else if( cleaner ) {\r\n td.style.height = null;\r\n td.removeAttribute( 'data-wptb-fixed-heidht' );\r\n } else {\r\n if( td.dataset.wptbFixedHeight ) {\r\n if( td.rowSpan = rowspan ) {\r\n td.style.height = td.dataset.wptbFixedHeight + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n }\r\n } else if( td.style.height ) {\r\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\r\n arrayTdsPrevious[z].style.height = td.style.height;\r\n }\r\n arrayTdsPrevious = [];\r\n } else {\r\n arrayTdsPrevious.push( td );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n tableTdsFor( dataYIndex, 1 );\r\n }\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n }\r\n }\r\n\r\n table.reconstraction = function() {\r\n let tds = table.getElementsByTagName( 'td' );\r\n table.mergingСellsHorizontally = false;\r\n table.mergingCellsVertically = false;\r\n table.dataset.reconstraction = 1;\r\n let forBreak = 0;\r\n for( let i = 0; i < tds.length; i++ ) {\r\n if( tds[i].colSpan > 1 ) {\r\n table.dataset.reconstraction = 0;\r\n table.mergingСellsHorizontally = true;\r\n forBreak++;\r\n }\r\n\r\n if( tds[i].rowSpan > 1 ) {\r\n table.dataset.reconstraction = 0;\r\n table.mergingCellsVertically = true;\r\n forBreak++;\r\n }\r\n\r\n if( forBreak == 2 ) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * As simple as it is: adds a column to the end of table.\r\n */\r\n table.addColumnEnd = function () {\r\n let td,\r\n currentTable = document.getElementsByClassName('wptb-preview-table'),\r\n currentTableTd,\r\n currentTdStyle;\r\n if (currentTable.length > 0) {\r\n currentTableTd = currentTable[0].querySelector('td');\r\n }\r\n\r\n if (currentTableTd) {\r\n currentTdStyle = currentTableTd.getAttribute('style');\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n td = new WPTB_Cell(mark);\r\n\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\r\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\r\n }\r\n\r\n table.rows[i].appendChild(td.getDOMElement());\r\n array[i].push(0);\r\n }\r\n\r\n maxAmountOfCells++;\r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * As simple as it looks: adds a column to the start of table.\r\n */\r\n\r\n table.addColumnStart = function () {\r\n let td,\r\n firstCell,\r\n currentTable = document.getElementsByClassName('wptb-preview-table'),\r\n currentTableTd,\r\n currentTdStyle;\r\n if ( currentTable.length > 0 ) {\r\n currentTableTd = currentTable[0].querySelector('td');\r\n }\r\n\r\n if ( currentTableTd ) {\r\n currentTdStyle = currentTableTd.getAttribute('style');\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n td = new WPTB_Cell(mark);\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\r\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\r\n }\r\n firstCell = table.rows[i].getElementsByTagName('td')[0];\r\n if (firstCell) {\r\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\r\n } else {\r\n table.rows[i].appendChild(td.getDOMElement());\r\n }\r\n array[i].push(0);\r\n }\r\n\r\n maxAmountOfCells++;\r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * Well, not so simple as previous functions.\r\n * It adds a column after a certain column of reference.\r\n * @param integer the column number to be used as reference.\r\n *\tIf empty, then the first highlighted cell is used as reference.\r\n */\r\n\r\n table.addColumnAfter = function (c_pos) {\r\n let rows = table.rows,\r\n cell,\r\n cellStyle,\r\n pos;\r\n\r\n if(c_pos != undefined && typeof c_pos === 'number') {\r\n pos = c_pos;\r\n cell = document.querySelector('[data-x-index=\"' + pos + '\"]');\r\n } else {\r\n cell = document.querySelector('.wptb-highlighted');\r\n pos = getCoords(cell)[1];\r\n }\r\n\r\n if(cell) {\r\n cellStyle = cell.getAttribute('style');\r\n\r\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\r\n table.addColumnEnd();\r\n } else {\r\n for(let i = 0; i < rows.length; i++) {\r\n let tds = rows[i].children;\r\n for(let j = 0; j < tds.length; j++) {\r\n if(parseInt(tds[j].dataset.xIndex) <= pos) {\r\n if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan == pos + cell.colSpan) {\r\n let td = newTd(cellStyle);\r\n let nextSib = tds[j].nextSibling;\r\n if (nextSib) {\r\n rows[i].insertBefore(td.getDOMElement(), nextSib);\r\n } else {\r\n rows[i].appendChild(td.getDOMElement());\r\n }\r\n\r\n break;\r\n } else if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan > pos + cell.colSpan) {\r\n tds[j].colSpan++;\r\n if(tds[j].rowSpan > 1) i += tds[j].rowSpan - 1;\r\n break;\r\n }\r\n } else if(parseInt(tds[j].dataset.xIndex) > pos) {\r\n let td = newTd(cellStyle);\r\n rows[i].insertBefore(td.getDOMElement(), tds[j]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function newTd(cellStyle) {\r\n let td = new WPTB_Cell(mark);\r\n if (cellStyle) {\r\n td.getDOMElement().setAttribute('style', cellStyle);\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\r\n }\r\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\r\n return td;\r\n }\r\n\r\n for (var i = 0; i < array.length; i++) {\r\n array[i].push(0);\r\n }\r\n maxAmountOfCells++;\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n table.addColumnWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n }\r\n };\r\n\r\n /*\r\n * For preventing us to take a lot of time,\r\n * This is just calling the function addColumnAfter, but\r\n * using the previous column to current one as reference.\r\n * @see addColumnAfter\r\n */\r\n\r\n table.addColumnBefore = function () {\r\n var cell = document.querySelector('.wptb-highlighted'),\r\n pos = getCoords(cell)[1];\r\n\r\n if (pos === 0) {\r\n table.addColumnStart();\r\n } else {\r\n table.addColumnAfter(pos - 1);\r\n }\r\n };\r\n\r\n /*\r\n * Luckily, thisfunction is simple,\r\n * it just add a row to the end of table.\r\n */\r\n\r\n table.addRowToTheEnd = function () {\r\n let r = table.insertRow(-1),\r\n td,\r\n aux,\r\n currentTable = document.getElementsByClassName('wptb-preview-table');\r\n r.classList.add( 'wptb-row' );\r\n if (currentTable.length > 0) {\r\n currentTable = currentTable[0];\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\r\n if( currentTableTd ) {\r\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\r\n\r\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\r\n td.getDOMElement().style.height = null;\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n };\r\n\r\n /*\r\n * Yet another simple function,\r\n * it just add a row to the start of table.\r\n */\r\n\r\n table.addRowToTheStart = function () {\r\n let r = table.insertRow(0),\r\n td,\r\n aux,\r\n currentTable = document.getElementsByClassName('wptb-preview-table'),\r\n currentTableTd,\r\n currentTdStyle;\r\n r.classList.add( 'wptb-row' );\r\n if (currentTable.length > 0) {\r\n currentTable = currentTable[0];\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\r\n if( currentTableTd ) {\r\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\r\n\r\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\r\n td.getDOMElement().style.height = null;\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n };\r\n\r\n /*\r\n * This function adds a row before the current one.\r\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\r\n * the most of the troubles is not here.\r\n */\r\n\r\n table.addRowBefore = function () {\r\n let cell = document.querySelector('.wptb-highlighted'),\r\n cellStyle = cell.getAttribute('style'),\r\n row = getCoords(cell)[0],\r\n cellNew;\r\n for( let i = row - 1; i >= 0; i-- ) {\r\n let rowChildren = table.rows[i].children;\r\n let rowChildrenLength = rowChildren.length;\r\n if( rowChildrenLength > 0 ) {\r\n for( let j = 0; j < rowChildrenLength; j++ ) {\r\n if( rowChildren[j].rowSpan == 1 ) {\r\n row = i;\r\n cellNew = true;\r\n break;\r\n }\r\n }\r\n }\r\n if ( cellNew ) {\r\n break;\r\n }\r\n }\r\n\r\n if (row === 0) {\r\n table.addRowToTheStart();\r\n } else {\r\n table.addRowAfter( row, cellStyle );\r\n }\r\n };\r\n\r\n /*\r\n * Well... by the name convention of the previous 3 functions,\r\n * it's pretty obvious that this functions attaches a new\r\n * row after highlighted cell row. The greatest obstacle it was\r\n * the possibility of a TR not having the exact amount of columns\r\n * occuped by actual node but rowspanned upper cells. For that purpose\r\n * it was created the function realTimeArray.\r\n * @see realTimeArray\r\n */\r\n\r\n table.addRowAfter = function ( row, cellStyle ) {\r\n let cellRowSpan,\r\n rowAfter,\r\n aux;\r\n\r\n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\r\n let cell = document.querySelector('.wptb-highlighted');\r\n cellStyle = cell.getAttribute('style'),\r\n row = getCoords(cell)[0],\r\n cellRowSpan = cell.rowSpan,\r\n rowAfter = row + cellRowSpan - 1;\r\n } else {\r\n rowAfter = row;\r\n }\r\n\r\n\r\n let cellsColSpan = 0;\r\n if ( rowAfter < table.rows.length -1 ) {\r\n for( let i = 0; i <= rowAfter ; i++ ) {\r\n let tableRowsIChildren = table.rows[i].children,\r\n tableRIChildrenLength = tableRowsIChildren.length;\r\n if( tableRIChildrenLength > 0 ) {\r\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\r\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\r\n\r\n if ( rowIRowSpan - 1 + i > rowAfter ) {\r\n tableRowsIChildren[j].rowSpan++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n let rNext = table.rows[rowAfter + 1],\r\n rNextChildren = rNext.children,\r\n rNextChildrenLength = rNextChildren.length;\r\n\r\n if( rNextChildrenLength > 0 ) {\r\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\r\n cellsColSpan += rNextChildren[i].colSpan;\r\n }\r\n }\r\n } else {\r\n cellsColSpan = array[0].length;\r\n }\r\n\r\n let r = table.insertRow( rowAfter + 1 );\r\n r.classList.add( 'wptb-row' );\r\n\r\n for ( j = 0; j < cellsColSpan; j++ ) {\r\n let td = new WPTB_Cell( mark );\r\n let currentTableTd = table.querySelector('[data-x-index=\"' + j + '\"]');\r\n if( currentTableTd ) {\r\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\r\n\r\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\r\n td.getDOMElement().style.height = null;\r\n }\r\n r.appendChild( td.getDOMElement() );\r\n }\r\n\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * This function checks the current selected cells\r\n * make a rectangular shape.\r\n * @param Array the abstract table.\r\n * @return false, if not making a rectangle, or\r\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\r\n */\r\n\r\n table.isSquare = function (a) {\r\n var rowStart = -1,\r\n columnStart = -1,\r\n rowEnd = -1,\r\n columnEnd = -1,\r\n height,\r\n width,\r\n itemsEstimate = 0,\r\n items = 0;\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n if (a[i][j] == 1) {\r\n if ( j < columnStart || columnStart == -1 ) {\r\n columnStart = j;\r\n }\r\n if ( i < rowStart || rowStart == -1 ) {\r\n rowStart = i;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n for (var i = a.length - 1; i > -1; i--) {\r\n for (var j = a[i].length - 1; j > -1; j--) {\r\n if (a[i][j] == 1) {\r\n if ( j > columnEnd ) {\r\n columnEnd = j;\r\n }\r\n if ( i > rowEnd ) {\r\n rowEnd = i;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = rowStart; i < rowEnd; i++) {\r\n for (var j = columnStart; j < columnEnd; j++) {\r\n if (a[i][j] == 0 || a[i][j] == undefined) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n if (a[i][j] == 1) {\r\n items++;\r\n }\r\n }\r\n }\r\n\r\n height = rowEnd - rowStart + 1;\r\n width = columnEnd - columnStart + 1;\r\n itemsEstimate = height * width;\r\n\r\n if (itemsEstimate !== items) {\r\n return false;\r\n }\r\n return [height, width];\r\n };\r\n\r\n /*\r\n * This function merges all selected cells.\r\n * Well, actually sets the colspan and rowspan of first\r\n * upper left cell in selection and deletes the another selected cells.\r\n */\r\n\r\n table.mergeCells = function () {\r\n var dimensions = table.isSquare(array),\r\n rowspan = dimensions[0],\r\n colspan = dimensions[1],\r\n first = document.querySelector('.wptb-highlighted'),\r\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\r\n tdsChildrenNew = [];\r\n\r\n for (let i = 0; i < tds.length; i++) {\r\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\r\n if (tdsInternalElements.length > 0) {\r\n let tdsIntElemLength = tdsInternalElements.length;\r\n for (let j = 0; j < tdsIntElemLength; j++) {\r\n tdsChildrenNew.push(tdsInternalElements[j]);\r\n }\r\n }\r\n let p = tds[i].parentNode;\r\n p.removeChild(tds[i]);\r\n }\r\n if (tdsChildrenNew.length > 0) {\r\n for (let i = 0; i < tdsChildrenNew.length; i++) {\r\n first.appendChild(tdsChildrenNew[i]);\r\n }\r\n }\r\n\r\n first.colSpan = colspan;\r\n first.rowSpan = rowspan;\r\n table.recalculateIndexes();\r\n table.reconstraction();\r\n let firstWidth = first.style.width;\r\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\r\n if( firstWidth ) {\r\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\r\n } else if( firstDataFixedWidth ) {\r\n table.addColumnWidth();\r\n } else {\r\n table.addColumnWidth( false, true );\r\n }\r\n\r\n let firstHeight = first.style.height;\r\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\r\n if( firstHeight ) {\r\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\r\n } else if( firstDataFixedHeight ) {\r\n table.addRowHeight();\r\n } else {\r\n table.addRowHeight( false, true );\r\n }\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * This functions makes the exact inverse as above.\r\n * It resets colspan and rowspan and appends\r\n * the same amount in cells to the table.\r\n * @bug\r\n */\r\n\r\n table.splitCell = function () {\r\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\r\n rowspan = cell.rowSpan,\r\n colspan = cell.colSpan,\r\n cellStyles = cell.getAttribute('style'),\r\n row = getCoords(cell)[0],\r\n thisRow = table.rows[row],\r\n cellXIndex =cell.dataset.xIndex;\r\n\r\n cell.rowSpan = 1;\r\n cell.colSpan = 1;\r\n\r\n for (let i = 1; i < colspan; i++) {\r\n let td = new WPTB_Cell(mark);\r\n td.getDOMElement().setAttribute('style', cellStyles);\r\n td.getDOMElement().classList.add( 'wptb-highlighted' );\r\n if ( cell.nextSibling ) {\r\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\r\n } else {\r\n thisRow.appendChild( td.getDOMElement() );\r\n }\r\n\r\n }\r\n\r\n if (rowspan > 1) {\r\n for (let i = 1; i < rowspan; i++) {\r\n let rowChildInsertBefore = undefined,\r\n rowNext = table.rows[row + i],\r\n rowChildren = rowNext.children,\r\n rowChildrenLength = rowChildren.length;\r\n\r\n if ( rowChildrenLength > 0 ) {\r\n for ( let k = 0; k < rowChildrenLength; k++ ) {\r\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\r\n rowChildInsertBefore = rowChildren[k];\r\n break;\r\n }\r\n }\r\n }\r\n for ( let j = 0; j < colspan; j++ ) {\r\n let td = new WPTB_Cell( mark );\r\n td.getDOMElement().setAttribute( 'style', cellStyles );\r\n if ( rowChildInsertBefore != undefined ) {\r\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\r\n } else {\r\n rowNext.appendChild( td.getDOMElement() );\r\n }\r\n }\r\n }\r\n }\r\n\r\n table.recalculateIndexes();\r\n table.reconstraction();\r\n table.addColumnWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * Searches for rowspanned cells up to row number meeting it.\r\n * @param number the number of row where the function\r\n * must search up to.\r\n */\r\n\r\n table.findRowspannedCells = function (row) {\r\n var array = [],\r\n difference;\r\n actualPoints = getActualPointsInRow(row);\r\n if (actualPoints === maxAmountOfCells) {\r\n return [];\r\n }\r\n difference = maxAmountOfCells - actualPoints;\r\n\r\n for (var i = row - 1; i >= 0 && difference; i--) {\r\n var tds = table.rows[i].getElementsByTagName('td');\r\n for (var i = 0; i < tds.length; i++) {\r\n if (tds[i].rowSpan > 1) {\r\n array.push(tds[i]);\r\n difference -= tds[i].colSpan;\r\n }\r\n }\r\n }\r\n return array;\r\n\r\n }\r\n\r\n /*\r\n * This function explores the table and adds\r\n * a cell for each lacking one for each row\r\n * to meet an even amount of cells.\r\n */\r\n\r\n table.addLackingCells = function () {\r\n var sumRows = [];\r\n for (var i = 0; i < table.rows.length; i++) {\r\n sumRows.push(0);\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var tds = table.rows[i].getElementsByTagName('td');\r\n for (var j = 0; j < tds.length; j++) {\r\n if (tds[j].rowSpan > 1) {\r\n for (var k = 1; k < tds[j].rowSpan; k++) {\r\n sumRows[i + k]++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var tds = table.rows[i].getElementsByTagName('td'),\r\n totalColspan = 0;\r\n for (var j = 0; j < tds.length; j++) {\r\n totalColspan += tds[j].colSpan;\r\n }\r\n totalColspan += sumRows[i];\r\n difference = maxAmountOfCells - totalColspan;\r\n for (var j = 0; j < difference; j++) {\r\n var td = new WPTB_Cell(mark);\r\n table.rows[i].appendChild(td.getDOMElement());\r\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\r\n }\r\n }\r\n };\r\n\r\n /*\r\n * This function deletes the row of currently\r\n * selected cell.\r\n */\r\n\r\n table.deleteRow = function () {\r\n let cell = document.querySelector('.wptb-highlighted'),\r\n cellStyles = cell.getAttribute('style'),\r\n rowspan = cell.rowSpan,\r\n row = getCoords(cell)[0],\r\n thisRow,\r\n aux;\r\n\r\n if ( rowspan == undefined ) rowspan = 1;\r\n\r\n for ( let i = 0; i < rowspan; i++ ) {\r\n thisRow = table.rows[row];\r\n let thisRowChildren = thisRow.children,\r\n nextRow = table.rows[row + 1],\r\n nextRowChildren,\r\n nextRowChildrenLength,\r\n tdArr = [];\r\n\r\n if( nextRow != undefined ) {\r\n nextRowChildren = nextRow.children;\r\n nextRowChildrenLength = nextRowChildren.length;\r\n for (let j = 0; j < thisRowChildren.length; j++) {\r\n if ( thisRowChildren[j].rowSpan > 1 ) {\r\n let td = new WPTB_Cell(mark);\r\n td.getDOMElement().setAttribute('style', cellStyles);\r\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\r\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\r\n\r\n let nextRowChildrenK = undefined;\r\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\r\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\r\n nextRowChildrenK = nextRowChildren[k];\r\n break;\r\n }\r\n }\r\n\r\n if ( nextRowChildrenK ) {\r\n tdArr.push( [td, nextRowChildrenK] );\r\n } else {\r\n tdArr.push( [td] );\r\n }\r\n }\r\n }\r\n\r\n if ( tdArr.length > 0 ) {\r\n for ( let k = 0; k < tdArr.length; k++ ) {\r\n if ( tdArr[k][1] != undefined ) {\r\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\r\n } else {\r\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\r\n }\r\n }\r\n }\r\n }\r\n\r\n let tableRows = table.rows;\r\n if ( tableRows.length > 0 ) {\r\n for ( let j = 0; j < row; j++ ) {\r\n let jRowChildren = tableRows[j].children;\r\n if ( jRowChildren.length > 0 ) {\r\n for ( let x = 0; x < jRowChildren.length; x++ ) {\r\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\r\n jRowChildren[x].rowSpan--;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n aux = Array.from(array[0]);\r\n array.pop(aux);\r\n drawTable(array);\r\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\r\n\r\n if( table.rows.length == 0 ) {\r\n WPTB_Helper.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else {\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n table.reconstraction();\r\n }\r\n }\r\n\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n\r\n /*\r\n * This function deletes the column of currently\r\n * selected cell. Again, this is way more complicated than\r\n * delete row case.\r\n */\r\n\r\n table.deleteColumn = function () {\r\n let cell = document.querySelector('.wptb-highlighted'),\r\n cellXIndex = cell.dataset.xIndex,\r\n colspan = cell.colSpan;\r\n\r\n for ( let i = 0; i < colspan; i++ ) {\r\n for ( let j = 0; j < table.rows.length; j++ ) {\r\n let rowChildren = table.rows[j].children;\r\n let rowChildrenLength = rowChildren.length;\r\n if( rowChildrenLength > 0 ) {\r\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\r\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\r\n if ( rowChildren[k].colSpan > 1 ) {\r\n rowChildren[k].colSpan--;\r\n } else {\r\n table.rows[j].removeChild( rowChildren[k] );\r\n }\r\n break;\r\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) &&\r\n Number( rowChildren[k].dataset.xIndex ) +\r\n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\r\n if ( rowChildren[k].colSpan > 1 ) {\r\n rowChildren[k].colSpan--;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for ( let j = 0; j < table.rows.length; j++ ) {\r\n if (array[j] != undefined)\r\n array[j].pop();\r\n }\r\n\r\n maxAmountOfCells--;\r\n\r\n if( table.querySelectorAll( 'td' ).length == 0 ) {\r\n WPTB_Helper.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else {\r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n table.reconstraction();\r\n }\r\n }\r\n\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n // @deprecated old generate logic\r\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\r\n\r\n array = fillTableArray();\r\n\r\n undoSelect();\r\n drawTable(array);\r\n\r\n wptbTableSetup.appendChild(table);\r\n //if (columns || rows) {\r\n table.recalculateIndexes( true );\r\n //}\r\n table.reconstraction();\r\n table.tdDefaultWidth();\r\n\r\n wptbTableSetup.onresize = function() {\r\n table.tdDefaultWidth();\r\n };\r\n\r\n WPTB_LeftPanel();\r\n\r\n // event hook to signal that table is generated and ready to be used\r\n WPTB_Helper.wptbDocumentEventGenerate('wptb:table:generated', document);\r\n\r\n WPTB_Helper.elementStartScript( table, 'table_setting' );\r\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\r\n\r\n // this code gets the ID of the active element in the toolbar\r\n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\r\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\r\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\r\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\r\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\r\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\r\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\r\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\r\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\r\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\r\n// }\r\n// }\r\n// }, false );\r\n// }\r\n\r\n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\r\n// if( wptbPanelLeft.length > 0 ) {\r\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\r\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\r\n// document.getElementById( toolbarActiveElementId ).style.display = '';\r\n// }, false );\r\n// }\r\n\r\n// let body = document.getElementsByTagName( 'body' );\r\n// if( body.length > 0 ) {\r\n// body[0].addEventListener( 'click', function( e ) {\r\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\r\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\r\n// document.getElementById( toolbarActiveElementId ).style.display = '';\r\n// }\r\n// }, false );\r\n// }\r\n};\r\n","const WPTB_TableSettingsData = {\r\n borderColor: '',\r\n /**\r\n *\r\n * @param {string} name\r\n * @param {string} value\r\n */\r\n setTableSetting: function(name, value){\r\n this[name] = value;\r\n },\r\n /**\r\n *\r\n * @param {string} name\r\n * @returns {*}\r\n */\r\n getTableSetting: function (name) {\r\n return this[name];\r\n }\r\n}\r\n\r\n","const WPTB_TableStateSaveManager = function () {\r\n\tthis.tableStateSet = (generate) => {\r\n\t\tif (generate && window.wptbTableStateSaving && Array.isArray(window.wptbTableStateSaving)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// get table setup\r\n\t\tlet wptbTableSetup = document.getElementsByClassName('wptb-table-setup');\r\n\t\tlet wptbPreviewTable = '';\r\n\t\tif (wptbTableSetup.length > 0) {\r\n\t\t\twptbTableSetup = wptbTableSetup[0];\r\n\r\n\t\t\twptbPreviewTable = wptbTableSetup.querySelector('.wptb-preview-table');\r\n\t\t} else {\r\n\t\t\twptbTableSetup = '';\r\n\t\t}\r\n\r\n\t\t// check if a global array doesn't exist with saved versions of the table\r\n\t\t// them create it\r\n\t\tif (!window.wptbTableStateSaving && !Array.isArray(window.wptbTableStateSaving)) {\r\n\t\t\twindow.wptbTableStateSaving = [];\r\n\t\t}\r\n\r\n\t\t// remove the extra part of the array after changing the table\r\n\t\t// when it is showed in the not last modified version\r\n\t\tif (window.wptbTableStateSaving.length > window.wptbTableStateNumberShow) {\r\n\t\t\twindow.wptbTableStateSaving = window.wptbTableStateSaving.slice(0, window.wptbTableStateNumberShow + 1);\r\n\t\t}\r\n\r\n\t\t// add new state of table\r\n\t\tlet wptbNewTableSetup = '';\r\n\t\tif (wptbTableSetup) {\r\n\t\t\twptbNewTableSetup = wptbTableSetup.cloneNode(true);\r\n\t\t\tconst wptbHighlighted = wptbNewTableSetup.getElementsByClassName('wptb-highlighted');\r\n\t\t\tfor (let i = 0; i < wptbHighlighted.length; i++) {\r\n\t\t\t\twptbHighlighted[i].classList.remove('wptb-highlighted');\r\n\t\t\t}\r\n\t\t\tconst wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName('wptb-directlyhovered');\r\n\t\t\tfor (let i = 0; i < wptbDirectlyhovered.length; i++) {\r\n\t\t\t\twptbDirectlyhovered[i].classList.remove('wptb-directlyhovered');\r\n\t\t\t}\r\n\t\t\tconst mceContentBodys = wptbNewTableSetup.querySelectorAll('.mce-content-body');\r\n\t\t\tif (mceContentBodys.length > 0) {\r\n\t\t\t\tfor (let k = 0; k < mceContentBodys.length; k++) {\r\n\t\t\t\t\tmceContentBodys[k].classList.remove('mce-content-body');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst dataMceStyle = wptbNewTableSetup.querySelectorAll('[data-mce-style]');\r\n\t\t\tif (dataMceStyle.length > 0) {\r\n\t\t\t\tfor (let k = 0; k < dataMceStyle.length; k++) {\r\n\t\t\t\t\tdataMceStyle[k].removeAttribute('data-mce-style');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst mceIds = wptbNewTableSetup.querySelectorAll('[id^=mce_]');\r\n\t\t\tif (mceIds.length > 0) {\r\n\t\t\t\tfor (let k = 0; k < mceIds.length; k++) {\r\n\t\t\t\t\tmceIds[k].removeAttribute('id');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet cssForTdsWidthAutoValue = '';\r\n\t\tconst { head } = document;\r\n\t\tif (head) {\r\n\t\t\tconst cssForTdsWidthAuto = head.querySelector('style[data-wptb-td-auto-width=\"true\"]');\r\n\t\t\tif (cssForTdsWidthAuto) {\r\n\t\t\t\tcssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet wptbTableTitle = '';\r\n\t\tconst wptbSetupName = document.getElementById('wptb-setup-name');\r\n\t\tif (wptbSetupName) wptbTableTitle = wptbSetupName.value;\r\n\r\n\t\twindow.wptbTableStateSaving.push([wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle]);\r\n\r\n\t\t// set new number of state which is showed now\r\n\t\twindow.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\r\n\r\n\t\t// make undo arrow active when the table was changed\r\n\t\tif (window.wptbTableStateSaving.length - 1 > 0) {\r\n\t\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\r\n\t\t\tif (wptbUndo.length > 0) {\r\n\t\t\t\twptbUndo = wptbUndo[0];\r\n\r\n\t\t\t\twptbUndo.classList.remove('wptb-undoredo-disabled');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// make redo arrow not active when the table was changed\r\n\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\r\n\t\tif (wptbRedo.length > 0) {\r\n\t\t\twptbRedo = wptbRedo[0];\r\n\r\n\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\r\n\t\t}\r\n\r\n\t\tlet wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\r\n\t\tif (wptbSaveBtn.length > 0) {\r\n\t\t\twptbSaveBtn = wptbSaveBtn[0];\r\n\t\t\tif (\r\n\t\t\t\t(!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0) ||\r\n\t\t\t\twindow.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ||\r\n\t\t\t\t!wptbPreviewTable\r\n\t\t\t) {\r\n\t\t\t\twptbSaveBtn.classList.add('wptb-save-disabled');\r\n\t\t\t\twptbSaveBtn.classList.remove('active');\r\n\t\t\t} else {\r\n\t\t\t\twptbSaveBtn.classList.remove('wptb-save-disabled');\r\n\t\t\t\twptbSaveBtn.classList.add('active');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.tableStateGet = (datawptbUndoredo) => {\r\n\t\tif (datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0) {\r\n\t\t\t// changes the number of the state which displays now\r\n\t\t\tif (datawptbUndoredo == 'undo') {\r\n\t\t\t\tif (window.wptbTableStateNumberShow > 0) {\r\n\t\t\t\t\twindow.wptbTableStateNumberShow--;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (datawptbUndoredo == 'redo') {\r\n\t\t\t\tif (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length) {\r\n\t\t\t\t\twindow.wptbTableStateNumberShow++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// add or delete class \"wptb-undoredo-disabled\" for undo button\r\n\t\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\r\n\t\t\tif (wptbUndo.length > 0) {\r\n\t\t\t\twptbUndo = wptbUndo[0];\r\n\r\n\t\t\t\tif (window.wptbTableStateNumberShow == 0) {\r\n\t\t\t\t\tif (wptbUndo) {\r\n\t\t\t\t\t\twptbUndo.classList.add('wptb-undoredo-disabled');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (window.wptbTableStateNumberShow > 0) {\r\n\t\t\t\t\tif (wptbUndo) {\r\n\t\t\t\t\t\twptbUndo.classList.remove('wptb-undoredo-disabled');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// add or delete class \"wptb-undoredo-disabled\" for redo button\r\n\t\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\r\n\t\t\tif (wptbRedo.length > 0) {\r\n\t\t\t\twptbRedo = wptbRedo[0];\r\n\r\n\t\t\t\tif (window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1) {\r\n\t\t\t\t\tif (wptbRedo) {\r\n\t\t\t\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1) {\r\n\t\t\t\t\tif (wptbRedo) {\r\n\t\t\t\t\t\twptbRedo.classList.remove('wptb-undoredo-disabled');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// add or delete class \"wptb-save-disabled\" for save button\r\n\t\t\tlet wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\r\n\t\t\tif (wptbSaveBtn.length > 0) {\r\n\t\t\t\twptbSaveBtn = wptbSaveBtn[0];\r\n\t\t\t\tif (\r\n\t\t\t\t\t(!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0) ||\r\n\t\t\t\t\twindow.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave\r\n\t\t\t\t) {\r\n\t\t\t\t\twptbSaveBtn.classList.add('wptb-save-disabled');\r\n\t\t\t\t\twptbSaveBtn.classList.remove('active');\r\n\t\t\t\t} else {\r\n\t\t\t\t\twptbSaveBtn.classList.add('active');\r\n\t\t\t\t\twptbSaveBtn.classList.remove('wptb-save-disabled');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// load necessary saved table state\r\n\t\t\tlet wptbTableSetup = document.getElementsByClassName('wptb-table-setup');\r\n\t\t\tif (wptbTableSetup.length > 0) {\r\n\t\t\t\twptbTableSetup = wptbTableSetup[0];\r\n\r\n\t\t\t\t// wptbTableSetup.outerHTML = '';\r\n\t\t\t\tif (window.wptbTableStateSaving[window.wptbTableStateNumberShow]) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][0] &&\r\n\t\t\t\t\t\ttypeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object'\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tif ('outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]) {\r\n\t\t\t\t\t\t\twptbTableSetup.outerHTML =\r\n\t\t\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst wptbTableSetupNew = document.querySelector('.wptb-table-setup');\r\n\t\t\t\t\tif (wptbTableSetupNew && wptbTableSetupNew.children.length == 0) {\r\n\t\t\t\t\t\tdocument.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n\t\t\t\t\t\twptbSaveBtn.classList.add('wptb-save-disabled');\r\n\t\t\t\t\t\twptbSaveBtn.classList.remove('active');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdocument.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// add or change or delete style element in the head for table cells who have auto width\r\n\t\t\t\t\tconst { head } = document;\r\n\t\t\t\t\tif (head) {\r\n\t\t\t\t\t\tconst cssForTdsWidthAutoOld = head.querySelector('style[data-wptb-td-auto-width=\"true\"]');\r\n\t\t\t\t\t\tif (cssForTdsWidthAutoOld) {\r\n\t\t\t\t\t\t\thead.removeChild(cssForTdsWidthAutoOld);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]) {\r\n\t\t\t\t\t\t\tconst cssForTdsWidthAuto = document.createElement('style');\r\n\t\t\t\t\t\t\tcssForTdsWidthAuto.setAttribute('data-wptb-td-auto-width', true);\r\n\t\t\t\t\t\t\tcssForTdsWidthAuto.innerHTML =\r\n\t\t\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\r\n\t\t\t\t\t\t\thead.appendChild(cssForTdsWidthAuto);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// change value of table title field\r\n\t\t\t\t\tconst wptbSetupName = document.getElementById('wptb-setup-name');\r\n\t\t\t\t\tif (typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] !== 'undefined') {\r\n\t\t\t\t\t\tif (wptbSetupName)\r\n\t\t\t\t\t\t\twptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet body = document.getElementsByTagName('body');\r\n\t\t\t\tif (body.length > 0) {\r\n\t\t\t\t\tbody = body[0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tWPTB_Helper.elementOptionsPanelClear();\r\n\t\t\t\tWPTB_LeftPanel();\r\n\r\n\t\t\t\tconst wptbLeftScrollPanelCellSetting = document.getElementById('wptb-left-scroll-panel-cell-settings');\r\n\t\t\t\tif (wptbLeftScrollPanelCellSetting) {\r\n\t\t\t\t\twptbLeftScrollPanelCellSetting.classList.remove('visible');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.tableStateClear = function () {\r\n\t\tdelete window.wptbTableStateSaving;\r\n\t\tdelete window.wptbTableStateNumberShow;\r\n\r\n\t\tlet wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\r\n\t\tif (wptbSaveBtn.length > 0) {\r\n\t\t\twptbSaveBtn = wptbSaveBtn[0];\r\n\r\n\t\t\twptbSaveBtn.removeAttribute('data-wptb-table-state-number-save');\r\n\t\t}\r\n\r\n\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\r\n\t\tif (wptbUndo.length > 0) {\r\n\t\t\twptbUndo = wptbUndo[0];\r\n\r\n\t\t\twptbUndo.classList.add('wptb-undoredo-disabled');\r\n\t\t}\r\n\r\n\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\r\n\t\tif (wptbRedo.length > 0) {\r\n\t\t\twptbRedo = wptbRedo[0];\r\n\r\n\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\r\n\t\t}\r\n\t};\r\n};\r\n"]}
1
+ {"version":3,"sources":["WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_CutGlueTable.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementOptions.js","WPTB_HeaderToolbox.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_LeftPanel.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_RecalculateIndexes.js","WPTB_Responsive.js","WPTB_Settings.js","WPTB_SortableTable.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableSettingsData.js","WPTB_TableStateSaveManager.js","WPTB_innerElementSet.js","applyGenericItemSettings.js"],"names":["WPTB_ActionsField","wptbActions","document","getElementsByClassName","length","addActionField","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","classList","remove","parentNode","removeChild","btnDelete","btnCopy","createElement","add","appendChild","type","onclick","event","act","target","el","infArr","className","match","hasOwnProperty","kind","thisRow","WPTB_Helper","rowIsTop","table","findAncestor","contains","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","wptbDocumentEventGenerate","copy","activeElement","activeElemParent","Array","isArray","data","elemProt","tinyMceClear","WPTB_ElementObject","insertBefore","getDOMElement","nextSibling","elementCopy","cloneNode","applyGenericItemSettings","WPTB_innerElementSet","setParameters","btnMove","draggable","ondragstart","wptbElementIconsDirectories","tmplIconsDirectories","wp","template","jsonIconsDirectories","IconsDirectories","JSON","parse","dragImages","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","actionsHide","ondragend","elementDragEndClear","coordinatesElement","getBoundingClientRect","wptbContainer","correctTop","top","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","leaveFromField","node","relatedTarget","onmouseleave","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","element","querySelector","dataset","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","url","window","location","href","regex","RegExp","results","exec","WPTB_Cell","callback","DOMElement","highlightRow","td","parentRow","columnCount","parseInt","tds","i","classToAdd","ttd","highlightColumn","index","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","ondblclick","stopPropagation","wptbTableSetup","yIndex","wptbSortableTable","currentTarget","newElementProxy","elementStartScript","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","offsetWidth","height","offsetHeight","borderCollapse","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","nodeName","toLowerCase","firstChild","lastChild","WPTB_CutGlueTable","cutTableHorizontally","rowBefore","rows","tableRowsIChildren","children","rowSpan","newTdRowspan","sameCellBeforeDivision","wptbCell","mark","tdTopStyle","getAttribute","setAttribute","colSpan","dataXIndex","dataXIndexNext","beforeTd","maxCols","WPTB_RecalculateIndexes","glueTableHorizontally","hasAttribute","dataSameCellBeforeDivision","tdsSameBeforeDivision","querySelectorAll","tdsSameBeforeDivisionJPlusChildren","k","nextRow","cutTableVertically","col","rowChildren","rowChildrenLength","afterTd","rowSpanNewTd","colSpanOld","colSpanNewTd","tdLeftStyle","tdAnalogThisX","tdAnalogThisY","glueTableVertically","jFirstTdGlue","WPTB_DropHandle","thisElem","e","hide","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","toPx","getDragRelativeType","cellRelatedDropHandle","range","createRange","setStart","shadowRoot","createContextualFragment","parentTd","getParentOfType","ondragenter","preventDefault","ondragover","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","undefined","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","kindIndexProt","wpTemplateId","itemHtml","replace","trim","innerHTML","wptbElementMutch","elementClearFromTinyMce","inElems","inElemObj","WPTB_ElementOptions","elementOptionsSet","capture","WPTB_HeaderToolbox","wrapperQuery","topMargin","assignButtons","manageCellsButton","activateSection","toggleToolboxVisibility","show","init","detail","hexToRgb","hex","result","rgbToHex","rgb","isHex","rgbm","Math","round","toString","toUpperCase","slice","test","icon_directory","hostName","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","convertToAbs","currentLocation","origin","linkArr","linkClean","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","decodeURIComponent","getTableId","tableId","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","color","classe","ps","number","affectedEl","backgroundColor","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","bubbles","dispatchEvent","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","dataMceStyle","removeAttribute","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","controlsInclude","functionHandler","acceptEventValues","controlConnectFunctionsName","name","elementKind","elementOptionsGroupIds","optionsGroupIds","elementOptionsGroupId","controlActiveElements","map","regularText","controlInfArr","controlActiveElement","controlUnicClassName","controls","controlName","control","targetControlValue","targetControlValueGet","targetValue","eventValue","push","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","valueDependOnControl","dependOnControlName","targetControlElementClass","valueDependOnControlCorrect","dependOnControlDataGet","dependOnControlElementsArr","dependOnControlElements","valueDependOnControlCorrectObj","s","dependOnControlElementClass","dependOnControlData","Object","keys","forEach","unicClass","appearDependOnControl","dependOnMain","dependOnControlElementChangeHandler","controlContainerElem","dependOnControlElementsValue","dependOn","dependOnControlElementValue","showHideTargetControlElement","prototype","call","targetControlElement","dependOnControlElement","bind","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","elementSettings","elementsSettings","stringify","checked","alignmentValue","elementControlsStateCopy","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementsSettingsTemplateJs","elementSettingsProt","elementSettingsCopy","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","controlElementParent","elementOptionsScriptsContainer","cellEditActiveClass","startsWith","wptbelementOptionClass","childNodes","controlsConfigJson","controlsConfig","elementOptionsGroupIdsInvolved","elementOptionsGroupInvolved","elementOptionsContainerInvolved","controlScriptsObj","controlappearDependOnControl","controlValueDependOnControl","elementOptionsScriptsContainerIndic","controlsConfigNew","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlParamCalculateValue","controlTemplate","elementOptionsContainerInvolvedGet","elementOptionsContainer","elementOptionsGroupChildren","elementOptionsContainerOn","elementOptionContainerOn","elementOptionContainer","elementOptionClass","controlContainerElemParent","helperJavascriptElem","helperJavascriptCode","innerText","script","controlScriptsArr","id","unicClassP","controlParamCalculateValueCreateFunction","handlerFunction","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","registerSections","sections","currentSection","sectionElement","sectionDataId","displayType","triggerSectionEvent","visibility","getCurrentSection","getSectionFromUrl","parsedUrl","URL","urlSection","searchParams","get","some","setupSectionButtons","sectionButtons","from","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","activeElemClass","cssForActiveElement","cssForNewElement","infArrCopyEl","cssForActiveElementInnerHTML","cssForNewElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","elementsStylesSetFromObject","jsonObject","styleCss","saveTable","startSaving","previewSaving","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","wptb_admin_object","t","messagingArea","code","datas","postId","rs","wptbId","paramIdsNecessaryChange","codeClone","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","action","builderPageUrl","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","toggleEditMode","deactivateMultipleSelectMode","wptbPreviewTableTds","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","check","countEmpty","maxPropName","recalculateIndexes","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","parentType","dragRelativeType","setDragRelativeType","getElementColorStylesHex","showControlsOnElementMount","showElementsListOnRemove","blockTinyMCEManageCells","addBlocker","blockerElement","removeBlocker","cells","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","WptbResponsive","WPTB_LeftPanel","wptbElementButtons","wptbElement","wptbTablesEditModeCloseButton","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","div","columnTitleMobile","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","trs","maxColsFull","tdsArr","jMainIter","z","responsiveWrapperId","mainContainerQuery","responsiveTable","loaded","addContainerToDom","responsiveContainer","mainContainer","Error","responsiveElement","load","WPTB_ControlsManager","callControlScript","startUp","tablePreview","elems","wptbRelativeElements","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","floor","random","newHref","tableTitleField","onchange","WPTB_SortableTable","topRow","sortModeSwitcher","active","sortableTableVerticalStart","sortingCellMouseMoveSwitcher","wptbSortableTableVertical","sortableTableHorizontalStart","wptbSortableTableHorizontal","sortableTableInitialization","sortingCellMouseMoveVertical","tdMouseLeave","sortingCellMouseMoveHorizontal","sortingCellMouseMov","tagName","offsetX","layerX","xMatch","clientHeight","sortableTable","tableWasSorted","rowspan","rowNum","rowsValuesArr","rowsTdFirst","tdYCoordsRowSpanPrevious","tdsChanged","changeSortingTdsCollection","tdRowspan","textElementsValues","textElementsValuesGet","rowsTd","orderBy","setSortedAscDataAttr","sort","prev","next","sortOrder","unshift","tBody","rowsValObj","colspan","colNum","columnsValuesArr","columnsTdFirst","tdXCoordsColSpanPrevious","tdColspan","columnsTd","tdsColumn","columnsValObj","removeCellsAttrAfterDivision","tableSM","dataAttr","prevValue","nextValue","textElements","p","tdIndexSpanPrev","tdsCollectionChanged","collectionTds","collectionTdsJSpan","collectionTdsJSpanProperty","indexName","indexNameCamelCase","indexNamePerpendicularCamelCase","tdSpanProperty","tableGroupCount","tdSpan","tdsAll","codeMain","tableColumns","minWidth","innerElements","wptbActionsLength","dataMceBogus","array","wptb_preview_table","maxAmountOfCells","maxAmountOfRows","cs","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","markedCells","controlElemIds","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","sizeName","getSizeFunctionName","size","cellSizeInputs","cellSizeFixedInput","isSquare","settingId","settingElem","countMarkedCells","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","colspanSumInRow","max","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","borderWidth","setMaxAmountOfCells","getMaxAmountOfCells","addColumnWidth","cleaner","highlighted","tableTdsFor","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTdWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","wptbTableAlignment","float","addRowHeight","dataYIndex","heightIsSet","arrayTdsPrevious","wptbFixedHeight","mergingCellsVertically","forBreak","addColumnEnd","currentTable","currentTableTd","currentTdStyle","borderColor","WPTB_TableSettingsData","getTableSetting","addColumnStart","firstCell","addColumnAfter","c_pos","cellStyle","pos","newTd","nextSib","addColumnBefore","addRowToTheEnd","r","aux","addRowToTheStart","addRowBefore","cellNew","addRowAfter","cellRowSpan","rowAfter","cellsColSpan","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","mergeCells","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","splitCell","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","deleteRow","thisRowChildren","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","deleteColumn","onresize","setTableSetting","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","tableStateClear","classId","parentCell","elemKind","onmouseover","wptbElements","elementIndexesArr","elementIndexMax","wptbNodeattributes","attributes","attr","newDataAttributeName","newDataAttributeValue","nodeValue","kindIndexProtArr","node_wptb_element_kind_num","onmouseenter"],"mappings":"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","file":"admin.js","sourcesContent":["var WPTB_ActionsField = function() {\n //this.wptbBorderMarker;\n this.wptbActions;\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n \n this.addActionField = ( actionType, thisNode ) => {\n let body = document.getElementsByTagName( 'body' )[0];\n \n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length != 0 ) {\n let previousNode = actions[0].activeElem;\n if( previousNode ) {\n previousNode.classList.remove( 'wptb-directlyhovered' );\n }\n \n while( actions.length != 0 ) {\n actions[0].parentNode.removeChild( actions[0] );\n }\n }\n \n if( actionType == 1 ) {\n \n let btnDelete, btnCopy;\n\n btnDelete = document.createElement( 'span' ),\n btnCopy = document.createElement( 'span' ),\n actions = document.createElement( 'div' );\n\n actions.classList.add( 'wptb-actions' );\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\n \n actions.appendChild( btnCopy );\n actions.appendChild( btnDelete );\n \n body.appendChild( actions );\n\n actions.activeElem = thisNode;\n\n actions.type = 1;\n\n btnDelete.onclick = function( event ) {\n let act = event.target.parentNode.activeElem,\n el = act.parentNode;\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\n// if( act && infArr && Array.isArray( infArr ) ) {\n// WPTB_Helper.elementControlsStateDelete( act );\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\n// }\n \n if( act ) {\n el.removeChild( act );\n }\n\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\n let thisRow = el.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n\n let wptbActionsField = new WPTB_ActionsField();\n wptbActionsField.actionsRemove();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n\n WPTB_Helper.wptbDocumentEventGenerate('element:removed:dom', document, act);\n };\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let activeElemParent = activeElement.parentNode;\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n let data = {};\n data.kind = type;\n data.elemProt = activeElement;\n data.tinyMceClear = true;\n copy = new WPTB_ElementObject( data );\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else {\n copy = {};\n let elementCopy = activeElement.cloneNode( true );\n elementCopy.classList.remove( 'wptb-directlyhovered' );\n \n copy.getDOMElement = function() {\n return elementCopy;\n }\n \n applyGenericItemSettings( copy );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n \n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-inner-element:copy', activeElement, copy.getDOMElement() );\n }\n \n WPTB_innerElementSet( copy.getDOMElement() );\n\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\n wptbActionsField.setParameters( activeElement );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n \n if( thisNode.classList.contains( 'wptb-ph-element' ) ) {\n let btnMove;\n btnMove = document.createElement( 'span' );\n btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\n btnMove.draggable = true;\n actions.appendChild( btnMove );\n \n btnMove.ondragstart = ( event ) => {\n let wptbElementIconsDirectories = 'wptb-element-icons-directories';\n let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );\n let data = {};\n let jsonIconsDirectories = tmplIconsDirectories( data );\n let IconsDirectories = JSON.parse( jsonIconsDirectories );\n\n let dragImages,\n actions = event.target.parentNode,\n activeElem = actions.activeElem,\n infArr,\n type;\n infArr = activeElem.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n activeElem.classList.add( 'wptb-moving-mode' );\n\n if( IconsDirectories && typeof IconsDirectories === 'object' && IconsDirectories[type] ) {\n dragImages = WPTB_Helper.getElementIcon( IconsDirectories[type] );\n }\n\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setDragImage( dragImages, 0, 0 );\n event.dataTransfer.setData( 'node', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1] );\n let act = event.target.parentNode.activeElem;\n if( act.kind == 'text' ) {\n let thisRow = act.parentNode.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n } else {\n this.style.display = 'none';\n }\n\n this.actionsHide();\n };\n\n btnMove.ondragend = ( event ) => {\n WPTB_Helper.elementDragEndClear();\n }\n }\n\n actions.style.display = 'flex';\n\n this.wptbActions = actions;\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wptb:actionfield:generated', document);\n }\n \n this.setParameters = ( thisNode ) => {\n \n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( this.wptbActions && this.wptbActions.classList.contains( 'wptb-actions' ) ) {\n this.wptbActions.style.display = 'flex';\n } else {\n return;\n }\n \n let coordinatesElement = thisNode.getBoundingClientRect();\n \n let wptbContainer = document.getElementsByClassName( 'wptb-container' )[0];\n let correctTop = () => {\n let coordinatesElement = thisNode.getBoundingClientRect();\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n }\n wptbContainer.removeEventListener( 'scroll', correctTop, false );\n \n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n this.wptbActions.style.left = ( parseFloat( coordinatesElement.right ) - parseFloat( this.wptbActions.clientWidth ) ) + 1 + 'px';\n \n this.wptbActions.style.display = 'flex';\n thisNode.classList.add( 'wptb-directlyhovered' );\n \n wptbContainer.addEventListener( 'scroll', correctTop, false );\n }\n \n this.leaveFromField = ( event, node, actionType ) => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( ! this.wptbActions ) {\n return;\n }\n \n if( event.relatedTarget ) {\n if ( event.relatedTarget.classList.contains( 'wptb-actions' ) ||\n event.relatedTarget.classList.contains( 'wptb-move-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-duplicate-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-delete-action' ) || event.relatedTarget.classList.contains( 'wptb-prebuilt-mark-action' ) )\n {\n if( ! this.wptbActions ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n this.wptbActions.onmouseleave = ( event ) => {\n if( event.relatedTarget != null && ( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || \n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element') ) && event.relatedTarget != this.wptbActions.activeElem &&\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered' ) != this.wptbActions.activeElem ) {\n \n// this.wptbActions.style.display = 'none';\n// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );\n//\n// let wptbActionsField = new WPTB_ActionsField();\n//\n// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\n//\n// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\n } else {\n \n }\n \n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.leaveFromField( event, event.relatedTarget.parentNode.parentNode );\n \n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\n }\n\n return;\n } \n }\n \n node.classList.remove( 'wptb-directlyhovered' );\n this.wptbActions.style.display = 'none';\n \n if( event.relatedTarget ) {\n if( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element' ) ) {\n this.addActionField( 1, event.relatedTarget.parentNode );\n\n this.setParameters( event.relatedTarget.parentNode );\n }\n }\n }\n \n this.actionsRemove = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.parentNode.removeChild( this.wptbActions );\n }\n }\n \n this.actionsHide = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.style.opacity = 0;\n }\n }\n}","(function () {\n var WPTB_Builder = function () {\n var table_id = WPTB_Helper.detectMode();\n if ( table_id ) {\n var http = new XMLHttpRequest(),\n urlSet = ajaxurl + \"?action=get_table\" + '&id=' + table_id;\n http.open('GET', urlSet, true);\n http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n http.onreadystatechange = function (d) {\n if (this.readyState == 4 && this.status == 200) {\n var ans = JSON.parse( http.responseText );\n document.getElementById('wptb-setup-name').value = ans[0];\n \n if( ans[1] ) {\n // @deprecated old generate logic\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n let wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];\n wptbTableSetupEl.appendChild( WPTB_Parser( ans[1] ) );\n \n let body = document.getElementsByTagName('body')[0];\n \n WPTB_Table();\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n }\n \n if( element.dataset.wptbTableContainerMaxWidth ) {\n wptbTableSetupEl.style.maxWidth = element.dataset.wptbTableContainerMaxWidth + 'px';\n \n element.tdDefaultWidth();\n }\n }\n \n //WPTB_LeftPanel();\n WPTB_Settings();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n }\n \n return;\n }\n };\n http.send(null);\n } else {\n // @deprecated old generate logic\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n document.counter = new ElementCounters();\n document.select = new MultipleSelect();\n\n var initializer = WPTB_Initializer();\n settings = WPTB_Settings();\n };\n\n let url = window.location.href,\n regex = new RegExp('[?&]page=wptb-builder'),\n results = regex.exec( url );\n if ( results ) {\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\n }\n})();","var WPTB_Cell = function ( callback, DOMElement ) {\n\n function highlightRow(td) {\n var parentRow = td.parentNode,\n columnCount = parseInt(document.getElementById('wptb-columns-number').value),\n tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n tds[i].classList.remove('wptb-highlighted-row-first', 'wptb-highlighted-row-last', 'wptb-highlighted-row-inner', 'wptb-highlighted-column-first', 'wptb-highlighted-column-last', 'wptb-highlighted-column-inner');\n }\n for (var i = 0; i < columnCount; i++) {\n\n var classToAdd = i == 0 ? 'wptb-highlighted-row-first' : i == columnCount - 1 ? 'wptb-highlighted-row-last' : 'wptb-highlighted-row-inner';\n var ttd = parentRow.getElementsByTagName('td')[i];\n if (ttd !== td) {\n ttd.classList.add(classToAdd);\n }\n }\n }\n\n function highlightColumn(td) {\n\n var index,\n parentRow = td.parentNode,\n columnCount = parseInt(document.getElementById('wptb-columns-number').value), rowCount = parseInt(document.getElementById('wptb-rows-number').value), table = document.getElementsByClassName('wptb-preview-table')[0];\n for (var i = 0; i < columnCount; i++) {\n if (parentRow.getElementsByTagName('td')[i] === td) {\n index = i;\n break;\n }\n }\n\n for (var i = 0; i < rowCount; i++) {\n var classToAdd = i == 0 ? 'wptb-highlighted-column-first' : i == rowCount - 1 ? 'wptb-highlighted-column-last' : 'wptb-highlighted-column-inner';\n var tr = table.getElementsByTagName('tr')[i];\n if (tr.getElementsByTagName('td')[index] !== td) {\n tr.getElementsByTagName('td')[index].classList.add(classToAdd);\n }\n }\n }\n\n if( ! DOMElement ) {\n DOMElement = document.createElement(\"td\");\n\n DOMElement.style.padding = jQuery('#wptb-table-padding-number').val() + 'px';\n\n var innerBorderWidth = jQuery('#wptb-table-inner-border-number').val();\n\n if (innerBorderWidth != '' && parseInt(innerBorderWidth) != 0) {\n DOMElement.style.border = innerBorderWidth + 'px solid ' + jQuery('#wptb-table-border-color').val();\n }\n\n DOMElement.classList.add('wptb-droppable', 'wptb-cell');\n }\n\n DOMElement.draggable = false;\n if ( callback ) {\n DOMElement.onclick = callback;\n }\n\n // Cell double click handler\n DOMElement.ondblclick = function( event ) {\n event.stopPropagation();\n let wptbTableSetup = document.querySelector('.wptb-table-setup')\n if(wptbTableSetup && !wptbTableSetup.classList.contains('wptb-preview-table-manage-cells') &&\n (event.target.dataset.yIndex !== '0' || wptbTableSetup.dataset.wptbSortableTable !== '1') &&\n event.target == event.currentTarget) {\n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target )\n\n let element = WPTB_Helper.newElementProxy( 'text' )\n element = element.getDOMElement()\n\n DOMElement.appendChild( element )\n\n WPTB_innerElementSet( element );\n }\n }\n\n WPTB_innerElementSet( DOMElement );\n\n WPTB_Helper.elementStartScript( DOMElement, 'table_cell_setting' );\n\n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\n\n if ( wptbPhElement.length > 0 ) {\n for( let i = 0; i < wptbPhElement.length; i++ ) {\n wptbPhElement[i].getDOMElement = function() {\n return wptbPhElement[i];\n }\n\n WPTB_innerElementSet( wptbPhElement[i] );\n\n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\n wptbPhElement[i].kind = wptbTypeElementArr[0];\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\n if ( wptbInternalActiveElement.length > 0 ) {\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\n let wptbInternalActiveElementObj = {};\n wptbInternalActiveElementObj.getDOMElement = function() {\n return wptbInternalActiveElement[j];\n }\n\n applyGenericItemSettings( wptbInternalActiveElementObj );\n }\n }\n }\n }\n }\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n this.setCoords = function (y, x) {\n var el = this.getDOMElement();\n el.dataset.yIndex = y;\n el.dataset.xIndex = x;\n };\n\n this.getCoords = function () {\n var coords,\n el = this.getDOMElement();\n coords.x = el.dataset.xIndex;\n coords.y = el.dataset.yIndex;\n return coords;\n };\n\n this.appendElement = function (node) {\n getDOMElement().appendChild(node);\n };\n\n DOMElement.getCellDimensions = function() {\n\n let tdStyleObj = window.getComputedStyle( this, null );\n\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n\n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n\n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\n\n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\n\n let width = parseInt( this.offsetWidth, 10 ) -\n parseInt( tdPaddingLeft, 10 ) -\n parseInt( tdPaddingRight, 10 );\n\n let height = parseInt( this.offsetHeight, 10 ) -\n parseInt( tdPaddingTop, 10 ) -\n parseInt( tdPaddingBottom, 10 );\n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\n if(table) {\n if(table.style.borderCollapse === 'collapse') {\n width = width - ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\n height = height - ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 );\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\n\n let tr = this.parentNode;\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\n }\n }\n\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\n }\n }\n\n let body = tr.parentNode;\n if( body && body.nodeName.toLowerCase() === 'body' ) {\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\n }\n }\n\n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\n }\n }\n }\n }\n } else if(table.style.borderCollapse === 'separate') {\n width = width - parseInt( tdBorderLeftWidth, 10 ) -\n parseInt( tdBorderRightWidth, 10 );\n height = height - parseInt( tdBorderTopWidth, 10 ) -\n parseInt( tdBorderBottomWidth, 10 );\n }\n }\n\n return {\n width: parseInt( width ),\n height: parseInt( height )\n };\n }\n\n return this;\n};\n","let WPTB_CutGlueTable = {\n cutTableHorizontally: function (rowBefore, table) {\n if( table && table.rows[rowBefore] ) {\n for( let i = 0; i < rowBefore; i++ ) {\n let tableRowsIChildren = table.rows[i].children;\n\n for( let j = 0; j < tableRowsIChildren.length; j++ ) {\n if ( tableRowsIChildren[j].rowSpan > 1 && tableRowsIChildren[j].rowSpan > rowBefore - i ) {\n let newTdRowspan = tableRowsIChildren[j].rowSpan - rowBefore + i;\n tableRowsIChildren[j].rowSpan = rowBefore - i;\n if( ! tableRowsIChildren[j].dataset.sameCellBeforeDivision ) {\n tableRowsIChildren[j].dataset.sameCellBeforeDivision = 'r' + i + 'c' + j;\n }\n\n let td;\n if(table.hasOwnProperty('wptbCell')) {\n td = new table.wptbCell( table.mark );\n td = td.getDOMElement();\n } else {\n td = document.createElement('td');\n }\n\n let tdTopStyle = tableRowsIChildren[j].getAttribute( 'style' );\n td.setAttribute( 'style', tdTopStyle );\n td.colSpan = tableRowsIChildren[j].colSpan;\n td.rowSpan = newTdRowspan;\n td.dataset.sameCellBeforeDivision = tableRowsIChildren[j].dataset.sameCellBeforeDivision;\n\n let dataXIndex = tableRowsIChildren[j].dataset.xIndex;\n let dataXIndexNext = parseInt( dataXIndex ) + parseInt( tableRowsIChildren[j].colSpan );\n let beforeTd;\n while( ! beforeTd && dataXIndexNext < table.maxCols ) {\n beforeTd = table.rows[rowBefore].querySelector( '[data-x-index=\"' + dataXIndexNext + '\"]' );\n dataXIndexNext++;\n }\n table.rows[rowBefore].insertBefore( td, beforeTd );\n\n WPTB_RecalculateIndexes(table);\n }\n }\n }\n }\n },\n glueTableHorizontally: function (table) {\n if(table) {\n let tds = [...table.getElementsByTagName( 'td' )];\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].hasAttribute( 'data-same-cell-before-division' ) ) {\n let dataSameCellBeforeDivision = tds[i].dataset.sameCellBeforeDivision;\n let tdsSameBeforeDivision = table.querySelectorAll( '[data-same-cell-before-division=\"' + dataSameCellBeforeDivision + '\"]' );\n for( let j = 0; j < tdsSameBeforeDivision.length; j++ ) {\n if( tdsSameBeforeDivision[j] && tdsSameBeforeDivision[j + 1] ) {\n if( tdsSameBeforeDivision[j].parentNode && tdsSameBeforeDivision[j + 1].parentNode &&\n ! tdsSameBeforeDivision[j].parentNode.classList.contains( 'wptb-row-moving' ) &&\n ! tdsSameBeforeDivision[j + 1].parentNode.classList.contains( 'wptb-row-moving' ) ) {\n if( ( tdsSameBeforeDivision[j + 1].dataset.yIndex == parseInt( tdsSameBeforeDivision[j].dataset.yIndex ) +\n parseInt( tdsSameBeforeDivision[j].rowSpan ) ) ) {\n tdsSameBeforeDivision[j].rowSpan += tdsSameBeforeDivision[j + 1].rowSpan;\n\n let tdsSameBeforeDivisionJPlusChildren = [...tdsSameBeforeDivision[j + 1].children];\n\n for( let k = 0; k < tdsSameBeforeDivisionJPlusChildren.length; k++ ) {\n tdsSameBeforeDivision[j].appendChild( tdsSameBeforeDivisionJPlusChildren[k] );\n }\n\n let nextRow = tdsSameBeforeDivision[j + 1].parentNode;\n nextRow.removeChild( tdsSameBeforeDivision[j + 1] );\n }\n }\n }\n }\n }\n }\n\n WPTB_RecalculateIndexes(table);\n }\n },\n cutTableVertically: function (col, table) {\n for ( let i = 0; i < table.rows.length; i++ ) {\n if( col < table.maxCols ) {\n if( col != 0 && ( ! table.rows[i].querySelector( '[data-x-index=\"' + col + '\"]' ) ) ) {\n let rowChildren = table.rows[i].children;\n\n let td,\n rowChildrenLength = rowChildren.length,\n afterTd,\n rowSpanNewTd,\n colSpanOld,\n colSpanNewTd;\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].colSpan > 1 && parseInt( rowChildren[j].dataset.xIndex ) < col &&\n parseInt( rowChildren[j].dataset.xIndex ) + parseInt( rowChildren[j].colSpan ) > col ) {\n if(table.hasOwnProperty('wptbCell')) {\n td = new table.wptbCell( table.mark );\n td = td.getDOMElement();\n } else {\n td = document.createElement('td');\n }\n\n rowSpanNewTd = rowChildren[j].rowSpan;\n colSpanOld = rowChildren[j].colSpan;\n rowChildren[j].colSpan = col - rowChildren[j].dataset.xIndex;\n colSpanNewTd = colSpanOld - rowChildren[j].colSpan;\n\n if( ! rowChildren[j].dataset.sameCellBeforeDivision ) {\n rowChildren[j].dataset.sameCellBeforeDivision = 'r' + i + 'c' + j;\n }\n\n let tdLeftStyle = rowChildren[j].getAttribute( 'style' );\n td.setAttribute( 'style', tdLeftStyle );\n\n let tdAnalogThisX = table.querySelector( '[data-x-index=\"' + col + '\"]' );\n if( tdAnalogThisX ) {\n td.style.width = tdAnalogThisX.style.width;\n }\n\n let tdAnalogThisY = table.querySelector( '[data-y-index=\"' + i + '\"]' );\n if( tdAnalogThisY ) {\n td.style.height = tdAnalogThisY.style.height;\n }\n if( rowChildren[j + 1] ) {\n afterTd = rowChildren[j + 1];\n } else {\n afterTd = null;\n }\n\n table.rows[i].insertBefore( td, afterTd );\n td.colSpan = colSpanNewTd;\n td.rowSpan = rowSpanNewTd;\n td.dataset.sameCellBeforeDivision = rowChildren[j].dataset.sameCellBeforeDivision;\n i += rowSpanNewTd - 1;\n break\n }\n }\n }\n }\n WPTB_RecalculateIndexes(table);\n }\n },\n glueTableVertically: function (table) {\n if( table ) {\n let tds = [...table.getElementsByTagName( 'td' )];\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].hasAttribute( 'data-same-cell-before-division' ) ) {\n let dataSameCellBeforeDivision = tds[i].dataset.sameCellBeforeDivision;\n let tdsSameBeforeDivision = [...table.querySelectorAll( '[data-same-cell-before-division=\"' + dataSameCellBeforeDivision + '\"]' )];\n\n let jFirstTdGlue = null;\n for( let j = 0; j < tdsSameBeforeDivision.length; j++ ) {\n if( tdsSameBeforeDivision[j] && tdsSameBeforeDivision[j + 1] &&\n ! tdsSameBeforeDivision[j].classList.contains( 'wptb-column-moving' ) &&\n ! tdsSameBeforeDivision[j + 1].classList.contains( 'wptb-column-moving' ) ) {\n if( ( tdsSameBeforeDivision[j + 1].dataset.xIndex == parseInt( tdsSameBeforeDivision[j].dataset.xIndex ) +\n parseInt( tdsSameBeforeDivision[j].colSpan ) ) ) {\n if( jFirstTdGlue == null ) {\n jFirstTdGlue = j;\n }\n tdsSameBeforeDivision[jFirstTdGlue].colSpan += tdsSameBeforeDivision[j + 1].colSpan;\n\n let tdsSameBeforeDivisionJPlusChildren = [...tdsSameBeforeDivision[j + 1].children];\n\n for( let k = 0; k < tdsSameBeforeDivisionJPlusChildren.length; k++ ) {\n tdsSameBeforeDivision[jFirstTdGlue].appendChild( tdsSameBeforeDivisionJPlusChildren[k] );\n }\n\n let thisRow = tdsSameBeforeDivision[j + 1].parentNode;\n thisRow.removeChild( tdsSameBeforeDivision[j + 1] );\n }\n }\n }\n }\n }\n\n WPTB_RecalculateIndexes(table);\n }\n }\n}\n","var WPTB_DropHandle = function (thisElem, e, hide = false) {\n\n let wptbDropHandle,\n wptbDropBorderMarker,\n wptbDropBorderMarkerTop,\n wptbDropBorderMarkerRight,\n wptbDropBorderMarkerBottom,\n wptbDropBorderMarkerLeft;\n\n /**\n * Add px suffix to a value\n *\n * @param {any} val value\n * @returns {string} string value suffixed with px\n */\n function toPx(val){\n return `${val}px`;\n }\n\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\n let cellRelatedDropHandle = document.querySelector('.wptb-cell-related-drop-handle');\n if(hide && cellRelatedDropHandle ){\n cellRelatedDropHandle.style.display = 'none';\n return;\n }\n if(cellRelatedDropHandle === null){\n const range = document.createRange();\n range.setStart(document.body , 0);\n\n const shadowRoot = range.createContextualFragment('<div class=\"wptb-cell-related-drop-handle\">Add to cell</div>').children[0];\n\n document.body.appendChild(shadowRoot);\n cellRelatedDropHandle = shadowRoot.children[0];\n }\n\n const parentTd = WPTB_Helper.getParentOfType('td', thisElem);\n const {top,left,width,height} = parentTd.getBoundingClientRect();\n\n if(!cellRelatedDropHandle){\n return;\n }\n\n cellRelatedDropHandle.style.display = 'flex';\n cellRelatedDropHandle.style.top = toPx(top);\n cellRelatedDropHandle.style.width = toPx(width);\n cellRelatedDropHandle.style.height = toPx(height);\n cellRelatedDropHandle.style.left = toPx(left);\n\n return;\n }\n\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\n wptbDropHandle = document.createElement( 'div' );\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\n \n wptbDropBorderMarker = document.createElement( 'div' );\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\n \n wptbDropBorderMarkerTop = document.createElement( 'div' ),\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\n \n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\n \n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\n \n let body = document.getElementsByTagName( 'body' );\n if ( body.length > 0 ) {\n body[0].appendChild( wptbDropHandle );\n body[0].appendChild( wptbDropBorderMarker );\n }\n \n wptbDropHandle.ondragenter = function () {\n if (e.target.classList.contains('wptb-empty')) {\n e.preventDefault();\n return false;\n }\n }\n\n wptbDropHandle.ondragover = function (e) {\n e.preventDefault(); \n }\n\n wptbDropHandle.ondragleave = function () {\n\n }\n wptbDropHandle.ondrop = function (e) {\n e.preventDefault();\n let element;\n \n if ( e.dataTransfer.getData('wptbElement') ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\n element = element.getDOMElement();\n } else {\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\n element.classList.remove( 'wptb-moving-mode' );\n element.classList.remove( 'wptb-moving-into-same-elem' );\n element.wptbMovingMode = 1;\n }\n \n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n thisElem = wptbDropHandle.getDOMParentElement();\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n \n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n \n WPTB_innerElementSet( element );\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n element.wptbMovingMode == undefined;\n }\n }\n let wptbContainer = document.querySelector( '.wptb-container' );\n wptbContainer.onscroll = function() {\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n } else {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0) {\n return;\n }\n\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.classList.contains('wptb-empty')) {\n return;\n }\n \n let thisRow;\n if ( thisElem.localName == 'td' ) {\n thisRow = thisElem.parentNode;\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\n thisRow = thisElem.parentNode.parentNode;\n }\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n let indics = e.dataTransfer.types;\n let notDragEnter = false;\n for ( let i = 0; i < indics.length; i++ ) {\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\n if ( infArr && infArr[1] != 'text' ) {\n notDragEnter = true;\n break;\n }\n }\n if( notDragEnter ) {\n return;\n }\n }\n }\n \n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\n let height = thisElem.offsetHeight,\n coordinatesElement = thisElem.getBoundingClientRect(),\n left = parseFloat( coordinatesElement.left ),\n top;\n wptbDropHandle.style.left = left + 'px';\n \n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\n if( thisElem == elementDrag ) {\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\n } else {\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\n }\n }\n \n wptbDropHandle.getDOMParentElement = function() {\n return thisElem;\n }\n \n wptbDropHandle.style.display = 'block';\n wptbDropBorderMarker.style.display = 'block';\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\n wptbDropHandle.dataset.text = 'Above Element';\n if ( y > height/2 ) {\n top = parseFloat( coordinatesElement.top ) + height - 1;\n wptbDropHandle.dataset.text = 'Below Element';\n }\n } else {\n wptbDropHandle.dataset.text = 'Drop Here';\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\n }\n wptbDropHandle.style.top = top + 'px';\n\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\n\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\n\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\n\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\n\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\n}","var ElementCounters = function () {\n\n\tvar priv = [];\n\tpriv['text'] = 0;\n\tpriv['image'] = 0;\n\tpriv['list'] = 0;\n\tpriv['button'] = 0;\n\n\tthis.increment = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn;\n\t\t}\n\t\tpriv[key]++;\n\t}\n\n\tthis.nextIndex = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn priv[key] + 1;\n\t}\n\n\treturn this;\n\n};","var WPTB_ElementObject = function ( data ) {\n let DOMElement, kindIndexProt, copy;\n if( ! data.elemProt ) {\n DOMElement = document.createElement('div'),\n kindIndexProt = undefined,\n copy = false;\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\n \n let wpTemplateId = 'wptb-' + data.kind + '-content';\n let template = wp.template( wpTemplateId );\n data.node = DOMElement;\n let itemHtml = template( data );\n\n itemHtml = itemHtml.replace(/\\r|\\n|\\t/g, '').trim();\n DOMElement.innerHTML = itemHtml;\n } else {\n DOMElement = data.elemProt.cloneNode( true );\n DOMElement.classList.remove( 'wptb-directlyhovered' );\n let wptbElementMutch = data.elemProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n };\n copy = true;\n \n if( data.tinyMceClear ) {\n DOMElement = WPTB_Helper.elementClearFromTinyMce( DOMElement );\n }\n }\n \n let inElems = DOMElement.querySelectorAll( '.wptb-in-element' );\n if( inElems.length > 0 ) {\n for ( let i = 0; i < inElems.length; i++ ) {\n let inElemObj = {};\n inElemObj.getDOMElement = function() {\n return inElems[i];\n }\n \n applyGenericItemSettings( inElemObj );\n }\n }\n \n window.addEventListener( 'item:onmouseenter', function( event ) {\n //console.log( event );\n }, false);\n \n \n this.kind = data.kind;\n this.getDOMElement = function () {\n return DOMElement;\n };\n \n applyGenericItemSettings( this, kindIndexProt, copy );\n return this;\n}\n\n\n","var WPTB_ElementOptions = function ( element, index, kindIndexProt ) {\n\n var node = element.getDOMElement();\n node.addEventListener( 'click', function() {\n WPTB_Helper.elementOptionsSet( element.kind, this );\n }, {capture: true} );\n};","/**\n * WPTB_HeaderToolbox\n *\n * @param {string} wrapperQuery wrapper query for toolbox items\n * @return {object} header toolbox object\n * @constructor\n */\n// eslint-disable-next-line camelcase,no-unused-vars\nconst WPTB_HeaderToolbox = function (wrapperQuery) {\n\tthis.wrapperQuery = wrapperQuery;\n\tthis.element = document.querySelector(wrapperQuery);\n\tthis.topMargin = 2;\n\n\t/**\n\t * Assign events to toolbox buttons\n\t */\n\tconst assignButtons = () => {\n\t\tconst manageCellsButton = this.element.querySelector('[data-button-type=\"table_settings_menu\"]');\n\n\t\tif (manageCellsButton) {\n\t\t\tmanageCellsButton.addEventListener('click', () => {\n\t\t\t\tWPTB_Helper.activateSection('manage_cells');\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Toggle visibility of toolbox with the given argument.\n\t *\n\t * @param {boolean} show show toolbox\n\t */\n\tconst toggleToolboxVisibility = (show = false) => {\n\t\tlet { height } = this.element.getBoundingClientRect();\n\n\t\tif (show) {\n\t\t\theight = 0;\n\t\t}\n\n\t\tthis.element.style.top = `calc( 100% - ${height + this.topMargin}px)`;\n\t};\n\n\t/**\n\t * Initialize header toolbox.\n\t */\n\tconst init = () => {\n\t\tassignButtons();\n\t\t// bind toolbox to table generated event\n\t\tdocument.addEventListener('wptb:table:generated', () => {\n\t\t\tthis.element.style.display = 'unset';\n\t\t\tconst { width } = this.element.getBoundingClientRect();\n\t\t\tthis.element.style.left = `calc( 50% - ${width / 2}px)`;\n\n\t\t\t// hide toolbox at manage cells and responsive menus\n\t\t\tdocument.addEventListener('wptbSectionChanged', ({ detail }) => {\n\t\t\t\ttoggleToolboxVisibility(\n\t\t\t\t\tdetail !== 'manage_cells' && detail !== 'table_responsive_menu' && detail !== 'cell_settings'\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t};\n\n\treturn { init };\n};\n","var WPTB_Helper = {\n hexToRgb: function( hex ) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\n },\n rgbToHex: function ( rgb ) {\n if( rgb ) {\n if( WPTB_Helper.isHex( rgb ) ) return rgb;\n\n let rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i);\n if ( rgbm && rgbm.length === 5) {\n return \"#\" +\n ('0' + Math.round(parseFloat(rgbm[4], 10) * 255).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgbm && rgbm.length === 4) {\n return \"#\" +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n return '';\n }\n }\n } else {\n return '';\n }\n\n },\n isHex: function( hex ) {\n let regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');\n return regex.test( hex );\n },\n getElementIcon: function ( icon_directory ) {\n let hostName = location.protocol + '//' + location.hostname;\n let img = document.createElement( 'img' );\n img.src = icon_directory;\n return img;\n },\n elementDragEndClear: function() {\n let wptbMovingMode = document.getElementsByClassName( 'wptb-moving-mode' );\n if ( wptbMovingMode.length > 0 ) {\n for( let i = 0; i < wptbMovingMode.length; i++ ) {\n wptbMovingMode[i].classList.remove( 'wptb-moving-mode' );\n }\n }\n\n let wptbDropHandles = document.getElementsByClassName( 'wptb-drop-handle' );\n if ( wptbDropHandles.length > 0 ) {\n for( let i = 0; i < wptbDropHandles.length; i++ ) {\n wptbDropHandles[i].style.display = 'none';\n }\n }\n\n let wptbDropBorderMarkers = document.getElementsByClassName( 'wptb-drop-border-marker' );\n if ( wptbDropBorderMarkers.length > 0 ) {\n for( let i = 0; i < wptbDropBorderMarkers.length; i++ ) {\n wptbDropBorderMarkers[i].style.display = 'none';\n }\n }\n },\n linkHttpCheckChange: function( link, convertToAbs = false ) {\n if ( link ) {\n // even though it is not a best practice and a huge security risk, sometimes our users use javascript tag at href attributes, this check will make sure those tags will not be modified and returned as they are\n if(link.match(/^(javascript:)(.+)$/)){\n return link;\n }\n // relative link checking\n // if link starts with '/', assume it is a relative link to the origin of the current site\n else if( link.match(/^\\/([\\S]+)$/) ){\n if (convertToAbs) {\n const currentLocation = document.location;\n let {origin} = currentLocation;\n\n\n // strip out the '/' at the end of the origin name if there is any\n if (origin.match(/^(.+)\\/$/)) {\n origin = origin.slice(-1);\n }\n\n return `${origin}${link}`;\n }else{\n return link;\n }\n }\n else if ( link.indexOf( 'http://' ) == -1 && link.indexOf( 'https://' ) == -1 ) {\n let linkArr = link.split( '/' ),\n linkClean;\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\n linkClean = linkArr[linkArr.length - 1];\n }\n return document.location.protocol + '//' + linkClean;\n } else {\n return link;\n }\n } else {\n return '';\n }\n },\n dataTitleColumnSet: function( table ) {\n // TODO dataTitleColumnSet\n // let rows = table.rows,\n // rowHead = rows[0];\n // let computedStyleRowHead = getComputedStyle( rowHead );\n //\n // let rowHeadChildren = rowHead.children;\n // let contentsForHeader = {};\n // for( let i = 0; i < rowHeadChildren.length; i++ ) {\n // let tdElements = rowHeadChildren[i].children;\n //\n // for( let j = 0; j < tdElements.length; j++ ) {\n // let element = tdElements[j];\n // if( element.classList.contains( 'wptb-ph-element' ) ) {\n // let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n // if( infArr[1] == 'text' ) {\n // let p = element.querySelector( 'p' ),\n // textContent = p.textContent,\n // textAlign = p.style.textAlign;\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize,\n // element.style.color, computedStyleRowHead.backgroundColor, textAlign];\n // break;\n // }\n // }\n // }\n // if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '',\n // '', computedStyleRowHead.backgroundColor, ''];\n // }\n // }\n // for ( let i = 1; i < rows.length; i++ ) {\n // let thisRow = rows[i],\n // thisRowChildren = thisRow.children;\n // for( let j = 0; j < thisRowChildren.length; j++ ) {\n // if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\n // thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\n // thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\n // thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\n // } else {\n // thisRowChildren[j].dataset.wptbTitleColumn = null;\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = null;\n // thisRowChildren[j].dataset.wptbTitleColumnColor = null;\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = null;\n // thisRowChildren[j].dataset.wptbTitleAlign = null;\n // }\n // }\n // }\n },\n findAncestor: function( el, cls ) {\n while ( ( el = el.parentElement ) && !el.classList.contains( cls ) );\n return el;\n },\n rowIsTop: function( row ) {\n var parent = row.parentNode;\n if( parent.children[0] == row ) {\n return true;\n } else {\n return false;\n }\n },\n getSelectionText: function() {\n var txt = '';\n if (txt = window.getSelection) {\n txt = window.getSelection().toString();\n } else {\n txt = document.selection.createRange().text;\n }\n return txt;\n },\n elementOptionsPanelClear: function() {\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\n if( elementOptionsGroup ) {\n elementOptionsGroup.innerHTML = '';\n }\n },\n wpColorPickerCheckChangeForTableStateSaving: function( event ) {\n if( event.originalEvent.type == 'external' ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );\n if( wpPickerContainer ) {\n if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {\n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n }\n }\n }\n },\n irisStripMouseUpStateSaveManager: function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n\n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n },\n wpColorPickerClear: function( attribute, isId ) {\n let input;\n if( isId ) {\n input = [document.getElementById( attribute )];\n input.length = 1;\n } else {\n input = document.getElementsByClassName( attribute );\n }\n for( let i = 0; i < input.length; i++ ) {\n let wpPickerContainer = WPTB_Helper.findAncestor( input[i], 'wp-picker-container' );\n if( wpPickerContainer ) {\n let parent = wpPickerContainer.parentNode;\n parent.removeChild( wpPickerContainer );\n let newInput = document.createElement( 'input' );\n if( isId ) {\n newInput.setAttribute( 'id', attribute );\n } else {\n newInput.classList.add( 'wptb-element-property', attribute );\n }\n newInput.value = \"\";\n parent.appendChild( newInput );\n }\n }\n },\n detectMode: function() {\n var url = window.location.href,\n regex = new RegExp('[?&]table(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if ( ! results ) return false;\n if ( ! results[2] ) return '';\n return decodeURIComponent( results[2].replace(/\\+/g, ' ') );\n },\n getTableId() {\n let tableId = WPTB_Helper.detectMode();\n if (!tableId) {\n tableId = 'startedid-0';\n }\n\n return tableId;\n },\n getColumnWidth: function( table, cell ) {\n let xIndex = cell.dataset.xIndex;\n let xIndexes = table.querySelectorAll( '[data-x-index=\"' + xIndex + '\"]' );\n let cellWidth = cell.getCellDimensions().width;\n for( let i = 0; i < xIndexes.length; i++ ) {\n if( cellWidth > xIndexes[i].getCellDimensions().width ) {\n cellWidth = xIndexes[i].getCellDimensions().width;\n }\n }\n return cellWidth;\n },\n getRowHeight: function( table, cell ) {\n let yIndex = cell.dataset.yIndex;\n let yIndexes = table.querySelectorAll( '[data-y-index=\"' + yIndex + '\"]' );\n let cellHeight = cell.getCellDimensions().height;\n for( let i = 0; i < yIndexes.length; i++ ) {\n if( cellHeight > yIndexes[i].getCellDimensions().height ) {\n cellHeight = yIndexes[i].getCellDimensions().height;\n }\n }\n return cellHeight;\n },\n newElementProxy: function( el ) {\n if( el ) {\n let data = {kind: el};\n return new WPTB_ElementObject( data );\n }\n },\n wpColorPickerChange: function( event, ui ) {\n let uiColor;\n if( ui ) {\n uiColor = ui.color.toString();\n } else {\n uiColor = '';\n }\n\n let parent = WPTB_Helper.findAncestor( event.target, 'wp-picker-input-wrap' ).getElementsByClassName( 'wptb-color-picker' )[0], classe, type, ps, number;\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\n type = classe[1];\n number = classe[2];\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + type + '-' + number )[0];\n if ( type == 'button' ) {\n if ( parent.dataset.type == 'button-text-color' ) {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.color = uiColor;\n } else {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.backgroundColor = uiColor;\n }\n } else if( type == 'list' ) {\n let ps = affectedEl.querySelectorAll( 'p' );\n if( ps.length > 0 ) {\n for ( let i = 0; i < ps.length; i++ ) {\n ps[i].style.color = uiColor;\n }\n }\n } else if( type == 'star_rating' ) {\n if ( parent.dataset.type == 'star-color' ) {\n let ratingStar = affectedEl.querySelectorAll('li');\n for( let i = 0; i < ratingStar.length; i++ ) {\n let span = ratingStar[i].getElementsByTagName( 'span' );\n for( let j = 0; j < span.length; j++ ) {\n span[j].style.fill = uiColor;\n }\n }\n } else if( parent.dataset.type == 'numeral-rating-color' ) {\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');\n wptbTextMessageSize.style.color = uiColor;\n }\n\n } else {\n affectedEl.style.color = uiColor;\n }\n },\n numberImputSize: function ( wptbNumberInputs, maxCount, maxValue ) {\n wptbNumberInputs.onkeydown = function() {\n let thisValue = this.value;\n thisValue = String( thisValue );\n if ( thisValue[0] == 0 ) {\n this.value = \"\";\n } else {\n thisValue = thisValue.substring( 0, maxCount );\n this.value = thisValue;\n }\n }\n wptbNumberInputs.onkeyup = function( ) {\n let thisValue = this.value;\n if ( parseInt( thisValue, 10 ) > parseInt( maxValue, 10 ) ) {\n this.value = maxValue;\n }\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n },\n ucfirst: function( str ) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n wptbDocumentEventGenerate: function( eventName, element, details ) {\n if( eventName && element ) {\n if( ! details ) {\n details = true;\n }\n let event = new CustomEvent( eventName, { detail: details, bubbles: true } );\n element.dispatchEvent( event );\n }\n },\n // run script for the pointed element\n elementStartScript: function( element, kind ) {\n //let script = element.getElementsByTagName( 'script' );\n if(!kind) {\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n if( infArr && Array.isArray( infArr ) ) {\n kind = infArr[1];\n }\n }\n\n if( kind ) {\n// let wpTemplateId = 'wptb-' + kind + '-script';\n// let template = wp.template( wpTemplateId );\n// let data = {elemClass: infArr[0]};\n// let elementScriptText = template( data );\n// elementScriptText = elementScriptText.replace(/\\r|\\n|\\t/g, '').trim();\n//\n// let scriptNew = document.createElement( 'script' );\n// scriptNew.setAttribute( 'type', 'text/javascript' );\n// scriptNew.innerHTML = elementScriptText;\n// element.parentNode.appendChild( scriptNew );\n\n// element.parentNode.removeChild( scriptNew );\n if( kind in WPTB_ElementsScriptsLauncher ) {\n WPTB_ElementsScriptsLauncher[kind]( element );\n }\n }\n },\n // deletes event handlers from the pointed option element and from all his daughter elements\n deleteEventHandlers: function( element ) {\n if( element ) {\n jQuery( element ).off();\n let elementChildren = element.children;\n if( elementChildren ) {\n for ( let i = 0; i < elementChildren.length; i++ ) {\n WPTB_Helper.deleteEventHandlers( elementChildren[i] );\n }\n }\n } else {\n return;\n }\n },\n // replace all occurrences in a string\n replaceAll: function( string, search, replace ){\n return string.split( search ).join( replace );\n },\n // clears code from TinyMCE attributes\n elementClearFromTinyMce: function( element ) {\n let mceContentBodys = element.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n\n let dataMceStyle = element.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n\n let mceEditFocus = element.querySelectorAll( '.mce-edit-focus' );\n if( mceEditFocus.length > 0 ) {\n for ( let k = 0; k < mceEditFocus.length; k++ ) {\n mceEditFocus[k].classList.remove( 'mce-edit-focus' );\n }\n }\n\n let contentEditable = element.querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n\n let spellCheck = element.querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n\n let mceIds = element.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n\n return element;\n },\n elementOptionContainerCustomClassSet: function( targetInput, customClassForContainer ) {\n if( targetInput && customClassForContainer ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n if( containerElement ) {\n containerElement.classList.add( customClassForContainer );\n }\n }\n },\n elementOptionContainerAdditionalStyles: function( targetInput, containerAdditionalStyles ) {\n if( targetInput && containerAdditionalStyles ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n let containerStylesArrOne = containerAdditionalStyles.split( ';' );\n\n if( containerElement && containerStylesArrOne ) {\n function containerStylesSet( containerStyleStr, containerElement ) {\n if( containerStyleStr ) {\n containerStyleStrArr = containerStyleStr.split( ':' );\n\n if( containerStyleStrArr && Array.isArray( containerStyleStrArr ) ) {\n containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];\n }\n }\n }\n if( containerStylesArrOne && Array.isArray( containerStylesArrOne ) ) {\n for( let i = 0; i < containerStylesArrOne.length; i++ ) {\n if( containerStylesArrOne[i] ) {\n containerStylesSet( containerStylesArrOne[i], containerElement );\n }\n }\n } else {\n containerStylesSet( containerStylesArrOne, containerElement );\n }\n }\n }\n },\n // function which set handler for event of changes of control\n controlsInclude: function( element, functionHandler, acceptEventValues = false ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'element:controls:active', function() {\n if(!element.hasOwnProperty('controlConnectFunctionsName') ||\n !Array.isArray(element.controlConnectFunctionsName) ||\n element.controlConnectFunctionsName.indexOf(functionHandler.name) == -1) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i ),\n elementKind;\n\n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1];\n }\n\n// if( ! element.hasOwnProperty( 'сontrolsConnectIndic' ) || element.сontrolsConnectIndic !== true && elementKind ) {\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n// if( elementsSettingsTemplateJs.length > 0 ) {\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n//\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n// let controlClassesNames = [];\n// if( elementsSettings ) {\n// elementsSettings = elementsSettings.trim();\n// elementsSettings = JSON.parse( elementsSettings );\n// if( elementsSettings && typeof elementsSettings === 'object' ) {\n// if( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n// if( elementSettings && typeof elementSettings === 'object' ) {\n// Object.keys( elementSettings ).forEach( function( key ) {\n// let regularText = new RegExp( 'data-wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n// let keyInfArr = key.match( regularText );\n// if( keyInfArr && Array.isArray( keyInfArr ) ) {\n// let controlClass = key.replace( 'data-', '' );\n// controlClassesNames.push( [controlClass, keyInfArr[2]] );\n// }\n// });\n// }\n// }\n// }\n// }\n// }\n// }\n if( elementKind ){\n let elementOptionsGroupIds = element.optionsGroupIds;\n if(elementOptionsGroupIds && Array.isArray(elementOptionsGroupIds)) {\n for(let i = 0; i < elementOptionsGroupIds.length; i++) {\n let elementOptionsGroupId = elementOptionsGroupIds[i];\n\n let elementOptionsGroup = document.getElementById(elementOptionsGroupId);\n\n let controlActiveElements = elementOptionsGroup.querySelectorAll('.wptb-element-property');\n controlActiveElements = [...controlActiveElements];\n\n controlActiveElements.map(controlActiveElement => {\n let regularText = new RegExp( 'wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let controlInfArr = controlActiveElement.className.match( regularText );\n if( controlInfArr && Array.isArray( controlInfArr ) ) {\n let controlUnicClassName = controlInfArr[0];\n\n element.addEventListener( 'wptb-control:' + controlUnicClassName, function(e) {\n let controls = {};\n let controlName = controlInfArr[2];\n let control = document.getElementsByClassName( controlUnicClassName );\n if( control.length > 0 && controlName ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n if(acceptEventValues) {\n controls[controlName] = {\n targetValue: targetControlValue,\n eventValue: e.detail.value\n }\n }else {\n controls[controlName] = targetControlValue;\n }\n }\n functionHandler( controls, element );\n }, false );\n }\n });\n }\n }\n //let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\n\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\n // if(!elementOptionsContainer){\n // return;\n // }\n\n // let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\n // let controlActiveElements = elementOptions[i].querySelector( '.wptb-element-property' );\n //\n //\n // for( let i = 0; i < elementOptions.length; i++ ) {\n // let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\n // if( controlActiveElement ) {\n //\n // }\n // }\n\n if(!element.controlConnectFunctionsName && !Array.isArray(element.controlConnectFunctionsName)) {\n element.controlConnectFunctionsName = [];\n }\n\n element.controlConnectFunctionsName.push( functionHandler.name );\n }\n }\n }, false );\n }\n },\n oneControlInclude: function( element, functionHandler, controlName ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string' ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i ),\n elementKind;\n\n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1].split( '-' )[0];\n\n let wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data = {\n container: '.' + infArr[0]\n };\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n\n if( jsonControlsConfig && typeof jsonControlsConfig === 'object' && jsonControlsConfig.hasOwnProperty( controlName ) ) {\n let controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;\n\n element.addEventListener( 'wptb-control:' + controlClassName, function( event ) {\n let control = document.getElementsByClassName( controlClassName );\n if( control.length > 0 ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n functionHandler( targetControlValue, element );\n }\n }, false );\n }\n }\n } else {\n return false;\n }\n },\n //\n innerElementCopyIncludeHandler: function( element, functionHandler ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'wptb-inner-element:copy', function( event ) {\n let innerElement = event.detail;\n if( innerElement ) {\n WPTB_Helper.elementClearFromTinyMce( innerElement );\n functionHandler( innerElement, element );\n }\n }, false );\n }\n },\n /**\n * Sets the control elements when changing which to will restart this control\n * @param {array} dependOnControlName\n * @param {string} targetControlElementClass\n * @param {array} valueDependOnControlCorrect\n * @param {string} kind\n * @param {HTMLElement} element\n */\n valueDependOnControl: function(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect, kind, element) {\n function dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect) {\n if(typeof dependOnControlName === 'string') {\n dependOnControlName = [dependOnControlName];\n }\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n let valueDependOnControl = {};\n let dependOnControlElementsArr = [];\n if (infArr && Array.isArray(infArr)) {\n let controlName = infArr[3];\n let dependOnControlElements;\n let valueDependOnControlCorrectObj = {};\n if(Array.isArray(valueDependOnControlCorrect)) {\n if(Array.isArray(valueDependOnControlCorrect[0])) {\n valueDependOnControlCorrect.map(s => {\n valueDependOnControlCorrectObj[s[0]] = [s[1], s[2]];\n });\n } else {\n valueDependOnControlCorrectObj[valueDependOnControlCorrect[0]] = [valueDependOnControlCorrect[1], valueDependOnControlCorrect[2]];\n }\n }\n dependOnControlName.map(s => {\n let dependOnControlElementClass = targetControlElementClass.replace(controlName, s);\n if(dependOnControlElementClass) {\n dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);\n if(dependOnControlElements.length > 0 && dependOnControlElements[0].type) {\n valueDependOnControl[s] = dependOnControlElements[0].value;\n if(s in valueDependOnControlCorrectObj) {\n if(valueDependOnControlCorrectObj[s][1] === 'integer') {\n valueDependOnControl[s] = parseInt(valueDependOnControl[s]) + parseInt(valueDependOnControlCorrectObj[s][0]);\n } else if(valueDependOnControlCorrectObj[s][1] === 'string') {\n valueDependOnControl[s] = valueDependOnControl[s] + valueDependOnControlCorrectObj[s][0];\n }\n }\n dependOnControlElementsArr.push(dependOnControlElements[0]);\n }\n }\n });\n }\n\n return [valueDependOnControl, dependOnControlElementsArr];\n }\n\n let dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);\n WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);\n\n Object.keys(dependOnControlData[0]).forEach(function (key) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n let unicClass = 'wptb-el-' + infArr[1] + '-' + [key];\n element.addEventListener(`wptb-control:${unicClass}`, function(event){\n let dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);\n WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);\n }, false);\n });\n },\n /**\n * Sets the visibility of one control to depend on the state of other controls\n * @param dependOnMain\n * @param targetControlElementClass\n */\n appearDependOnControl: function( dependOnMain, targetControlElementClass ) {\n if( Array.isArray( dependOnMain ) ) {\n if(typeof dependOnMain[0] === 'string') {\n dependOnMain = [dependOnMain];\n } else if(!Array.isArray(dependOnMain[0])) {\n return;\n }\n let dependOnControlElementsValue = {};\n for(let i = 0; i < dependOnMain.length; i++) {\n let dependOn = dependOnMain[i];\n let dependOnControlName = dependOn[0];\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n\n if (infArr && Array.isArray(infArr)) {\n let controlName = infArr[3];\n\n let dependOnControlElementClass = targetControlElementClass.replace(controlName, dependOnControlName);\n if(dependOnControlElementClass) {\n let dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);\n if(dependOnControlElements.length > 0) {\n dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];\n }\n }\n }\n }\n\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\n if( targetControlElement.length > 0 ) {\n targetControlElement = targetControlElement[0];\n let controlContainerElem = WPTB_Helper.findAncestor( targetControlElement, 'wptb-element-option' );\n\n if( controlContainerElem ) {\n showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue);\n\n Object.keys(dependOnControlElementsValue).map(k => {\n if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {\n let dependOnControlElements = dependOnControlElementsValue[k][1];\n let dependOnControlElement = dependOnControlElements[0];\n dependOnControlElement.addEventListener( 'change', dependOnControlElementChangeHandler.bind(null, controlContainerElem, dependOnControlElementsValue, k), false );\n }\n });\n }\n }\n\n function dependOnControlElementChangeHandler(controlContainerElem, dependOnControlElementsValue, k) {\n let dependOn = dependOnControlElementsValue[k][2];\n let dependOnControlElements = dependOnControlElementsValue[k][1];\n dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];\n showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue)\n }\n\n function showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue) {\n let display = 'block';\n Object.keys(dependOnControlElementsValue).map(k => {\n if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {\n if(dependOnControlElementsValue[k][0] === false){\n display = 'none';\n }\n }\n })\n\n controlContainerElem.style.display = display;\n }\n\n function dependOnControlElementValue(dependOnControlElements, dependOn) {\n let targetControlValue = WPTB_Helper.targetControlValueGet(dependOnControlElements);\n\n if(dependOn[1] && Array.isArray(dependOn[1]) &&\n (dependOn[1].indexOf(targetControlValue) !== -1 )) {\n return true;\n // let childCheck = controlContainerElem.querySelector('input[type=\"checkbox\"]')\n // if (childCheck) {\n // childCheck.checked = true;\n // }\n } else if(dependOn[2] && Array.isArray(dependOn[2]) &&\n (dependOn[2].indexOf(targetControlValue) !== -1)) {\n return false;\n }\n }\n }\n },\n //\n controlsStateManager: function ( targetControlClass, controlChangeIndic ) {\n let targetControls = document.getElementsByClassName( targetControlClass );\n if( targetControls.length > 0 ) {\n //targetControls = targetControls[0];\n\n let infArr = targetControlClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\n\n if( infArr && Array.isArray( infArr ) ) {\n let selectorElement;\n selectorElement = document.querySelector( '.wptb-element-' + infArr[1] );\n\n if( selectorElement ) {\n let elementsSettingsTemplatesJs;\n let elementSettings = {};\n let elementsSettings;\n elementsSettingsTemplatesJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '' ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n elementSettings['data-' + targetControlClass] = targetControlValue;\n\n elementsSettings = {};\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;\n elementsSettings = JSON.stringify( elementsSettings );\n\n if( elementsSettingsTemplatesJs.length == 0 ) {\n elementsSettingsTemplatesJs = document.createElement( 'script' );\n elementsSettingsTemplatesJs.setAttribute( 'type', 'text/html' );\n elementsSettingsTemplatesJs.setAttribute( 'class', 'wptb-element-datas' );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n }\n\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\n\n let body = document.getElementsByTagName('body')[0];\n body.appendChild( elementsSettingsTemplatesJs );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n elementsSettings = elementsSettingsTemplatesJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n\n\n if( controlChangeIndic ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ! ( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) {\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' ) {\n let targetControlValue;\n if( targetControls[i].name ) {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\n } else {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n\n if( targetControlValue == 'checked' ) {\n targetControls[i].checked = true;\n } else if( targetControlValue == 'unchecked' ) {\n targetControls[i].checked = false;\n }\n } else {\n targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n //\n targetControlValueGet: function( targetControls ) {\n let targetControlValue;\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' && targetControls[i].name ) {\n if( ! targetControlValue ) targetControlValue = {};\n if( targetControls[i].checked == true ) {\n targetControlValue[targetControls[i].name] = 'checked';\n } else {\n targetControlValue[targetControls[i].name] = 'unchecked';\n }\n } else if( targetControls[i].type == 'checkbox' ) {\n if( targetControls[i].checked == true ) {\n targetControlValue = 'checked';\n } else {\n targetControlValue = 'unchecked';\n }\n } else if( targetControls[i].type ) {\n targetControlValue = targetControls[i].value;\n } else if( targetControls[i].dataset.alignmentValue && targetControls[i].classList.contains( 'selected' ) ){\n targetControlValue = targetControls[i].dataset.alignmentValue;\n }\n }\n return targetControlValue;\n },\n //\n elementControlsStateCopy: function( elementProt, copyElem ) {\n if( elementProt && copyElem ) {\n let infArrProt = elementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n let infArrCopy = copyElem.className.match( /wptb-element-((.+-)\\d+)/i );\n if( infArrProt && Array.isArray( infArrProt ) &&\n infArrCopy && Array.isArray( infArrCopy )) {\n let elemProtKind = infArrProt[1];\n let elemCopyKind = infArrCopy[1];\n let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplateJs.length > 0 ) {\n elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n\n let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n let elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];\n if( elementSettingsProt && typeof elementSettingsProt === 'object' ) {\n let elementSettingsCopy = {};\n\n Object.keys( elementSettingsProt ).forEach( function( key ) {\n let elementSettingValue = elementSettingsProt[key];\n let elementSettingKeyCopy = key.replace( elemProtKind, elemCopyKind );\n elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;\n });\n\n if( Object.keys( elementSettingsCopy ).length > 0 ) {\n elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;\n\n elementsSettings = JSON.stringify( elementsSettings );\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\n }\n }\n }\n }\n }\n }\n }\n },\n //\n elementControlsStateDelete: function( element, nameControl ) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n let body = document.getElementsByTagName( 'body' )[0];\n let wptbElementDatas = body.getElementsByClassName( 'wptb-element-datas' );\n if( infArr && Array.isArray( infArr ) && wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n let elementsSettings = wptbElementDatas.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' &&\n ( ( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\n if( ! nameControl ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n } else {\n if( elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] &&\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] === 'object' &&\n ( 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];\n }\n }\n\n if( Object.keys( elementsSettings ).length == 0 ) {\n body.removeChild( wptbElementDatas );\n } else {\n elementsSettings = JSON.stringify( elementsSettings );\n wptbElementDatas.innerHTML = elementsSettings;\n }\n }\n }\n }\n },\n //\n elementOptionsSet: function( kind, element, valueDependOnControl, targetControlElementClass ) {\n // get controls config for this element\n let wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data;\n let elementContainerClass;\n let elementOptionClassIndic;\n let elementOptionsGroup;\n\n let controlElementParent;\n let elementOptionsScriptsContainer;\n\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n let table_id = WPTB_Helper.detectMode();\n if (!table_id) {\n table_id = 'startedid-0';\n }\n if( element.classList.contains( 'wptb-preview-table' ) ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n let cellEditActiveClass = document.querySelector('.wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\n if( ! cellEditActiveClass ) element.classList.add('wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\n }else if (element.classList.contains('wptb-responsive')){\n // if table id parsed from url is starting with 'wptb-team', it means it is team built prebuilt table with a unique id that doesn't fit infArr match regex, in that case, use default id for elements options\n if(table_id.startsWith('wptb_team')){\n table_id = 'startedid-0';\n }\n element.classList.add('wptb-element-table_responsive_setting-' + table_id);\n }\n\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n }\n\n data = {\n container: '.' + infArr[0]\n };\n let controlName;\n data.valueDependOnControl = {};\n if(valueDependOnControl) {\n Object.keys(valueDependOnControl).forEach(function (key) {\n data.valueDependOnControl[key] = valueDependOnControl[key];\n });\n }\n if(targetControlElementClass) {\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n\n if (infArr && Array.isArray(infArr)) {\n controlName = infArr[3];\n }\n }\n\n elementContainerClass = infArr[0];\n elementOptionClassIndic = infArr[1];\n\n if( element.classList.contains( 'wptb-preview-table' ) ) {\n\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n this.activateSection('cell_settings');\n }else if (element.classList.contains('wptb-responsive')){\n elementOptionsGroupId = 'table-responsive-group';\n wptbelementOptionClass = 'wptb-element-option';\n }\n else {\n let children = document.getElementById( 'element-options-group' ).childNodes;\n for ( let i = 0; i < children.length; i++) {\n if ( children[i].style )\n children[i].style.display = 'none';\n }\n this.activateSection('options_group');\n }\n\n let controlsConfigJson = tmplControlsConfig( data );\n let controlsConfig = JSON.parse( controlsConfigJson );\n\n let elementOptionsGroupIdsInvolved = [],\n elementOptionsGroupInvolved = {},\n elementOptionsContainerInvolved = {};\n\n // object for save all scrips for each controls\n let controlScriptsObj = {};\n\n // array for keep \"appear depend on\" params\n let controlappearDependOnControl = [];\n\n // array for keep \"value depend on\" params\n let controlValueDependOnControl = [];\n\n // create controls\n let elementOptionsScriptsContainerIndic = false;\n if(controlName) {\n let controlsConfigNew = {};\n controlsConfigNew[controlName] = controlsConfig[controlName];\n controlsConfig = controlsConfigNew;\n }\n let i = 0;\n Object.keys( controlsConfig ).forEach( function( key ) {\n let data = controlsConfig[key];\n data.controlKey = key;\n\n // get necessary wp js template\n let tmplControlTemplate = wp.template( 'wptb-' + data.type + '-control' );\n\n data.elemContainer = elementContainerClass;\n data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;\n Object.keys(data).map(k => {\n if (Object.prototype.hasOwnProperty.call(data, k) && data[k] === 'control_param_calculate_value') {\n data[k] = WPTB_Helper.controlParamCalculateValue(data.elementControlTargetUnicClass, k);\n }\n });\n let controlTemplate = tmplControlTemplate( data );\n if( 'appearDependOnControl' in data ) {\n if( Array.isArray( data.appearDependOnControl ) ) {\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\n }\n }\n\n if('valueDependOnControl' in data && !valueDependOnControl && !targetControlElementClass) {\n let valueDependOnControlCorrect = '';\n if(data.valueDependOnControlCorrect) valueDependOnControlCorrect = data.valueDependOnControlCorrect;\n controlValueDependOnControl.push([data.valueDependOnControl, data.elementControlTargetUnicClass, valueDependOnControlCorrect]);\n }\n\n function elementOptionsContainerInvolvedGet(elementOptionsGroupId, elementOptionsContainerInvolved) {\n if(!elementOptionsContainerInvolved[elementOptionsGroupId]){\n let elementOptionsContainer = document.createElement( 'div' );\n elementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\n document.getElementById( elementOptionsGroupId ).appendChild(elementOptionsContainer);\n elementOptionsContainerInvolved[elementOptionsGroupId] = elementOptionsContainer;\n }\n\n return elementOptionsContainerInvolved[elementOptionsGroupId];\n }\n\n if(elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) == -1 && !controlName) {\n elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);\n // clear elements from options group\n //document.getElementById( 'element-options-group' ).innerHTML = '';\n elementOptionsGroup = document.getElementById(data.elementOptionsGroupId);\n let elementOptionsGroupChildren = [...elementOptionsGroup.children];\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\n }\n elementOptionsGroupInvolved[data.elementOptionsGroupId] = elementOptionsGroup;\n }\n\n controlElementParent = elementOptionsGroupInvolved[data.elementOptionsGroupId];\n\n if(data.elementOptionsContainerOn === 'true' && !controlName) {\n controlElementParent = elementOptionsContainerInvolvedGet(data.elementOptionsGroupId, elementOptionsContainerInvolved);\n }\n\n\n if(data.elementOptionContainerOn === 'true') {\n let elementOptionContainer = document.createElement( 'div' );\n elementOptionContainer.classList.add( data.elementOptionClass, 'wptb-settings-items' );\n\n if( data.customClassForContainer ) {\n elementOptionContainer.classList.add( data.customClassForContainer );\n }\n\n if( data.containerAdditionalStyles ) {\n elementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\n }\n\n if(targetControlElementClass) {\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\n if( targetControlElement.length > 0 ) {\n targetControlElement = targetControlElement[0];\n let controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');\n\n if (controlContainerElem) {\n let controlContainerElemParent = controlContainerElem.parentNode;\n controlContainerElemParent.insertBefore(elementOptionContainer, controlContainerElem);\n controlContainerElemParent.removeChild(controlContainerElem);\n }\n }\n } else {\n controlElementParent.appendChild( elementOptionContainer );\n }\n controlElementParent = elementOptionContainer;\n }\n controlElementParent.innerHTML = controlElementParent.innerHTML + controlTemplate;\n\n let helperJavascriptElem = controlElementParent.getElementsByTagName( 'wptb-template-script' );\n if( helperJavascriptElem.length > 0 ) {\n helperJavascriptElem = helperJavascriptElem[0];\n let helperJavascriptCode = helperJavascriptElem.innerText;\n controlElementParent.removeChild( helperJavascriptElem );\n let script = document.createElement( 'script' );\n script.setAttribute( 'type', 'text/javascript' );\n script.setAttribute('id', kind + '-' + data.controlKey);\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\n if(!controlScriptsObj[data.elementOptionsGroupId] || !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])) {\n controlScriptsObj[data.elementOptionsGroupId] = [];\n }\n controlScriptsObj[data.elementOptionsGroupId].push( script );\n }\n\n i++;\n });\n\n element.optionsGroupIds = elementOptionsGroupIdsInvolved;\n\n Object.keys( controlScriptsObj ).forEach( function( elementOptionsGroupId ) {\n if(!targetControlElementClass) {\n elementOptionsScriptsContainer = document.createElement( 'div' );\n elementOptionsScriptsContainer.classList.add( 'wptb-element-options-scripts', 'wptb-options-' + infArr[1] );\n elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(elementOptionsScriptsContainer);\n }\n\n let controlScriptsArr = controlScriptsObj[elementOptionsGroupId];\n if( controlScriptsArr.length > 0 ) {\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\n if(targetControlElementClass) {\n let id = kind + '-' + controlName;\n let script = document.getElementById(id);\n elementOptionsScriptsContainer = script.parentNode;\n elementOptionsScriptsContainer.insertBefore(controlScriptsArr[i], script);\n elementOptionsScriptsContainer.removeChild(script);\n } else {\n elementOptionsScriptsContainer.appendChild(controlScriptsArr[i]);\n }\n }\n }\n });\n\n // run the scripts of controls\n\n // run appearDependOnControl function\n for ( let i = 0; i < controlappearDependOnControl.length; i++ ) {\n WPTB_Helper.appearDependOnControl( controlappearDependOnControl[i][0], controlappearDependOnControl[i][1] );\n }\n\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\n // run valueDependOnControl function\n for (let i = 0; i < controlValueDependOnControl.length; i++) {\n WPTB_Helper.valueDependOnControl(controlValueDependOnControl[i][0], controlValueDependOnControl[i][1], controlValueDependOnControl[i][2], kind, element);\n }\n\n },\n\n /**\n *\n * @param unicClass\n * @param controlKey\n * @param key\n * @returns {*}\n */\n controlParamCalculateValue: function(unicClass, key) {\n let unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');\n if (window['paramCalculateValue_' + unicClassP + '_' + key] && typeof (window['paramCalculateValue_' + unicClassP + '_' + key]) === \"function\") {\n return window['paramCalculateValue_' + unicClassP + '_' + key]();\n }\n },\n\n controlParamCalculateValueCreateFunction: function(element, controlKey, key, handlerFunction) {\n const infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n const unicClass = 'wptb-el-' + infArr[1] + '-' + controlKey;\n let unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');\n window['paramCalculateValue_' + unicClassP + '_' + key] = function () {\n return handlerFunction(element);\n };\n },\n\n /**\n * function for create, update css for element\n *\n * @param elementContainer\n * @param selector\n * @param cssName\n * @param cssValue\n */\n managerExternalCssStyles: function( elementContainer, selector, cssName, cssValue ) {\n let infArr = elementContainer.match( /wptb-element-main(.+)-(\\d+)/i );\n if( ! infArr || ! Array.isArray( infArr ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' );\n\n if( table.length > 0 ) {\n table = table[0];\n\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n selector = '.' + infArr[0] + ' ' + selector;\n }\n }\n }\n\n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainer );\n if( cssForThisElement ) {\n let cssText = cssForThisElement.innerHTML;\n if( cssText ) {\n let cssTextArrFirst = cssText.split( '}' );\n cssTextArrFirst.pop();\n let selectorExists = false;\n for( let i = 0; i < cssTextArrFirst.length; i++ ) {\n let cssTextArrSecond = cssTextArrFirst[i].split( '{' );\n if( cssTextArrSecond[0] === selector ) {\n let cssTextArrThird = cssTextArrSecond[1].split( ';' );\n cssTextArrThird.pop();\n let cssNameExists = false;\n for( let j = 0; j < cssTextArrThird.length; j++ ) {\n let cssTextArrFourth = cssTextArrThird[j].split( ':' );\n if( cssTextArrFourth[0] === cssName ) {\n if( cssValue ) {\n cssTextArrThird[j] = cssName + ':' + cssValue;\n } else {\n cssTextArrThird.splice( j, 1 );\n }\n\n cssTextArrSecond[1] = cssTextArrThird.join( ';' ) ? cssTextArrThird.join( ';' ) + ';' : '';\n cssNameExists = true;\n break;\n }\n }\n if( ! cssNameExists ) {\n if( cssValue ) {\n cssTextArrSecond[1] += cssName + ':' + cssValue + ';';\n }\n }\n if( cssTextArrSecond[1] ) {\n cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1]\n } else {\n cssTextArrFirst.splice( i, 1 );\n }\n if( cssTextArrFirst.join( '}' ) ) {\n cssForThisElement.innerHTML = cssTextArrFirst.join( '}' ) + '}';\n } else {\n head.removeChild( cssForThisElement );\n }\n\n selectorExists = true;\n break;\n }\n }\n\n if( ! selectorExists ) {\n if( cssValue ) {\n cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n cssForThisElement.innerHTML = cssText;\n }\n }\n } else {\n if( cssValue ) {\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n head.removeChild( cssForThisElement );\n }\n }\n } else {\n if( cssValue ) {\n let cssForThisElement = document.createElement( 'style' );\n cssForThisElement.setAttribute( 'id', 'styles-' + elementContainer );\n cssForThisElement.classList.add( 'styles-wptb-elements' );\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n head.appendChild( cssForThisElement );\n }\n }\n }\n },\n /**\n *\n * Register section parts for sidebar\n *\n * @param {array} sections an array of section names\n */\n registerSections(sections) {\n this.sections = {};\n this.currentSection = '';\n if (!Array.isArray(sections)) {\n sections = [sections];\n }\n\n sections.map(s => {\n const sectionElement = document.querySelector(`[data-wptb-section=${s}]`);\n if (sectionElement) {\n this.sections[s] = sectionElement;\n }\n })\n },\n /**\n * Activate a registered section and deactivates others\n *\n * @param {string} sectionDataId section name to be activated\n * @param {string} displayType display type override for section to be used in its display style property\n */\n activateSection(sectionDataId, displayType = 'block') {\n this.currentSection=sectionDataId;\n this.triggerSectionEvent(sectionDataId);\n Object.keys(this.sections).map(k => {\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\n const visibility = sectionDataId === k ? displayType : 'none';\n this.sections[k].style = `display: ${visibility} !important`;\n }\n })\n },\n /**\n * Get id of current active section\n *\n * @returns {string} active section i\n */\n getCurrentSection(){\n return this.currentSection;\n },\n /**\n * Get current section from search parameter 'wptb-builder-section' of window location\n */\n getSectionFromUrl(){\n const parsedUrl = new URL(window.location.href);\n const urlSection = parsedUrl.searchParams.get('wptb-builder-section');\n if(urlSection){\n if(Object.keys(this.sections).some(key => key===urlSection)){\n this.activateSection(urlSection);\n }\n }\n },\n /**\n * Set up related buttons and links to trigger certain elements\n */\n setupSectionButtons() {\n const sectionButtons = Array.from( document.querySelectorAll('[data-wptb-section-button'));\n const vm = this;\n\n sectionButtons.map(s => {\n const sectionName = s.dataset.wptbSectionButton;\n s.addEventListener('click', function() {\n const displayType = s.dataset.wptbSectionDisplayType;\n vm.activateSection(sectionName, displayType);\n })\n\n document.addEventListener('wptbSectionChanged', (e)=> {\n if(e.detail === sectionName){\n s.classList.remove('disabled');\n s.classList.add('active');\n }else{\n s.classList.remove('active');\n s.classList.add('disabled');\n }\n })\n })\n },\n setupPanelToggleButtons(){\n const $ = jQuery;\n\n $('.wptb-panel-toggle-group').each(function(){\n const vm = $(this);\n $(this).find('.toggle-icon').click(() => {\n vm.find('.wptb-panel-toggle-target').slideToggle();\n vm.toggleClass('wptb-panel-toggle-content');\n })\n })\n },\n /**\n * Trigger a section change event\n *\n * @param {string} sectionName section name\n */\n triggerSectionEvent(sectionName){\n const sectionEvent = new CustomEvent('wptbSectionChanged', {detail: sectionName});\n\n document.dispatchEvent(sectionEvent);\n },\n /**\n * Setup sidebar toggle element\n *\n * @param {string} toggleSelector query selector for drawer toggle element\n */\n setupSidebarToggle(toggleSelector){\n const toggleButton = document.querySelector(toggleSelector);\n if(toggleButton){\n toggleButton.addEventListener('click', (e)=>{\n e.preventDefault();\n document.body.classList.toggle('collapsed');\n })\n }\n },\n // function for deleting all external CSS for the element\n externalCssStylesDelete: function( elementContainerClass ) {\n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainerClass );\n\n if( cssForThisElement ) {\n head.removeChild( cssForThisElement );\n }\n }\n },\n // function for copy all external CSS for the element\n externalCssStylesCopy: function( activeElement, copyElement ) {\n if( activeElement ) {\n let infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let activeElemClass = infArr[0];\n\n let head = document.head;\n if( head ) {\n let cssForActiveElement = head.querySelector( '#styles-' + activeElemClass );\n\n if( cssForActiveElement ) {\n let cssForNewElement = cssForActiveElement.cloneNode( true );\n\n cssForNewElement.removeAttribute( 'id', 'styles-' + activeElemClass );\n\n let infArrCopyEl = copyElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArrCopyEl && Array.isArray( infArrCopyEl ) ) {\n cssForNewElement.setAttribute( 'id', 'styles-' + infArrCopyEl[0] );\n let cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;\n let cssForNewElementInnerHTML = WPTB_Helper.replaceAll( cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0] );\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\n head.appendChild( cssForNewElement );\n }\n }\n }\n }\n }\n },\n // function for convertation elements stiles in json\n elementsStylesConvertToObject: function() {\n let head = document.head;\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n let stylesObj = {};\n for( let i = 0; i < stylesElements.length; i++ ) {\n let styleElemId = stylesElements[i].getAttribute( 'id' );\n if( styleElemId && stylesElements[i].innerHTML ) {\n stylesObj[styleElemId] = stylesElements[i].innerHTML;\n }\n }\n\n if( Object.keys( stylesObj ).length != 0 ) {\n return JSON.stringify( stylesObj );\n }\n return '';\n },\n // function for set scc styles tags to head\n elementsStylesSetFromObject: function( jsonObject ) {\n let head = document.head;\n if( head ) {\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n if( stylesElements.length > 0 ) {\n stylesElements = [...stylesElements];\n for( let i = 0; i < stylesElements.length; i++ ) {\n head.removeChild( stylesElements[i] );\n }\n }\n if( jsonObject ) {\n let stylesObj = JSON.parse( jsonObject );\n if( Object.keys( stylesObj ).length != 0 ) {\n Object.keys( stylesObj ).forEach( function( key ) {\n let cssText = stylesObj[key];\n let styleCss = document.createElement( 'style' );\n styleCss.setAttribute( 'id', key );\n styleCss.classList.add( 'styles-wptb-elements' );\n styleCss.innerHTML = cssText;\n head.appendChild( styleCss );\n });\n }\n }\n }\n },\n // function for table saving\n saveTable: function( event, startSaving, previewSaving ) {\n if( ! previewSaving && ! startSaving ) {\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) ||\n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\n //return;\n }\n }\n\n if( ! previewSaving ) {\n let bar = document.querySelector( '.wptb-edit-bar' );\n if ( bar && bar.classList.contains( 'visible' ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' )[0];\n WPTB_Helper.toggleTableEditMode();\n }\n }\n\n // before save event trigger\n WPTB_Helper.wptbDocumentEventGenerate('wptb:save:before', document);\n\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=save_table\",\n t = document.getElementById( 'wptb-setup-name' ).value.trim(),\n messagingArea,\n code,\n datas;\n\n code = document.getElementsByClassName( 'wptb-preview-table' );\n\n let postId;\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\n postId = rs;\n }\n let paramIdsNecessaryChange = false;\n if( code.length > 0 ) {\n code = code[0];\n let codeClone = code.cloneNode( true );\n if( postId ) {\n if( codeClone.classList.contains( 'wptb-element-main-table_setting-startedid-0' ) ) {\n codeClone.classList.remove( 'wptb-element-main-table_setting-startedid-0' );\n codeClone.classList.add( 'wptb-element-main-table_setting-' + postId );\n let wptbTableSetup = document.querySelector('.wptb-table-setup');\n if(wptbTableSetup) {\n wptbTableSetup.innerHTML = '';\n wptbTableSetup.appendChild(codeClone);\n WPTB_Table();\n }\n paramIdsNecessaryChange = true;\n }\n }\n codeClone.columns = code.columns;\n code = WPTB_Stringifier( codeClone );\n code = code.outerHTML;\n } else {\n code = '';\n }\n\n if( ! previewSaving ) {\n datas = '';\n let datas_containers = document.getElementsByClassName( 'wptb-element-datas' );\n\n if( datas_containers.length > 0 ) {\n if( datas_containers[0].innerHTML ) {\n datas = datas_containers[0].innerHTML;\n\n if( paramIdsNecessaryChange ) {\n datas = WPTB_Helper.replaceAll( datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0',\n 'tmpl-wptb-el-datas-main-table_setting-' + postId );\n\n datas = WPTB_Helper.replaceAll( datas, 'data-wptb-el-main-table_setting-startedid-0',\n 'data-wptb-el-main-table_setting-' + postId );\n }\n }\n }\n }\n\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\n if( paramIdsNecessaryChange ) {\n styleObjJson = WPTB_Helper.replaceAll( styleObjJson, '.wptb-element-main-table_setting-startedid-0',\n '.wptb-element-main-table_setting-' + postId );\n }\n\n if ( t === '' && code === '' ) {\n let messagingAreaText = '';\n if( t === '' ) messagingAreaText += 'You must assign a name to the table before saving it.</br>';\n if( code === '' ) messagingAreaText += 'Table wasn\\'t created';\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Error: ' + messagingAreaText + '</div>';\n messagingArea.classList.add( 'wptb-warning' );\n setTimeout(function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n return;\n }\n\n let params = {\n title: t,\n content: code,\n elements_datas: datas,\n elements_styles: styleObjJson,\n security_code: wptb_admin_object.security_code\n };\n\n\n if( previewSaving ) {\n params.preview_saving = previewSaving;\n }\n\n if ( postId ) {\n params.id = postId;\n }\n\n // wptb save before event\n WPTB_Helper.wptbDocumentEventGenerate('wptb:save:before', document, params);\n\n params = JSON.stringify( params );\n\n http.open('POST', url, true);\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n\n if ( data[0] == 'saved' ) {\n let builderPageUrl = document.location.href.replace( '#', '' );\n let regex = new RegExp( '&table=(.+)', \"i\" );\n builderPageUrl = builderPageUrl.replace( regex, '' );\n window.history.pushState( null, null, builderPageUrl + '&table=' + data[1] );\n\n document.wptbId = data[1];\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\n if( wptbPreviewBtn.length > 0 ) {\n wptbPreviewBtn = wptbPreviewBtn[0];\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\n }\n\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n // WPTB_Helper.saveTable( event, true );\n return;\n } else if( data[0] == 'edited' && startSaving ) {\n document.wptbId = data[1];\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\n if( wptbPreviewBtn.length > 0 ) {\n wptbPreviewBtn = wptbPreviewBtn[0];\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\n }\n\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'edited' ) {\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'preview_edited' ) {\n return;\n } else {\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Safety problems</div>';\n }\n messagingArea.classList.add( 'wptb-success' );\n setTimeout( function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n }\n }\n http.send( params );\n },\n //\n clickOnFreeSpace: function() {\n // if current active section is responsive menu, ignore this functionality\n if(this.getCurrentSection() === 'table_responsive_menu'){\n return;\n }\n\n let cellModeBackground = document.querySelector( '#wptb-cell_mode_background' );\n if( cellModeBackground && cellModeBackground.classList.contains( 'visible' ) ) {\n return;\n }\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'table';\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'block';\n // document.getElementById( 'element-options-group' ).style.display = 'none';\n this.activateSection('elements');\n\n let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n if( wpcdFixedToolbar.hasAttribute( 'data-toolbar-active-id' ) ) {\n document.getElementById( wpcdFixedToolbar.getAttribute( 'data-toolbar-active-id' ) ).classList.remove( 'toolbar-active' );\n }\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n WPTB_Helper.elementOptionsSet( 'table_setting', element );\n }\n },\n\n /*\n * function for sending of element ajax request\n */\n elementAjax: function( dataAjaxData, element ) {\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=wptb_element_ajax\";\n let element_name;\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n element_name = infArr[1];\n }\n\n let params = {\n element_ajax_data: dataAjaxData,\n element_name: element_name,\n security_code: wptb_admin_object.security_code\n };\n params = JSON.stringify( params );\n\n http.open( 'POST', url, true );\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n let detail;\n if ( data && Array.isArray( data ) && data[0] == 'element_ajax_responce' ) {\n detail = {value: data[1]};\n } else {\n detail = '';\n }\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-element:ajax-response', element, detail );\n }\n }\n http.send( params );\n },\n\n /*\n * This just toggles visibility of cell edit bar, and toggles\n * cell selecting mode.\n */\n toggleTableEditMode: function ( close = false ) {\n let bar = document.getElementsByClassName('wptb-edit-bar'),\n cellModeBackground = document.getElementById('wptb-cell_mode_background'),\n leftScrollPanelCurtain = document.getElementById('wptb-left-scroll-panel-curtain'),\n leftScrollPanelCellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\n if (wptbPreviewTable.length > 0) {\n wptbPreviewTable = wptbPreviewTable[0];\n }\n\n if ( bar.length > 0 ) {\n let toggleEditMode = '';\n for ( let i = 0; i < bar.length; i++ ) {\n if ( bar[i].classList.contains( 'visible' ) ) {\n document.select.deactivateMultipleSelectMode();\n bar[i].classList.remove( 'visible' );\n cellModeBackground.classList.remove( 'visible' );\n leftScrollPanelCurtain.classList.remove( 'visible' );\n leftScrollPanelCellSettings.classList.remove( 'visible' );\n wptbPreviewTable.parentNode.classList.remove( 'wptb-preview-table-manage-cells' );\n let wptbPreviewTableTds = wptbPreviewTable.getElementsByTagName( 'td' );\n if ( wptbPreviewTableTds.length > 0 ) {\n for ( let i = 0; i < wptbPreviewTableTds.length; i++ ) {\n wptbPreviewTableTds[i].classList.remove( 'wptb-highlighted' );\n }\n }\n toggleEditMode = 'closed';\n WPTB_Helper.activateSection('elements')\n\n } else if( ! close ) {\n document.select.activateMultipleSelectMode();\n bar[i].classList.add( 'visible' );\n cellModeBackground.classList.add( 'visible' );\n leftScrollPanelCurtain.classList.add( 'visible' );\n wptbPreviewTable.parentNode.classList.add( 'wptb-preview-table-manage-cells' );\n\n toggleEditMode = 'opened';\n }\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-edit-mode/' + toggleEditMode, wptbPreviewTable)\n }\n },\n\n /*\n * checking of dimension of value\n */\n checkingDimensionValue: function ( value, dimension ) {\n value = String( value );\n dimension = String( dimension );\n if( value && dimension ) {\n let searchIndex = value.indexOf( dimension );\n if ( searchIndex != -1 && searchIndex == ( value.length - dimension.length ) ) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n },\n\n /*\n * if dimension is included - checking and if it necessary setting value\n * without dimension - return value\n */\n checkSetGetStyleSizeValue: function( element, styleName, computedStyleName, dimension ) {\n let elemStyleValue = element.style[styleName];\n elemStyleValue = String( elemStyleValue );\n\n if( ! elemStyleValue || dimension ? ! ( WPTB_Helper.checkingDimensionValue( elemStyleValue, dimension ) ) : false ){\n let elementStyles = window.getComputedStyle( element );\n if( computedStyleName && elementStyles.getPropertyValue( computedStyleName ) && dimension ? WPTB_Helper.checkingDimensionValue( elementStyles.getPropertyValue( computedStyleName ), dimension ) : true ) {\n if( ! dimension ) {\n return elementStyles.getPropertyValue( computedStyleName );\n } else {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n }\n } else {\n if( ! dimension ) {\n return false;\n } else {\n element.style[styleName] = null;\n }\n }\n } else if( ! dimension ) {\n return elemStyleValue;\n }\n\n return element.style[styleName];\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleColorValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n elemStyleColorValue = WPTB_Helper.rgbToHex( elementStyles.getPropertyValue( computedStyleName ) );\n if( WPTB_Helper.isHex( elemStyleColorValue ) ) {\n element.style[styleName] = elemStyleColorValue;\n } else {\n element.style[styleName] = '';\n }\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else {\n if( set ) {\n element.style[styleName] = '';\n } else {\n return '';\n }\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else if( ! set ) {\n return '';\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * get the value of the same elements that have the most count\n */\n getValueMaxCountSameElementsInArray: function ( arr ) {\n if( arr && Array.isArray( arr ) ) {\n let check = {};\n let countEmpty = 0;\n for( let i = 0; i < arr.length; i++ ) {\n if(arr[i]) {\n if( check[arr[i]] ) {\n check[arr[i]]++;\n } else {\n check[arr[i]] = 1;\n }\n } else {\n countEmpty++;\n }\n }\n\n let maxPropName;\n for ( let key in check ) {\n if( ! maxPropName ) {\n maxPropName = key;\n continue;\n } else {\n if( check[maxPropName] < check[key] ) {\n maxPropName = key;\n }\n }\n }\n\n return check[maxPropName] >= countEmpty ? maxPropName : '';\n }\n },\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n recalculateIndexes: function ( table ) {\n WPTB_RecalculateIndexes(table);\n },\n\n /**\n * Table Rows colors reinstall\n */\n tableRowsColorsReinstall: function ( table ) {\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let tableIndex = '';\n if( infArr[infArr.length -1] == '0' ) {\n tableIndex = 'startedid-0';\n } else {\n tableIndex = infArr[infArr.length -1];\n }\n\n let tableHeaderBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableHeaderBackground' );\n if( tableHeaderBackground ) {\n let details = {value: tableHeaderBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableHeaderBackground, details );\n }\n\n let tableEvenRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableEvenRowBackground' );\n if( tableEvenRowBackground ) {\n let details = {value: tableEvenRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableEvenRowBackground, details );\n }\n\n let tableOddRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableOddRowBackground' );\n if( tableOddRowBackground ) {\n let details = {value: tableOddRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableOddRowBackground, details );\n }\n }\n },\n /**\n * Get parent html element of given type\n *\n * @param {string} parentType type of parent element\n * @param {HTMLElement} el current element\n * @returns {*} html element of type\n */\n getParentOfType: (parentType, el) => {\n if(el.nodeName === parentType.toUpperCase()) {\n return el;\n }\n\n return WPTB_Helper.getParentOfType(parentType , el.parentElement);\n },\n // current relative type of drag element\n // this type is used on differentiating certain elements based on their positioning on table\n dragRelativeType : '',\n /**\n *\n * @param {string} val drag relative type\n */\n setDragRelativeType: function (val){\n this.dragRelativeType = val;\n },\n // get drag relative type\n getDragRelativeType : function(){\n return this.dragRelativeType;\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {string} styleName\n */\n getElementColorStylesHex: function (element, styleName) {\n let color = element.style[styleName];\n color = WPTB_Helper.rgbToHex( color );\n if( ! WPTB_Helper.isHex( color ) ) {\n color = '';\n }\n return color;\n },\n /**\n * Show element controls on adding them to table.\n */\n showControlsOnElementMount(){\n document.addEventListener('element:mounted:dom', function(e){\n e.target.click();\n });\n },\n /**\n * Show elements list menu on left panel on removing element from table\n */\n showElementsListOnRemove(){\n document.addEventListener('element:removed:dom', function(){\n WPTB_Helper.activateSection('elements');\n })\n },\n blockTinyMCEManageCells: function (){\n const addBlocker = (parent) => {\n const blockerElement = document.createElement('div');\n blockerElement.classList.add('wptb-plugin-blocker-element');\n parent.appendChild(blockerElement);\n }\n\n const removeBlocker = (parent) => {\n const blockerElement = parent.querySelector('.wptb-plugin-blocker-element');\n if(blockerElement){\n blockerElement.remove();\n }\n }\n document.addEventListener('wptbSectionChanged' , ({detail}) => {\n const table = document.querySelector('.wptb-table-setup table.wptb-preview-table');\n const cells = Array.from(table.querySelectorAll('td'));\n\n cells.map(removeBlocker);\n\n if(detail === 'manage_cells' || detail === 'cell_settings'){\n cells.map(addBlocker);\n }\n })\n\n document.addEventListener('wptb:save:before' , () => {\n const table = document.querySelector('.wptb-table-setup table.wptb-preview-table');\n const cells = Array.from(table.querySelectorAll('td'));\n\n cells.map(removeBlocker);\n })\n }\n}\n","var WPTB_Initializer = function () {\n\n const MIN_COLUMNS = 1,\n MIN_ROWS = 1,\n MAX_COLUMNS = 30,\n MAX_ROWS = 30;\n\n var tableGenerator = document.body;\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\n columnsInput = document.getElementById('wptb-columns-number'),\n rowsInput = document.getElementById('wptb-rows-number');\n \n // columnsDecrementButton.onclick = function () {\n // if (columnsInput.value > MIN_COLUMNS) {\n // columnsInput.value--;\n // }\n // };\n //\n // columnsIncrementButton.onclick = function () {\n // if (columnsInput.value < MAX_COLUMNS) {\n // columnsInput.value++;\n // }\n // };\n //\n // rowsDecrementButton.onclick = function () {\n // if (rowsInput.value > MIN_ROWS) {\n // rowsInput.value--;\n // }\n // };\n //\n // rowsIncrementButton.onclick = function () {\n // if (rowsInput.value < MAX_ROWS) {\n // rowsInput.value++;\n // }\n // };\n\n // document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\n // var columns = document.getElementById('wptb-columns-number').value,\n // rows = document.getElementById('wptb-rows-number').value;\n //\n // //wptbTableStateSaveManager.tableStateClear();\n //\n // WPTB_Table(columns, rows);\n //\n // let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n // wptbTableStateSaveManager.tableStateSet();\n // }\n\n // register and setup section buttons\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group' , 'table_responsive_menu', 'manage_cells']);\n WPTB_Helper.setupSectionButtons();\n\n // activate elements section for startup\n WPTB_Helper.activateSection('elements');\n\n // side bar toggle setup\n WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');\n\n // setup panel sections that have the ability to be toggled on/off\n WPTB_Helper.setupPanelToggleButtons();\n\n // setup responsive menu both at left and builder panel\n new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');\n\n // get builder section from url parameter for easy switch at page load\n WPTB_Helper.getSectionFromUrl();\n\n // automatically show element controls when dropped to table\n WPTB_Helper.showControlsOnElementMount();\n\n // show elements list menu on left panel on removing elements from table\n WPTB_Helper.showElementsListOnRemove();\n\n // block tinyMCE from activation at manage cells menu\n WPTB_Helper.blockTinyMCEManageCells();\n // initialize header toolbox\n new WPTB_HeaderToolbox('.wptb-plugin-header-toolbar').init();\n\n // redirect active menu to elements after closing manage cells menu\n document.addEventListener('wp-table-builder/table-edit-mode/closed', () => {\n WPTB_Helper.activateSection('elements');\n })\n};\n","var WPTB_LeftPanel = function () {\r\n\r\n let table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n\r\n for (var i = 0; i < wptbElementButtons.length; i++) {\r\n wptbElementButtons[i].ondragstart = function (e) {\r\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\r\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\r\n }\r\n };\r\n \r\n if( table ) {\r\n let wptbTablesEditModeCloseButton = document.getElementsByClassName( 'wptb-table-edit-mode-close' );\r\n for ( let i = 0; i < wptbTablesEditModeCloseButton.length; i++ ) {\r\n wptbTablesEditModeCloseButton[i].onclick = WPTB_Helper.toggleTableEditMode;\r\n }\r\n };\r\n\r\n // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.onclick = function( e ) {\r\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \r\n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\r\n WPTB_Helper.clickOnFreeSpace();\r\n } \r\n };\r\n \r\n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\r\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\r\n wptbHeader.onclick = function() {\r\n WPTB_Helper.clickOnFreeSpace();\r\n };\r\n};","var MultipleSelect = function () {\n\n\tvar selectedCells = [],\n\t\tmultipleCellMode = false;\n\n\tthis.activateMultipleSelectMode = function () {\n\t\tselectedCells = [];\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n\t\tfor (var i = 0; i < tds.length; i++) {\n\t\t\ttds[i].classList.remove('wptb-highlighted');\n\t\t}\n\t\tmultipleCellMode = true;\n\t}\n\n\tthis.deactivateMultipleSelectMode = function () {\n\t\tmultipleCellMode = false;\n\t}\n\n\tthis.isActivated = function () {\n\t\treturn multipleCellMode;\n\t}\n\n\tthis.pushSelectedCell = function (cell) {\n\t\tif (!multipleCellMode) {\n\t\t\treturn;\n\t\t}\n\t\tselectedCells.push(cell);\n\t\tcell.classList.add('wptb-highlighted');\n\t};\n\n\tthis.selectedCells = function () {\n\t\treturn selectedCells;\n\t}\n\n\tthis.flushSelectedCells = function () {\n\t\tselectedCells = [];\n\t}\n\n\tthis.getFirst = function () {\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\n\t\t\t\tfirst = selectedCells[i];\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn first;\n\t}\n\n\tthis.getLast = function () {\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\n\t\t\t\tlast = selectedCells[i];\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn last;\n\t}\n\n\tthis.removeAllButFirst = function () {\n\t\tvar td = this.getFirst();\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\n\t\t}\n\t}\n\n\treturn this;\n\n};","var WPTB_Parser = function ( code ) {\n let div = document.createElement( 'div' );\n div.innerHTML = code;\n \n let table = div.children[0];\n let columnTitleMobile = [...table.querySelectorAll( '.wptb-column-title-mobile-container' )];\n \n for( let i = 0; i < columnTitleMobile.length; i++ ) {\n let parent = columnTitleMobile[i].parentNode;\n parent.removeChild( columnTitleMobile[i] );\n }\n \n let tds = table.querySelectorAll( 'td' );\n for ( let i = 0; i < tds.length; i++ ) {\n tds[i].classList.add( 'wptb-droppable' );\n tds[i].classList.remove( 'wptb-column-title-mobile-not-elements' );\n }\n \n return table;\n}","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function () {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }());\n}","const WPTB_RecalculateIndexes = function (table) {\n let trs = table.getElementsByTagName( 'tr' ),\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\n\n for ( let i = 0; i < trs.length; i++ ) {\n tds = trs[i].getElementsByTagName( 'td' );\n\n if ( tdsArr[i] == undefined ) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for ( let j = 0; j < tds.length; j++ ) {\n if ( tdsArr[i][j] != undefined ) {\n for ( let y = 0; y < 100; y++ ) {\n if ( tdsArr[i][jMainIter] != undefined ) {\n jMainIter++;\n continue;\n }\n tdsArr[i][jMainIter] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n break;\n }\n } else {\n tdsArr[i][j] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n }\n tds[j].dataset.yIndex = i;\n\n if ( tds[j].colSpan > 1 ) {\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\n jMainIter++;\n tdsArr[i][jMainIter] = 'tdDummy';\n }\n }\n\n if ( tds[j].rowSpan > 1 ) {\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\n if ( tdsArr[i + x] == undefined ) {\n tdsArr[i + x] = [];\n }\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\n }\n }\n }\n jMainIter++;\n }\n\n if ( tds.length > maxCols ) {\n maxCols = tds.length;\n }\n\n if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n table.columns = maxCols;\n table.maxCols = maxColsFull;\n}\n","/**\n * Responsive menu and options class.\n *\n * This class will be called and instanced at table builder menu to add it the responsive menu and its controls.\n *\n * @param {string} sectionName section name\n * @param {string} responsiveWrapperId id for mount point\n * @param {string} mainContainerQuery query to find parent container for responsive menu\n * @throws {Error} will throw an error if mainContainerQuery failed to find any element\n * @constructor\n */\n// eslint-disable-next-line no-unused-vars\nfunction WptbResponsive(sectionName, responsiveWrapperId, mainContainerQuery) {\n\tthis.sectionName = sectionName;\n\tthis.responsiveWrapperId = responsiveWrapperId;\n\tthis.responsiveTable = null;\n\tthis.loaded = false;\n\n\t/**\n\t * Add responsive container to dom.\n\t */\n\tthis.addContainerToDom = () => {\n\t\tconst responsiveContainer = document.querySelector(`#${this.responsiveWrapperId}`);\n\t\tif (!responsiveContainer) {\n\t\t\tconst mainContainer = document.querySelector(mainContainerQuery);\n\n\t\t\t// parent container not found, throw error\n\t\t\tif (!mainContainer) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`[WPTB_Responsive]: no parent container is found with the given query of [${mainContainerQuery}]`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst range = document.createRange();\n\t\t\trange.setStart(mainContainer, 0);\n\n\t\t\tconst responsiveElement = range.createContextualFragment(\n\t\t\t\t`<div class=\"wptb-responsive\" id=\"${this.responsiveWrapperId}\">responsive element</div>`\n\t\t\t);\n\t\t\tmainContainer.appendChild(responsiveElement);\n\t\t\tthis.loaded = true;\n\t\t}\n\n\t\tthis.responsiveTable = document.querySelector(`#${this.responsiveWrapperId}`);\n\t};\n\n\t/**\n\t * Load and make necessary mount preparations for component.\n\t */\n\tthis.load = () => {\n\t\tif (!this.loaded) {\n\t\t\tthis.addContainerToDom();\n\n\t\t\tWPTB_Helper.elementStartScript(this.responsiveTable, 'table_responsive_menu');\n\t\t\tWPTB_Helper.elementOptionsSet('table_responsive_menu', this.responsiveTable);\n\t\t\tWPTB_ControlsManager.callControlScript('ResponsiveTable', this.responsiveWrapperId);\n\t\t}\n\t};\n\n\t/**\n\t * Startup hook for the component.\n\t */\n\tthis.startUp = () => {\n\t\t// event listener for section change events\n\t\tdocument.addEventListener('wptbSectionChanged', (e) => {\n\t\t\tconst tablePreview = document.querySelector('.wptb-preview-table');\n\n\t\t\t// check if activated section is related to responsive and there is a main table already in the view\n\t\t\tif (e.detail === this.sectionName && tablePreview) {\n\t\t\t\tthis.load();\n\t\t\t}\n\t\t});\n\n\t\t// event listener for table ready signal\n\t\tdocument.addEventListener('wptb:table:generated', () => {\n\t\t\t// check current section to be sure that responsive menu is the active one before calling load related scripts\n\t\t\tif (WPTB_Helper.getCurrentSection() === 'table_responsive_menu') {\n\t\t\t\tthis.load();\n\t\t\t}\n\t\t});\n\t};\n\n\tthis.startUp();\n}\n","var WPTB_Settings = function () {\n var elems = document.getElementsByClassName('wptb-element');\n\n for ( var i = 0; i < elems.length; i++ ) {\n elems[i].ondragstart = function ( event ) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\n\n // set drag relative helper field for future use\n WPTB_Helper.setDragRelativeType(this.dataset.wptbRelativeElements || '');\n }\n elems[i].ondragend = function () {\n WPTB_Helper.elementDragEndClear();\n }\n };\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n }\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n wptbRedo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n \n }\n }\n \n let shortcodePopupWindow = document.getElementsByClassName( 'wptb-popup-window-modal' )[0];\n document.getElementsByClassName( 'wptb-embed-btn' )[0].onclick = function () {\n if( ! this.classList.contains( 'wptb-button-disable' ) ) {\n shortcodePopupWindow.classList.add( 'wptb-popup-show' );\n }\n }\n \n window.onbeforeunload = function(e) {\n let wptbSaveDisabled = document.getElementsByClassName( 'wptb-save-disabled' );\n if( wptbSaveDisabled.length == 0 ) {\n return true;\n } else {\n return null;\n }\n };\n \n \n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( event ) {\n if( this.classList.contains( 'wptb-button-disable' ) ) {\n return;\n } \n \n let previewId = Math.floor( Math.random() * 10000 );\n \n var newHref = new URL( event.target.href );\n newHref.searchParams.set( 'preview_id', previewId );\n event.target.href = newHref.toString();\n WPTB_Helper.saveTable( event, false, previewId );\n }\n\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\n if( ! this.classList.contains( 'wptb-save-disabled' ) ) {\n WPTB_Helper.saveTable( event );\n }\n }\n\n let tableTitleField = document.querySelector( '#wptb-setup-name' );\n if( tableTitleField ) {\n tableTitleField.onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n};\n","const WPTB_SortableTable = function (table) {\n\tthis.table = table;\n\tthis.topRow = table.rows.length ? table.rows[0] : null;\n\n\t/**\n\t * sets the table to sort mode\n\t * @param type\n\t * @param active\n\t */\n\tthis.sortModeSwitcher = function (type, active) {\n\t\tif (type === 'vertical') {\n\t\t\tthis.table.removeEventListener('click', this.sortableTableVerticalStart, false);\n\n\t\t\tif (active) {\n\t\t\t\tthis.sortModeSwitcher('horizontal', false);\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('vertical', true);\n\t\t\t\tthis.table.addEventListener('click', this.sortableTableVerticalStart, false);\n\t\t\t\tthis.table.dataset.wptbSortableTableVertical = '1';\n\t\t\t} else {\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('vertical', false);\n\t\t\t\tdelete this.table.dataset.wptbSortableTableVertical;\n\t\t\t}\n\t\t} else if (type === 'horizontal') {\n\t\t\tthis.table.removeEventListener('click', this.sortableTableHorizontalStart, false);\n\n\t\t\tif (active) {\n\t\t\t\tthis.sortModeSwitcher('vertical', false);\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('horizontal', true);\n\t\t\t\tthis.table.addEventListener('click', this.sortableTableHorizontalStart, false);\n\t\t\t\tthis.table.dataset.wptbSortableTableHorizontal = '1';\n\t\t\t} else {\n\t\t\t\tthis.sortingCellMouseMoveSwitcher('horizontal', false);\n\t\t\t\tdelete this.table.dataset.wptbSortableTableHorizontal;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * checks whether the table should be in the sort state\n\t * and connects the necessary handlers\n\t */\n\tthis.sortableTableInitialization = function () {\n\t\tif (this.table.dataset.wptbSortableTableVertical && this.table.dataset.wptbSortableTableVertical === '1') {\n\t\t\tthis.sortModeSwitcher('vertical', true);\n\t\t} else if (\n\t\t\tthis.table.dataset.wptbSortableTableHorizontal &&\n\t\t\tthis.table.dataset.wptbSortableTableHorizontal === '1'\n\t\t) {\n\t\t\tthis.sortModeSwitcher('horizontal', true);\n\t\t}\n\t};\n\n\tthis.sortingCellMouseMoveSwitcher = function (type, active) {\n\t\tif (type === 'vertical') {\n\t\t\tlet tds = this.topRow ? this.topRow.querySelectorAll('td') : null;\n\t\t\ttds = [...tds];\n\t\t\ttds.map((td) => {\n\t\t\t\ttd.removeEventListener('mousemove', sortingCellMouseMoveVertical, false);\n\t\t\t\ttd.removeEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\tif (active) {\n\t\t\t\t\ttd.addEventListener('mousemove', sortingCellMouseMoveVertical, false);\n\t\t\t\t\ttd.addEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (type === 'horizontal') {\n\t\t\tlet tds = this.table.querySelectorAll('[data-x-index=\"0\"]');\n\t\t\ttds = [...tds];\n\t\t\ttds.map((td) => {\n\t\t\t\ttd.removeEventListener('mousemove', sortingCellMouseMoveHorizontal, false);\n\t\t\t\ttd.removeEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\tif (active) {\n\t\t\t\t\ttd.addEventListener('mousemove', sortingCellMouseMoveHorizontal, false);\n\t\t\t\t\ttd.addEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tfunction sortingCellMouseMov(e, type, element) {\n\t\tif (e.target.tagName === 'TD') {\n\t\t\tconst x = e.offsetX == undefined ? e.layerX : e.offsetX;\n\t\t\tconst y = e.offsetY == undefined ? e.layerY : e.offsetY;\n\t\t\tlet xMatch = false;\n\t\t\tif ((type === 'vertical' && e.target.clientWidth - x <= 35) || (type === 'horizontal' && x <= 35)) {\n\t\t\t\txMatch = true;\n\t\t\t}\n\t\t\tif (xMatch && (e.target.clientHeight - 35) / 2 < y && (e.target.clientHeight + 35) / 2 > y) {\n\t\t\t\telement.classList.add('sortable-hover');\n\t\t\t} else {\n\t\t\t\telement.classList.remove('sortable-hover');\n\t\t\t}\n\t\t} else {\n\t\t\telement.classList.remove('sortable-hover');\n\t\t}\n\t}\n\n\tfunction sortingCellMouseMoveVertical(e) {\n\t\tsortingCellMouseMov(e, 'vertical', this);\n\t}\n\n\tfunction sortingCellMouseMoveHorizontal(e) {\n\t\tsortingCellMouseMov(e, 'horizontal', this);\n\t}\n\n\tfunction tdMouseLeave() {\n\t\tthis.classList.remove('sortable-hover');\n\t}\n\n\t/**\n\t * function for sorting the table vertically by the numeric content of cells\n\t *\n\t * @param e\n\t * @param table\n\t */\n\tfunction sortableTable(e, table, type) {\n\t\tif (\n\t\t\te.target &&\n\t\t\te.target.tagName === 'TD' &&\n\t\t\t!table.classList.contains('wptb-plugin-responsive-base') &&\n\t\t\t!table.parentNode.classList.contains('wptb-preview-table-manage-cells')\n\t\t) {\n\t\t\tlet tableWasSorted = false;\n\t\t\tif (type === 'vertical' && e.target.dataset.yIndex === '0') {\n\t\t\t\tlet tds = table.querySelectorAll(`[data-x-index=\"${e.target.dataset.xIndex}\"]`);\n\t\t\t\ttds = [...tds];\n\n\t\t\t\t// preparing table for sorting\n\t\t\t\tlet rowspan;\n\t\t\t\tlet rowNum;\n\t\t\t\ttds.map((td) => {\n\t\t\t\t\tif (!(rowspan = parseInt(td.rowSpan, 10))) {\n\t\t\t\t\t\trowspan = 1;\n\t\t\t\t\t}\n\t\t\t\t\trowNum = td.dataset.yIndex;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableHorizontally(rowNum, table);\n\t\t\t\t\trowNum += rowspan;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableHorizontally(rowNum, table);\n\t\t\t\t});\n\n\t\t\t\tconst rowsValuesArr = [];\n\t\t\t\tlet rowsTdFirst;\n\t\t\t\tlet tdYCoordsRowSpanPrevious = 0;\n\t\t\t\tfor (let i = 0; i < tds.length; i++) {\n\t\t\t\t\tconst tdsChanged = changeSortingTdsCollection(\n\t\t\t\t\t\te,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\ttds,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\ttdYCoordsRowSpanPrevious,\n\t\t\t\t\t\t'vertical'\n\t\t\t\t\t);\n\t\t\t\t\tif (tdsChanged && tdsChanged.hasOwnProperty('i')) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\ti = tdsChanged.i;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (tdsChanged) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst td = tds[i];\n\n\t\t\t\t\tlet tdRowspan = parseInt(td.rowSpan, 10);\n\t\t\t\t\tif (!tdRowspan) tdRowspan = 1;\n\n\t\t\t\t\ttdYCoordsRowSpanPrevious = parseInt(td.dataset.yIndex, 10) + tdRowspan;\n\n\t\t\t\t\tconst textElementsValues = textElementsValuesGet(td);\n\n\t\t\t\t\tconst rowsTd = [];\n\t\t\t\t\tfor (let j = 0; j < tdRowspan; j++) {\n\t\t\t\t\t\trowsTd.push(table.rows[parseInt(td.dataset.yIndex, 10) + j]);\n\t\t\t\t\t}\n\t\t\t\t\tif (td.dataset.yIndex > 0) {\n\t\t\t\t\t\trowsValuesArr.push({\n\t\t\t\t\t\t\trowsTd,\n\t\t\t\t\t\t\tvalue: textElementsValues,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\trowsTdFirst = rowsTd;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst orderBy = setSortedAscDataAttr(e, 'sortedVertical');\n\t\t\t\tif (!orderBy) return;\n\n\t\t\t\tif (rowsValuesArr.length) rowsValuesArr.sort((prev, next) => sortOrder(orderBy, prev, next));\n\n\t\t\t\trowsValuesArr.unshift({ rowsTd: rowsTdFirst });\n\n\t\t\t\tconst tBody = table.querySelector('tbody');\n\t\t\t\ttBody.innerHTML = '';\n\n\t\t\t\trowsValuesArr.map((rowsValObj) => {\n\t\t\t\t\trowsValObj.rowsTd.map((row) => {\n\t\t\t\t\t\ttBody.appendChild(row);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tWPTB_RecalculateIndexes(table);\n\n\t\t\t\tWPTB_CutGlueTable.glueTableHorizontally(table);\n\n\t\t\t\ttableWasSorted = true;\n\t\t\t} else if (type === 'horizontal' && e.target.dataset.xIndex === '0') {\n\t\t\t\tlet tds = table.querySelectorAll(`[data-y-index=\"${e.target.dataset.yIndex}\"]`);\n\t\t\t\ttds = [...tds];\n\n\t\t\t\t// preparing table for sorting\n\t\t\t\tlet colspan;\n\t\t\t\tlet colNum;\n\t\t\t\ttds.map((td) => {\n\t\t\t\t\tif (!(colspan = parseInt(td.colSpan, 10))) {\n\t\t\t\t\t\tcolspan = 1;\n\t\t\t\t\t}\n\t\t\t\t\tcolNum = td.dataset.xIndex;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableVertically(colNum, table);\n\t\t\t\t\tcolNum += colspan;\n\t\t\t\t\tWPTB_CutGlueTable.cutTableVertically(colNum, table);\n\t\t\t\t});\n\n\t\t\t\tconst columnsValuesArr = [];\n\t\t\t\tlet columnsTdFirst;\n\n\t\t\t\tlet tdXCoordsColSpanPrevious = 0;\n\t\t\t\tfor (let i = 0; i < tds.length; i++) {\n\t\t\t\t\tconst tdsChanged = changeSortingTdsCollection(\n\t\t\t\t\t\te,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\ttds,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\ttdXCoordsColSpanPrevious,\n\t\t\t\t\t\t'horizontal'\n\t\t\t\t\t);\n\t\t\t\t\tif (tdsChanged && tdsChanged.hasOwnProperty('i')) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\ti = tdsChanged.i;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (tdsChanged) {\n\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst td = tds[i];\n\t\t\t\t\tlet tdColspan = parseInt(td.colSpan, 10);\n\t\t\t\t\tif (!tdColspan) tdColspan = 1;\n\n\t\t\t\t\ttdXCoordsColSpanPrevious = parseInt(td.dataset.xIndex, 10) + tdColspan;\n\n\t\t\t\t\tconst textElementsValues = textElementsValuesGet(td);\n\t\t\t\t\tconst columnsTd = [];\n\t\t\t\t\tfor (let j = 0; j < tdColspan; j++) {\n\t\t\t\t\t\tconst tdsColumn = [\n\t\t\t\t\t\t\t...table.querySelectorAll(`[data-x-index=\"${parseInt(td.dataset.xIndex, 10) + j}\"]`),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tcolumnsTd.push(tdsColumn);\n\t\t\t\t\t}\n\t\t\t\t\tif (td.dataset.xIndex > 0) {\n\t\t\t\t\t\tcolumnsValuesArr.push({\n\t\t\t\t\t\t\tcolumnsTd,\n\t\t\t\t\t\t\tvalue: textElementsValues,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnsTdFirst = columnsTd;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst orderBy = setSortedAscDataAttr(e, 'sortedHorizontal');\n\t\t\t\tif (!orderBy) return;\n\n\t\t\t\tif (columnsValuesArr.length) columnsValuesArr.sort((prev, next) => sortOrder(orderBy, prev, next));\n\n\t\t\t\tcolumnsValuesArr.unshift({ columnsTd: columnsTdFirst });\n\n\t\t\t\tfor (let i = 0; i < table.rows.length; i++) {\n\t\t\t\t\ttable.rows[i].innerHTML = '';\n\t\t\t\t}\n\n\t\t\t\tcolumnsValuesArr.map((columnsValObj) => {\n\t\t\t\t\tcolumnsValObj.columnsTd.map((tdsColumn) => {\n\t\t\t\t\t\ttdsColumn.map((td) => {\n\t\t\t\t\t\t\ttable.rows[td.dataset.yIndex].appendChild(td);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tWPTB_RecalculateIndexes(table);\n\n\t\t\t\tWPTB_CutGlueTable.glueTableVertically(table);\n\n\t\t\t\ttableWasSorted = true;\n\t\t\t}\n\n\t\t\tif (tableWasSorted) {\n\t\t\t\tremoveCellsAttrAfterDivision(table);\n\n\t\t\t\tif (table.hasOwnProperty('tableSM')) {\n\t\t\t\t\tconst tableSM = table.tableSM();\n\t\t\t\t\tnew tableSM().tableStateSet();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Function that sets the data-attribute with the number of the row or column\n\t * that the table was sorted by. Returns the number of a row or column\n\t *\n\t * @param e\n\t * @param dataAttr\n\t * @returns {null|boolean}\n\t */\n\tfunction setSortedAscDataAttr(e, dataAttr) {\n\t\tif (e.currentTarget && e.currentTarget.classList.contains('wptb-preview-table')) {\n\t\t\tif (!e.target.dataset[dataAttr] || e.target.dataset[dataAttr] === 'ask') {\n\t\t\t\te.target.dataset[dataAttr] = 'desk';\n\t\t\t} else {\n\t\t\t\te.target.dataset[dataAttr] = 'ask';\n\t\t\t}\n\n\t\t\treturn e.target.dataset[dataAttr];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * defines the sorting order\n\t *\n\t * @param orderBy\n\t * @param prev\n\t * @param next\n\t * @returns {number}\n\t */\n\tfunction sortOrder(orderBy = 'ask', prev, next) {\n\t\tlet prevValue = prev.value;\n\t\tlet nextValue = next.value;\n\t\tif (parseInt(prevValue) && parseInt(nextValue)) {\n\t\t\tprevValue = parseInt(prevValue);\n\t\t\tnextValue = parseInt(nextValue);\n\t\t}\n\n\t\tif (orderBy === 'ask') {\n\t\t\tif (prevValue < nextValue) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (prevValue === nextValue) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn 1;\n\t\t}\n\t\tif (prevValue < nextValue) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (prevValue === nextValue) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * return cell text elements values\n\t *\n\t * @param cell {HTMLElement}\n\t * @returns {string}\n\t */\n\tfunction textElementsValuesGet(cell) {\n\t\tlet textElements = cell.querySelectorAll('.wptb-text-container');\n\t\ttextElements = [...textElements];\n\t\tlet value = '';\n\t\tfor (let j = 0; j < textElements.length; j++) {\n\t\t\tconst p = textElements[j].querySelector('p');\n\t\t\tvalue += p.innerText;\n\t\t\tif (j !== textElements.length - 1) value += ' ';\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * adds cells to the collection of cells in the row or column that the table is sorted by.\n\t * These added cells are not originally were added in the collection,\n\t * because they are combined with cells from higher rows or left-side columns\n\t *\n\t * @param table\n\t * @param tds\n\t * @param i\n\t * @param tdIndexSpanPrev\n\t * @returns {{tds: *}|boolean|{tds: *, i: *}}\n\t */\n\tfunction changeSortingTdsCollection(e, table, tds, i, tdIndexSpanPrev, type) {\n\t\tconst td = tds[i];\n\t\tlet tdsCollectionChanged = false;\n\t\tlet collectionTds;\n\t\tlet collectionTdsJSpan;\n\t\tlet collectionTdsJSpanProperty;\n\t\tlet indexName;\n\t\tlet indexNameCamelCase;\n\t\tlet indexNamePerpendicularCamelCase;\n\t\tlet tdSpanProperty;\n\t\t// max rows or columns column\n\t\tlet tableGroupCount;\n\n\t\tif (type === 'vertical') {\n\t\t\tcollectionTdsJSpanProperty = 'colSpan';\n\t\t\tindexName = 'data-y-index';\n\t\t\tindexNameCamelCase = 'yIndex';\n\t\t\tindexNamePerpendicularCamelCase = 'xIndex';\n\t\t\ttdSpanProperty = 'rowSpan';\n\t\t\ttableGroupCount = table.rows.length;\n\t\t} else if (type === 'horizontal') {\n\t\t\tcollectionTdsJSpanProperty = 'rowSpan';\n\t\t\tindexName = 'data-x-index';\n\t\t\tindexNameCamelCase = 'xIndex';\n\t\t\tindexNamePerpendicularCamelCase = 'yIndex';\n\t\t\ttdSpanProperty = 'colSpan';\n\t\t\ttableGroupCount = table.maxCols;\n\t\t}\n\n\t\tif (td.dataset[indexNameCamelCase] - tdIndexSpanPrev > 0) {\n\t\t\tcollectionTds = table.querySelectorAll(`[${indexName}=\"${tdIndexSpanPrev}\"]`);\n\n\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\tif (\n\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >=\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t) {\n\t\t\t\t\ttds.splice(i, 0, collectionTds[j]);\n\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\ti--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (tdsCollectionChanged) return { tds, i };\n\n\t\tlet tdSpan = parseInt(td[tdSpanProperty], 10);\n\t\tif (!tdSpan) tdSpan = 1;\n\t\tif (i == tds.length - 1 && parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan < tableGroupCount) {\n\t\t\tcollectionTds = table.querySelectorAll(\n\t\t\t\t`[${indexName}=\"${parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan}\"]`\n\t\t\t);\n\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\tif (\n\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >=\n\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t) {\n\t\t\t\t\ttds.push(collectionTds[j]);\n\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (tdsCollectionChanged) return { tds };\n\t\treturn false;\n\t}\n\n\t/**\n\t * remove cells attributes which were used for division table\n\t *\n\t * @param table\n\t */\n\tfunction removeCellsAttrAfterDivision(table) {\n\t\tconst tdsAll = [...table.getElementsByTagName('td')];\n\t\tfor (let i = 0; i < tdsAll.length; i++) {\n\t\t\tif (tdsAll[i].hasAttribute('data-same-cell-before-division')) {\n\t\t\t\ttdsAll[i].removeAttribute('data-same-cell-before-division');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * function for run sorting table vertically\n\t *\n\t * @param e\n\t */\n\tthis.sortableTableVerticalStart = function (e) {\n\t\tsortableTable(e, table, 'vertical');\n\t};\n\n\t/**\n\t * function for run sorting table horizontally\n\t *\n\t * @param e\n\t */\n\tthis.sortableTableHorizontalStart = function (e) {\n\t\tsortableTable(e, table, 'horizontal');\n\t};\n};\n","var WPTB_Stringifier = function ( codeMain ) {\n if ( codeMain ) {\n let code = codeMain.cloneNode( true );\n code.dataset.tableColumns = codeMain.columns;\n code.style.width = null;\n code.style.minWidth = null;\n code.style.maxWidth = null;\n\n let tds = code.getElementsByTagName( 'td' );\n if ( tds.length > 0 ) {\n for ( let i = 0; i < tds.length; i++ ) {\n\n // tds[i].removeAttribute( 'data-x-index' );\n // tds[i].removeAttribute( 'data-y-index' );\n tds[i].removeAttribute( 'draggable' );\n tds[i].classList.remove( 'wptb-droppable' );\n let infArr = tds[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if(infArr) tds[i].classList.remove(infArr[0]);\n let innerElements = tds[i].getElementsByClassName( 'wptb-ph-element' );\n\n if ( innerElements.length > 0 ) {\n for ( let j = 0; j < innerElements.length; j++ ) {\n\n let mceContentBodys = innerElements[j].querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n\n let dataMceStyle = innerElements[j].querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n\n let contentEditable = innerElements[j].querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n\n let spellCheck = innerElements[j].querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n\n let mceIds = innerElements[j].querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n\n let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );\n let wptbActionsLength = wptbActions.length;\n while ( wptbActionsLength > 0 ) {\n if( wptbActions[0] && wptbActions[0].parentNode ) {\n wptbActions[0].parentNode.removeChild( wptbActions[0] );\n wptbActionsLength--;\n } else {\n break;\n }\n\n }\n\n let dataMceBogus = innerElements[j].querySelectorAll( '[data-mce-bogus]' );\n if( dataMceBogus.length > 0 ) {\n dataMceBogus = [...dataMceBogus];\n for( let k = 0; k < dataMceBogus.length; k++ ) {\n if( dataMceBogus[k] && dataMceBogus[k].parentNode ) {\n dataMceBogus[k].parentNode.removeChild( dataMceBogus[k] );\n }\n }\n }\n }\n }\n\n // TODO dataTitleColumnSet\n // if( tds[i].hasAttribute( 'data-wptb-title-column' ) ) {\n // let columnNameDivContainer = document.createElement( 'div' ),\n // columnNameDiv = document.createElement( 'div' );\n // columnNameDivContainer.classList.add( 'wptb-column-title-mobile-container' );\n // columnNameDiv.classList.add( 'wptb-column-title-mobile' );\n // columnNameDiv.dataset.wptbTitleColumn = tds[i].dataset.wptbTitleColumn;\n // columnNameDiv.setAttribute( 'style', 'font-size:' + tds[i].dataset.wptbTitleColumnFontSize + '; \\n\\\n // color:' + tds[i].dataset.wptbTitleColumnColor + '; background-color:' + tds[i].dataset.wptbTitleBackgroundColor + '; text-align:' + tds[i].dataset.wptbTitleAlign + ';' );\n // columnNameDiv.style.padding = tds[i].style.padding;\n // if( tds[i].children.length == 0 ) {\n // tds[i].classList.add( 'wptb-column-title-mobile-not-elements' );\n // }\n // columnNameDivContainer.appendChild( columnNameDiv );\n // tds[i].insertBefore( columnNameDivContainer, tds[i].firstChild );\n // }\n }\n }\n\n return code;\n }\n}\n","var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\n\n /* The members of the class */\n var settings = document.getElementsByClassName('wptb-settings-items'),\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\n table, row, cell,\n maxAmountOfCells,\n maxAmountOfRows;\n\n //HERE ARE THE PRIVATE FUNCTIONS\n /*\n * This function toggles buttons visibility in cell edit mode\n * (according to the amount of currently selected cells), and\n * highlights visually the clicked cell if it is not highlighted, or\n * removes highlight if clicked cell is already highlighted.\n * It too toggles the bits of our abstract representation.\n * @param Event this is the event instance of the click performed over a cell.\n */\n var mark = function ( event ) {\n let thisElem = event.currentTarget;\n let rs = thisElem.rowSpan,\n cs = thisElem.colSpan,\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n position = getCoords(thisElem),\n row = position[0],\n column = position[1];\n if ( ! document.select.isActivated() ) {\n return;\n }\n if (thisElem.className.match(/wptb-highlighted/)) {\n thisElem.classList.remove('wptb-highlighted');\n for (var i = 0; i < rs; i++) {\n for (var j = 0; j < cs; j++) {\n array[row + i][column + j] = 0;\n }\n }\n } else {\n thisElem.classList.add('wptb-highlighted');\n for (var i = 0; i < rs; i++) {\n for (var j = 0; j < cs; j++) {\n array[row + i][column + j] = 1;\n }\n }\n }\n\n let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\n markedCells = cellHighlighted.length;\n if (markedCells === 0) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n } else if (markedCells === 1) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.add('visible');\n singleCells[i].removeAttribute('disabled');\n }\n\n cellHighlighted = cellHighlighted[0];\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\n\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\n\n const controlElemIds = ['cellWidth', 'cellHeight'];\n\n controlElemIds.map(s => {\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\n if(s === 'cellWidth' || s === 'cellHeight') {\n let sizeName = '',\n getSizeFunctionName = '';\n if(s === 'cellWidth') {\n sizeName = 'width';\n getSizeFunctionName = 'getColumnWidth';\n } else if(s === 'cellHeight') {\n sizeName = 'height';\n getSizeFunctionName = 'getRowHeight';\n }\n let size = cellHighlighted.style[sizeName],\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\n cellSizeInputs = [...cellSizeInputs];\n\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\n cellSizeInputs.map(s => {\n s.value = size;\n });\n\n cellSizeFixedInput.checked = false;\n } else {\n cellSizeInputs.map(s => {\n if( size ) {\n s.value = parseFloat( size, 10 );\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\n }\n });\n\n cellSizeFixedInput.checked = true;\n }\n }\n });\n\n cellSettings.classList.add( 'visible' );\n } else {\n for (var i = 0; i < multipleCells.length; i++) {\n if (table.isSquare(array)) {\n multipleCells[i].classList.add('visible');\n multipleCells[i].removeAttribute('disabled');\n } else {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n }\n\n /**\n * empty cell setting\n */\n // let emptySetting = document.\n const infArr = thisElem.className.match(/wptb-element-table_cell_setting-((.+-)\\d+)/i);\n if (infArr && infArr.length > 1) {\n const controlKey = 'emptyCell';\n const settingId = `wptb-el-table_cell_setting-${infArr[1]}-${controlKey}`;\n const settingElem = document.getElementById(settingId);\n if (settingElem) {\n settingElem.querySelector('input[type=\"checkbox\"]').checked = thisElem.classList.contains('wptb-empty')\n }\n }\n\n\n let details = {countMarkedCells:markedCells};\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/cell/mark', thisElem, details);\n };\n\n /*\n * This function fills an array with 1's according to the actual design\n * of HTML table.\n * @returns an array of arrays containing an abstract representation\n * of HTML table.\n * @deprecated\n * */\n\n var realTimeArray = function () {\n var carried = [], tds, cols, matriz = [];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n cols = [];\n\n var tds = table.rows[i].getElementsByTagName('td');\n\n for (items = 0; items < tds.length; items++) {\n\n for (var k = 0; k < tds[items].colSpan; k++) {\n cols.push(1);\n }\n\n if (tds[items].rowSpan > 1) {\n for (var k = 0; k < tds[items].colSpan; k++) {\n carried[items + k] = {\n justAssigned: true,\n amount: tds[items].rowSpan\n };\n }\n }\n }\n\n for (var k = 0; k < maxAmountOfCells; k++) {\n if (typeof carried[k] == 'object' && carried[k].amount > 0) {\n carried[k].amount--;\n if (carried[k].justAssigned) {\n carried[k].justAssigned = false;\n } else {\n cols.push(1);\n }\n }\n }\n\n matriz.push(cols);\n\n }\n return matriz;\n };\n\n /*\n * This function gets the number and position of cell spaces in current row that are occuped\n * by upper rowspanned cells.\n * @param number the number of row where we wish to calculate the carried rowspans up to.\n * @return an array with the remaining rowspans in each column.\n */\n var carriedRowspans = function (row) {\n var carried = [], tds, cols;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n if (row == -1) {\n return carried;\n }\n\n for (var i = 0; i <= row; i++) {\n cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (carried[xPosition]) {\n carried[xPosition]--;\n } else {\n celda = cellsBuffer[cellPointer++];\n if (celda.rowSpan > 1) {\n for (k = 0; k < celda.colSpan; k++) {\n carried[xPosition + k] = celda.rowSpan - 1;\n }\n stepsToMove = celda.colSpan;\n } else if (celda.colSpan > 1) {\n stepsToMove = celda.colSpan;\n }\n }\n }\n\n }\n return carried;\n };\n\n /*\n * A helpful function for showing\n * the abstract table in console.\n * @param Array our abstract table.\n */\n var drawTable = function (a) {\n var string = 'DRAWING TABLE:\\n';\n for (var i = 0; i < a.length; i++) {\n\n for (var j = 0; j < a[i].length; j++) {\n string += ' ' + a[i][j];\n }\n string += '\\n';\n }\n table.isSquare(a);\n };\n\n /*\n * It resets all the bits of our abstract representation\n * to 0 and removes the highlighting class of all cells.\n */\n\n var undoSelect = function () {\n let noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n tds = table.getElementsByClassName('wptb-highlighted');\n while (tds.length) {\n tds[0].classList.remove('wptb-highlighted');\n }\n cellSettings.classList.remove( 'visible' );\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\n for (let i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (let i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (let i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/undo-select/active', table);\n };\n\n /*\n * This fills the abstract representation of our table with\n * zeros, at the start. the max amount of cells is the greatest sum\n * of all colspans for row.\n */\n\n var fillTableArray = function () {\n var colspansSums = [], a = [];\n\n //calculate max amount of cells inside a row\n for (var i = 0; i < table.rows.length; i++) {\n var cells = table.rows[i].getElementsByTagName('td'),\n colspanSumInRow = 0;\n for (var j = 0; j < cells.length; j++) {\n colspanSumInRow += cells[j].colSpan;\n }\n colspansSums.push(colspanSumInRow);\n }\n\n maxAmountOfCells = Math.max.apply(null, colspansSums);\n //calculate max rows\n var maxAmountOfRows = table.rows.length;\n\n // fill with zeros from both values\n for (var i = 0; i < maxAmountOfRows; i++) {\n a[i] = [];\n for (var j = 0; j < maxAmountOfCells; j++) {\n a[i].push(0);\n }\n }\n drawTable(a);\n return a;\n };\n\n /*\n * This function gets the sum of all colspans in a row.\n * @param number the number of row to be used as reference.\n */\n var getActualPointsInRow = function (row) {\n var tds = table.rows[row].getElementsByTagName('td'),\n points = 0;\n for (var i = 0; i < tds.length; i++) {\n points += tds[i].colSpan;\n }\n return points;\n }\n\n /*\n * This function gets us the exact coordinates of\n * an exact cell, in a more reliable way than xIndex and yIndex,\n * these last ones were meant to be used for getting the cell trough them.\n * @param DOMElement the cell to get the coordinates.\n */\n var getCoords = function (search) {\n var skipInCols = [], cell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n skipInCols[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (skipInCols[xPosition]) {\n skipInCols[xPosition]--;\n } else {\n var td = cellsBuffer[cellPointer++];\n if (td == search) {\n return [i, xPosition];\n }\n if (td.rowSpan > 1) {\n for ( let k = 0; k < td.colSpan; k++ ) {\n skipInCols[xPosition + k] = td.rowSpan - 1;\n }\n stepsToMove = td.colSpan;\n } else if (td.colSpan > 1) {\n stepsToMove = td.colSpan;\n }\n }\n }\n }\n };\n\n jQuery('#wptb-table-border-color').val('');\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\n\n if ( columns || rows ) {\n //END OF PRIVATE FUNCTIONS\n for (var i = 0; i < settings.length; i++) {\n if (settings[i].id !== 'wptb-apply-inner-border') {\n settings[i].classList.add('visible');\n }\n }\n\n //Create a HTML Table element.\n table = document.createElement( 'table' );\n table.classList.add( 'wptb-preview-table', 'wptb-element-main-table_setting-startedid-0' );\n table.style.border = '0px solid';\n table.dataset.reconstraction = 1;\n //table.dataset.wptbAdaptiveTable = 1;\n //Add the data rows.\n for (var i = 0; i < rows; i++) {\n\n row = table.insertRow(-1);\n row.classList.add( 'wptb-row' );\n\n for (var j = 0; j < columns; j++) {\n cell = new WPTB_Cell(mark);\n cell.setCoords(i, j);\n cell.getDOMElement().style.borderWidth = '1px';\n row.appendChild(cell.getDOMElement());\n }\n }\n } else {\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\n\n if ( wptb_preview_table ) {\n table = wptb_preview_table;\n\n let cells = table.getElementsByTagName('td');\n\n if (cells.length > 0) {\n for (let i = 0; i < cells.length; i++) {\n WPTB_Cell(mark, cells[i]);\n }\n }\n } else {\n return;\n }\n }\n\n /**\n * this method run \"mark\" method of WPTB_Table object\n * @param event\n */\n table.mark = (event) => {\n mark(event);\n }\n\n table.wptbCell = (callback, DOMElement) => {\n return WPTB_Cell(callback, DOMElement);\n }\n\n table.tableSM = () => {\n return WPTB_TableStateSaveManager;\n }\n\n /**\n * this method run \"undoSelect\" method of WPTB_Table object\n * @param event\n */\n table.undoSelect = () => {\n undoSelect();\n }\n\n /**\n * method for set value for maxAmountOfCells\n * @param value\n */\n table.setMaxAmountOfCells = (value) => {\n maxAmountOfCells = value;\n }\n\n /**\n * this method return maxAmountOfCells value\n * @returns {*}\n */\n table.getMaxAmountOfCells = () => {\n return maxAmountOfCells;\n }\n\n /**\n * this method run \"fillTableArray\" method of WPTB_Table object\n * @returns {[]}\n */\n table.fillTableArray = () => {\n return fillTableArray();\n }\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n\n table.recalculateIndexes = function () {\n WPTB_Helper.recalculateIndexes( this );\n }\n\n table.addColumnWidth = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataXIndex = highlighted[k].dataset.xIndex;\n if( dataXIndex ) {\n function tableTdsFor( dataXIndex, colspan ) {\n let tableRows = table.rows;\n let widthIsSet = false;\n let arrayTdsFromPreviousRow = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.xIndex == dataXIndex ) {\n if( value ) {\n if( td.colSpan == colspan ) {\n td.style.width = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n widthIsSet = true;\n } else {\n td.style.width = null;\n td.dataset.wptbFixedWidth = value;\n if( i == tableRows.length - 1 && ! widthIsSet ) {\n tableTdsFor( dataXIndex, colspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.width = null;\n td.removeAttribute( 'data-wptb-fixed-width' );\n } else {\n if( td.dataset.wptbFixedWidth ) {\n if( td.colSpan == colspan ) {\n td.style.width = td.dataset.wptbFixedWidth + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.width ) {\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\n }\n arrayTdsFromPreviousRow = [];\n } else {\n arrayTdsFromPreviousRow.push( td );\n }\n }\n break;\n }\n }\n }\n }\n\n tableTdsFor( dataXIndex, 1 );\n }\n }\n\n table.tdDefaultWidth();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n }\n }\n\n table.tdDefaultWidth = function() {\n let rows = table.rows;\n\n let tableTdsSumMaxWidth = 0;\n let tableTdsSumMaxWidthFixed = 0;\n let tableTdsSumMaxWidthAuto = 0;\n\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n\n let arrayCellsWidthFixedHelper = [];\n let arrayCellsWidthAutoHelper = [];\n let tdPaddingCommon = 0;\n let tableTdBorderCommonWidth = 0;\n let cssForTdsWidthAuto = '';\n\n\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\n\n for( let i = 0; i < rows.length; i++ ) {\n let tds = rows[i].children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n\n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( td.style.width ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n } else {\n if( ! td.dataset.wptbFixedWidth ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\n td.dataset.wptbCssTdAutoWidth = true;\n }\n }\n\n if( window.getComputedStyle( td, null ) ) {\n let tdStyleObj = window.getComputedStyle( td, null );\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\n\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\n\n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n }\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( ! td.dataset.wptbFixedWidth ) {\n td.dataset.wptbCssTdAutoWidth = true;\n }\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n }\n }\n }\n\n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\n if( arrayCellsWidthFixedHelper[i] ) {\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\n }\n }\n\n let CellsWidthAutoCount = 0;\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\n if( arrayCellsWidthAutoHelper[i] ) {\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\n CellsWidthAutoCount++;\n }\n }\n\n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\n\n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\n if( CellsWidthAutoCount ) {\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\n if( table.mergingСellsHorizontally ) {\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n }\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\n }\n\n let styleElementCreate = false;\n let tableTdWidthAuto;\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\n if( CellsWidthAutoCount ) {\n table.style.minWidth = '100%';\n if( table.mergingСellsHorizontally ) {\n table.style.width = 'auto';\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\n styleElementCreate = true;\n } else {\n table.style.width = '100%';\n }\n } else {\n table.style.width = 'auto';\n table.style.minWidth = null;\n table.style.maxWidth = null;\n }\n } else {\n table.style.maxWidth = null;\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\n table.style.width = 'auto';\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\n styleElementCreate = true;\n }\n\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n }\n\n if( styleElementCreate ) {\n cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\n if( head ) {\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n\n if( table.dataset.wptbTableAlignment ) {\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\n\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n if( wptbTableSetupWidth < table.offsetWidth ) {\n table.style.float = null;\n } else {\n if( wptbTableAlignment == 'center' ) {\n table.style.float = null;\n } else {\n table.style.float = wptbTableAlignment;\n }\n }\n\n if( wptbTableAlignment == 'center' ) {\n wptbTableSetup.style.float = null;\n } else {\n wptbTableSetup.style.float = wptbTableAlignment;\n }\n\n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\n table.style.width = '100%';\n }\n } else {\n table.style.float = null;\n }\n }\n\n table.addRowHeight = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataYIndex = highlighted[k].dataset.yIndex;\n if( dataYIndex ) {\n function tableTdsFor( dataYIndex, rowspan ) {\n let tableRows = table.rows;\n let heightIsSet = false;\n let arrayTdsPrevious = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.yIndex == dataYIndex ) {\n if( value ) {\n if( td.rowSpan == rowspan ) {\n td.style.height = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n heightIsSet = true;\n continue;\n } else {\n td.style.height = null;\n td.dataset.wptbFixedHeight = value;\n if( j == tds.length - 1 && ! heightIsSet ) {\n tableTdsFor( dataYIndex , rowspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.height = null;\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n } else {\n if( td.dataset.wptbFixedHeight ) {\n if( td.rowSpan = rowspan ) {\n td.style.height = td.dataset.wptbFixedHeight + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.height ) {\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\n arrayTdsPrevious[z].style.height = td.style.height;\n }\n arrayTdsPrevious = [];\n } else {\n arrayTdsPrevious.push( td );\n }\n }\n }\n }\n }\n }\n\n tableTdsFor( dataYIndex, 1 );\n }\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n }\n }\n\n table.reconstraction = function() {\n let tds = table.getElementsByTagName( 'td' );\n table.mergingСellsHorizontally = false;\n table.mergingCellsVertically = false;\n table.dataset.reconstraction = 1;\n let forBreak = 0;\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].colSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingСellsHorizontally = true;\n forBreak++;\n }\n\n if( tds[i].rowSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingCellsVertically = true;\n forBreak++;\n }\n\n if( forBreak == 2 ) {\n break;\n }\n }\n }\n\n /*\n * As simple as it is: adds a column to the end of table.\n */\n table.addColumnEnd = function () {\n let td,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if (currentTable.length > 0) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if (currentTableTd) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n }\n\n table.rows[i].appendChild(td.getDOMElement());\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * As simple as it looks: adds a column to the start of table.\n */\n\n table.addColumnStart = function () {\n let td,\n firstCell,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if ( currentTable.length > 0 ) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if ( currentTableTd ) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n }\n firstCell = table.rows[i].getElementsByTagName('td')[0];\n if (firstCell) {\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\n } else {\n table.rows[i].appendChild(td.getDOMElement());\n }\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Well, not so simple as previous functions.\n * It adds a column after a certain column of reference.\n * @param integer the column number to be used as reference.\n *\tIf empty, then the first highlighted cell is used as reference.\n */\n\n table.addColumnAfter = function (c_pos) {\n let rows = table.rows,\n cell,\n cellStyle,\n pos;\n\n if(c_pos != undefined && typeof c_pos === 'number') {\n pos = c_pos;\n cell = document.querySelector('[data-x-index=\"' + pos + '\"]');\n } else {\n cell = document.querySelector('.wptb-highlighted');\n pos = getCoords(cell)[1];\n }\n\n if(cell) {\n cellStyle = cell.getAttribute('style');\n\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\n table.addColumnEnd();\n } else {\n for(let i = 0; i < rows.length; i++) {\n let tds = rows[i].children;\n for(let j = 0; j < tds.length; j++) {\n if(parseInt(tds[j].dataset.xIndex) <= pos) {\n if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan == pos + cell.colSpan) {\n let td = newTd(cellStyle);\n let nextSib = tds[j].nextSibling;\n if (nextSib) {\n rows[i].insertBefore(td.getDOMElement(), nextSib);\n } else {\n rows[i].appendChild(td.getDOMElement());\n }\n\n break;\n } else if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan > pos + cell.colSpan) {\n tds[j].colSpan++;\n if(tds[j].rowSpan > 1) i += tds[j].rowSpan - 1;\n break;\n }\n } else if(parseInt(tds[j].dataset.xIndex) > pos) {\n let td = newTd(cellStyle);\n rows[i].insertBefore(td.getDOMElement(), tds[j]);\n break;\n }\n }\n }\n\n function newTd(cellStyle) {\n let td = new WPTB_Cell(mark);\n if (cellStyle) {\n td.getDOMElement().setAttribute('style', cellStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n return td;\n }\n\n for (var i = 0; i < array.length; i++) {\n array[i].push(0);\n }\n maxAmountOfCells++;\n drawTable(array);\n table.recalculateIndexes();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n };\n\n /*\n * For preventing us to take a lot of time,\n * This is just calling the function addColumnAfter, but\n * using the previous column to current one as reference.\n * @see addColumnAfter\n */\n\n table.addColumnBefore = function () {\n var cell = document.querySelector('.wptb-highlighted'),\n pos = getCoords(cell)[1];\n\n if (pos === 0) {\n table.addColumnStart();\n } else {\n table.addColumnAfter(pos - 1);\n }\n };\n\n /*\n * Luckily, thisfunction is simple,\n * it just add a row to the end of table.\n */\n\n table.addRowToTheEnd = function () {\n let r = table.insertRow(-1),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table');\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * Yet another simple function,\n * it just add a row to the start of table.\n */\n\n table.addRowToTheStart = function () {\n let r = table.insertRow(0),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * This function adds a row before the current one.\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\n * the most of the troubles is not here.\n */\n\n table.addRowBefore = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellNew;\n for( let i = row - 1; i >= 0; i-- ) {\n let rowChildren = table.rows[i].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].rowSpan == 1 ) {\n row = i;\n cellNew = true;\n break;\n }\n }\n }\n if ( cellNew ) {\n break;\n }\n }\n\n if (row === 0) {\n table.addRowToTheStart();\n } else {\n table.addRowAfter( row, cellStyle );\n }\n };\n\n /*\n * Well... by the name convention of the previous 3 functions,\n * it's pretty obvious that this functions attaches a new\n * row after highlighted cell row. The greatest obstacle it was\n * the possibility of a TR not having the exact amount of columns\n * occuped by actual node but rowspanned upper cells. For that purpose\n * it was created the function realTimeArray.\n * @see realTimeArray\n */\n\n table.addRowAfter = function ( row, cellStyle ) {\n let cellRowSpan,\n rowAfter,\n aux;\n\n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\n let cell = document.querySelector('.wptb-highlighted');\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellRowSpan = cell.rowSpan,\n rowAfter = row + cellRowSpan - 1;\n } else {\n rowAfter = row;\n }\n\n\n let cellsColSpan = 0;\n if ( rowAfter < table.rows.length -1 ) {\n for( let i = 0; i <= rowAfter ; i++ ) {\n let tableRowsIChildren = table.rows[i].children,\n tableRIChildrenLength = tableRowsIChildren.length;\n if( tableRIChildrenLength > 0 ) {\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\n\n if ( rowIRowSpan - 1 + i > rowAfter ) {\n tableRowsIChildren[j].rowSpan++;\n }\n }\n }\n }\n\n let rNext = table.rows[rowAfter + 1],\n rNextChildren = rNext.children,\n rNextChildrenLength = rNextChildren.length;\n\n if( rNextChildrenLength > 0 ) {\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\n cellsColSpan += rNextChildren[i].colSpan;\n }\n }\n } else {\n cellsColSpan = array[0].length;\n }\n\n let r = table.insertRow( rowAfter + 1 );\n r.classList.add( 'wptb-row' );\n\n for ( j = 0; j < cellsColSpan; j++ ) {\n let td = new WPTB_Cell( mark );\n let currentTableTd = table.querySelector('[data-x-index=\"' + j + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild( td.getDOMElement() );\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This function checks the current selected cells\n * make a rectangular shape.\n * @param Array the abstract table.\n * @return false, if not making a rectangle, or\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\n */\n\n table.isSquare = function (a) {\n var rowStart = -1,\n columnStart = -1,\n rowEnd = -1,\n columnEnd = -1,\n height,\n width,\n itemsEstimate = 0,\n items = 0;\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n if ( j < columnStart || columnStart == -1 ) {\n columnStart = j;\n }\n if ( i < rowStart || rowStart == -1 ) {\n rowStart = i;\n }\n }\n }\n\n }\n\n for (var i = a.length - 1; i > -1; i--) {\n for (var j = a[i].length - 1; j > -1; j--) {\n if (a[i][j] == 1) {\n if ( j > columnEnd ) {\n columnEnd = j;\n }\n if ( i > rowEnd ) {\n rowEnd = i;\n }\n }\n }\n }\n\n for (var i = rowStart; i < rowEnd; i++) {\n for (var j = columnStart; j < columnEnd; j++) {\n if (a[i][j] == 0 || a[i][j] == undefined) {\n return false;\n }\n }\n }\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n items++;\n }\n }\n }\n\n height = rowEnd - rowStart + 1;\n width = columnEnd - columnStart + 1;\n itemsEstimate = height * width;\n\n if (itemsEstimate !== items) {\n return false;\n }\n return [height, width];\n };\n\n /*\n * This function merges all selected cells.\n * Well, actually sets the colspan and rowspan of first\n * upper left cell in selection and deletes the another selected cells.\n */\n\n table.mergeCells = function () {\n var dimensions = table.isSquare(array),\n rowspan = dimensions[0],\n colspan = dimensions[1],\n first = document.querySelector('.wptb-highlighted'),\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\n tdsChildrenNew = [];\n\n for (let i = 0; i < tds.length; i++) {\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\n if (tdsInternalElements.length > 0) {\n let tdsIntElemLength = tdsInternalElements.length;\n for (let j = 0; j < tdsIntElemLength; j++) {\n tdsChildrenNew.push(tdsInternalElements[j]);\n }\n }\n let p = tds[i].parentNode;\n p.removeChild(tds[i]);\n }\n if (tdsChildrenNew.length > 0) {\n for (let i = 0; i < tdsChildrenNew.length; i++) {\n first.appendChild(tdsChildrenNew[i]);\n }\n }\n\n first.colSpan = colspan;\n first.rowSpan = rowspan;\n table.recalculateIndexes();\n table.reconstraction();\n let firstWidth = first.style.width;\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\n if( firstWidth ) {\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\n } else if( firstDataFixedWidth ) {\n table.addColumnWidth();\n } else {\n table.addColumnWidth( false, true );\n }\n\n let firstHeight = first.style.height;\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\n if( firstHeight ) {\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\n } else if( firstDataFixedHeight ) {\n table.addRowHeight();\n } else {\n table.addRowHeight( false, true );\n }\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This functions makes the exact inverse as above.\n * It resets colspan and rowspan and appends\n * the same amount in cells to the table.\n * @bug\n */\n\n table.splitCell = function () {\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\n rowspan = cell.rowSpan,\n colspan = cell.colSpan,\n cellStyles = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n thisRow = table.rows[row],\n cellXIndex =cell.dataset.xIndex;\n\n cell.rowSpan = 1;\n cell.colSpan = 1;\n\n for (let i = 1; i < colspan; i++) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().classList.add( 'wptb-highlighted' );\n if ( cell.nextSibling ) {\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\n } else {\n thisRow.appendChild( td.getDOMElement() );\n }\n\n }\n\n if (rowspan > 1) {\n for (let i = 1; i < rowspan; i++) {\n let rowChildInsertBefore = undefined,\n rowNext = table.rows[row + i],\n rowChildren = rowNext.children,\n rowChildrenLength = rowChildren.length;\n\n if ( rowChildrenLength > 0 ) {\n for ( let k = 0; k < rowChildrenLength; k++ ) {\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\n rowChildInsertBefore = rowChildren[k];\n break;\n }\n }\n }\n for ( let j = 0; j < colspan; j++ ) {\n let td = new WPTB_Cell( mark );\n td.getDOMElement().setAttribute( 'style', cellStyles );\n if ( rowChildInsertBefore != undefined ) {\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\n } else {\n rowNext.appendChild( td.getDOMElement() );\n }\n }\n }\n }\n\n table.recalculateIndexes();\n table.reconstraction();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Searches for rowspanned cells up to row number meeting it.\n * @param number the number of row where the function\n * must search up to.\n */\n\n table.findRowspannedCells = function (row) {\n var array = [],\n difference;\n actualPoints = getActualPointsInRow(row);\n if (actualPoints === maxAmountOfCells) {\n return [];\n }\n difference = maxAmountOfCells - actualPoints;\n\n for (var i = row - 1; i >= 0 && difference; i--) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n if (tds[i].rowSpan > 1) {\n array.push(tds[i]);\n difference -= tds[i].colSpan;\n }\n }\n }\n return array;\n\n }\n\n /*\n * This function explores the table and adds\n * a cell for each lacking one for each row\n * to meet an even amount of cells.\n */\n\n table.addLackingCells = function () {\n var sumRows = [];\n for (var i = 0; i < table.rows.length; i++) {\n sumRows.push(0);\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var j = 0; j < tds.length; j++) {\n if (tds[j].rowSpan > 1) {\n for (var k = 1; k < tds[j].rowSpan; k++) {\n sumRows[i + k]++;\n }\n }\n }\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td'),\n totalColspan = 0;\n for (var j = 0; j < tds.length; j++) {\n totalColspan += tds[j].colSpan;\n }\n totalColspan += sumRows[i];\n difference = maxAmountOfCells - totalColspan;\n for (var j = 0; j < difference; j++) {\n var td = new WPTB_Cell(mark);\n table.rows[i].appendChild(td.getDOMElement());\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\n }\n }\n };\n\n /*\n * This function deletes the row of currently\n * selected cell.\n */\n\n table.deleteRow = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyles = cell.getAttribute('style'),\n rowspan = cell.rowSpan,\n row = getCoords(cell)[0],\n thisRow,\n aux;\n\n if ( rowspan == undefined ) rowspan = 1;\n\n for ( let i = 0; i < rowspan; i++ ) {\n thisRow = table.rows[row];\n let thisRowChildren = thisRow.children,\n nextRow = table.rows[row + 1],\n nextRowChildren,\n nextRowChildrenLength,\n tdArr = [];\n\n if( nextRow != undefined ) {\n nextRowChildren = nextRow.children;\n nextRowChildrenLength = nextRowChildren.length;\n for (let j = 0; j < thisRowChildren.length; j++) {\n if ( thisRowChildren[j].rowSpan > 1 ) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\n\n let nextRowChildrenK = undefined;\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\n nextRowChildrenK = nextRowChildren[k];\n break;\n }\n }\n\n if ( nextRowChildrenK ) {\n tdArr.push( [td, nextRowChildrenK] );\n } else {\n tdArr.push( [td] );\n }\n }\n }\n\n if ( tdArr.length > 0 ) {\n for ( let k = 0; k < tdArr.length; k++ ) {\n if ( tdArr[k][1] != undefined ) {\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\n } else {\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\n }\n }\n }\n }\n\n let tableRows = table.rows;\n if ( tableRows.length > 0 ) {\n for ( let j = 0; j < row; j++ ) {\n let jRowChildren = tableRows[j].children;\n if ( jRowChildren.length > 0 ) {\n for ( let x = 0; x < jRowChildren.length; x++ ) {\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\n jRowChildren[x].rowSpan--;\n }\n }\n }\n }\n }\n aux = Array.from(array[0]);\n array.pop(aux);\n drawTable(array);\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\n\n if( table.rows.length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n /*\n * This function deletes the column of currently\n * selected cell. Again, this is way more complicated than\n * delete row case.\n */\n\n table.deleteColumn = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellXIndex = cell.dataset.xIndex,\n colspan = cell.colSpan;\n\n for ( let i = 0; i < colspan; i++ ) {\n for ( let j = 0; j < table.rows.length; j++ ) {\n let rowChildren = table.rows[j].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n } else {\n table.rows[j].removeChild( rowChildren[k] );\n }\n break;\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) &&\n Number( rowChildren[k].dataset.xIndex ) +\n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n }\n break;\n }\n }\n }\n }\n\n for ( let j = 0; j < table.rows.length; j++ ) {\n if (array[j] != undefined)\n array[j].pop();\n }\n\n maxAmountOfCells--;\n\n if( table.querySelectorAll( 'td' ).length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n // @deprecated old generate logic\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\n array = fillTableArray();\n\n undoSelect();\n drawTable(array);\n\n wptbTableSetup.appendChild(table);\n //if (columns || rows) {\n table.recalculateIndexes( true );\n //}\n table.reconstraction();\n table.tdDefaultWidth();\n\n wptbTableSetup.onresize = function() {\n table.tdDefaultWidth();\n };\n\n WPTB_LeftPanel();\n\n // event hook to signal that table is generated and ready to be used\n WPTB_Helper.wptbDocumentEventGenerate('wptb:table:generated', document);\n\n WPTB_Helper.elementStartScript( table, 'table_setting' );\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\n\n // this code gets the ID of the active element in the toolbar\n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\n// }\n// }\n// }, false );\n// }\n\n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\n// if( wptbPanelLeft.length > 0 ) {\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }, false );\n// }\n\n// let body = document.getElementsByTagName( 'body' );\n// if( body.length > 0 ) {\n// body[0].addEventListener( 'click', function( e ) {\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }\n// }, false );\n// }\n};\n","const WPTB_TableSettingsData = {\n borderColor: '',\n /**\n *\n * @param {string} name\n * @param {string} value\n */\n setTableSetting: function(name, value){\n this[name] = value;\n },\n /**\n *\n * @param {string} name\n * @returns {*}\n */\n getTableSetting: function (name) {\n return this[name];\n }\n}\n\n","const WPTB_TableStateSaveManager = function () {\n\tthis.tableStateSet = (generate) => {\n\t\tif (generate && window.wptbTableStateSaving && Array.isArray(window.wptbTableStateSaving)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// get table setup\n\t\tlet wptbTableSetup = document.getElementsByClassName('wptb-table-setup');\n\t\tlet wptbPreviewTable = '';\n\t\tif (wptbTableSetup.length > 0) {\n\t\t\twptbTableSetup = wptbTableSetup[0];\n\n\t\t\twptbPreviewTable = wptbTableSetup.querySelector('.wptb-preview-table');\n\t\t} else {\n\t\t\twptbTableSetup = '';\n\t\t}\n\n\t\t// check if a global array doesn't exist with saved versions of the table\n\t\t// them create it\n\t\tif (!window.wptbTableStateSaving && !Array.isArray(window.wptbTableStateSaving)) {\n\t\t\twindow.wptbTableStateSaving = [];\n\t\t}\n\n\t\t// remove the extra part of the array after changing the table\n\t\t// when it is showed in the not last modified version\n\t\tif (window.wptbTableStateSaving.length > window.wptbTableStateNumberShow) {\n\t\t\twindow.wptbTableStateSaving = window.wptbTableStateSaving.slice(0, window.wptbTableStateNumberShow + 1);\n\t\t}\n\n\t\t// add new state of table\n\t\tlet wptbNewTableSetup = '';\n\t\tif (wptbTableSetup) {\n\t\t\twptbNewTableSetup = wptbTableSetup.cloneNode(true);\n\t\t\tconst wptbHighlighted = wptbNewTableSetup.getElementsByClassName('wptb-highlighted');\n\t\t\tfor (let i = 0; i < wptbHighlighted.length; i++) {\n\t\t\t\twptbHighlighted[i].classList.remove('wptb-highlighted');\n\t\t\t}\n\t\t\tconst wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName('wptb-directlyhovered');\n\t\t\tfor (let i = 0; i < wptbDirectlyhovered.length; i++) {\n\t\t\t\twptbDirectlyhovered[i].classList.remove('wptb-directlyhovered');\n\t\t\t}\n\t\t\tconst mceContentBodys = wptbNewTableSetup.querySelectorAll('.mce-content-body');\n\t\t\tif (mceContentBodys.length > 0) {\n\t\t\t\tfor (let k = 0; k < mceContentBodys.length; k++) {\n\t\t\t\t\tmceContentBodys[k].classList.remove('mce-content-body');\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst dataMceStyle = wptbNewTableSetup.querySelectorAll('[data-mce-style]');\n\t\t\tif (dataMceStyle.length > 0) {\n\t\t\t\tfor (let k = 0; k < dataMceStyle.length; k++) {\n\t\t\t\t\tdataMceStyle[k].removeAttribute('data-mce-style');\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst mceIds = wptbNewTableSetup.querySelectorAll('[id^=mce_]');\n\t\t\tif (mceIds.length > 0) {\n\t\t\t\tfor (let k = 0; k < mceIds.length; k++) {\n\t\t\t\t\tmceIds[k].removeAttribute('id');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet cssForTdsWidthAutoValue = '';\n\t\tconst { head } = document;\n\t\tif (head) {\n\t\t\tconst cssForTdsWidthAuto = head.querySelector('style[data-wptb-td-auto-width=\"true\"]');\n\t\t\tif (cssForTdsWidthAuto) {\n\t\t\t\tcssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\n\t\t\t}\n\t\t}\n\n\t\tlet wptbTableTitle = '';\n\t\tconst wptbSetupName = document.getElementById('wptb-setup-name');\n\t\tif (wptbSetupName) wptbTableTitle = wptbSetupName.value;\n\n\t\twindow.wptbTableStateSaving.push([wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle]);\n\n\t\t// set new number of state which is showed now\n\t\twindow.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\n\n\t\t// make undo arrow active when the table was changed\n\t\tif (window.wptbTableStateSaving.length - 1 > 0) {\n\t\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\n\t\t\tif (wptbUndo.length > 0) {\n\t\t\t\twptbUndo = wptbUndo[0];\n\n\t\t\t\twptbUndo.classList.remove('wptb-undoredo-disabled');\n\t\t\t}\n\t\t}\n\n\t\t// make redo arrow not active when the table was changed\n\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\n\t\tif (wptbRedo.length > 0) {\n\t\t\twptbRedo = wptbRedo[0];\n\n\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\n\t\t}\n\n\t\tlet wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\n\t\tif (wptbSaveBtn.length > 0) {\n\t\t\twptbSaveBtn = wptbSaveBtn[0];\n\t\t\tif (\n\t\t\t\t(!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0) ||\n\t\t\t\twindow.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ||\n\t\t\t\t!wptbPreviewTable\n\t\t\t) {\n\t\t\t\twptbSaveBtn.classList.add('wptb-save-disabled');\n\t\t\t\twptbSaveBtn.classList.remove('active');\n\t\t\t} else {\n\t\t\t\twptbSaveBtn.classList.remove('wptb-save-disabled');\n\t\t\t\twptbSaveBtn.classList.add('active');\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.tableStateGet = (datawptbUndoredo) => {\n\t\tif (datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0) {\n\t\t\t// changes the number of the state which displays now\n\t\t\tif (datawptbUndoredo == 'undo') {\n\t\t\t\tif (window.wptbTableStateNumberShow > 0) {\n\t\t\t\t\twindow.wptbTableStateNumberShow--;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (datawptbUndoredo == 'redo') {\n\t\t\t\tif (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length) {\n\t\t\t\t\twindow.wptbTableStateNumberShow++;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add or delete class \"wptb-undoredo-disabled\" for undo button\n\t\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\n\t\t\tif (wptbUndo.length > 0) {\n\t\t\t\twptbUndo = wptbUndo[0];\n\n\t\t\t\tif (window.wptbTableStateNumberShow == 0) {\n\t\t\t\t\tif (wptbUndo) {\n\t\t\t\t\t\twptbUndo.classList.add('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t} else if (window.wptbTableStateNumberShow > 0) {\n\t\t\t\t\tif (wptbUndo) {\n\t\t\t\t\t\twptbUndo.classList.remove('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add or delete class \"wptb-undoredo-disabled\" for redo button\n\t\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\n\t\t\tif (wptbRedo.length > 0) {\n\t\t\t\twptbRedo = wptbRedo[0];\n\n\t\t\t\tif (window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1) {\n\t\t\t\t\tif (wptbRedo) {\n\t\t\t\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t} else if (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1) {\n\t\t\t\t\tif (wptbRedo) {\n\t\t\t\t\t\twptbRedo.classList.remove('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add or delete class \"wptb-save-disabled\" for save button\n\t\t\tlet wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\n\t\t\tif (wptbSaveBtn.length > 0) {\n\t\t\t\twptbSaveBtn = wptbSaveBtn[0];\n\t\t\t\tif (\n\t\t\t\t\t(!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0) ||\n\t\t\t\t\twindow.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave\n\t\t\t\t) {\n\t\t\t\t\twptbSaveBtn.classList.add('wptb-save-disabled');\n\t\t\t\t\twptbSaveBtn.classList.remove('active');\n\t\t\t\t} else {\n\t\t\t\t\twptbSaveBtn.classList.add('active');\n\t\t\t\t\twptbSaveBtn.classList.remove('wptb-save-disabled');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// load necessary saved table state\n\t\t\tlet wptbTableSetup = document.getElementsByClassName('wptb-table-setup');\n\t\t\tif (wptbTableSetup.length > 0) {\n\t\t\t\twptbTableSetup = wptbTableSetup[0];\n\n\t\t\t\t// wptbTableSetup.outerHTML = '';\n\t\t\t\tif (window.wptbTableStateSaving[window.wptbTableStateNumberShow]) {\n\t\t\t\t\tif (\n\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][0] &&\n\t\t\t\t\t\ttypeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object'\n\t\t\t\t\t) {\n\t\t\t\t\t\tif ('outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]) {\n\t\t\t\t\t\t\twptbTableSetup.outerHTML =\n\t\t\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wptbTableSetupNew = document.querySelector('.wptb-table-setup');\n\t\t\t\t\tif (wptbTableSetupNew && wptbTableSetupNew.children.length == 0) {\n\t\t\t\t\t\tdocument.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n\t\t\t\t\t\twptbSaveBtn.classList.add('wptb-save-disabled');\n\t\t\t\t\t\twptbSaveBtn.classList.remove('active');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\t\t\t\t\t}\n\n\t\t\t\t\t// add or change or delete style element in the head for table cells who have auto width\n\t\t\t\t\tconst { head } = document;\n\t\t\t\t\tif (head) {\n\t\t\t\t\t\tconst cssForTdsWidthAutoOld = head.querySelector('style[data-wptb-td-auto-width=\"true\"]');\n\t\t\t\t\t\tif (cssForTdsWidthAutoOld) {\n\t\t\t\t\t\t\thead.removeChild(cssForTdsWidthAutoOld);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]) {\n\t\t\t\t\t\t\tconst cssForTdsWidthAuto = document.createElement('style');\n\t\t\t\t\t\t\tcssForTdsWidthAuto.setAttribute('data-wptb-td-auto-width', true);\n\t\t\t\t\t\t\tcssForTdsWidthAuto.innerHTML =\n\t\t\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\n\t\t\t\t\t\t\thead.appendChild(cssForTdsWidthAuto);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// change value of table title field\n\t\t\t\t\tconst wptbSetupName = document.getElementById('wptb-setup-name');\n\t\t\t\t\tif (typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] !== 'undefined') {\n\t\t\t\t\t\tif (wptbSetupName)\n\t\t\t\t\t\t\twptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet body = document.getElementsByTagName('body');\n\t\t\t\tif (body.length > 0) {\n\t\t\t\t\tbody = body[0];\n\t\t\t\t}\n\n\t\t\t\tWPTB_Helper.elementOptionsPanelClear();\n\t\t\t\tWPTB_LeftPanel();\n\n\t\t\t\tconst wptbLeftScrollPanelCellSetting = document.getElementById('wptb-left-scroll-panel-cell-settings');\n\t\t\t\tif (wptbLeftScrollPanelCellSetting) {\n\t\t\t\t\twptbLeftScrollPanelCellSetting.classList.remove('visible');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.tableStateClear = function () {\n\t\tdelete window.wptbTableStateSaving;\n\t\tdelete window.wptbTableStateNumberShow;\n\n\t\tlet wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\n\t\tif (wptbSaveBtn.length > 0) {\n\t\t\twptbSaveBtn = wptbSaveBtn[0];\n\n\t\t\twptbSaveBtn.removeAttribute('data-wptb-table-state-number-save');\n\t\t}\n\n\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\n\t\tif (wptbUndo.length > 0) {\n\t\t\twptbUndo = wptbUndo[0];\n\n\t\t\twptbUndo.classList.add('wptb-undoredo-disabled');\n\t\t}\n\n\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\n\t\tif (wptbRedo.length > 0) {\n\t\t\twptbRedo = wptbRedo[0];\n\n\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\n\t\t}\n\t};\n};\n","var WPTB_innerElementSet = function ( element ) {\n \n element.ondragenter = function (e) {\n var div;\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\n return;\n }\n WPTB_DropHandle(this, e);\n \n element.classList.add( 'wptb-ondragenter' );\n }\n element.ondragover = function (e) {\n e.preventDefault();\n WPTB_DropHandle(this, e);\n }\n element.ondragleave = function (e) {\n WPTB_DropHandle(this, e, true);\n\n }\n element.ondrop = function(e) {\n this.classList.remove( 'wptb-ondragenter' );\n let element, classId;\n e.preventDefault();\n e.stopPropagation();\n\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\n return;\n }\n let wptbDropHandle,\n wptbDropBorderMarker;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n }\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\n element = element.getDOMElement();\n } else {\n classId = e.dataTransfer.getData( 'node' );\n element = document.getElementsByClassName( classId )[0];\n //element.classList.remove( 'wptb-moving-mode' );\n }\n\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\n WPTB_DropHandle(this, e, true);\n const parentCell = WPTB_Helper.getParentOfType('td', e.target);\n\n parentCell.appendChild(element);\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n\n }else if( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n // start item javascript if item is new\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n let elemKind = infArr[1];\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\n //WPTB_Helper.elementStartScript( element );\n }\n } else {\n return;\n }\n\n if(wptbDropHandle){\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n\n WPTB_innerElementSet( element );\n \n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\n element.classList.remove( 'wptb-moving-mode' );\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } \n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","var applyGenericItemSettings = function ( element, kindIndexProt, copy = false ) {\n var node = element.getDOMElement(),\n index,\n copy;\n if( node.classList.contains( 'wptb-ph-element' ) ) {\n if ( kindIndexProt == undefined || copy == true ) {\n //index = document.counter.nextIndex( element.kind );\n let wptbElements = document.getElementsByClassName( 'wptb-ph-element' );\n let elementIndexesArr = [];\n for( let i = 0; i < wptbElements.length; i++ ) {\n var regex = new RegExp( 'wptb-element-' + element.kind + '-(\\\\d+)', \"i\" );\n let infArr = wptbElements[i].className.match( regex );\n if( infArr ) {\n elementIndexesArr.push( infArr[1] );\n }\n }\n if( elementIndexesArr.length > 0 ) {\n let elementIndexMax = Math.max( ...elementIndexesArr );\n index = elementIndexMax + 1;\n } else { \n index = 1;\n }\n\n if( copy ) {\n // change all data-elements which save parameters for different controls\n let wptbNodeattributes = [...node.attributes];\n for( let i = 0; i < wptbNodeattributes.length; i++ ) {\n if( wptbNodeattributes[i] && typeof wptbNodeattributes[i] === 'object' && wptbNodeattributes[i].nodeName ) {\n let regularText = new RegExp( 'data-wptb-el-' + element.kind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let attr = wptbNodeattributes[i].nodeName.match( regularText );\n if( attr && Array.isArray( attr ) ) {\n let newDataAttributeName = wptbNodeattributes[i].nodeName.replace( element.kind + '-' + attr[1], element.kind + '-' + index );\n let newDataAttributeValue = wptbNodeattributes[i].nodeValue;\n node.removeAttribute( wptbNodeattributes[i].nodeName );\n node.setAttribute( newDataAttributeName, newDataAttributeValue );\n }\n }\n }\n }\n } else if ( kindIndexProt && ! copy ) {\n let kindIndexProtArr = kindIndexProt.split('-');\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\n // start element javascript if element is new\n \n }\n\n let node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\\d+)/i);\n if ( node_wptb_element_kind_num ) {\n node.classList.remove( node_wptb_element_kind_num[0] );\n }\n if ( ! node.classList.contains( 'wptb-ph-element' ) ) {\n node.classList.add( 'wptb-ph-element' );\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n } else {\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n }\n WPTB_Helper.elementStartScript( element.getDOMElement() );\n new WPTB_ElementOptions( element, index, kindIndexProt );\n document.counter.increment(element.kind);\n }\n \n node.onmouseenter = function ( event ) {\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\n return;\n }\n \n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n node.classList.remove( 'wptb-ondragenter' );\n };\n \n node.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.leaveFromField( event, node );\n };\n};"]}
inc/admin/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},WPTB_ActionsField=function s(){var p=this;this.wptbActions,0!=document.getElementsByClassName("wptb-actions").length&&(this.wptbActions=document.getElementsByClassName("wptb-actions")[0]),this.addActionField=function(e,t){var a=document.getElementsByTagName("body")[0],n=document.getElementsByClassName("wptb-actions");if(0!=n.length){var r=n[0].activeElem;for(r&&r.classList.remove("wptb-directlyhovered");0!=n.length;)n[0].parentNode.removeChild(n[0])}if(1==e){var l=void 0,o=void 0;if(l=document.createElement("span"),o=document.createElement("span"),(n=document.createElement("div")).classList.add("wptb-actions"),l.classList.add("dashicons","dashicons-trash","wptb-delete-action"),o.classList.add("dashicons","dashicons-admin-page","wptb-duplicate-action"),n.appendChild(o),n.appendChild(l),a.appendChild(n),n.activeElem=t,n.type=1,l.onclick=function(e){var t=e.target.parentNode.activeElem,a=t.parentNode;t.className.match(/wptb-element-(.+)-(\d+)/i);if(t&&a.removeChild(t),t&&"object"===(void 0===t?"undefined":_typeof(t))&&t.hasOwnProperty("kind")&&"text"==t.kind){var n=a.parentNode;if(WPTB_Helper.rowIsTop(n)){var r=WPTB_Helper.findAncestor(n,"wptb-preview-table");r.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(r)}}(new s).actionsRemove(),(new WPTB_TableStateSaveManager).tableStateSet(),WPTB_Helper.wptbDocumentEventGenerate("element:removed:dom",document,t)},o.onclick=function(e){var t,a=void 0,n=void 0,r=e.target.parentNode.activeElem,l=r.parentNode;if((t=r.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){n=t[1];var o={};o.kind=n,o.elemProt=r,o.tinyMceClear=!0,a=new WPTB_ElementObject(o),l.insertBefore(a.getDOMElement(),r.nextSibling)}else{a={};var i=r.cloneNode(!0);i.classList.remove("wptb-directlyhovered"),a.getDOMElement=function(){return i},applyGenericItemSettings(a),l.insertBefore(a.getDOMElement(),r.nextSibling),WPTB_Helper.wptbDocumentEventGenerate("wptb-inner-element:copy",r,a.getDOMElement())}WPTB_innerElementSet(a.getDOMElement()),new s(1,r).setParameters(r),(new WPTB_TableStateSaveManager).tableStateSet()},t.classList.contains("wptb-ph-element")){var i=void 0;(i=document.createElement("span")).classList.add("dashicons","dashicons-move","wptb-move-action"),i.draggable=!0,n.appendChild(i),i.ondragstart=function(e){var t,a=wp.template("wptb-element-icons-directories")({}),n=JSON.parse(a),r=void 0,l=e.target.parentNode.activeElem,o=void 0;if((t=l.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){o=t[1],l.classList.add("wptb-moving-mode"),n&&"object"===(void 0===n?"undefined":_typeof(n))&&n[o]&&(r=WPTB_Helper.getElementIcon(n[o])),e.dataTransfer.effectAllowed="move",e.dataTransfer.setDragImage(r,0,0),e.dataTransfer.setData("node","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptb-moving-mode","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptbElIndic-"+t[1],"wptbElIndic-"+t[1]);var i=e.target.parentNode.activeElem;if("text"==i.kind){var s=i.parentNode.parentNode;if(WPTB_Helper.rowIsTop(s)){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");d.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(d)}}}else p.style.display="none";p.actionsHide()},i.ondragend=function(e){WPTB_Helper.elementDragEndClear()}}n.style.display="flex",p.wptbActions=n}WPTB_Helper.wptbDocumentEventGenerate("wptb:actionfield:generated",document)},this.setParameters=function(t){if(!p.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length?p.wptbActions=e[0]:p.wptbActions=!1}if(p.wptbActions&&p.wptbActions.classList.contains("wptb-actions")){p.wptbActions.style.display="flex";var a=t.getBoundingClientRect(),n=document.getElementsByClassName("wptb-container")[0],r=function(){var e=t.getBoundingClientRect();p.wptbActions.style.top=parseFloat(e.top)-15+"px"};n.removeEventListener("scroll",r,!1),p.wptbActions.style.top=parseFloat(a.top)-15+"px",p.wptbActions.style.left=parseFloat(a.right)-parseFloat(p.wptbActions.clientWidth)+1+"px",p.wptbActions.style.display="flex",t.classList.add("wptb-directlyhovered"),n.addEventListener("scroll",r,!1)}},this.leaveFromField=function(e,t,a){if(!p.wptbActions){var n=document.getElementsByClassName("wptb-actions");0<n.length?p.wptbActions=n[0]:p.wptbActions=!1}if(p.wptbActions){if(e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-actions")||e.relatedTarget.classList.contains("wptb-move-action")||e.relatedTarget.classList.contains("wptb-duplicate-action")||e.relatedTarget.classList.contains("wptb-delete-action")||e.relatedTarget.classList.contains("wptb-prebuilt-mark-action")))return p.wptbActions||(p.wptbActions=document.getElementsByClassName("wptb-actions")[0]),void(p.wptbActions.onmouseleave=function(e){null!=e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&e.relatedTarget!=p.wptbActions.activeElem&&(WPTB_Helper.findAncestor(e.relatedTarget,"wptb-directlyhovered"),p.wptbActions.activeElem),(new s).leaveFromField(e,e.relatedTarget.parentNode.parentNode),e.target.activeElem.classList.remove("wptb-directlyhovered")});t.classList.remove("wptb-directlyhovered"),p.wptbActions.style.display="none",e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&(p.addActionField(1,e.relatedTarget.parentNode),p.setParameters(e.relatedTarget.parentNode))}},this.actionsRemove=function(){if(!p.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(p.wptbActions=e[0])}p.wptbActions&&p.wptbActions.parentNode.removeChild(p.wptbActions)},this.actionsHide=function(){if(!p.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(p.wptbActions=e[0])}p.wptbActions&&(p.wptbActions.style.opacity=0)}};!function(){var e=window.location.href;new RegExp("[?&]page=wptb-builder").exec(e)&&document.addEventListener("DOMContentLoaded",function(){var r=WPTB_Helper.detectMode();if(r){var l=new XMLHttpRequest,e=ajaxurl+"?action=get_table&id="+r;l.open("GET",e,!0),l.setRequestHeader("Content-type","application/x-www-form-urlencoded"),l.onreadystatechange=function(e){if(4!=this.readyState||200!=this.status);else{var t=JSON.parse(l.responseText);if(document.getElementById("wptb-setup-name").value=t[0],t[1]){var a=document.getElementsByClassName("wptb-table-setup")[0];a.appendChild(WPTB_Parser(t[1])),document.getElementsByTagName("body")[0],WPTB_Table();var n=document.querySelector(".wptb-preview-table");n&&(n.className.match(/wptb-element-((.+-)\d+)/i)||n.classList.add("wptb-element-main-table_setting-"+r),n.dataset.wptbTableContainerMaxWidth&&(a.style.maxWidth=n.dataset.wptbTableContainerMaxWidth+"px",n.tdDefaultWidth())),WPTB_Settings(),(new WPTB_TableStateSaveManager).tableStateSet()}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table"}},l.send(null)}else(new WPTB_TableStateSaveManager).tableStateSet();document.counter=new ElementCounters,document.select=new MultipleSelect;WPTB_Initializer();settings=WPTB_Settings()})}();var WPTB_Cell=function(e,n){if(!n){(n=document.createElement("td")).style.padding=jQuery("#wptb-table-padding-number").val()+"px";var t=jQuery("#wptb-table-inner-border-number").val();""!=t&&0!=parseInt(t)&&(n.style.border=t+"px solid "+jQuery("#wptb-table-border-color").val()),n.classList.add("wptb-droppable","wptb-cell")}n.draggable=!1,e&&(n.onclick=e),n.ondblclick=function(e){e.stopPropagation();var t=document.querySelector(".wptb-table-setup");if(t&&!t.classList.contains("wptb-preview-table-manage-cells")&&("0"!==e.target.dataset.yIndex||"1"!==t.dataset.wptbSortableTable)&&e.target==e.currentTarget){WPTB_Helper.wptbDocumentEventGenerate("table:cell:dblclick",e.target);var a=WPTB_Helper.newElementProxy("text");a=a.getDOMElement(),n.appendChild(a),WPTB_innerElementSet(a)}},WPTB_innerElementSet(n),WPTB_Helper.elementStartScript(n,"table_cell_setting");var o=n.getElementsByClassName("wptb-ph-element");if(0<o.length)for(var a=function(r){o[r].getDOMElement=function(){return o[r]},WPTB_innerElementSet(o[r]);var l=o[r].className.match(/wptb-element-((.+-)\d+)/i);l&&Array.isArray(l)&&function(){var e=l[1].split("-");o[r].kind=e[0],applyGenericItemSettings(o[r],l[1]);var a=o[r].getElementsByClassName("wptb-in-element");if(0<a.length)for(var t=function(e){var t={getDOMElement:function(){return a[e]}};applyGenericItemSettings(t)},n=0;n<a.length;n++)t(n)}()},r=0;r<o.length;r++)a(r);return this.getDOMElement=function(){return n},this.setCoords=function(e,t){var a=this.getDOMElement();a.dataset.yIndex=e,a.dataset.xIndex=t},this.getCoords=function(){var e,t=this.getDOMElement();return e.x=t.dataset.xIndex,e.y=t.dataset.yIndex,e},this.appendElement=function(e){getDOMElement().appendChild(e)},n.getCellDimensions=function(){var e=window.getComputedStyle(this,null),t=e.getPropertyValue("padding-left"),a=e.getPropertyValue("padding-right"),n=e.getPropertyValue("border-left-width"),r=e.getPropertyValue("border-right-width"),l=e.getPropertyValue("padding-top"),o=e.getPropertyValue("padding-bottom"),i=e.getPropertyValue("border-top-width"),s=e.getPropertyValue("border-bottom-width"),d=parseInt(this.offsetWidth,10)-parseInt(t,10)-parseInt(a,10),p=parseInt(this.offsetHeight,10)-parseInt(l,10)-parseInt(o,10),c=WPTB_Helper.findAncestor(this,"wptb-preview-table");if(c)if("collapse"===c.style.borderCollapse){d=d-parseInt(n,10)/2-parseInt(r,10)/2,p=p-parseInt(i,10)/2-parseInt(s,10)/2;var m=window.getComputedStyle(c,null),u=m.getPropertyValue("border-left-width"),b=m.getPropertyValue("border-right-width"),v=m.getPropertyValue("border-top-width"),w=m.getPropertyValue("border-bottom-width"),g=this.parentNode;if(g&&"tr"===g.nodeName.toLowerCase()){g.firstChild&&g.firstChild.dataset.xIndex===this.dataset.xIndex&&parseInt(u,10)>parseInt(n,10)&&(d+=-(parseInt(u,10)-parseInt(n,10))/2),g.lastChild&&g.lastChild.dataset.xIndex===this.dataset.xIndex&&parseInt(b,10)>parseInt(r,10)&&(d+=-(parseInt(b,10)-parseInt(r,10))/2);var f=g.parentNode;f&&"body"===f.nodeName.toLowerCase()&&(f.firstChild&&f.firstChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(v,10)>parseInt(i,10)&&(p+=(parseInt(v,10)-parseInt(i,10))/2),f.lastChild&&f.lastChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(w,10)>parseInt(s,10)&&(p+=(parseInt(w,10)-parseInt(s,10))/2))}}else"separate"===c.style.borderCollapse&&(d=d-parseInt(n,10)-parseInt(r,10),p=p-parseInt(i,10)-parseInt(s,10));return{width:parseInt(d),height:parseInt(p)}},this};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_CutGlueTable={cutTableHorizontally:function(e,t){if(t&&t.rows[e])for(var a=0;a<e;a++)for(var n=t.rows[a].children,r=0;r<n.length;r++)if(1<n[r].rowSpan&&n[r].rowSpan>e-a){var l=n[r].rowSpan-e+a;n[r].rowSpan=e-a,n[r].dataset.sameCellBeforeDivision||(n[r].dataset.sameCellBeforeDivision="r"+a+"c"+r);var o=new WPTB_Cell(t.mark),i=n[r].getAttribute("style");o.getDOMElement().setAttribute("style",i),o.getDOMElement().colSpan=n[r].colSpan,o.getDOMElement().rowSpan=l,o.getDOMElement().dataset.sameCellBeforeDivision=n[r].dataset.sameCellBeforeDivision;for(var s=n[r].dataset.xIndex,d=parseInt(s)+parseInt(n[r].colSpan),p=void 0;!p&&d<t.maxCols;)p=t.rows[e].querySelector('[data-x-index="'+d+'"]'),d++;t.rows[e].insertBefore(o.getDOMElement(),p),t.recalculateIndexes()}},glueTableHorizontally:function(e){if(e){for(var t=[].concat(_toConsumableArray(e.getElementsByTagName("td"))),a=0;a<t.length;a++)if(t[a].hasAttribute("data-same-cell-before-division"))for(var n=t[a].dataset.sameCellBeforeDivision,r=e.querySelectorAll('[data-same-cell-before-division="'+n+'"]'),l=0;l<r.length;l++)if(r[l]&&r[l+1]&&r[l].parentNode&&r[l+1].parentNode&&!r[l].parentNode.classList.contains("wptb-row-moving")&&!r[l+1].parentNode.classList.contains("wptb-row-moving")&&r[l+1].dataset.yIndex==parseInt(r[l].dataset.yIndex)+parseInt(r[l].rowSpan)){r[l].rowSpan+=r[l+1].rowSpan;for(var o=[].concat(_toConsumableArray(r[l+1].children)),i=0;i<o.length;i++)r[l].appendChild(o[i]);r[l+1].parentNode.removeChild(r[l+1])}e.recalculateIndexes()}},cutTableVertically:function(e,t){for(var a=0;a<t.rows.length;a++){if(e<t.maxCols&&0!=e&&!t.rows[a].querySelector('[data-x-index="'+e+'"]'))for(var n=t.rows[a].children,r=void 0,l=n.length,o=void 0,i=void 0,s=void 0,d=void 0,p=0;p<l;p++)if(1<n[p].colSpan&&parseInt(n[p].dataset.xIndex)<e&&parseInt(n[p].dataset.xIndex)+parseInt(n[p].colSpan)>e){r=new WPTB_Cell(t.mark),i=n[p].rowSpan,s=n[p].colSpan,n[p].colSpan=e-n[p].dataset.xIndex,d=s-n[p].colSpan,n[p].dataset.sameCellBeforeDivision||(n[p].dataset.sameCellBeforeDivision="r"+a+"c"+p);var c=n[p].getAttribute("style");r.getDOMElement().setAttribute("style",c);var m=t.querySelector('[data-x-index="'+e+'"]');m&&(r.getDOMElement().style.width=m.style.width);var u=t.querySelector('[data-y-index="'+a+'"]');u&&(r.getDOMElement().style.height=u.style.height),o=n[p+1]?n[p+1]:null,t.rows[a].insertBefore(r.getDOMElement(),o),r.getDOMElement().colSpan=d,r.getDOMElement().rowSpan=i,r.getDOMElement().dataset.sameCellBeforeDivision=n[p].dataset.sameCellBeforeDivision,a+=i-1;break}t.recalculateIndexes()}},glueTableVertically:function(e){if(e){for(var t=[].concat(_toConsumableArray(e.getElementsByTagName("td"))),a=0;a<t.length;a++)if(t[a].hasAttribute("data-same-cell-before-division"))for(var n=t[a].dataset.sameCellBeforeDivision,r=[].concat(_toConsumableArray(e.querySelectorAll('[data-same-cell-before-division="'+n+'"]'))),l=null,o=0;o<r.length;o++)if(r[o]&&r[o+1]&&!r[o].classList.contains("wptb-column-moving")&&!r[o+1].classList.contains("wptb-column-moving")&&r[o+1].dataset.xIndex==parseInt(r[o].dataset.xIndex)+parseInt(r[o].colSpan)){null==l&&(l=o),r[l].colSpan+=r[o+1].colSpan;for(var i=[].concat(_toConsumableArray(r[o+1].children)),s=0;s<i.length;s++)r[l].appendChild(i[s]);r[o+1].parentNode.removeChild(r[o+1])}e.recalculateIndexes()}}},WPTB_DropHandle=function(i,e){var t=2<arguments.length&&void 0!==arguments[2]&&arguments[2],s=void 0,d=void 0,a=void 0,n=void 0,r=void 0,l=void 0;function o(e){return e+"px"}if("td_relative"===WPTB_Helper.getDragRelativeType()){var p=document.querySelector(".wptb-cell-related-drop-handle");if(t&&p)return void(p.style.display="none");if(null===p){var c=document.createRange();c.setStart(document.body,0);var m=c.createContextualFragment('<div class="wptb-cell-related-drop-handle">Add to cell</div>').children[0];document.body.appendChild(m),p=m.children[0]}var u=WPTB_Helper.getParentOfType("td",i).getBoundingClientRect(),b=u.top,v=u.left,w=u.width,g=u.height;if(!p)return;return p.style.display="flex",p.style.top=o(b),p.style.width=o(w),p.style.height=o(g),void(p.style.left=o(v))}if(0==document.getElementsByClassName("wptb-drop-handle").length){(s=document.createElement("div")).classList.add("wptb-drop-handle"),(d=document.createElement("div")).classList.add("wptb-drop-border-marker"),a=document.createElement("div"),n=document.createElement("div"),r=document.createElement("div"),l=document.createElement("div"),a.classList.add("wptb-drop-border-marker-top"),n.classList.add("wptb-drop-border-marker-right"),r.classList.add("wptb-drop-border-marker-bottom"),l.classList.add("wptb-drop-border-marker-left"),d.appendChild(a),d.appendChild(n),d.appendChild(r),d.appendChild(l);var f=document.getElementsByTagName("body");0<f.length&&(f[0].appendChild(s),f[0].appendChild(d)),s.ondragenter=function(){if(e.target.classList.contains("wptb-empty"))return e.preventDefault(),!1},s.ondragover=function(e){e.preventDefault()},s.ondragleave=function(){},s.ondrop=function(e){e.preventDefault();var t=void 0;e.dataTransfer.getData("wptbElement")?t=(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():((t=document.getElementsByClassName(e.dataTransfer.getData("node"))[0]).classList.remove("wptb-moving-mode"),t.classList.remove("wptb-moving-into-same-elem"),t.wptbMovingMode=1);var a=void 0;if("Drop Here"==s.dataset.text)"td"==(i=s.getDOMParentElement()).nodeName.toLowerCase()&&((a=s.getDOMParentElement()).appendChild(t),WPTB_Helper.wptbDocumentEventGenerate("element:mounted:dom",t));else{var n=s.getDOMParentElement();if(a=n.parentNode,"Above Element"==s.dataset.text)a.insertBefore(t,n),WPTB_Helper.wptbDocumentEventGenerate("element:mounted:dom",t);else if("Below Element"==s.dataset.text){var r=n.nextSibling;a.insertBefore(t,r),WPTB_Helper.wptbDocumentEventGenerate("element:mounted:dom",t)}}var l=a.parentNode;if(WPTB_Helper.rowIsTop(l)){var o=WPTB_Helper.findAncestor(l,"wptb-preview-table");o.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(o)}(s.style.display="none",d.style.display="none",WPTB_innerElementSet(t),t.classList.contains("wptb-image-container")&&1!=t.wptbMovingMode)||((new WPTB_TableStateSaveManager).tableStateSet(),t.wptbMovingMode)},document.querySelector(".wptb-container").onscroll=function(){s.style.display="none",d.style.display="none"}}else s=document.getElementsByClassName("wptb-drop-handle")[0],d=document.getElementsByClassName("wptb-drop-border-marker")[0];if(!(i&&"td"==i.nodeName.toLowerCase()&&0!=i.getElementsByClassName("wptb-ph-element").length||i&&"td"==i.nodeName.toLowerCase()&&i.classList.contains("wptb-empty"))){var h=void 0;if("td"==i.localName?h=i.parentNode:"div"==i.localName&&i.classList.contains("wptb-ph-element")&&(h=i.parentNode.parentNode),WPTB_Helper.rowIsTop(h))if(WPTB_Helper.findAncestor(h,"wptb-preview-table").classList.contains("wptb-table-preview-head")){for(var y=e.dataTransfer.types,S=!1,T=0;T<y.length;T++){var C=y[T].match(/wptbelindic-([a-z]+)/i);if(C&&"text"!=C[1]){S=!0;break}}if(S)return}s.style.width=i.offsetWidth+"px";var B=i.offsetHeight,E=i.getBoundingClientRect(),_=parseFloat(E.left),A=void 0;if(s.style.left=_+"px",-1!=e.dataTransfer.types.indexOf("wptb-moving-mode")){var x=document.getElementsByClassName("wptb-moving-mode")[0];i==x?(s.classList.add("wptb-moving-into-same-elem"),d.classList.add("wptb-moving-into-same-elem")):(s.classList.remove("wptb-moving-into-same-elem"),d.classList.remove("wptb-moving-into-same-elem"))}if(s.getDOMParentElement=function(){return i},s.style.display="block",d.style.display="block","td"!=i.nodeName.toLowerCase()){var P=null==e.offsetY?e.layerY:e.offsetY;A=parseFloat(E.top)-parseFloat(11),s.dataset.text="Above Element",B/2<P&&(A=parseFloat(E.top)+B-1,s.dataset.text="Below Element")}else s.dataset.text="Drop Here",A=parseFloat(E.top)+B/2-5;s.style.top=A+"px",d.style.top=E.top+"px",d.style.left=E.left+"px",(a=d.querySelector(".wptb-drop-border-marker-top")).style.width=parseFloat(i.offsetWidth)-parseFloat(1)+"px",(n=d.querySelector(".wptb-drop-border-marker-right")).style.height=parseFloat(E.bottom)-parseFloat(E.top)-1+"px",n.style.left=a.style.width,(r=d.querySelector(".wptb-drop-border-marker-bottom")).style.width=a.style.width,r.style.top=n.style.height,(l=d.querySelector(".wptb-drop-border-marker-left")).style.height=n.style.height}},ElementCounters=function(){var t=[];return t.text=0,t.image=0,t.list=0,t.button=0,this.increment=function(e){e in t&&t[e]++},this.nextIndex=function(e){if(e in t)return t[e]+1},this},WPTB_ElementObject=function(e){var t=void 0,a=void 0,n=void 0;if(e.elemProt){(t=e.elemProt.cloneNode(!0)).classList.remove("wptb-directlyhovered");var r=e.elemProt.className.match(/wptb-element-((.+-)\d+)/i);r&&Array.isArray(r)&&(a=r[1]),n=!0,e.tinyMceClear&&(t=WPTB_Helper.elementClearFromTinyMce(t))}else{a=void 0,n=!1,(t=document.createElement("div")).classList.add("wptb-"+e.kind+"-container","wptb-ph-element");var l="wptb-"+e.kind+"-content",o=wp.template(l);e.node=t;var i=o(e);i=i.replace(/\r|\n|\t/g,"").trim(),t.innerHTML=i}var s=t.querySelectorAll(".wptb-in-element");if(0<s.length)for(var d=function(e){var t={getDOMElement:function(){return s[e]}};applyGenericItemSettings(t)},p=0;p<s.length;p++)d(p);return window.addEventListener("item:onmouseenter",function(e){},!1),this.kind=e.kind,this.getDOMElement=function(){return t},applyGenericItemSettings(this,a,n),this},WPTB_ElementOptions=function(e,t,a){e.getDOMElement().addEventListener("click",function(){WPTB_Helper.elementOptionsSet(e.kind,this)},{capture:!0})},WPTB_HeaderToolbox=function(e){var a=this;this.wrapperQuery=e,this.element=document.querySelector(e),this.topMargin=2;return{init:function(){var e;(e=a.element.querySelector('[data-button-type="table_settings_menu"]'))&&e.addEventListener("click",function(){WPTB_Helper.activateSection("manage_cells")}),document.addEventListener("wptb:table:generated",function(){a.element.style.display="unset";var e=a.element.getBoundingClientRect().width;a.element.style.left="calc( 50% - "+e/2+"px)",document.addEventListener("wptbSectionChanged",function(e){var t=e.detail;!function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=a.element.getBoundingClientRect().height;e&&(t=0),a.element.style.top="calc( 100% - "+(t+a.topMargin)+"px)"}("manage_cells"!==t&&"table_responsive_menu"!==t&&"cell_settings"!==t)})})}}};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Helper={hexToRgb:function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?"rgb("+parseInt(t[1],16)+","+parseInt(t[2],16)+","+parseInt(t[3],16)+")":null},rgbToHex:function(e){if(e){if(WPTB_Helper.isHex(e))return e;var t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?((?:[0-9]*[.])?[0-9]+)[\s+]?\)/i);return t&&5===t.length?"#"+("0"+Math.round(255*parseFloat(t[4],10)).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[1],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[2],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[3],10).toString(16).toUpperCase()).slice(-2):(t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===t.length?"#"+("0"+parseInt(t[1],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[2],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[3],10).toString(16).toUpperCase()).slice(-2):""}return""},isHex:function(e){return new RegExp("^#(?:[A-Fa-f0-9]{3}){1,2}$").test(e)},getElementIcon:function(e){location.protocol,location.hostname;var t=document.createElement("img");return t.src=e,t},elementDragEndClear:function(){var e=document.getElementsByClassName("wptb-moving-mode");if(0<e.length)for(var t=0;t<e.length;t++)e[t].classList.remove("wptb-moving-mode");var a=document.getElementsByClassName("wptb-drop-handle");if(0<a.length)for(var n=0;n<a.length;n++)a[n].style.display="none";var r=document.getElementsByClassName("wptb-drop-border-marker");if(0<r.length)for(var l=0;l<r.length;l++)r[l].style.display="none"},linkHttpCheckChange:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1];if(e){if(e.match(/^(javascript:)(.+)$/))return e;if(e.match(/^\/([\S]+)$/)){if(t){var a=document.location.origin;return a.match(/^(.+)\/$/)&&(a=a.slice(-1)),""+a+e}return e}if(-1!=e.indexOf("http://")||-1!=e.indexOf("https://"))return e;var n=e.split("/"),r=void 0;return Array.isArray(n)&&0<n.length&&(r=n[n.length-1]),document.location.protocol+"//"+r}return""},dataTitleColumnSet:function(e){},findAncestor:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},rowIsTop:function(e){return e.parentNode.children[0]==e},getSelectionText:function(){return window.getSelection?window.getSelection().toString():document.selection.createRange().text},elementOptionsPanelClear:function(){var e=document.getElementById("element-options-group");e&&(e.innerHTML="")},wpColorPickerCheckChangeForTableStateSaving:function(e){if("external"==e.originalEvent.type)(new WPTB_TableStateSaveManager).tableStateSet();else if(WPTB_Helper.findAncestor(e.target,"wp-picker-container")&&("square"==e.originalEvent.type||"strip"==e.originalEvent.type)){var t=document.getElementsByTagName("body")[0];t.removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1),t.addEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)}},irisStripMouseUpStateSaveManager:function(){(new WPTB_TableStateSaveManager).tableStateSet(),document.getElementsByTagName("body")[0].removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)},wpColorPickerClear:function(e,t){var a=void 0;t?(a=[document.getElementById(e)]).length=1:a=document.getElementsByClassName(e);for(var n=0;n<a.length;n++){var r=WPTB_Helper.findAncestor(a[n],"wp-picker-container");if(r){var l=r.parentNode;l.removeChild(r);var o=document.createElement("input");t?o.setAttribute("id",e):o.classList.add("wptb-element-property",e),o.value="",l.appendChild(o)}}},detectMode:function(){var e=window.location.href,t=new RegExp("[?&]table(=([^&#]*)|&|#|$)").exec(e);return!!t&&(t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"")},getTableId:function(){var e=WPTB_Helper.detectMode();return e||(e="startedid-0"),e},getColumnWidth:function(e,t){for(var a=t.dataset.xIndex,n=e.querySelectorAll('[data-x-index="'+a+'"]'),r=t.getCellDimensions().width,l=0;l<n.length;l++)r>n[l].getCellDimensions().width&&(r=n[l].getCellDimensions().width);return r},getRowHeight:function(e,t){for(var a=t.dataset.yIndex,n=e.querySelectorAll('[data-y-index="'+a+'"]'),r=t.getCellDimensions().height,l=0;l<n.length;l++)r>n[l].getCellDimensions().height&&(r=n[l].getCellDimensions().height);return r},newElementProxy:function(e){if(e)return new WPTB_ElementObject({kind:e})},wpColorPickerChange:function(e,t){var a=void 0;a=t?t.color.toString():"";var n,r,l,o=WPTB_Helper.findAncestor(e.target,"wp-picker-input-wrap").getElementsByClassName("wptb-color-picker")[0];r=(n=o.dataset.element.match(/wptb-options-(.+)-(\d+)/i))[1],l=n[2];var i=document.getElementsByClassName("wptb-element-"+r+"-"+l)[0];if("button"==r)"button-text-color"==o.dataset.type?i.getElementsByClassName("wptb-button")[0].style.color=a:i.getElementsByClassName("wptb-button")[0].style.backgroundColor=a;else if("list"==r){var s=i.querySelectorAll("p");if(0<s.length)for(var d=0;d<s.length;d++)s[d].style.color=a}else if("star_rating"==r){if("star-color"==o.dataset.type)for(var p=i.querySelectorAll("li"),c=0;c<p.length;c++)for(var m=p[c].getElementsByTagName("span"),u=0;u<m.length;u++)m[u].style.fill=a;else if("numeral-rating-color"==o.dataset.type){i.querySelector(".wptb-number-rating").style.color=a}}else i.style.color=a},numberImputSize:function(e,t,a){e.onkeydown=function(){var e=this.value;0==(e=String(e))[0]?this.value="":(e=e.substring(0,t),this.value=e)},e.onkeyup=function(){var e=this.value;parseInt(e,10)>parseInt(a,10)&&(this.value=a),(new WPTB_TableStateSaveManager).tableStateSet()}},ucfirst:function(e){return e.charAt(0).toUpperCase()+e.slice(1)},wptbDocumentEventGenerate:function(e,t,a){if(e&&t){a||(a=!0);var n=new CustomEvent(e,{detail:a,bubbles:!0});t.dispatchEvent(n)}},elementStartScript:function(e,t){if(!t){var a=e.className.match(/wptb-element-(.+)-(\d+)/i);a&&Array.isArray(a)&&(t=a[1])}t&&t in WPTB_ElementsScriptsLauncher&&WPTB_ElementsScriptsLauncher[t](e)},deleteEventHandlers:function(e){if(e){jQuery(e).off();var t=e.children;if(t)for(var a=0;a<t.length;a++)WPTB_Helper.deleteEventHandlers(t[a])}},replaceAll:function(e,t,a){return e.split(t).join(a)},elementClearFromTinyMce:function(e){var t=e.querySelectorAll(".mce-content-body");if(0<t.length)for(var a=0;a<t.length;a++)t[a].classList.remove("mce-content-body");var n=e.querySelectorAll("[data-mce-style]");if(0<n.length)for(var r=0;r<n.length;r++)n[r].removeAttribute("data-mce-style");var l=e.querySelectorAll(".mce-edit-focus");if(0<l.length)for(var o=0;o<l.length;o++)l[o].classList.remove("mce-edit-focus");var i=e.querySelectorAll("[contenteditable]");if(0<i.length)for(var s=0;s<i.length;s++)i[s].removeAttribute("contenteditable");var d=e.querySelectorAll("[spellcheck]");if(0<d.length)for(var p=0;p<d.length;p++)d[p].removeAttribute("spellcheck");var c=e.querySelectorAll("[id^=mce_]");if(0<c.length)for(var m=0;m<c.length;m++)c[m].removeAttribute("id");return e},elementOptionContainerCustomClassSet:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option");a&&a.classList.add(t)}},elementOptionContainerAdditionalStyles:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option"),n=t.split(";");if(a&&n){var r=function(e,t){e&&(containerStyleStrArr=e.split(":"),containerStyleStrArr&&Array.isArray(containerStyleStrArr)&&(t.style[containerStyleStrArr[0]]=containerStyleStrArr[1]))};if(n&&Array.isArray(n))for(var l=0;l<n.length;l++)n[l]&&r(n[l],a);else r(n,a)}}},controlsInclude:function(i,s){var d=2<arguments.length&&void 0!==arguments[2]&&arguments[2];i&&"object"===(void 0===i?"undefined":_typeof(i))&&"function"==typeof s&&i.addEventListener("element:controls:active",function(){i.hasOwnProperty("controlConnectFunctionsName")&&Array.isArray(i.controlConnectFunctionsName)&&-1!=i.controlConnectFunctionsName.indexOf(s.name)||function(){var e=i.className.match(/wptb-element-(.+)-(\d+)/i),a=void 0;if(e&&Array.isArray(e)&&(a=e[1]),a){var t=i.optionsGroupIds;if(t&&Array.isArray(t))for(var n=0;n<t.length;n++){var r=t[n],l=document.getElementById(r).querySelectorAll(".wptb-element-property");(l=[].concat(_toConsumableArray(l))).map(function(e){var t=new RegExp("wptb-el-"+a+"-(\\d+)-([a-zA-Z0-9_-]+)","i"),l=e.className.match(t);if(l&&Array.isArray(l)){var o=l[0];i.addEventListener("wptb-control:"+o,function(e){var t={},a=l[2],n=document.getElementsByClassName(o);if(0<n.length&&a){var r=WPTB_Helper.targetControlValueGet(n);t[a]=d?{targetValue:r,eventValue:e.detail.value}:r}s(t,i)},!1)}})}i.controlConnectFunctionsName||Array.isArray(i.controlConnectFunctionsName)||(i.controlConnectFunctionsName=[]),i.controlConnectFunctionsName.push(s.name)}}()},!1)},oneControlInclude:function(n,r,e){if(!n||"object"!==(void 0===n?"undefined":_typeof(n))||"function"!=typeof r||"string"!=typeof e)return!1;var t=n.className.match(/wptb-element-((.+-)\d+)/i);if(t&&Array.isArray(t)){var a="wptb-"+t[1].split("-")[0]+"-control-stack",l=wp.template(a)({container:"."+t[0]}),o=JSON.parse(l);if(o&&"object"===(void 0===o?"undefined":_typeof(o))&&o.hasOwnProperty(e)){var i="wptb-el-"+t[1]+"-"+e;n.addEventListener("wptb-control:"+i,function(e){var t=document.getElementsByClassName(i);if(0<t.length){var a=WPTB_Helper.targetControlValueGet(t);r(a,n)}},!1)}}},innerElementCopyIncludeHandler:function(a,n){a&&"object"===(void 0===a?"undefined":_typeof(a))&&"function"==typeof n&&a.addEventListener("wptb-inner-element:copy",function(e){var t=e.detail;t&&(WPTB_Helper.elementClearFromTinyMce(t),n(t,a))},!1)},valueDependOnControl:function(a,n,r,l,o){function i(e,a,t){"string"==typeof e&&(e=[e]);var n=a.match(/wptb-el-((.+-)\d+)-(.+)/i),r={},l=[];if(n&&Array.isArray(n)){var o=n[3],i=void 0,s={};Array.isArray(t)&&(Array.isArray(t[0])?t.map(function(e){s[e[0]]=[e[1],e[2]]}):s[t[0]]=[t[1],t[2]]),e.map(function(e){var t=a.replace(o,e);t&&0<(i=document.getElementsByClassName(t)).length&&i[0].type&&(r[e]=i[0].value,e in s&&("integer"===s[e][1]?r[e]=parseInt(r[e])+parseInt(s[e][0]):"string"===s[e][1]&&(r[e]=r[e]+s[e][0])),l.push(i[0]))})}return[r,l]}var e=i(a,n,r);WPTB_Helper.elementOptionsSet(l,o,e[0],n),Object.keys(e[0]).forEach(function(e){var t="wptb-el-"+o.className.match(/wptb-element-((.+-)\d+)/i)[1]+"-"+[e];o.addEventListener("wptb-control:"+t,function(e){var t=i(a,n,r);WPTB_Helper.elementOptionsSet(l,o,t[0],n)},!1)})},appearDependOnControl:function(e,t){if(Array.isArray(e)){var l=function(e,t){var a="block";Object.keys(t).map(function(e){Object.prototype.hasOwnProperty.call(t,e)&&!1===t[e][0]&&(a="none")}),e.style.display=a},o=function(e,t){var a=WPTB_Helper.targetControlValueGet(e);return!(!t[1]||!Array.isArray(t[1])||-1===t[1].indexOf(a))||(!t[2]||!Array.isArray(t[2])||-1===t[2].indexOf(a))&&void 0};if("string"==typeof e[0])e=[e];else if(!Array.isArray(e[0]))return;for(var a={},n=0;n<e.length;n++){var r=e[n],i=r[0],s=t.match(/wptb-el-((.+-)\d+)-(.+)/i);if(s&&Array.isArray(s)){var d=s[3],p=t.replace(d,i);if(p){var c=document.getElementsByClassName(p);0<c.length&&(a[r[0]]=[o(c,r),c,r])}}}var m=document.getElementsByClassName(t);if(0<m.length){m=m[0];var u=WPTB_Helper.findAncestor(m,"wptb-element-option");u&&(l(u,a),Object.keys(a).map(function(e){Object.prototype.hasOwnProperty.call(a,e)&&a[e][1][0].addEventListener("change",function(e,t,a){var n=t[a][2],r=t[a][1];t[n[0]]=[o(r,n),r,n],l(e,t)}.bind(null,u,a,e),!1)}))}}},controlsStateManager:function(e,t){var a=document.getElementsByClassName(e);if(0<a.length){var n=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(n&&Array.isArray(n)){if(document.querySelector(".wptb-element-"+n[1])){var r=void 0,l={},o=void 0;if(0==(r=document.getElementsByClassName("wptb-element-datas")).length||""==r[0].innerHTML){var i=WPTB_Helper.targetControlValueGet(a);l["data-"+e]=i,(o={})["tmpl-wptb-el-datas-"+n[1]]=l,o=JSON.stringify(o),0==r.length?((r=document.createElement("script")).setAttribute("type","text/html"),r.setAttribute("class","wptb-element-datas")):r=r[0],r.innerHTML=o,document.getElementsByTagName("body")[0].appendChild(r)}else if((o=(r=r[0]).innerHTML)&&(o=o.trim(),(o=JSON.parse(o))&&"object"===(void 0===o?"undefined":_typeof(o))))if(t){var s=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])||(o["tmpl-wptb-el-datas-"+n[1]]={}),o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]=s,r.innerHTML=JSON.stringify(o)}else if("tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-el-datas-"+n[1]]){if("tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-el-datas-"+n[1]])for(var d=0;d<a.length;d++)if("checkbox"==a[d].type){var p=void 0;"checked"==(p=a[d].name?o["tmpl-wptb-el-datas-"+n[1]]["data-"+e][a[d].name]:o["tmpl-wptb-el-datas-"+n[1]]["data-"+e])?a[d].checked=!0:"unchecked"==p&&(a[d].checked=!1)}else a[d].value=o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]}else{var c=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])||(o["tmpl-wptb-el-datas-"+n[1]]={}),o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]=c,r.innerHTML=JSON.stringify(o)}}}}},targetControlValueGet:function(e){for(var t=void 0,a=0;a<e.length;a++)"checkbox"==e[a].type&&e[a].name?(t||(t={}),1==e[a].checked?t[e[a].name]="checked":t[e[a].name]="unchecked"):"checkbox"==e[a].type?t=1==e[a].checked?"checked":"unchecked":e[a].type?t=e[a].value:e[a].dataset.alignmentValue&&e[a].classList.contains("selected")&&(t=e[a].dataset.alignmentValue);return t},elementControlsStateCopy:function(e,t){if(e&&t){var a=e.className.match(/wptb-element-((.+-)\d+)/i),n=t.className.match(/wptb-element-((.+-)\d+)/i);if(a&&Array.isArray(a)&&n&&Array.isArray(n)){var r=a[1],l=n[1],o=document.getElementsByClassName("wptb-element-datas");if(0<o.length){var i=(o=o[0]).innerHTML;if(i&&(i=i.trim(),(i=JSON.parse(i))&&"object"===(void 0===i?"undefined":_typeof(i)))){var s=i["tmpl-wptb-el-datas-"+r];if(s&&"object"===(void 0===s?"undefined":_typeof(s))){var d={};Object.keys(s).forEach(function(e){var t=s[e],a=e.replace(r,l);d[a]=t}),0<Object.keys(d).length&&(i["tmpl-wptb-el-datas-"+l]=d,i=JSON.stringify(i),o.innerHTML=i)}}}}}},elementControlsStateDelete:function(e,t){var a=e.className.match(/wptb-element-(.+)-(\d+)/i),n=document.getElementsByTagName("body")[0],r=n.getElementsByClassName("wptb-element-datas");if(a&&Array.isArray(a)&&0<r.length){var l=(r=r[0]).innerHTML;l&&(l=l.trim(),(l=JSON.parse(l))&&"object"===(void 0===l?"undefined":_typeof(l))&&"tmpl-wptb-el-datas-"+a[1]+"-"+a[2]in l&&(t?l["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]&&"object"===_typeof(l["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]])&&"data-wptb-el-"+a[1]+"-"+a[2]+"-"+t in l["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]&&delete l["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]["data-wptb-el-"+a[1]+"-"+a[2]+"-"+t]:delete l["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]],0==Object.keys(l).length?n.removeChild(r):(l=JSON.stringify(l),r.innerHTML=l)))}},elementOptionsSet:function(b,e,v,w){var g,f,t="wptb-"+b+"-control-stack",a=wp.template(t),n=void 0,h=void 0,y=void 0,l=void 0,S=e.className.match(/wptb-element-((.+-)\d+)/i);if(!S){var r=WPTB_Helper.detectMode();if(r||(r="startedid-0"),e.classList.contains("wptb-preview-table"))e.classList.add("wptb-element-main-table_setting-"+r);else if(e.classList.contains("wptb-cell")){document.querySelector(".wptb-element-table_cell_setting-"+e.dataset.xIndex+"-"+e.dataset.yIndex)||e.classList.add("wptb-element-table_cell_setting-"+e.dataset.xIndex+"-"+e.dataset.yIndex)}else e.classList.contains("wptb-responsive")&&(r.startsWith("wptb_team")&&(r="startedid-0"),e.classList.add("wptb-element-table_responsive_setting-"+r));S=e.className.match(/wptb-element-((.+-)\d+)/i)}n={container:"."+S[0]};var T=void 0;if(n.valueDependOnControl={},v&&Object.keys(v).forEach(function(e){n.valueDependOnControl[e]=v[e]}),w){var o=w.match(/wptb-el-((.+-)\d+)-(.+)/i);o&&Array.isArray(o)&&(T=o[3])}if(g=S[0],f=S[1],e.classList.contains("wptb-preview-table"));else if(e.classList.contains("wptb-cell"))this.activateSection("cell_settings");else if(e.classList.contains("wptb-responsive"))elementOptionsGroupId="table-responsive-group",wptbelementOptionClass="wptb-element-option";else{for(var i=document.getElementById("element-options-group").childNodes,s=0;s<i.length;s++)i[s].style&&(i[s].style.display="none");this.activateSection("options_group")}var d=a(n),C=JSON.parse(d),B=[],E={},_={},A={},x=[],P=[];if(