WP Table Builder – WordPress Table Plugin - Version 1.0.4

Version Description

  • NEW - Option to choose whether to make the table responsive or not.
  • FIX - Table Preview issue.
  • FIX - Preview button not working in the editor.
  • FIX - Words breaking for Text element.
Download this release

Release Info

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

Code changes from version 1.0.3 to 1.0.4

inc/admin/class-admin-menu.php CHANGED
@@ -34,7 +34,8 @@ class Admin_Menu {
34
  $id = wp_insert_post([
35
  'post_title' => '',
36
  'post_content' => '',
37
- 'post_type' => 'wptb-tables'
 
38
  ]);
39
  wp_die( json_encode( ['created',$id] ) );
40
  }
@@ -48,7 +49,8 @@ class Admin_Menu {
48
  $id = wp_insert_post([
49
  'post_title' => sanitize_text_field( $params->title ),
50
  'post_content' => '',
51
- 'post_type' => 'wptb-tables'
 
52
  ]);
53
  add_post_meta( $id, '_wptb_content_', $params->content );
54
  wp_die( json_encode( ['saved',$id] ) );
@@ -57,7 +59,8 @@ class Admin_Menu {
57
  'ID' => absint( $params->id ),
58
  'post_title' => sanitize_text_field( $params->title ),
59
  'post_content' => '',
60
- 'post_type' => 'wptb-tables'
 
61
  ]);
62
  update_post_meta( absint( $params->id ), '_wptb_content_', $params->content );
63
  wp_die( json_encode( ['edited',''] ) );
34
  $id = wp_insert_post([
35
  'post_title' => '',
36
  'post_content' => '',
37
+ 'post_type' => 'wptb-tables',
38
+ 'status' => 'draft'
39
  ]);
40
  wp_die( json_encode( ['created',$id] ) );
41
  }
49
  $id = wp_insert_post([
50
  'post_title' => sanitize_text_field( $params->title ),
51
  'post_content' => '',
52
+ 'post_type' => 'wptb-tables',
53
+ 'status' => 'draft'
54
  ]);
55
  add_post_meta( $id, '_wptb_content_', $params->content );
56
  wp_die( json_encode( ['saved',$id] ) );
59
  'ID' => absint( $params->id ),
60
  'post_title' => sanitize_text_field( $params->title ),
61
  'post_content' => '',
62
+ 'post_type' => 'wptb-tables',
63
+ 'status' => 'draft'
64
  ]);
65
  update_post_meta( absint( $params->id ), '_wptb_content_', $params->content );
66
  wp_die( json_encode( ['edited',''] ) );
inc/admin/class-tables.php CHANGED
@@ -80,7 +80,7 @@ class Tables {
80
  'wptb_tables_post_type_args',
81
  array(
82
  'label' => 'WPTB Tables',
83
- 'public' => false,
84
  'exclude_from_search' => true,
85
  'show_ui' => false,
86
  'show_in_admin_bar' => false,
80
  'wptb_tables_post_type_args',
81
  array(
82
  'label' => 'WPTB Tables',
83
+ 'public' => true,
84
  'exclude_from_search' => true,
85
  'show_ui' => false,
86
  'show_in_admin_bar' => false,
inc/admin/class-wptb-listing.php CHANGED
@@ -53,7 +53,8 @@ class WPTB_Listing extends \WP_List_Table{
53
  $id_new = wp_insert_post([
54
  'post_title' => sanitize_text_field( $post->post_title ),
55
  'post_content' => '',
56
- 'post_type' => 'wptb-tables'
 
57
  ]);
58
  $post_meta = get_post_meta( absint( $id ) , '_wptb_content_', true );
59
 
@@ -141,7 +142,8 @@ class WPTB_Listing extends \WP_List_Table{
141
 
142
  $wptb_preview_button_url = add_query_arg(
143
  array(
144
- 'wptb_table_preview' => absint( $item->ID ),
 
145
  ),
146
  home_url()
147
  );
53
  $id_new = wp_insert_post([
54
  'post_title' => sanitize_text_field( $post->post_title ),
55
  'post_content' => '',
56
+ 'post_type' => 'wptb-tables',
57
+ 'status' => 'draft'
58
  ]);
59
  $post_meta = get_post_meta( absint( $id ) , '_wptb_content_', true );
60
 
142
 
143
  $wptb_preview_button_url = add_query_arg(
144
  array(
145
+ 'post_type' => 'wptb-tables',
146
+ 'p' => absint( $item->ID ),
147
  ),
148
  home_url()
149
  );
inc/admin/css/admin.css CHANGED
@@ -50,38 +50,42 @@ body>img {
50
  .wptb-header {
51
  width: 100%;
52
  background-color: #f8f8f8;
53
- padding: 10px 0;
54
  border-bottom: 1px solid #ccc;
55
  position: fixed;
56
  z-index: 100101;
57
- display: flex;
58
  top: 0;
59
  left: 0;
 
60
  }
61
 
62
  .wptb-logo {
63
  padding-left: 30px;
 
 
64
  }
65
 
66
  .wptb-right {
67
- top: 0;
68
- right: 0;
69
- position: absolute;
70
- display: flex;
71
- display: -webkit-flex;
72
- align-items: center;
73
- justify-content: space-around;
74
  }
75
 
76
  #wptb-messaging-area {
77
  align-self: center;
78
  margin: 0 auto;
 
 
 
 
 
 
79
  }
80
 
81
  #wptb-messaging-area .wptb-message {
82
  border-radius: 4px;
83
  max-width: 410px;
84
  padding: 20px;
 
85
  }
86
 
87
  #wptb-messaging-area .wptb-success {
@@ -96,9 +100,12 @@ body>img {
96
  font-size: 15px;
97
  }
98
 
99
- .wptb-embed, .wptb-preview {
100
- display: inline-block;
 
101
  margin-right: 15px;
 
 
102
  }
103
 
104
  .wptb-button-grey {
@@ -114,7 +121,7 @@ body>img {
114
  }
115
 
116
  .wptb-button-grey:active,
117
- .wptb-button-grey:focus {
118
  outline: none !important;
119
  box-shadow: none !important;
120
  }
@@ -133,8 +140,10 @@ body>img {
133
  }
134
 
135
  .wptb-save {
136
- display: inline-block;
137
  margin-right: 25px;
 
 
138
  }
139
 
140
  .wptb-save-btn {
@@ -143,6 +152,7 @@ body>img {
143
  padding: 16px;
144
  font-size: 16px;
145
  text-decoration: none;
 
146
  }
147
 
148
  .wptb-save-btn:hover {
@@ -154,6 +164,7 @@ body>img {
154
  border-left: 1px solid #d3d3d3;
155
  display: inline-block;
156
  padding: 30px 26px 28px 26px;
 
157
  }
158
 
159
  .wptb-close:hover {
@@ -191,7 +202,7 @@ body>img {
191
  left: 50%;
192
  width: 50%;
193
  max-width: 630px;
194
- min-width: 320px;
195
  height: auto;
196
  z-index: 2000;
197
  visibility: hidden;
@@ -373,7 +384,8 @@ body>img {
373
  height: calc(100% - 89px);
374
  }
375
 
376
- #wptb-left-scroll-panel-curtain, #wptb-left-scroll-panel-cell-settings {
 
377
  position: absolute;
378
  top: 0;
379
  right: 0;
@@ -391,6 +403,7 @@ body>img {
391
  #wptb-left-scroll-panel-curtain.visible {
392
  display: block;
393
  }
 
394
  #wptb-left-scroll-panel-cell-settings.visible {
395
  display: block;
396
  }
@@ -711,7 +724,7 @@ input[type="range"]::-ms-thumb {
711
  transition: .25s;
712
  }
713
 
714
- .wptb-checkbox-button.wptb-column-width-fix-auto input:checked + i::after {
715
  -webkit-transform: translateX(50px);
716
  transform: translateX(50px);
717
  }
@@ -731,7 +744,8 @@ input[type="range"]::-ms-thumb {
731
  transform: translateX(0px);
732
  }
733
 
734
- .wptb-column-fixed, .wptb-column-auto {
 
735
  position: absolute;
736
  font-size: 15px;
737
  width: 50%;
@@ -749,6 +763,7 @@ input[type="range"]::-ms-thumb {
749
  right: 0;
750
  }
751
 
 
752
  /**
753
  * Element Section
754
  */
@@ -903,6 +918,7 @@ ul.wptb-tabs {
903
  border-bottom: 1px solid #d6d6d6;
904
  justify-content: center;
905
  text-align: center;
 
906
  }
907
 
908
  .wptb-name-setup span {
@@ -1115,7 +1131,7 @@ table.wptb-table {
1115
  font-size: 15px;
1116
  word-wrap: break-word;
1117
  overflow-wrap: break-word;
1118
- word-break: break-all;
1119
  }
1120
 
1121
  .wptb-preview-table ul {
@@ -1235,6 +1251,7 @@ table.wptb-table {
1235
  margin-bottom: 7px;
1236
  }
1237
 
 
1238
  /*
1239
  ** Image Style
1240
  */
@@ -1243,6 +1260,7 @@ table.wptb-table {
1243
  width: 100%;
1244
  }
1245
 
 
1246
  /*
1247
  ** Button Style
1248
  */
@@ -1838,12 +1856,85 @@ td[class*="wptb-fused-cell"] {
1838
  display: none;
1839
  }
1840
 
 
 
 
 
 
 
 
 
 
 
 
1841
  @media screen and (max-width: 970px) {
1842
  #wptb-setup-name {
1843
  width: 100%;
1844
  max-width: 420px;
1845
  margin-left: 0px;
1846
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1847
  }
1848
 
1849
  .wptb-cell img {
50
  .wptb-header {
51
  width: 100%;
52
  background-color: #f8f8f8;
53
+ padding: 0;
54
  border-bottom: 1px solid #ccc;
55
  position: fixed;
56
  z-index: 100101;
57
+ display: block;
58
  top: 0;
59
  left: 0;
60
+ text-align: center;
61
  }
62
 
63
  .wptb-logo {
64
  padding-left: 30px;
65
+ float: left;
66
+ margin-top: 17px;
67
  }
68
 
69
  .wptb-right {
70
+ float: right;
 
 
 
 
 
 
71
  }
72
 
73
  #wptb-messaging-area {
74
  align-self: center;
75
  margin: 0 auto;
76
+ display: inline-block;
77
+ margin-top: 15px;
78
+ margin-right: 15px;
79
+ position: absolute;
80
+ left: 0;
81
+ right: 0;
82
  }
83
 
84
  #wptb-messaging-area .wptb-message {
85
  border-radius: 4px;
86
  max-width: 410px;
87
  padding: 20px;
88
+ margin: auto;
89
  }
90
 
91
  #wptb-messaging-area .wptb-success {
100
  font-size: 15px;
101
  }
102
 
103
+ .wptb-embed,
104
+ .wptb-preview {
105
+ display: block;
106
  margin-right: 15px;
107
+ float: left;
108
+ margin-top: 18px;
109
  }
110
 
111
  .wptb-button-grey {
121
  }
122
 
123
  .wptb-button-grey:active,
124
+ .wptb-button-grey:focus {
125
  outline: none !important;
126
  box-shadow: none !important;
127
  }
140
  }
141
 
142
  .wptb-save {
143
+ display: block;
144
  margin-right: 25px;
145
+ float: left;
146
+ margin-top: 18px;
147
  }
148
 
149
  .wptb-save-btn {
152
  padding: 16px;
153
  font-size: 16px;
154
  text-decoration: none;
155
+ display: inline-block;
156
  }
157
 
158
  .wptb-save-btn:hover {
164
  border-left: 1px solid #d3d3d3;
165
  display: inline-block;
166
  padding: 30px 26px 28px 26px;
167
+ float: right;
168
  }
169
 
170
  .wptb-close:hover {
202
  left: 50%;
203
  width: 50%;
204
  max-width: 630px;
205
+ min-width: 300px;
206
  height: auto;
207
  z-index: 2000;
208
  visibility: hidden;
384
  height: calc(100% - 89px);
385
  }
386
 
387
+ #wptb-left-scroll-panel-curtain,
388
+ #wptb-left-scroll-panel-cell-settings {
389
  position: absolute;
390
  top: 0;
391
  right: 0;
403
  #wptb-left-scroll-panel-curtain.visible {
404
  display: block;
405
  }
406
+
407
  #wptb-left-scroll-panel-cell-settings.visible {
408
  display: block;
409
  }
724
  transition: .25s;
725
  }
726
 
727
+ .wptb-checkbox-button.wptb-column-width-fix-auto input:checked+i::after {
728
  -webkit-transform: translateX(50px);
729
  transform: translateX(50px);
730
  }
744
  transform: translateX(0px);
745
  }
746
 
747
+ .wptb-column-fixed,
748
+ .wptb-column-auto {
749
  position: absolute;
750
  font-size: 15px;
751
  width: 50%;
763
  right: 0;
764
  }
765
 
766
+
767
  /**
768
  * Element Section
769
  */
918
  border-bottom: 1px solid #d6d6d6;
919
  justify-content: center;
920
  text-align: center;
921
+ min-width: 300px;
922
  }
923
 
924
  .wptb-name-setup span {
1131
  font-size: 15px;
1132
  word-wrap: break-word;
1133
  overflow-wrap: break-word;
1134
+ word-break: break-word;
1135
  }
1136
 
1137
  .wptb-preview-table ul {
1251
  margin-bottom: 7px;
1252
  }
1253
 
1254
+
1255
  /*
1256
  ** Image Style
1257
  */
1260
  width: 100%;
1261
  }
1262
 
1263
+
1264
  /*
1265
  ** Button Style
1266
  */
1856
  display: none;
1857
  }
1858
 
1859
+ @media screen and (max-width: 1375px) {
1860
+ #wptb-messaging-area {
1861
+ position: relative;
1862
+ }
1863
+ #wptb-messaging-area .wptb-message {
1864
+ max-width: 400px;
1865
+ padding: 20px 5px;
1866
+ box-sizing: border-box;
1867
+ }
1868
+ }
1869
+
1870
  @media screen and (max-width: 970px) {
1871
  #wptb-setup-name {
1872
  width: 100%;
1873
  max-width: 420px;
1874
  margin-left: 0px;
1875
  }
1876
+ #wptb-messaging-area {
1877
+ position: absolute;
1878
+ top: 190px;
1879
+ left: 30px;
1880
+ right: 30px;
1881
+ margin: auto;
1882
+ }
1883
+ #wptb-messaging-area .wptb-message {
1884
+ padding: 50px 20px;
1885
+ }
1886
+ }
1887
+
1888
+ @media screen and (max-width: 600px) {
1889
+ .wptb-right {
1890
+ width: 100%;
1891
+ text-align: justify;
1892
+ }
1893
+ .wptb-embed,
1894
+ .wptb-preview,
1895
+ .wptb-save {
1896
+ display: inline-block;
1897
+ float: none;
1898
+ margin: 20px 20px auto;
1899
+ }
1900
+ .wptb-close {
1901
+ margin-top: 10px;
1902
+ margin-right: 10px;
1903
+ padding: 20px;
1904
+ border: none;
1905
+ }
1906
+ .wptb-right::after {
1907
+ content: "";
1908
+ width: 100%;
1909
+ display: inline-block;
1910
+ }
1911
+ .wptb-container {
1912
+ top: 172px;
1913
+ }
1914
+ }
1915
+
1916
+ @media screen and (max-width: 450px) {
1917
+ .wptb-embed,
1918
+ .wptb-preview,
1919
+ .wptb-save {
1920
+ width: 100%;
1921
+ margin: 15px 0px 0px;
1922
+ padding: 0px 15px;
1923
+ box-sizing: border-box;
1924
+ }
1925
+ .wptb-embed a,
1926
+ .wptb-preview a,
1927
+ .wptb-save a {
1928
+ width: 100%;
1929
+ text-align: center;
1930
+ box-sizing: border-box;
1931
+ }
1932
+ #wptb-messaging-area {
1933
+ top: 310px;
1934
+ }
1935
+ .wptb-container {
1936
+ top: 300px;
1937
+ }
1938
  }
1939
 
1940
  .wptb-cell img {
inc/admin/js/admin.js CHANGED
@@ -1419,6 +1419,7 @@ var WPTB_Helper = {
1419
  return txt;
1420
  },
1421
  settingsPanelClear: function settingsPanelClear() {
 
1422
  document.getElementById('wptb-top-row-as-header').checked = false;
1423
  document.getElementById('wptb-table-border-slider').value = 0;
1424
  document.getElementById('wptb-table-border-number').value = 0;
@@ -1753,6 +1754,16 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
1753
  }
1754
  });
1755
 
 
 
 
 
 
 
 
 
 
 
1756
  function tableTopRowAsHeadSavedSet(table) {
1757
  var wptbTopRowAsHeader = document.getElementById('wptb-top-row-as-header');
1758
 
@@ -2061,6 +2072,14 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
2061
  }
2062
  };
2063
 
 
 
 
 
 
 
 
 
2064
  function createMobileHeadForTable(table, thisEvent) {
2065
 
2066
  if (thisEvent.checked) {
@@ -2448,6 +2467,12 @@ var WPTB_Settings = function WPTB_Settings() {
2448
  shortcodePopupWindow.classList.remove('wptb-popup-show');
2449
  };
2450
 
 
 
 
 
 
 
2451
  document.getElementsByClassName('wptb-save-btn')[0].onclick = function () {
2452
  var bar = document.querySelector('.wptb-edit-bar');
2453
  if (bar && bar.classList.contains('visible')) {
@@ -2667,8 +2692,12 @@ var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
2667
  var wptbActions = innerElements[j].querySelectorAll('.wptb-actions');
2668
  var wptbActionsLength = wptbActions.length;
2669
  while (wptbActionsLength > 0) {
2670
- wptbActions[0].parentNode.removeChild(wptbActions[0]);
2671
- wptbActionsLength--;
 
 
 
 
2672
  }
2673
  }
2674
  }
@@ -3146,6 +3175,7 @@ var array = [],
3146
  table = document.createElement('table');
3147
  table.classList.add('wptb-preview-table');
3148
  table.dataset.reconstraction = 1;
 
3149
  //Add the data rows.
3150
  for (var i = 0; i < rows; i++) {
3151
 
@@ -3582,19 +3612,26 @@ var array = [],
3582
 
3583
  table.reconstraction = function () {
3584
  var tds = table.getElementsByTagName('td');
 
 
 
 
3585
  table.mergingСellsHorizontally = false;
3586
  table.mergingCellsVertically = false;
3587
  table.dataset.reconstraction = 1;
 
3588
  var forBreak = 0;
3589
  for (var _i9 = 0; _i9 < tds.length; _i9++) {
3590
  if (tds[_i9].colSpan > 1) {
3591
  table.dataset.reconstraction = 0;
 
3592
  table.mergingСellsHorizontally = true;
3593
  forBreak++;
3594
  }
3595
 
3596
  if (tds[_i9].rowSpan > 1) {
3597
  table.dataset.reconstraction = 0;
 
3598
  table.mergingCellsVertically = true;
3599
  forBreak++;
3600
  }
@@ -4170,6 +4207,10 @@ var array = [],
4170
  table.addRowHeight();
4171
  WPTB_Helper.dataTitleColumnSet(table);
4172
  undoSelect();
 
 
 
 
4173
  };
4174
 
4175
  /*
1419
  return txt;
1420
  },
1421
  settingsPanelClear: function settingsPanelClear() {
1422
+ document.getElementById('wptb-adaptive-table-checkbox').checked = false;
1423
  document.getElementById('wptb-top-row-as-header').checked = false;
1424
  document.getElementById('wptb-table-border-slider').value = 0;
1425
  document.getElementById('wptb-table-border-number').value = 0;
1754
  }
1755
  });
1756
 
1757
+ function tableAdaptiveForMobile(table) {
1758
+ var wptbAdaptiveTableCheckbox = document.getElementById('wptb-adaptive-table-checkbox');
1759
+ if (table && table.dataset.wptbAdaptiveTable) {
1760
+ wptbAdaptiveTableCheckbox.checked = true;
1761
+ } else {
1762
+ wptbAdaptiveTableCheckbox.checked = false;
1763
+ }
1764
+ }
1765
+ tableAdaptiveForMobile(table);
1766
+
1767
  function tableTopRowAsHeadSavedSet(table) {
1768
  var wptbTopRowAsHeader = document.getElementById('wptb-top-row-as-header');
1769
 
2072
  }
2073
  };
2074
 
2075
+ document.getElementById('wptb-adaptive-table-checkbox').onchange = function () {
2076
+ if (this.checked) {
2077
+ table.dataset.wptbAdaptiveTable = 1;
2078
+ } else {
2079
+ table.dataset.wptbAdaptiveTable = 0;
2080
+ }
2081
+ };
2082
+
2083
  function createMobileHeadForTable(table, thisEvent) {
2084
 
2085
  if (thisEvent.checked) {
2467
  shortcodePopupWindow.classList.remove('wptb-popup-show');
2468
  };
2469
 
2470
+ document.getElementsByClassName('wptb-preview-btn')[0].onclick = function (e) {
2471
+ if (this.classList.contains('wptb-button-disable')) {
2472
+ e.preventDefault();
2473
+ }
2474
+ };
2475
+
2476
  document.getElementsByClassName('wptb-save-btn')[0].onclick = function () {
2477
  var bar = document.querySelector('.wptb-edit-bar');
2478
  if (bar && bar.classList.contains('visible')) {
2692
  var wptbActions = innerElements[j].querySelectorAll('.wptb-actions');
2693
  var wptbActionsLength = wptbActions.length;
2694
  while (wptbActionsLength > 0) {
2695
+ if (wptbActions[0] && wptbActions[0].parentNode) {
2696
+ wptbActions[0].parentNode.removeChild(wptbActions[0]);
2697
+ wptbActionsLength--;
2698
+ } else {
2699
+ break;
2700
+ }
2701
  }
2702
  }
2703
  }
3175
  table = document.createElement('table');
3176
  table.classList.add('wptb-preview-table');
3177
  table.dataset.reconstraction = 1;
3178
+ table.dataset.wptbAdaptiveTable = 1;
3179
  //Add the data rows.
3180
  for (var i = 0; i < rows; i++) {
3181
 
3612
 
3613
  table.reconstraction = function () {
3614
  var tds = table.getElementsByTagName('td');
3615
+ var wptbAdaptiveTableChoseBlock = document.getElementsByClassName('wptb-adaptive-table-chose-block');
3616
+ if (wptbAdaptiveTableChoseBlock.length > 0) {
3617
+ wptbAdaptiveTableChoseBlock = wptbAdaptiveTableChoseBlock[0];
3618
+ }
3619
  table.mergingСellsHorizontally = false;
3620
  table.mergingCellsVertically = false;
3621
  table.dataset.reconstraction = 1;
3622
+ wptbAdaptiveTableChoseBlock.style.display = 'block';
3623
  var forBreak = 0;
3624
  for (var _i9 = 0; _i9 < tds.length; _i9++) {
3625
  if (tds[_i9].colSpan > 1) {
3626
  table.dataset.reconstraction = 0;
3627
+ wptbAdaptiveTableChoseBlock.style.display = 'none';
3628
  table.mergingСellsHorizontally = true;
3629
  forBreak++;
3630
  }
3631
 
3632
  if (tds[_i9].rowSpan > 1) {
3633
  table.dataset.reconstraction = 0;
3634
+ wptbAdaptiveTableChoseBlock.style.display = 'none';
3635
  table.mergingCellsVertically = true;
3636
  forBreak++;
3637
  }
4207
  table.addRowHeight();
4208
  WPTB_Helper.dataTitleColumnSet(table);
4209
  undoSelect();
4210
+ var wptbLeftScrollPanelCellSetting = document.getElementById('wptb-left-scroll-panel-cell-settings');
4211
+ if (wptbLeftScrollPanelCellSetting) {
4212
+ wptbLeftScrollPanelCellSetting.classList.remove('visible');
4213
+ }
4214
  };
4215
 
4216
  /*
inc/admin/js/admin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["applyGenericItemSettings.js","wptb-builder.js","WPTB_Builder.js","WPTB_Button.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Image.js","WPTB_Initializer.js","WPTB_innerElementSet.js","WPTB_LeftPanel.js","WPTB_List.js","WPTB_ListItem.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Parser2.js","WPTB_Settings.js","WPTB_Space.js","WPTB_Stringifier.js","WPTB_Stringifier2.js","WPTB_Table.js","WPTB_Text.js"],"names":["applyGenericItemSettings","element","kindIndexProt","copy","node","getDOMElement","index","listItems","undefined","document","counter","nextIndex","kind","wptbElements","getElementsByClassName","elementIndexesArr","i","length","regex","RegExp","infArr","className","match","push","elementIndexMax","Math","max","split","onmouseenter","event","classList","add","btnDelete","createElement","btnCopy","btnMove","actions","draggable","onclick","act","parentNode","el","removeChild","thisRow","contains","table","WPTB_Helper","findAncestor","dataTitleColumnSet","td","target","temp","srcList","querySelectorAll","innerHTML","WPTB_List","insertBefore","nextSibling","WPTB_Text","childNodes","WPTB_Image","children","src","text","querySelector","WPTB_Button","WPTB_innerElementSet","parent","type","dragImagesArr","ondragstart","style","opacity","remove","dataTransfer","setDragImage","setData","a","e","preventDefault","buttonsTinyMceInit","tinyMCE","init","inline","plugins","dialog_type","theme","menubar","fixed_toolbar_container","paste_as_text","toolbar","setup","ed","on","row","init_instance_callback","editor","window","currentEditor","totalWidth","offsetWidth","getElementById","scrollTop","bodyElement","display","position","right","top","listItemsTinyMceInit","appendChild","onmouseleave","iter","observer","MutationObserver","mutations","config","attributes","attributeFilter","observe","node_wptb_element_kind_num","WPTB_ElementOptions","increment","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","JSON","parse","responseText","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","WPTB_LeftPanel","WPTB_Settings","send","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","addEventListener","DOMElementProt","DOMElement","elButton","el_B","el_BDiv","wptbElementMutch","Array","isArray","attributesContainer","setAttribute","name","wptbButtonWrapper","wptbButtonWrapAttributes","wptbButton","wptbButtonAttributes","WPTB_Cell","callback","highlightRow","parentRow","columnCount","parseInt","tds","getElementsByTagName","classToAdd","ttd","highlightColumn","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","wptbPhElement","wptbSpaceBetween","j","WPTB_Space","wptbElementTypeClass","wptbTypeElementArr","wptbListItems","WPTB_ListItem","setCoords","y","x","dataset","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","parseFloat","height","offsetHeight","WPTB_DropHandle","thisElem","newElementProxy","includes","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","body","ondragenter","ondragover","ondragleave","ondrop","getData","getDOMParentElement","nodeName","toLowerCase","innerElement","innerElementNext","wptbContainer","onscroll","localName","indics","types","notDragEnter","coordinatesElement","getBoundingClientRect","left","Number","indexOf","elementDrag","offsetY","layerY","bottom","priv","key","elemIdClass","prop","cloneNode","properties","affectedEl","wptbButtonA","wptbSize","b","buttonAlignment","justifyContent","buttonAlignmentSelect","selectOption","selectOptionVal","selected","buttonHref","getAttribute","buttonLinkTarget","buttonId","buttonHrefInput","buttonLinkTargetInput","buttonLinkTargetInputId","buttonLinkTargetInputLabel","buttotIdInput","checked","buttonTextColor","color","buttonColor","backgroundColor","buttonTextColorInput","buttonBackgroundColorInput","rgbToHex","elementsA","aTextAlign","textAlign","imageAlignmentSelect","imageLinkHref","inputImageLink","imageLinkTarget","imageLinkTargetInput","imageLinkTargetInputId","imageLinkTargetInputLabel","img","imgWidth","imageWidthInputRange","imageWidthInputNumber","imgAlternativeText","imageAlternativeTextInput","elementFontSize","fontSize","elementTextColor","textFontSizeInputRange","textFontSizeInputNumber","textColorInput","elementList","elementListColor","listColorInput","elementListItem","listItemP","listItemPClasses","elementListClassSelect","listIconSelectLabel","nodeType","listIconSelectLabelId","elementListStyleTypeSelect","elementListItemContent","listItemPTextAlignArr","p","listItemPTextAlignLeftCount","listItemPTextAlignCenterCount","listItemPTextAlignRightCount","elementListAlignmentSelect","maxListItemTAlLeftC","optionsClass","buttons","size","n_Class","num","optionControls","wpColorPicker","change","ui","classe","ps","number","toString","slider","oninput","onchange","alt","href","linkHttpCheckChange","rel","removeAttribute","jc","id","parentNodeSettingItem","listItem","hexToRgb","hex","result","exec","rgb","slice","getDragImageCustom","hostName","location","protocol","hostname","image","button","list","listItemsRecalculateIndex","ulElem","par","listStyleTypeIndex","article","keyCode","duplicate","firstChild","innerText","pText","replace","trim","selectedText","getSelectionText","link","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","contentsForHeader","tdElements","textContent","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","txt","getSelection","selection","createRange","settingsPanelClear","wpColorPickerClear","inputId","input","wpPickerContainer","newInput","url","results","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","elImage","anchor","file_frame","wp","media","frames","title","multiple","attachment","state","get","first","toJSON","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","columns","div","classId","stopPropagation","onmouseover","wptbElementButtons","wptbTdBgColorSavedSet","trNumber","tableRows","trBackgroundColor","wptbEvenRowBg","clear","tableHeader","tableTopRowAsHeadSavedSet","wptbTopRowAsHeader","tableBorderColorWidthSavedSet","tableBorderColor","borderColor","tableBorderColorInput","tableBorderWidth","borderWidth","wptbTableBorderWidthSlider","wptbTableBorderWidthNumber","tableTd","applyInnerBorder","innerBorderCheckInput","wptbApplyInnerBorder","wptbTableInnerBorderSlider","wptbTableInnerBorderNumber","tableCells","tableInnerborderNumber","addInnerBorderSize","borderStyle","addCellPadding","addInnerBorder","styles","wptbPreviewTable","marginBottom","addBorderSize","cellPaddingSavedSet","wptbTableCellSlider","wptbTableCellNumber","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","wptbTableBorderNumber","wptbTextfontSizeNumber","wptbImageWidthNumber","wptbTableColumnWidthNumber","wptbTableRowHeightNumber","tdDefaultWidth","wptbInnerBorderCheck","tableBorderColorSetArea","addColumnWidth","highlighted","addRowHeight","createMobileHeadForTable","thisEvent","wptbElement","toggleTableEditMode","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","wpcdFixedToolbar","hasAttribute","innerElements","el_L","item","wptbListItemReturn","divcontent","styleDot","listItemKeyListener","previous","action","content","html","setTimeout","append","selectedCells","multipleCellMode","activateMultipleSelectMode","deactivateMultipleSelectMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","code","columnTitleMobile","WPTB_Parser2","elementHtml","createTextNode","tagName","elems","effectAllowed","ondragend","shortcodePopupWindow","bar","wptb_admin_object","t","messagingArea","WPTB_Stringifier","outerHTML","messagingAreaText","params","security_code","rs","wptbId","stringify","data","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","elSpaceBetween","spaceBetween","t_space","spaceParent","alert","codeMain","tableColumns","minWidth","maxWidth","mceContentBodys","k","dataMceStyle","contentEditable","spellCheck","mceIds","wptbActions","wptbActionsLength","columnNameDivContainer","columnNameDiv","WPTB_Stringifier2","start","nodeValue","int_elem_arr","attributes_list","internal_elements","inter_elem","array","wptbTableSetup","maxAmountOfCells","maxAmountOfRows","mark","rowSpan","cs","colSpan","markedCells","noCells","singleCells","multipleCells","cellSettings","column","cellHighlighted","wptbTableColumnWidthSlider","tableColumnWidthAutoFixedCheckbox","wptbFixedWidth","wptbTableRowHeightSlider","tableRowHeightAutoFixedCheckbox","wptbFixedHeight","isSquare","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","string","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","apply","getActualPointsInRow","points","search","skipInCols","reconstraction","insertRow","wptb_preview_table","cellModeBackground","leftScrollPanelCurtain","leftScrollPanelCellSettings","wptbPreviewTableTds","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","z","cleaner","dataXIndex","tableTdsFor","colspan","widthIsSet","arrayTdsFromPreviousRow","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","tableFullStyleObj","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","head","cssForTdsWidthAutoOld","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","tableColumnHeightAutoFixedCheckbox","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","l","r","aux","from","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","call","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","pop","onresize","elText2","elP"],"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 listItems,\r\n copy;\r\n \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 } else if ( kindIndexProt && ! copy ) {\r\n index = kindIndexProt.split('-')[1];\r\n }\r\n \r\n node.onmouseenter = function (event) {\r\n this.classList.add('wptb-directlyhovered');\r\n let btnDelete = document.createElement( 'span' ),\r\n btnCopy = document.createElement( 'span' ),\r\n btnMove = document.createElement( 'span' ),\r\n actions = document.createElement( 'span' ), i;\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 btnMove.classList.add(\"dashicons\", \"dashicons-move\", 'wptb-move-action');\r\n btnMove.draggable = true;\r\n btnDelete.onclick = function (event) {\r\n let act = this.parentNode.parentNode,\r\n el = act.parentNode;\r\n el.removeChild(act);\r\n \r\n if( act.kind == 'text' ) {\r\n let thisRow = el.parentNode\r\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n \r\n };\r\n btnCopy.onclick = function (event) {\r\n let copy;\r\n if (element.kind == 'list') {\r\n var td = event.target.parentNode.parentNode.parentNode,\r\n temp = [],\r\n srcList = event.target.parentNode.parentNode.querySelectorAll('ul li .wptb-list-item-content');\r\n\r\n for (var i = 0; i < srcList.length; i++) {\r\n temp.push(srcList[i].innerHTML);\r\n }\r\n\r\n copy = new WPTB_List( temp, node );\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n } else if (element.kind == 'text') {\r\n var td = event.target.parentNode.parentNode.parentNode;\r\n copy = new WPTB_Text(event.target.parentNode.parentNode.childNodes[0].innerHTML, node);\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n } else if ( element.kind == 'image' ) {\r\n var td = event.target.parentNode.parentNode.parentNode;\r\n copy = new WPTB_Image( event.target.parentNode.parentNode.children[0].children[0].src, node );\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n } else {\r\n var td = event.target.parentNode.parentNode.parentNode,\r\n text = event.target.parentNode.parentNode.childNodes[0].querySelector( 'p' ).innerHTML;\r\n copy = new WPTB_Button( text, node );\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n }\r\n \r\n WPTB_innerElementSet( copy.getDOMElement() );\r\n };\r\n let parent = this,\r\n infArr,\r\n type;\r\n infArr = parent.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n type = infArr[1];\r\n let dragImagesArr = WPTB_Helper.dragImagesArr();\r\n btnMove.ondragstart = function (event) {\r\n this.parentNode.style.opacity = 0;\r\n parent.classList.remove( 'wptb-directlyhovered' );\r\n parent.classList.add( 'wptb-moving-mode' );\r\n \r\n event.dataTransfer.setDragImage( dragImagesArr[type], 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.parentNode;\r\n if( act.kind == 'text' ) {\r\n let thisRow = el.parentNode\r\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n };\r\n\r\n if (element.kind === 'button') {\r\n let a = node.querySelector( 'a' ),\r\n target = a.querySelector( 'div' );\r\n a.onclick = function( e ) {\r\n e.preventDefault();\r\n }\r\n WPTB_Helper.buttonsTinyMceInit( target );\r\n } else if (element.kind === 'text') {\r\n tinyMCE.init({\r\n target: node.childNodes[0],\r\n inline: true,\r\n plugins: \"link, paste\",\r\n dialog_type: \"modal\",\r\n theme: 'modern',\r\n menubar: false,\r\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\r\n paste_as_text: true,\r\n toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',\r\n setup : function( ed ) {\r\n ed.on( 'change', function(e) {\r\n let row = WPTB_Helper.findAncestor( node, 'wptb-row' );\r\n if( row.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n });\r\n },\r\n init_instance_callback: function (editor) {\r\n window.currentEditor = editor;\r\n //editor.fire('focus');\r\n editor.on('focus', function (e) {\r\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\r\n if (window.currentEditor &&\r\n document.getElementById('wptb_builder').scrollTop >= 55 &&\r\n window.currentEditor.bodyElement.style.display != 'none') {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\r\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\r\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\r\n } else {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\r\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\r\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\r\n }\r\n });\r\n }\r\n });\r\n \r\n } else {\r\n listItems = node.getElementsByClassName( 'wptb-list-item-content' );\r\n for ( let i = 0; i < listItems.length; i++ ) {\r\n WPTB_Helper.listItemsTinyMceInit( listItems[i] );\r\n }\r\n }\r\n\r\n actions.appendChild(btnMove);\r\n actions.appendChild(btnCopy);\r\n actions.appendChild(btnDelete);\r\n this.appendChild( actions );\r\n };\r\n\r\n node.onmouseleave = function ( event ) {\r\n this.classList.remove( 'wptb-directlyhovered' );\r\n let iter = 0;\r\n while( event.target.querySelector( '.wptb-actions' ) && iter < 5 ) {\r\n event.target.querySelector( '.wptb-actions' ).remove();\r\n iter++;\r\n }\r\n };\r\n \r\n // Change data-title-column if the title was changed\r\n if( element.kind == 'text' ) {\r\n var observer = new MutationObserver( function( mutations ) {\r\n let row = WPTB_Helper.findAncestor( node, 'wptb-row' );\r\n if( row.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n });\r\n var config = { attributes: true, attributeFilter: ['style'] };\r\n observer.observe( element.getDOMElement(), config );\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 new WPTB_ElementOptions( element, index, kindIndexProt );\r\n\r\n document.counter.increment(element.kind);\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 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 WPTB_Table();\r\n WPTB_LeftPanel();\r\n WPTB_Settings();\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 document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\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 document.addEventListener('DOMContentLoaded', WPTB_Builder);\r\n})();","var WPTB_Button = function( text, DOMElementProt ) {\r\n \r\n var DOMElement = document.createElement('div'),\r\n elButton = document.createElement('div'),\r\n el_B = document.createElement('a'),\r\n el_BDiv = document.createElement( 'div' ),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n\r\n DOMElement.classList.add('wptb-button-container', 'wptb-size-M', 'wptb-');\r\n elButton.classList.add('wptb-button-wrapper');\r\n el_BDiv.classList.add('wptb-button');\r\n el_BDiv.innerHTML = text != undefined ? text : 'Button Text';\r\n \r\n // Creation of a new button when copying to avoid errors when assigning new event handlers.\r\n if ( DOMElementProt ) {\r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n }; \r\n var attributesContainer = [...DOMElementProt.attributes];\r\n if ( attributesContainer.length > 0 ) {\r\n for( let i = 0; i < attributesContainer.length; i++ ) {\r\n DOMElement.setAttribute(attributesContainer[i].name, attributesContainer[i].value);\r\n } \r\n }\r\n \r\n var wptbButtonWrapper = DOMElementProt.querySelector( '.wptb-button-wrapper' );\r\n if ( wptbButtonWrapper ) {\r\n var wptbButtonWrapAttributes = [...wptbButtonWrapper.attributes];\r\n if ( wptbButtonWrapAttributes.length > 0 ) {\r\n for( let i = 0; i < wptbButtonWrapAttributes.length; i++ ) {\r\n if ( wptbButtonWrapAttributes[i].name == 'style') {\r\n elButton.setAttribute( wptbButtonWrapAttributes[i].name, wptbButtonWrapAttributes[i].value );\r\n }\r\n } \r\n }\r\n }\r\n \r\n var wptbButton = DOMElementProt.querySelector( 'a' );\r\n if ( wptbButton ) {\r\n var wptbButtonAttributes = [...wptbButton.attributes];\r\n if ( wptbButtonAttributes.length > 0 ) {\r\n for( let i = 0; i < wptbButtonAttributes.length; i++ ) {\r\n if ( wptbButtonAttributes[i].name == 'style' || \r\n wptbButtonAttributes[i].name == 'href' || \r\n wptbButtonAttributes[i].name == 'target' ) {\r\n el_B.setAttribute( wptbButtonAttributes[i].name, wptbButtonAttributes[i].value );\r\n }\r\n } \r\n }\r\n }\r\n }\r\n \r\n elButton.appendChild(el_B);\r\n el_B.appendChild( el_BDiv );\r\n DOMElement.appendChild(elButton);\r\n \r\n \r\n \r\n this.kind = 'button';\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n\r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n\r\n return this;\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 WPTB_innerElementSet( DOMElement );\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\r\n let wptbSpaceBetween = DOMElement.getElementsByClassName( 'wptb-space-between' );\r\n\r\n if ( wptbSpaceBetween.length > 0 ) {\r\n for( let j = 0; j < wptbSpaceBetween.length; j++ ) {\r\n WPTB_Space( wptbSpaceBetween[j] );\r\n }\r\n }\r\n \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 if ( wptbPhElement[i].kind == 'list' ) {\r\n let wptbListItems = wptbPhElement[i].getElementsByTagName( 'li' );\r\n if( wptbListItems.length > 0 ) {\r\n for ( let i = 0; i < wptbListItems.length; i++ ) {\r\n WPTB_ListItem( undefined, wptbListItems[i] );\r\n }\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 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 = parseFloat( this.offsetWidth, 10 ) - \r\n parseFloat( tdPaddingLeft, 10 ) - \r\n parseFloat( tdPaddingRight, 10 ) -\r\n parseFloat( tdBorderLeftWidth, 10 ) -\r\n parseFloat( tdBorderRightWidth, 10 );\r\n \r\n let height = parseFloat( this.offsetHeight, 10 ) - \r\n parseFloat( tdPaddingTop, 10 ) - \r\n parseFloat( tdPaddingBottom, 10 ) -\r\n parseFloat( tdBorderTopWidth, 10 ) -\r\n parseFloat( tdBorderBottomWidth, 10 );\r\n \r\n return {\r\n width: width, \r\n height: height\r\n };\r\n }\r\n\r\n return this;\r\n};","var WPTB_DropHandle = function (thisElem, e) {\r\n \r\n function newElementProxy(el) {\r\n if (el.includes('list')) {\r\n return new WPTB_List();\r\n } else if (el.includes('image')) {\r\n return new WPTB_Image();\r\n } else if (el.includes('text')) {\r\n return new WPTB_Text();\r\n } else if (el.includes('button')) {\r\n return new WPTB_Button();\r\n }\r\n }\r\n \r\n let wptbDropHandle,\r\n wptbDropBorderMarker;\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 let 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\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 = 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 }\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 }\r\n } else {\r\n let innerElement = wptbDropHandle.getDOMParentElement();\r\n td = innerElement.parentNode;\r\n \r\n if( wptbDropHandle.dataset.text == 'Abowe Element' ) {\r\n td.insertBefore( element, innerElement );\r\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\r\n let innerElementNext = innerElement.nextSibling;\r\n td.insertBefore( element, innerElementNext );\r\n }\r\n }\r\n \r\n let thisRow = td.parentNode\r\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\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 }\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 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 if( thisRow.classList.contains( 'wptb-table-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 wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\r\n let height = thisElem.offsetHeight,\r\n coordinatesElement = thisElem.getBoundingClientRect(),\r\n left = Number( 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 = Number( coordinatesElement.top ) - Number( 11 );\r\n wptbDropHandle.dataset.text = 'Abowe Element';\r\n if ( y > height/2 ) {\r\n top = Number( 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 = Number( 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 = ( Number( thisElem.offsetWidth ) - Number( 1 ) ) + 'px';\r\n\r\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\r\n wptbDropBorderMarkerRight.style.height = ( Number( coordinatesElement.bottom ) - Number( 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_ElementOptions = function ( element, index, kindIndexProt ) {\r\n\r\n var node = element.getDOMElement(), elemIdClass;\r\n\r\n prop = document.querySelector(\".wptb-\" + element.kind + \"-options-prototype\").cloneNode(true);\r\n prop.classList.remove(\"wptb-\" + element.kind + \"-options-prototype\"); // remove prototype from the class\r\n elemIdClass = 'wptb-options-' + element.kind + \"-\" + index;\r\n\r\n var properties = prop.getElementsByClassName('wptb-element-property');\r\n\r\n for (var i = 0; i < properties.length; i++) {\r\n properties[i].dataset.element = elemIdClass;\r\n }\r\n\r\n prop.classList.add(elemIdClass);\r\n document.getElementById(\"element-options-group\").appendChild(prop);\r\n \r\n if ( kindIndexProt ) {\r\n if ( element.kind == 'button' ) {\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt )[0],\r\n wptbButtonWrapper,\r\n wptbButtonA,\r\n wptbButton,\r\n wptbSize;\r\n \r\n if ( affectedEl ) {\r\n wptbSize = affectedEl.className.match(/wptb-size-([a-z]+)/i);\r\n }\r\n \r\n if( wptbSize && Array.isArray( wptbSize ) ) {\r\n var b = prop.getElementsByClassName('wptb-btn-size-btn');\r\n \r\n for ( var i = 0; i < b.length; i++ ) {\r\n b[i].classList.remove( 'selected' );\r\n \r\n if ( b[i].innerHTML == wptbSize[1] ) {\r\n b[i].classList.add( 'selected' );\r\n }\r\n }\r\n }\r\n \r\n if( affectedEl ) {\r\n wptbButtonWrapper = affectedEl.getElementsByClassName( 'wptb-button-wrapper' );\r\n \r\n wptbButtonA = affectedEl.getElementsByTagName( 'a' );\r\n \r\n wptbButton = affectedEl.getElementsByClassName( 'wptb-button' );\r\n }\r\n \r\n if ( wptbButtonWrapper ) {\r\n let buttonAlignment = wptbButtonWrapper[0].style.justifyContent,\r\n buttonAlignmentSelect = prop.querySelector( 'select[data-type=\"button-alignment\"]' ),\r\n selectOption = buttonAlignmentSelect.getElementsByTagName( 'option' ),\r\n selectOptionVal;\r\n \r\n if ( buttonAlignment == 'flex-start' ) {\r\n selectOptionVal = 'left';\r\n } else if ( buttonAlignment == 'center' || ! buttonAlignment ) {\r\n selectOptionVal = 'center';\r\n } else if ( buttonAlignment == 'flex-end' ) {\r\n selectOptionVal = 'right';\r\n }\r\n \r\n for ( let i = 0; i < selectOption.length; i++ ) {\r\n if ( selectOption[i].value == selectOptionVal ) {\r\n selectOption[i].selected = true;\r\n }\r\n }\r\n }\r\n \r\n if ( wptbButtonA.length > 0 ) {\r\n let buttonHref = wptbButtonA[0].getAttribute( 'href' ), \r\n buttonLinkTarget = wptbButtonA[0].getAttribute( 'target' ),\r\n buttonId = wptbButtonA[0].getAttribute( 'id' ),\r\n \r\n \r\n buttonHrefInput = prop.querySelector( 'input[data-type=\"button-link\"]' ),\r\n buttonLinkTargetInput = prop.querySelector( 'input[data-type=\"button-link-target\"]' ),\r\n buttonLinkTargetInputId = buttonLinkTargetInput.getAttribute( 'id' ),\r\n buttonLinkTargetInputLabel = buttonLinkTargetInput.parentNode.getElementsByTagName( 'label' )[0],\r\n \r\n buttotIdInput = prop.querySelector( 'input[data-type=\"button-id\"]' );\r\n\r\n buttonLinkTargetInputId = buttonLinkTargetInputId + '-' + kindIndexProt.split( '-' )[1];\r\n buttonLinkTargetInput.setAttribute( 'id', buttonLinkTargetInputId );\r\n buttonLinkTargetInputLabel.setAttribute( 'for', buttonLinkTargetInputId );\r\n\r\n buttonHrefInput.value = buttonHref;\r\n\r\n if( buttonLinkTarget && buttonLinkTarget == '_blank') {\r\n buttonLinkTargetInput.checked = true;\r\n }\r\n \r\n buttotIdInput.value = buttonId;\r\n }\r\n \r\n if( wptbButton ) {\r\n let buttonTextColor = wptbButton[0].style.color,\r\n buttonColor = wptbButton[0].style.backgroundColor,\r\n buttonTextColorInput = prop.querySelector( 'input[data-type=\"button-text-color\"]' ),\r\n buttonBackgroundColorInput = prop.querySelector( 'input[data-type=\"button-color\"]' );\r\n \r\n \r\n buttonTextColorInput.value = WPTB_Helper.rgbToHex( buttonTextColor );\r\n \r\n buttonBackgroundColorInput.value = WPTB_Helper.rgbToHex( buttonColor );\r\n \r\n }\r\n } else if ( element.kind == 'image' ) {\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\r\n if ( affectedEl.length > 0 ) {\r\n let elementsA = affectedEl[0].getElementsByTagName( 'a' );\r\n if ( elementsA.length > 0 ) {\r\n let a = elementsA[0];\r\n\r\n if ( a ) {\r\n a.onclick = function( e ) {\r\n e.preventDefault();\r\n }\r\n // set select according to the alignment of the image\r\n let aTextAlign = a.style.textAlign,\r\n imageAlignmentSelect = prop.querySelector( 'select[data-type=\"image-alignment\"]' ),\r\n selectOption = imageAlignmentSelect.getElementsByTagName( 'option' );\r\n\r\n for ( let i = 0; i < selectOption.length; i++ ) {\r\n if ( selectOption[i].value == aTextAlign ) {\r\n selectOption[i].selected = true;\r\n }\r\n }\r\n\r\n // set text link for input field of setting panel\r\n let imageLinkHref = a.getAttribute( 'href' ),\r\n inputImageLink = prop.querySelector( 'input[data-type=\"image-link\"]' );\r\n if ( imageLinkHref ) {\r\n inputImageLink.value = imageLinkHref;\r\n }\r\n\r\n // set checkbox for target of link \r\n let imageLinkTarget = a.getAttribute( 'target' ),\r\n imageLinkTargetInput = prop.querySelector( 'input[data-type=\"image-link-target\"]' ),\r\n imageLinkTargetInputId = imageLinkTargetInput.getAttribute( 'id' ),\r\n imageLinkTargetInputLabel = imageLinkTargetInput.parentNode.getElementsByTagName( 'label' )[0];\r\n\r\n imageLinkTargetInputId = imageLinkTargetInputId + '-' + kindIndexProt.split( '-' )[1];\r\n\r\n imageLinkTargetInput.setAttribute( 'id', imageLinkTargetInputId );\r\n imageLinkTargetInputLabel.setAttribute( 'for', imageLinkTargetInputId );\r\n\r\n if ( imageLinkTarget && imageLinkTarget == '_blank' ) {\r\n imageLinkTargetInput.checked = true;\r\n }\r\n\r\n let img = a.getElementsByTagName( 'img' );\r\n if ( img.length > 0 ) {\r\n // set value for input fields of image size\r\n let imgWidth = img[0].style.width;\r\n if ( imgWidth ) {\r\n let imageWidthInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"image-size\"]' ),\r\n imageWidthInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"image-size\"]' );\r\n\r\n imageWidthInputRange.value = parseInt( imgWidth );\r\n imageWidthInputNumber.value = parseInt( imgWidth );\r\n }\r\n\r\n // set value for input field of alternative text image\r\n let imgAlternativeText = img[0].getAttribute('alt'),\r\n imageAlternativeTextInput = prop.querySelector( 'input[type=\"text\"][data-type=\"alternative-text\"]' );\r\n\r\n imageAlternativeTextInput.value = imgAlternativeText;\r\n }\r\n }\r\n }\r\n }\r\n } else if ( element.kind == 'text' ) {\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\r\n if ( affectedEl.length > 0 ) {\r\n let elementFontSize = affectedEl[0].style.fontSize,\r\n elementTextColor = affectedEl[0].style.color;\r\n let textFontSizeInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"font-size\"]' ),\r\n textFontSizeInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"font-size\"]' ),\r\n textColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"color\"]' );\r\n\r\n textFontSizeInputRange.value = parseInt( elementFontSize );\r\n textFontSizeInputNumber.value = parseInt( elementFontSize );\r\n textColorInput.value = WPTB_Helper.rgbToHex( elementTextColor );\r\n }\r\n } else if ( element.kind == 'list' ) {\r\n let elementList = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\r\n if ( elementList.length > 0 ) {\r\n let elementListColor = elementList[0].querySelector( 'p' ).style.color;\r\n let listColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"list-text-color\"]' );\r\n listColorInput.value = WPTB_Helper.rgbToHex( elementListColor );\r\n \r\n let elementListItem = elementList[0].querySelectorAll( 'li' );\r\n if ( elementListItem.length > 0 ) {\r\n let listItemP = elementListItem[0].querySelector( 'p' );\r\n let listItemPClasses = listItemP.classList;\r\n //listItemPClasses = [...listItemPClasses];\r\n if ( listItemPClasses.length > 0 ) {\r\n let elementListClassSelect = prop.querySelector( 'select[data-type=\"list-class\"]' );\r\n if ( elementListClassSelect ) {\r\n elementListClassSelect.value = 'unordered';\r\n \r\n let listIconSelectLabel = elementListClassSelect.parentNode.nextSibling;\r\n for ( let i = 0; i < 10; i++ ) {\r\n if ( listIconSelectLabel.nodeType == '1' ) {\r\n break;\r\n } else {\r\n listIconSelectLabel = listIconSelectLabel.nextSibling;\r\n }\r\n }\r\n if ( listIconSelectLabel ) {\r\n let listIconSelectLabelId = listIconSelectLabel.getAttribute( 'id' );\r\n listIconSelectLabel.setAttribute( 'id', listIconSelectLabelId + '-' + kindIndexProt );\r\n listIconSelectLabel.style.display = 'flex';\r\n }\r\n \r\n let elementListStyleTypeSelect = prop.querySelector( 'select[data-type=\"list-style-type\"]' );\r\n if ( elementListStyleTypeSelect ) {\r\n elementListStyleTypeSelect.parentNode.style.display = 'flex';\r\n \r\n if( listItemPClasses.contains( 'wptb-list-style-type-disc' ) ) {\r\n elementListStyleTypeSelect.value = 'disc';\r\n } else if( listItemPClasses.contains( 'wptb-list-style-type-circle' ) ) {\r\n elementListStyleTypeSelect.value = 'circle';\r\n } else if( listItemPClasses.contains( 'wptb-list-style-type-square' ) ) {\r\n elementListStyleTypeSelect.value = 'square';\r\n } else if ( listItemPClasses.contains( 'wptb-list-style-type-none' ) ) {\r\n elementListStyleTypeSelect.value = 'none';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n let elementListItemContent = elementList[0].getElementsByClassName( 'wptb-list-item-content' );\r\n if ( elementListItemContent.length > 0 ) {\r\n let listItemPTextAlignArr = [];\r\n for ( let i = 0; i < elementListItemContent.length; i++ ) {\r\n let p = elementListItemContent[i].querySelector( 'p' );\r\n if ( p ) {\r\n if ( p.style.textAlign ) {\r\n listItemPTextAlignArr.push( p.style.textAlign );\r\n } else {\r\n listItemPTextAlignArr.push( 'left' );\r\n }\r\n }\r\n \r\n }\r\n \r\n let listItemPTextAlignLeftCount = 0,\r\n listItemPTextAlignCenterCount = 0,\r\n listItemPTextAlignRightCount = 0;\r\n \r\n if ( listItemPTextAlignArr.length > 0 ) {\r\n for ( let i = 0; i < listItemPTextAlignArr.length; i++ ) {\r\n if ( listItemPTextAlignArr[i] ) {\r\n if ( listItemPTextAlignArr[i] == 'left' ) {\r\n listItemPTextAlignLeftCount++;\r\n } else if ( listItemPTextAlignArr[i] == 'center' ) {\r\n listItemPTextAlignCenterCount++;\r\n } else if ( listItemPTextAlignArr[i] == 'right' ) {\r\n listItemPTextAlignRightCount++;\r\n }\r\n }\r\n }\r\n }\r\n \r\n let elementListAlignmentSelect = prop.querySelector( 'select[data-type=\"list-alignment\"]' ),\r\n maxListItemTAlLeftC = Math.max( listItemPTextAlignLeftCount, listItemPTextAlignCenterCount, listItemPTextAlignRightCount );\r\n \r\n if ( listItemPTextAlignLeftCount == maxListItemTAlLeftC ) {\r\n elementListAlignmentSelect.value = 'left';\r\n } else if ( listItemPTextAlignCenterCount == maxListItemTAlLeftC ) {\r\n elementListAlignmentSelect.value = 'center';\r\n } else if ( listItemPTextAlignRightCount == maxListItemTAlLeftC ) {\r\n elementListAlignmentSelect.value = 'right';\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n node.onclick = function () {\r\n var infArr = this.className.match(/wptb-element-((.+-)\\d+)/i),\r\n optionsClass = '.wptb-' + infArr[2] + 'options' +\r\n '.wptb-options-' + infArr[1];\r\n\r\n document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';\r\n document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';\r\n document.getElementById(\"element-options-group\").style.display = 'block';\r\n\r\n var children = document.getElementById(\"element-options-group\").childNodes;\r\n for (var i = 0; i < children.length; i++) {\r\n if (children[i].style)\r\n children[i].style.display = 'none';\r\n }\r\n\r\n document.querySelector(optionsClass).style.display = 'block';\r\n\r\n //var listStyleType, textAlign;\r\n\r\n// switch (element.kind) {\r\n\r\n// case 'text':\r\n// jQuery(prop).find('[data-type=color]').wpColorPicker({ defaultColor: node.style.color });\r\n// prop.querySelector('[type=number][data-type=font-size]').value\r\n// = prop.querySelector('[type=range][data-type=font-size]').value\r\n// = node.style.fontSize.substring(0, node.style.fontSize.length - 2);\r\n// break;\r\n// case 'list':\r\n// textAlign = node.querySelector('li p').style.textAlign;\r\n// listStyleType = node.querySelector('li').style.listStyleType;\r\n// if ( prop.querySelector( 'select[data-type=list-class]' ) ) {\r\n// console.log(textAlign);\r\n// console.log(listStyleType);\r\n// console.log(listStyleType);\r\n// console.log(prop);\r\n// prop.querySelector('select[data-type=list-class]').selectedIndex = ( listStyleType == 'decimal' ? 0 : 1 );\r\n// }\r\n// if ( prop.querySelector('select[data-type=list-style-type]') ) {\r\n// prop.querySelector('select[data-type=list-style-type]').selectedIndex = (listStyleType == 'circle' ? 0 : (listStyleType == 'square' ? 1 : 2));\r\n// }\r\n// if ( prop.querySelector('select[data-type=list-alignment]') ) {\r\n// prop.querySelector('select[data-type=list-alignment]').selectedIndex = (textAlign == 'left' ? 0 : (textAlign == 'center' ? 1 : 2));\r\n// }\r\n// break;\r\n// case 'image':\r\n// break;\r\n// case 'button':\r\n// jQuery(prop).find('[data-type=button-color]').wpColorPicker({ defaultColor: node.style.backgroundColor });\r\n// break;\r\n//\r\n// }\r\n };\r\n\r\n if (element.kind == 'button') {\r\n //We must add this special kind of property, since it is triggered with click event\r\n var buttons = prop.getElementsByClassName('wptb-btn-size-btn');\r\n\r\n for (var i = 0; i < buttons.length; i++) {\r\n buttons[i].onclick = function () {\r\n var size = this.innerHTML,\r\n n_Class = this.dataset.element,\r\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\r\n type = infArr[1],\r\n num = infArr[2],\r\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\r\n affectedEl.classList.remove('wptb-size-S');\r\n affectedEl.classList.remove('wptb-size-M');\r\n affectedEl.classList.remove('wptb-size-L');\r\n affectedEl.classList.remove('wptb-size-XL');\r\n affectedEl.classList.add('wptb-size-' + size);\r\n var b = this.parentNode.getElementsByClassName('wptb-btn-size-btn');\r\n for (var i = 0; i < b.length; i++) {\r\n b[i].classList.remove('selected');\r\n }\r\n this.classList.add('selected');\r\n }\r\n }\r\n }\r\n\r\n var optionControls = prop.getElementsByClassName('wptb-element-property');\r\n\r\n for (var i = 0; i < optionControls.length; i++) {\r\n if (optionControls[i].classList.contains('wptb-color-picker')) {\r\n jQuery(optionControls[i]).wpColorPicker({\r\n change: function (event, ui) {\r\n var parent = event.target, 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 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 = ui.color.toString();\r\n } else {\r\n affectedEl.getElementsByClassName('wptb-button')[0].style.backgroundColor = ui.color.toString();\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 = ui.color.toString();\r\n }\r\n }\r\n } else {\r\n affectedEl.style.color = ui.color.toString();\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (optionControls[i].dataset.type === 'font-size') {\r\n var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-text-font-size-slider')[0];\r\n slider.oninput = function () {\r\n this.parentNode.parentNode.getElementsByClassName('wptb-text-font-size-number')[0].value = this.value;\r\n this.parentNode.parentNode.getElementsByClassName('wptb-text-font-size-number')[0].onchange();\r\n }\r\n }\r\n\r\n if (optionControls[i].dataset.type === 'image-size') {\r\n var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-image-size-slider')[0];\r\n slider.oninput = function () {\r\n this.parentNode.parentNode.getElementsByClassName('wptb-image-width-number')[0].value = this.value;\r\n this.parentNode.parentNode.getElementsByClassName('wptb-image-width-number')[0].onchange();\r\n }\r\n }\r\n\r\n optionControls[i].onchange = function (event) {\r\n\r\n var n_Class = this.dataset.element,\r\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\r\n type = infArr[1],\r\n num = infArr[2],\r\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0],\r\n val = this.value;\r\n\r\n switch (this.dataset.type) {\r\n case 'src':\r\n var img = affectedEl.getElementsByTagName(\"img\")[0];\r\n img.src = this.value;\r\n break;\r\n case 'alternative-text':\r\n var img = affectedEl.getElementsByTagName('img')[0];\r\n img.alt = this.value;\r\n break;\r\n case 'image-link':\r\n affectedEl.getElementsByTagName('a')[0].href = WPTB_Helper.linkHttpCheckChange( this.value );\r\n break;\r\n case 'image-link-target':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].target = '_blank';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].target = '_self';\r\n }\r\n break;\r\n case 'image-link-nofollow':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].removeAttribute('rel');\r\n }\r\n break;\r\n case 'image-size':\r\n affectedEl.getElementsByTagName('a')[0].style.width = this.value + '%';\r\n affectedEl.getElementsByTagName('a')[0].style.height = 'auto';\r\n this.parentNode.parentNode.getElementsByClassName('wptb-image-size-slider')[0].value = this.value;\r\n break;\r\n case 'image-alignment':\r\n affectedEl.getElementsByClassName( 'wptb-image-wrapper' )[0].style.textAlign = this.value;\r\n break;\r\n case 'font-size':\r\n affectedEl.style.fontSize = val + 'px';\r\n break;\r\n case 'button-alignment':\r\n var jc = '';\r\n if (this.value == 'left') {\r\n jc = 'start';\r\n } else if (this.value == 'right') {\r\n jc = 'flex-end';\r\n } else {\r\n jc = 'center';\r\n }\r\n affectedEl.getElementsByClassName('wptb-button-wrapper')[0].style.justifyContent = jc;\r\n break;\r\n case 'button-link':\r\n if ( this.value ) {\r\n affectedEl.getElementsByTagName( 'a' )[0].href = WPTB_Helper.linkHttpCheckChange( this.value );\r\n } else {\r\n affectedEl.getElementsByTagName( 'a' )[0].removeAttribute( 'href' );\r\n }\r\n break;\r\n case 'button-link-target':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].target = '_blank';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].target = '_self';\r\n }\r\n break;\r\n case 'button-link-nofollow':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].removeAttribute( 'rel' );\r\n }\r\n break;\r\n case 'button-id':\r\n if( this.value ) {\r\n affectedEl.getElementsByTagName( 'a' )[0].id = this.value;\r\n } else {\r\n affectedEl.getElementsByTagName( 'a' )[0].removeAttribute( 'id' );\r\n }\r\n case 'button-color':\r\n break;\r\n case 'list-alignment':\r\n let listItems = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItems.length; i++) {\r\n let p = listItems[i].querySelector( 'p' );\r\n if ( p ) {\r\n p.style.textAlign = this.value;\r\n }\r\n }\r\n break;\r\n case 'list-class':\r\n let parentNode = event.target\r\n .parentNode\r\n .parentNode\r\n .querySelector('[data-type=list-style-type]')\r\n .parentNode,\r\n parentNodeSettingItem = parentNode.parentNode;\r\n if (val == 'unordered') {\r\n parentNode.style.display = 'flex';\r\n \r\n parentNodeSettingItem.querySelector( '.wptb-list-icon-select-label' ).style.display = 'flex';\r\n let listItem = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItem.length; i++) {\r\n let p = listItem[i].querySelector( 'p' );\r\n p.removeAttribute ( 'class' );\r\n p.classList.add( 'wptb-list-style-type-disc' );\r\n }\r\n parentNodeSettingItem.querySelector('[data-type=list-style-type]').value = 'disc';\r\n } else {\r\n parentNode.style.display = 'none';\r\n parentNodeSettingItem.querySelector( '.wptb-list-icon-select-label' ).style.display = 'none';\r\n var listItem = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItem.length; i++) {\r\n let p = listItem[i].querySelector( 'p' );\r\n p.removeAttribute ( 'class' );\r\n }\r\n }\r\n break;\r\n case 'list-style-type':\r\n var listItem = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItem.length; i++) {\r\n let p = listItem[i].querySelector( 'p' );\r\n p.removeAttribute ( 'class' );\r\n p.classList.add( 'wptb-list-style-type-' + val.toLowerCase() );\r\n }\r\n break;\r\n }\r\n }\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 var rgb = rgb.match( /^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i );\r\n\r\n return ( rgb && rgb.length === 4 ) ? \"#\" +\r\n ( \"0\" + parseInt( rgb[1],10 ).toString( 16 )).slice( -2 ) +\r\n ( \"0\" + parseInt( rgb[2],10 ).toString( 16 )).slice( -2 ) +\r\n ( \"0\" + parseInt( rgb[3],10 ).toString( 16 )).slice( -2 ) : '';\r\n },\r\n getDragImageCustom: function ( type ) {\r\n let hostName = location.protocol + '//' + location.hostname;\r\n let img = document.createElement( 'img' );\r\n img.src = hostName + '/wp-content/plugins/wp-table-builder/inc/admin/views/builder/icons/' + type + '.png';\r\n return img;\r\n },\r\n dragImagesArr: function() {\r\n return {\r\n text: WPTB_Helper.getDragImageCustom( 'text' ),\r\n image: WPTB_Helper.getDragImageCustom( 'image' ),\r\n button: WPTB_Helper.getDragImageCustom( 'button' ),\r\n list: WPTB_Helper.getDragImageCustom( 'list' )\r\n };\r\n },\r\n listItemsRecalculateIndex: function( ulElem ) {\r\n let par = ulElem.querySelectorAll( 'p' );\r\n if ( par.length > 0 ) {\r\n for ( let i = 0; i < par.length; i++ ) {\r\n par[i].dataset.listStyleTypeIndex = Number( i ) + 1 + '.';\r\n }\r\n }\r\n },\r\n listItemsTinyMceInit: function( listItem ) {\r\n tinyMCE.init({\r\n target: listItem,\r\n inline: true,\r\n plugins: \"link, paste\",\r\n dialog_type: \"modal\",\r\n theme: 'modern',\r\n menubar: false,\r\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\r\n paste_as_text: true,\r\n toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',\r\n setup: function(ed) {\r\n ed.on('keydown', function(e) {\r\n let article = e.target.parentNode;\r\n if ( e.keyCode == 13 ) {\r\n e.preventDefault();\r\n let text = e.target.innerHTML;\r\n let duplicate = new WPTB_ListItem( text, article, true );\r\n \r\n article.parentNode.insertBefore( duplicate.getDOMElement(), article );\r\n WPTB_Helper.listItemsTinyMceInit( duplicate.getDOMElement().firstChild );\r\n e.target.querySelector( 'p' ).innerText = 'New List Item';\r\n //tinyMCE.execCommand('mceInsertContent', false, 'New List Item');\r\n WPTB_Helper.listItemsRecalculateIndex( article.parentNode );\r\n \r\n } else if ( e.keyCode == '8' || e.keyCode == '46' ) {\r\n let p = e.target.querySelector( 'p' );\r\n let pText = p.innerHTML.replace(/<[^>]+>/g, '');\r\n pText = pText.replace( /\\s+/g, ' ' ).trim();\r\n pText = pText.replace( /&nbsp;/g, '').trim();\r\n \r\n if( pText == '' ) {\r\n e.preventDefault();\r\n e.target.querySelector( 'p' ).innerText = '\\n';\r\n } else {\r\n let selectedText = WPTB_Helper.getSelectionText();\r\n selectedText = selectedText.replace( /\\s+/g, ' ' ).trim();\r\n selectedText = selectedText.replace( /&nbsp;/g, '' ).trim();\r\n if( selectedText == pText ) {\r\n e.preventDefault();\r\n e.target.querySelector( 'p' ).innerText = '\\n';\r\n }\r\n }\r\n }\r\n });\r\n \r\n ed.on( 'keyup', function( e ) {\r\n \r\n });\r\n },\r\n init_instance_callback: function (editor) {\r\n window.currentEditor = editor;\r\n editor.on('focus', function (e) {\r\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\r\n if (window.currentEditor &&\r\n document.getElementById('wptb_builder').scrollTop >= 55 &&\r\n window.currentEditor.bodyElement.style.display != 'none') {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\r\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\r\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\r\n } else {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\r\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\r\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n buttonsTinyMceInit: function( target ) {\r\n tinyMCE.init({\r\n target: target,\r\n inline: true,\r\n plugins: \"link\",\r\n dialog_type: \"modal\",\r\n theme: 'modern',\r\n menubar: false,\r\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\r\n toolbar: 'bold italic strikethrough',\r\n setup : function(ed) {\r\n ed.on('keydown', function(e) {\r\n if (e.keyCode == 13) {\r\n e.preventDefault();\r\n }\r\n });\r\n },\r\n init_instance_callback: function (editor) {\r\n window.currentEditor = editor;\r\n editor.on('focus', function (e) {\r\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\r\n if (window.currentEditor &&\r\n document.getElementById('wptb_builder').scrollTop >= 55 &&\r\n window.currentEditor.bodyElement.style.display != 'none') {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\r\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\r\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\r\n } else {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\r\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\r\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n linkHttpCheckChange: function( link ) {\r\n if ( link ) {\r\n 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 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 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 = '';\r\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = '';\r\n thisRowChildren[j].dataset.wptbTitleColumnColor = '';\r\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = '';\r\n thisRowChildren[j].dataset.wptbTitleAlign = '';\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 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 settingsPanelClear: function() {\r\n document.getElementById( 'wptb-top-row-as-header' ).checked = false;\r\n document.getElementById( 'wptb-table-border-slider' ).value = 0;\r\n document.getElementById( 'wptb-table-border-number' ).value = 0;\r\n document.getElementById( 'wptb-inner-border-check' ).checked = false;\r\n document.getElementById( 'wptb-apply-inner-border' ).classList.remove( 'visible' );\r\n document.getElementById( 'wptb-table-inner-border-slider' ).value = 1;\r\n document.getElementById( 'wptb-table-inner-border-number' ).value = 1;\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-table-border-color' );\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-table-header-bg' );\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-even-row-bg' );\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-odd-row-bg' );\r\n \r\n document.getElementById( 'wptb-table-cell-slider' ).value = 15;\r\n document.getElementById( 'wptb-table-cell-number' ).value = 15;\r\n },\r\n wpColorPickerClear: function( inputId ) {\r\n let input = document.getElementById( inputId );\r\n let wpPickerContainer = WPTB_Helper.findAncestor( input, 'wp-picker-container' );\r\n let parent = wpPickerContainer.parentNode;\r\n parent.removeChild( wpPickerContainer );\r\n let newInput = document.createElement( 'input' );\r\n newInput.setAttribute( 'id', inputId );\r\n newInput.value = \"\";\r\n parent.appendChild( newInput );\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 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}\r\n","var WPTB_Image = function ( src, DOMElementProt ) {\r\n let DOMElement,\r\n elImage,\r\n kindIndexProt = undefined,\r\n copy = false;\r\n if ( DOMElementProt == undefined ) {\r\n DOMElement = document.createElement( 'div' );\r\n elImage = document.createElement( 'div' );\r\n\t let anchor = document.createElement( 'a' ),\r\n\t img = document.createElement( 'img' );\r\n anchor.style.display = 'inline-block';\r\n anchor.appendChild( img );\r\n DOMElement.classList.add( 'wptb-image-container' );\r\n elImage.classList.add( 'wptb-image-wrapper' );\r\n elImage.appendChild( anchor );\r\n DOMElement.appendChild( elImage );\r\n \r\n anchor.onclick = function( e ) {\r\n e.preventDefault();\r\n }\r\n \r\n file_frame = wp.media.frames.file_frame = wp.media({\r\n\t\ttitle: 'Select a image to upload',\r\n\t\tbutton: {\r\n\t\t\ttext: 'Use this image'\r\n\t\t},\r\n\t\tmultiple: false\r\n });\r\n // When an image is selected, run a callback.\r\n file_frame.on('select', function () {\r\n attachment = file_frame.state().get('selection').first().toJSON();\r\n img.src = attachment.url;\r\n });\r\n // Finally, open the modal\r\n if (src == undefined) {\r\n file_frame.open();\r\n } else {\r\n img.src = src;\r\n }\r\n } else {\r\n DOMElement = DOMElementProt.cloneNode( true );\r\n \r\n DOMElement.getElementsByTagName( 'a' )[0].onclick = function(e) {\r\n e.preventDefault();\r\n };\r\n \r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n };\r\n }\r\n \r\n this.kind = 'image';\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n\tapplyGenericItemSettings( this, kindIndexProt, copy );\r\n\r\n\treturn this;\r\n};","var WPTB_Initializer = function () {\r\n\r\n const MIN_COLUMNS = 1,\r\n MIN_ROWS = 1,\r\n MAX_COLUMNS = 10,\r\n MAX_ROWS = 10;\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 WPTB_Table(columns, rows);\r\n }\r\n \r\n// if( document.getElementsByClassName( 'wptb-preview-table' ).length == 0 ) {\r\n// WPTB_LeftPanel();\r\n// }\r\n\r\n};\r\n","var WPTB_innerElementSet = function ( element ) {\n \n function newElementProxy(el) {\n if (el == 'list') {\n return new WPTB_List();\n } else if (el == 'image') {\n return new WPTB_Image();\n } else if (el == 'text') {\n return new WPTB_Text();\n } else if (el == 'button') {\n return new WPTB_Button();\n }\n }\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 () {\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 = 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( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Abowe Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n let thisRow = td.parentNode\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n } else {\n return;\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n\n WPTB_innerElementSet( element );\n\n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","var WPTB_LeftPanel = function () {\r\n\r\n var table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n \r\n function wptbTdBgColorSavedSet( inputId, trNumber ) {\r\n if ( trNumber > 3 ) return;\r\n if( table ) {\r\n let tableRows = table.getElementsByTagName('tr');\r\n if ( tableRows.length > trNumber ) {\r\n let trBackgroundColor = tableRows[trNumber].style.backgroundColor;\r\n var wptbEvenRowBg = document.getElementById(inputId);\r\n if ( wptbEvenRowBg && trBackgroundColor ) {\r\n wptbEvenRowBg.value = WPTB_Helper.rgbToHex( trBackgroundColor );\r\n }\r\n }\r\n }\r\n \r\n }\r\n \r\n wptbTdBgColorSavedSet( 'wptb-even-row-bg', 1 );\r\n jQuery('#wptb-even-row-bg').wpColorPicker({\r\n change: function ( event, ui ) {\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 1; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = ui.color.toString();\r\n }\r\n },\r\n clear: function(){\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 1; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = '';\r\n let tds = tableRows[i].getElementsByTagName('td');\r\n for ( let j = 0; j < tds.length; j++ ) {\r\n tds[j].style.backgroundColor = '';\r\n }\r\n }\r\n },\r\n\r\n });\r\n \r\n wptbTdBgColorSavedSet( 'wptb-odd-row-bg', 2 );\r\n jQuery('#wptb-odd-row-bg').wpColorPicker({\r\n change: function ( event, ui ) {\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 2; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = ui.color.toString();\r\n }\r\n },\r\n clear: function(){\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 2; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = '';\r\n let tds = tableRows[i].getElementsByTagName( 'td' );\r\n for ( var j = 0; j < tds.length; j++ ) {\r\n tds[j].style.backgroundColor = '';\r\n }\r\n }\r\n },\r\n });\r\n \r\n wptbTdBgColorSavedSet( 'wptb-table-header-bg', 0 );\r\n jQuery('#wptb-table-header-bg').wpColorPicker({\r\n change: function (event, ui) {\r\n var tableHeader = table.getElementsByTagName('tr')[0];\r\n tableHeader.style.backgroundColor = ui.color.toString();\r\n },\r\n clear: function(){\r\n var tableHeader = table.getElementsByTagName('tr')[0];\r\n tableHeader.style.backgroundColor = '';\r\n let tds = tableHeader.getElementsByTagName('td');\r\n for (var j = 0; j < tds.length; j++) {\r\n tds[j].style.backgroundColor = '';\r\n }\r\n },\r\n });\r\n \r\n function tableTopRowAsHeadSavedSet( table ) {\r\n let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\r\n \r\n if( table && table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n wptbTopRowAsHeader.checked = true;\r\n } else {\r\n wptbTopRowAsHeader.checked = false;\r\n }\r\n }\r\n tableTopRowAsHeadSavedSet( table );\r\n \r\n function tableBorderColorWidthSavedSet() {\r\n let table = document.getElementsByClassName('wptb-preview-table');\r\n if ( table.length > 0 ) {\r\n let tableBorderColor = table[0].style.borderColor;\r\n if ( tableBorderColor ) {\r\n let tableBorderColorInput = document.getElementById( 'wptb-table-border-color' );\r\n if ( tableBorderColorInput ) {\r\n tableBorderColorInput.value = WPTB_Helper.rgbToHex( tableBorderColor );\r\n }\r\n }\r\n \r\n let tableBorderWidth = table[0].style.borderWidth;\r\n if ( tableBorderWidth ) {\r\n let wptbTableBorderWidthSlider = document.getElementById('wptb-table-border-slider'),\r\n wptbTableBorderWidthNumber = document.getElementById('wptb-table-border-number');\r\n \r\n if ( wptbTableBorderWidthSlider ) {\r\n wptbTableBorderWidthSlider.value = parseInt( tableBorderWidth );\r\n }\r\n if ( wptbTableBorderWidthNumber ) {\r\n wptbTableBorderWidthNumber.value = parseInt( tableBorderWidth );\r\n }\r\n }\r\n \r\n \r\n let tableTd = table[0].querySelector( 'td' );\r\n let applyInnerBorder = tableTd.style.borderWidth;\r\n if ( applyInnerBorder ) {\r\n let innerBorderCheckInput = document.getElementById( 'wptb-inner-border-check' );\r\n let wptbApplyInnerBorder = document.getElementById( 'wptb-apply-inner-border' );\r\n if ( applyInnerBorder && parseInt( applyInnerBorder ) > 0 ) {\r\n if ( innerBorderCheckInput ) {\r\n innerBorderCheckInput.checked = true;\r\n \r\n if ( wptbApplyInnerBorder ) {\r\n wptbApplyInnerBorder.classList.add( 'visible' );\r\n let wptbTableInnerBorderSlider = document.getElementById( 'wptb-table-inner-border-slider' );\r\n let wptbTableInnerBorderNumber = document.getElementById( 'wptb-table-inner-border-number' );\r\n wptbTableInnerBorderSlider.value = parseInt( applyInnerBorder );\r\n wptbTableInnerBorderNumber.value = parseInt( applyInnerBorder );\r\n }\r\n }\r\n } else {\r\n innerBorderCheckInput.checked = false;\r\n }\r\n }\r\n \r\n if ( ( tableBorderWidth && parseInt( tableBorderWidth ) > 0 ) || ( applyInnerBorder && parseInt( applyInnerBorder ) > 0 ) ) {\r\n document.getElementById( 'wptb-table-border-color-set-area' ).style.display = '';\r\n }\r\n }\r\n }\r\n \r\n tableBorderColorWidthSavedSet();\r\n\r\n jQuery('#wptb-table-border-color').wpColorPicker({\r\n change: function (event, ui) {\r\n var tableCells = table.getElementsByTagName('td');\r\n table.style.border = document.querySelector('#wptb-table-border-number').value + 'px solid ' + ui.color.toString();\r\n\r\n for (var i = 0; i < tableCells.length; i++) {\r\n let tableInnerborderNumber = document.querySelector('#wptb-table-inner-border-number').value;\r\n if ( document.getElementById('wptb-inner-border-check').checked ) {\r\n tableCells[i].style.border = ( tableInnerborderNumber != 0 ? tableInnerborderNumber : 1 ) + 'px solid ' + ui.color.toString();\r\n }\r\n }\r\n },\r\n clear: function() {\r\n var tableCells = table.getElementsByTagName('td');\r\n table.style.borderColor = '';\r\n\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.borderColor = '';\r\n }\r\n }\r\n });\r\n\r\n function addInnerBorderSize(value) {\r\n var tableCells = table.getElementsByTagName('td');\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.borderWidth = document.querySelector('#wptb-table-inner-border-number').value + 'px';\r\n tableCells[i].style.borderStyle = 'solid';\r\n }\r\n }\r\n\r\n function addCellPadding(value) {\r\n var tableCells = table.getElementsByTagName('td');\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.padding = value + 'px';\r\n }\r\n }\r\n\r\n function addInnerBorder( checked ) {\r\n var styles, color = document.querySelector('#wptb-table-border-color').value != undefined ?\r\n document.querySelector('#wptb-table-border-color').value : 'rgb(0,0,0)';\r\n if ( document.querySelector( '#wptb-table-inner-border-slider' ).value == 0 || document.querySelector( '#wptb-table-inner-border-number' ).value == 0 ) {\r\n document.querySelector( '#wptb-table-inner-border-slider' ).value = 1;\r\n document.querySelector( '#wptb-table-inner-border-number' ).value = 1;\r\n }\r\n let width = document.querySelector( '#wptb-table-inner-border-slider' ).value + 'px';\r\n let wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\r\n if( wptbPreviewTable.length > 0 ) {\r\n if (checked == 'checked') {\r\n document.getElementById('wptb-apply-inner-border').style.marginBottom = '0px';\r\n var tableCells = wptbPreviewTable[0].getElementsByTagName( 'td' );\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.border = width + ' solid ' + color;\r\n }\r\n document.getElementById( 'wptb-apply-inner-border' ).classList.add( 'visible' );\r\n } else {\r\n document.getElementById( 'wptb-apply-inner-border' ).classList.remove( 'visible' );\r\n var tableCells = wptbPreviewTable[0].getElementsByTagName( 'td' );\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.border = '0px solid ' + color;\r\n tableCells[i].style.border = null;\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n function addBorderSize( value ) {\r\n table.style.borderWidth = value + 'px';\r\n table.style.borderStyle = 'solid';\r\n }\r\n \r\n function cellPaddingSavedSet() {\r\n let table = document.getElementsByClassName('wptb-preview-table');\r\n \r\n if ( table.length > 0 ) {\r\n let td = table[0].querySelector( 'td' );\r\n \r\n if ( td ) {\r\n let padding = td.style.padding;\r\n \r\n if ( padding ) {\r\n let wptbTableCellSlider = document.getElementById('wptb-table-cell-slider'),\r\n wptbTableCellNumber = document.getElementById('wptb-table-cell-number');\r\n \r\n if ( wptbTableCellSlider ) {\r\n wptbTableCellSlider.value = parseInt( padding );\r\n }\r\n if ( wptbTableCellNumber ) {\r\n wptbTableCellNumber.value = parseInt( padding );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n cellPaddingSavedSet();\r\n \r\n function numberImputSize( 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 thisValue = String( thisValue );\r\n if ( thisValue > maxValue ) {\r\n this.value = maxValue;\r\n }\r\n }\r\n }\r\n \r\n let wptbTableBorderNumber = document.getElementById( 'wptb-table-border-number' );\r\n numberImputSize( wptbTableBorderNumber, 1, 50 );\r\n \r\n let wptbTableInnerBorderNumber = document.getElementById( 'wptb-table-inner-border-number' );\r\n numberImputSize( wptbTableInnerBorderNumber, 1, 50 );\r\n \r\n let wptbTableCellNumber = document.getElementById( 'wptb-table-cell-number' );\r\n numberImputSize( wptbTableCellNumber, 1, 50 );\r\n \r\n let wptbTextfontSizeNumber = document.getElementById( 'wptb-text-font-size-number' );\r\n numberImputSize( wptbTextfontSizeNumber, 1, 50 );\r\n \r\n let wptbImageWidthNumber = document.getElementById( 'wptb-image-width-number' );\r\n numberImputSize( wptbImageWidthNumber, 2, 100 );\r\n \r\n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\r\n numberImputSize( wptbTableColumnWidthNumber, 2, 500 );\r\n \r\n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\r\n numberImputSize( wptbTableRowHeightNumber, 2, 200 );\r\n \r\n \r\n \r\n document.getElementById('wptb-table-cell-slider').oninput = function () {\r\n document.getElementById('wptb-table-cell-number').value = this.value;\r\n addCellPadding(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-cell-number').onchange = function () {\r\n document.getElementById('wptb-table-cell-slider').value = this.value;\r\n addCellPadding(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-border-slider').oninput = function () {\r\n document.getElementById('wptb-table-border-number').value = this.value;\r\n addBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n \r\n let wptbInnerBorderCheck = document.getElementById('wptb-inner-border-check').checked,\r\n tableBorderColorSetArea = document.getElementById( 'wptb-table-border-color-set-area' );\r\n if ( this.value == 0 && wptbInnerBorderCheck == false ) {\r\n tableBorderColorSetArea.style.display = 'none';\r\n } else {\r\n tableBorderColorSetArea.style.display = '';\r\n }\r\n };\r\n\r\n document.getElementById('wptb-table-border-number').onchange = function () {\r\n document.getElementById('wptb-table-border-slider').value = this.value;\r\n addBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-inner-border-slider').oninput = function () {\r\n document.getElementById('wptb-table-inner-border-number').value = this.value;\r\n addInnerBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-inner-border-number').onchange = function () {\r\n document.getElementById('wptb-table-inner-border-slider').value = this.value;\r\n addInnerBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-inner-border-check').onchange = function () {\r\n if( table ) {\r\n let val = this.checked ? 'checked' : 'unchecked';\r\n addInnerBorder( val );\r\n let borderWidth = document.getElementById('wptb-table-border-slider').value,\r\n tableBorderColorSetArea = document.getElementById( 'wptb-table-border-color-set-area' );\r\n if( val == 'unchecked' && borderWidth == 0 ) {\r\n tableBorderColorSetArea.style.display = 'none';\r\n } else {\r\n tableBorderColorSetArea.style.display = '';\r\n }\r\n }\r\n \r\n };\r\n \r\n document.getElementById( 'wptb-table-column-width-slider' ).oninput = function () {\r\n document.getElementById( 'wptb-table-column-width-number' ).value = this.value;\r\n table.addColumnWidth( this.value );\r\n };\r\n \r\n document.getElementById( 'wptb-table-column-width-number' ).onchange = function () {\r\n document.getElementById( 'wptb-table-column-width-slider' ).value = this.value;\r\n table.addColumnWidth( this.value );\r\n };\r\n \r\n document.getElementById( 'wptb-table-column-width-auto-fixed' ).onchange = function () {\r\n if( this.checked ) {\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\r\n table.addColumnWidth( width );\r\n } else {\r\n table.addColumnWidth( false, true );\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\r\n document.getElementById( 'wptb-table-column-width-number' ).value = width;\r\n document.getElementById( 'wptb-table-column-width-slider' ).value = width;\r\n }\r\n };\r\n\r\n document.getElementById( 'wptb-table-row-height-slider' ).oninput = function () {\r\n document.getElementById( 'wptb-table-row-height-number' ).value = this.value;\r\n table.addRowHeight( this.value );\r\n };\r\n\r\n document.getElementById( 'wptb-table-row-height-number' ).onchange = function () {\r\n document.getElementById( 'wptb-table-row-height-slider' ).value = this.value;\r\n table.addRowHeight( this.value );\r\n };\r\n \r\n document.getElementById( 'wptb-table-row-height-auto-fixed' ).onchange = function () {\r\n if( this.checked ) {\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let height = WPTB_Helper.getRowHeight( table, highlighted );\r\n table.addRowHeight( height );\r\n } else {\r\n table.addRowHeight( false, true );\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let height = WPTB_Helper.getRowHeight( table, highlighted );\r\n document.getElementById( 'wptb-table-row-height-number' ).value = height;\r\n document.getElementById( 'wptb-table-row-height-slider' ).value = height;\r\n }\r\n };\r\n \r\n function createMobileHeadForTable( table, thisEvent ) {\r\n \r\n if( thisEvent.checked ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n \r\n table.classList.add( 'wptb-table-preview-head' );\r\n table.rows[0].classList.add( 'wptb-table-head' );\r\n } else {\r\n let rows = table.rows;\r\n table.classList.remove( 'wptb-table-preview-head' );\r\n rows[0].classList.remove( 'wptb-table-head' );\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 thisRowChildren[j].removeAttribute( 'data-wptb-title-column' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-font-size' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-color' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-background-color' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-align' );\r\n }\r\n }\r\n }\r\n }\r\n \r\n document.getElementById( 'wptb-top-row-as-header' ).onchange = function () {\r\n createMobileHeadForTable( table, this );\r\n }\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 document.getElementById('wptb-activate-cell-management-mode').onclick = table.toggleTableEditMode;\r\n document.getElementById( 'wptb-table-edit-mode-close' ).onclick = table.toggleTableEditMode;\r\n document.getElementById( 'wptb-left-scroll-panel-curtain-close' ).onclick = table.toggleTableEditMode;\r\n document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;\r\n document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;\r\n document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;\r\n document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;\r\n document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;\r\n document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;\r\n document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;\r\n document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;\r\n document.getElementById('wptb-delete-column').onclick = table.deleteColumn;\r\n document.getElementById('wptb-delete-row').onclick = table.deleteRow;\r\n document.getElementById('wptb-merge-cells').onclick = table.mergeCells;\r\n document.getElementById('wptb-split-cell').onclick = table.splitCell;\r\n }\r\n \r\n document.querySelector( '.wptb-left-panel-extend' ).onclick = function() {\r\n let wptbContainer = document.querySelector( '.wptb-container' );\r\n if( wptbContainer ) {\r\n if ( wptbContainer.classList.contains( 'collapsed' ) ) {\r\n wptbContainer.classList.remove( 'collapsed' );\r\n } else {\r\n wptbContainer.classList.add( 'collapsed' );\r\n }\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.addEventListener( 'click', 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 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 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 } \r\n }, false);\r\n \r\n};","var WPTB_List = function ( innerElements, DOMElementProt ) {\r\n\r\n var el_L = document.createElement('ul'), item,\r\n DOMElement = document.createElement('div'),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n DOMElement.classList.add( 'wptb-list-item-container' );\r\n\r\n this.kind = 'list';\r\n\r\n if (innerElements === '') {\r\n //Case for edit mode list\r\n } else if ( !innerElements ) {\r\n for (var i = 0; i < 3; i++) {\r\n item = new WPTB_ListItem( '<p>List Item ' + (i + 1) + '</p>');\r\n el_L.appendChild(item.getDOMElement());\r\n }\r\n } else {\r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n };\r\n \r\n for ( var i = 0; i < innerElements.length; i++ ) {\r\n let listItem = DOMElementProt.querySelector( 'li' );\r\n item = new WPTB_ListItem( innerElements[i], listItem, true );\r\n el_L.appendChild(item.getDOMElement());\r\n }\r\n }\r\n DOMElement.appendChild(el_L);\r\n //window.addElementOptions('list', elList);\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n }\r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n WPTB_Helper.listItemsRecalculateIndex( el_L );\r\n\r\n return this;\r\n};","var WPTB_ListItem = function ( text, DOMElementProt, copy ) {\r\n let wptbListItemReturn;\r\n if ( DOMElementProt == undefined || ( DOMElementProt && copy )) {\r\n if (text == undefined) text = 'New List Item';\r\n var DOMElement = document.createElement('li'),\r\n //divdot = document.createElement('div'),\r\n divcontent = document.createElement('div');\r\n //libullet = document.createElement('li');\r\n //divdot.classList.add('wptb-list-item-style-dot');\r\n divcontent.classList.add('wptb-list-item-content');\r\n //libullet.classList.add('wptb-bullet');\r\n if ( DOMElementProt ) {\r\n let styleDot = DOMElementProt.getAttribute( 'style' );\r\n if ( styleDot ) {\r\n DOMElement.setAttribute( 'style', styleDot );\r\n }\r\n }\r\n //DOMElement.appendChild(divdot);\r\n DOMElement.appendChild(divcontent);\r\n //divdot.appendChild(libullet);\r\n divcontent.innerHTML = text;\r\n divcontent.onkeyup = window.listItemKeyListener;\r\n \r\n wptbListItemReturn = true;\r\n } else {\r\n var DOMElement = DOMElementProt;\r\n var divcontent = DOMElement.getElementsByClassName( 'wptb-list-item-content' )[0];\r\n \r\n divcontent.onkeyup = window.listItemKeyListener;\r\n \r\n wptbListItemReturn = false;\r\n }\r\n \r\n DOMElement.onmouseenter = function (event) {\r\n\r\n var btnDelete = document.createElement('span'),\r\n btnCopy = document.createElement('span'),\r\n actions = document.createElement('span'),\r\n previous,\r\n i;\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 this.classList.add('wptb-directlyhovered');\r\n\r\n btnDelete.onclick = function () {\r\n var action = this.parentNode, \r\n item = this.parentNode.parentNode,\r\n parent = item.parentNode;\r\n item.removeChild( action );\r\n parent.removeChild( item );\r\n WPTB_Helper.listItemsRecalculateIndex( parent );\r\n };\r\n\r\n btnCopy.onclick = function (event) {\r\n var listItem = event.target.parentNode.parentNode,\r\n content = listItem.querySelector('.wptb-list-item-content'),\r\n html = content.innerHTML;\r\n var duplicate = new WPTB_ListItem( html, listItem, true );\r\n listItem.parentNode.insertBefore( duplicate.getDOMElement(), DOMElement );\r\n WPTB_Helper.listItemsTinyMceInit( duplicate.getDOMElement().firstChild );\r\n setTimeout( function(){\r\n divcontent.innerHTML = html;\r\n WPTB_Helper.listItemsRecalculateIndex( listItem.parentNode );\r\n }, 5 );\r\n };\r\n\r\n actions.append(btnCopy, btnDelete);\r\n this.appendChild(actions);\r\n };\r\n\r\n DOMElement.onmouseleave = function (event) {\r\n this.removeAttribute( 'class' );\r\n let iter = 0;\r\n while( event.target.querySelector( '.wptb-actions' ) && iter < 5 ) {\r\n event.target.querySelector( '.wptb-actions' ).remove();\r\n iter++;\r\n }\r\n };\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n \r\n if ( wptbListItemReturn ) {\r\n return this;\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) {\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}","var WPTB_Parser2 = function (code) {\r\n if( Array.isArray( code ) ) {\r\n let elementHtml;\r\n \r\n if ( code.length == 1) {\r\n return elementHtml.appendChild( document.createTextNode( code[0] ) );\r\n }\r\n if( 0 in code ) {\r\n let tagName = code[0];\r\n elementHtml = document.createElement( tagName );\r\n \r\n if ( 1 in code ) {\r\n if( Array.isArray( code[1] ) ) {\r\n let attributes = code[1];\r\n \r\n for( let i = 0; i < attributes.length; i++ ) {\r\n if( Array.isArray( attributes[i] ) ) {\r\n elementHtml.setAttribute(attributes[i][0], attributes[i][1]);\r\n }\r\n }\r\n }\r\n }\r\n \r\n if ( 2 in code ) {\r\n if ( Array.isArray( code[2] ) ) {\r\n for ( let i = 0; i < code[2].length; i++ ) {\r\n if ( typeof code[2][i] === 'string' && tagName.toLowerCase() == 'p' ) {\r\n elementHtml.appendChild( document.createTextNode( code[2][i] ) );\r\n continue;\r\n }\r\n if ( ! WPTB_Parser( code[2][i] ) ) continue;\r\n elementHtml.appendChild( WPTB_Parser( code[2][i] ) );\r\n }\r\n } else if( typeof code[2] === 'string' ) {\r\n elementHtml.appendChild( document.createTextNode( code[2] ) );\r\n }\r\n \r\n }\r\n }\r\n \r\n return elementHtml;\r\n } else {\r\n return false;\r\n }\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 elems[i].ondragend = function () {\r\n let wptbDropHandle = document.querySelector( '.wptb-drop-handle' ),\r\n wptbDropBorderMarker = document.querySelector( '.wptb-drop-border-marker' );\r\n if ( wptbDropHandle || wptbDropBorderMarker ) {\r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\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 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-save-btn' )[0].onclick = function () {\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 table.toggleTableEditMode();\r\n }\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 = document.getElementsByClassName( 'wptb-preview-table' );\r\n if( code.length > 0 ) {\r\n code = WPTB_Stringifier( code[0] );\r\n code = code.outerHTML;\r\n } else { \r\n code = '';\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 security_code: wptb_admin_object.security_code\r\n };\r\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\r\n params.id = rs;\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 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 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 } else if( data[0] == 'edited' ) {\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\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","var WPTB_Space = function ( elSpaceBetween ) {\r\n\r\n function newElementProxy(el) {\r\n if (el.includes('list')) {\r\n return new WPTB_List();\r\n } else if (el.includes('image')) {\r\n return new WPTB_Image();\r\n } else if (el.includes('text')) {\r\n return new WPTB_Text();\r\n } else if (el.includes('button')) {\r\n return new WPTB_Button();\r\n }\r\n }\r\n let spaceBetween;\r\n if ( ! elSpaceBetween ) {\r\n spaceBetween = document.createElement('div'), spaceBetween.classList.add('wptb-space-between');\r\n } else {\r\n spaceBetween = elSpaceBetween;\r\n }\r\n\r\n spaceBetween.ondragenter = function () {\r\n this.classList.add('visible');\r\n };\r\n spaceBetween.ondragover = function (event) {\r\n event.preventDefault();\r\n };\r\n\r\n spaceBetween.ondragleave = function () {\r\n this.classList.remove('visible');\r\n };\r\n\r\n spaceBetween.ondrop = function (event) {\r\n event.stopPropagation();\r\n\r\n var p = event.target.nextSibling,\r\n td = event.target,\r\n element, t_space, spaceParent;\r\n\r\n while ( !td.classList.contains('wptb-droppable') ) {\r\n td = td.parentNode;\r\n }\r\n\r\n if (event.dataTransfer.getData('wptbElement')) {\r\n element = newElementProxy(event.dataTransfer.getData('wptbElement'));\r\n this.classList.remove('visible');\r\n\r\n if (p == null) {\r\n td.appendChild(element.getDOMElement());\r\n td.appendChild(new WPTB_Space());\r\n } else {\r\n td.insertBefore(element.getDOMElement(), p);\r\n td.insertBefore(new WPTB_Space(), p);\r\n }\r\n\r\n } else {\r\n alert(event.dataTransfer.getData('node'));\r\n element = document.getElementsByClassName(event.dataTransfer.getData('node'))[0];\r\n t_space = element.nextSibling;\r\n spaceParent = element.parentNode;\r\n if (t_space != undefined) {\r\n spaceParent.removeChild(t_space);\r\n }\r\n\r\n if (p == null) {\r\n td.appendChild(element);\r\n td.appendChild(new WPTB_Space());\r\n } else {\r\n td.insertBefore(element, p);\r\n td.insertBefore(new WPTB_Space(), p);\r\n }\r\n\r\n }\r\n this.classList.remove('visible');\r\n };\r\n \r\n if ( ! elSpaceBetween ) {\r\n return spaceBetween;\r\n }\r\n};","var WPTB_Stringifier = function ( codeMain ) {\r\n if ( codeMain ) {\r\n let code = codeMain.cloneNode( true );\r\n code.classList.add( 'wptb-table-preview-static-indic' );\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 if ( codeMain.querySelector( 'wptb-table-preview-head' ) ) {\r\n tds[i].removeAttribute( 'data-x-index' );\r\n }\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 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 innerElements[j].classList.remove( 'wptb-directlyhovered' );\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 wptbActions[0].parentNode.removeChild( wptbActions[0] );\r\n wptbActionsLength--;\r\n } \r\n }\r\n }\r\n \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}","var WPTB_Stringifier2 = function ( node, start = false ) {\r\n\r\n\tif ( node == undefined ) {\r\n\t\treturn '';\r\n\t} else if ( node.tagName == undefined && node.nodeType == 3 ) {\r\n return node.nodeValue;\r\n }\r\n \r\n let code = [],\r\n children,\r\n int_elem_arr = false,\r\n attributes = [...node.attributes],\r\n attributes_list = [],\r\n internal_elements = [];\r\n if ( ( node.parentNode.classList.contains( 'wptb-list-item-content' ) || \r\n node.parentNode.classList.contains( 'mce-content-body' ) ) && \r\n node.tagName.toLowerCase() == 'p' ) {\r\n children = node.childNodes;\r\n int_elem_arr = true;\r\n } else if( node.children.length > 0 ) {\r\n children = node.children;\r\n } else {\r\n children = node.childNodes;\r\n }\r\n if ( attributes.length > 0 ) {\r\n for ( let i = 0; i < attributes.length; i++ ) {\r\n attributes_list[i] = [attributes[i].name, attributes[i].value];\r\n }\r\n } else {\r\n attributes_list = '';\r\n }\r\n \r\n if ( children.length > 0 ) {\r\n for ( let i = 0; i < children.length; i++) {\r\n let inter_elem = WPTB_Stringifier(children[i]);\r\n \r\n if ( Array.isArray( inter_elem ) || int_elem_arr ) {\r\n internal_elements[i] = inter_elem;\r\n } else if ( typeof inter_elem === 'string' && inter_elem ) {\r\n internal_elements = inter_elem;\r\n }\r\n }\r\n } else {\r\n internal_elements = '';\r\n }\r\n \r\n \r\n code.push(node.tagName.toLowerCase(), attributes_list , internal_elements);\r\n \r\n return code;\r\n}","var array = [], WPTB_Table = function (columns, rows) {\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 var rs = this.rowSpan,\r\n cs = this.colSpan,\r\n markedCells,\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(this),\r\n row = position[0],\r\n column = position[1];\r\n if ( ! document.select.isActivated() ) {\r\n return;\r\n }\r\n if (this.className.match(/wptb-highlighted/)) {\r\n this.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 this.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 markedCells = document.getElementsByClassName('wptb-highlighted').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 let cellHighlighted = document.querySelector( '.wptb-highlighted' );\r\n if( cellHighlighted ) {\r\n let wptbTableColumnWidthSlider = document.getElementById( 'wptb-table-column-width-slider' );\r\n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\r\n let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\r\n let width = cellHighlighted.style.width;\r\n if( width ) {\r\n wptbTableColumnWidthSlider.value = parseFloat( width, 10 );\r\n wptbTableColumnWidthNumber.value = parseFloat( width, 10 );\r\n tableColumnWidthAutoFixedCheckbox.checked = true;\r\n } else if( cellHighlighted.dataset.wptbFixedWidth ) {\r\n wptbTableColumnWidthSlider.value = cellHighlighted.dataset.wptbFixedWidth;\r\n wptbTableColumnWidthNumber.value = cellHighlighted.dataset.wptbFixedWidth;\r\n tableColumnWidthAutoFixedCheckbox.checked = true;\r\n } else {\r\n let cellWidth = WPTB_Helper.getColumnWidth( table, cellHighlighted );\r\n wptbTableColumnWidthSlider.value = cellWidth;\r\n wptbTableColumnWidthNumber.value = cellWidth;\r\n tableColumnWidthAutoFixedCheckbox.checked = false;\r\n }\r\n \r\n \r\n let wptbTableRowHeightSlider = document.getElementById( 'wptb-table-row-height-slider' );\r\n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\r\n let tableRowHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\r\n let height = cellHighlighted.style.height;\r\n if( height ) {\r\n wptbTableRowHeightSlider.value = parseFloat( height, 10 );\r\n wptbTableRowHeightNumber.value = parseFloat( height, 10 );\r\n tableRowHeightAutoFixedCheckbox.checked = true;\r\n } else if( cellHighlighted.dataset.wptbFixedHeight ) {\r\n wptbTableRowHeightSlider.value = cellHighlighted.dataset.wptbFixedHeight;\r\n wptbTableRowHeightNumber.value = cellHighlighted.dataset.wptbFixedHeight;\r\n tableRowHeightAutoFixedCheckbox.checked = true;\r\n } else {\r\n let cellHeight = WPTB_Helper.getRowHeight( table, cellHighlighted );\r\n wptbTableRowHeightSlider.value = cellHeight;\r\n wptbTableRowHeightNumber.value = cellHeight;\r\n tableRowHeightAutoFixedCheckbox.checked = false;\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 /* \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 var 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 tds = table.getElementsByClassName('wptb-highlighted');\r\n while (tds.length) {\r\n tds[0].classList.remove('wptb-highlighted');\r\n }\r\n for (var i = 0; i < array.length; i++) {\r\n for (var j = 0; j < array[i].length; j++) {\r\n array[i][j] = 0;\r\n }\r\n }\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 };\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-header-bg').val('');\r\n jQuery('#wptb-even-row-bg').val('');\r\n jQuery('#wptb-odd-row-bg').val('');\r\n jQuery('#wptb-table-border-color').val('');\r\n jQuery('#wptb-table-inner-border-number,#wptb-table-inner-border-slider').val('0');\r\n jQuery('#wptb-table-border-number,#wptb-table-border-slider').val('0');\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' );\r\n table.dataset.reconstraction = 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 row.appendChild(cell.getDOMElement());\r\n }\r\n }\r\n } else {\r\n let wptb_preview_table = document.getElementsByClassName( 'wptb-preview-table' );\r\n\r\n if (wptb_preview_table.length > 0) {\r\n table = wptb_preview_table[0];\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 }\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\r\n table.toggleTableEditMode = function () {\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 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.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 } else {\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.classList.add( 'wptb-preview-table-manage-cells' );\r\n }\r\n }\r\n\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\r\n table.recalculateIndexes = function ( start ) {\r\n let trs = this.getElementsByTagName('tr'), tds, maxCols = 0, maxColsFull = 0,\r\n tdsArr = [];\r\n let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\r\n \r\n for (var i = 0; i < trs.length; i++) {\r\n if ( i == 0 ) {\r\n if ( start == undefined ) {\r\n trs[i].style.backgroundColor = jQuery('#wptb-table-header-bg').val();\r\n }\r\n if( wptbTopRowAsHeader.checked ) {\r\n if( start == undefined ) {\r\n this.classList.add( 'wptb-table-preview-head' ); \r\n trs[i].classList.add( 'wptb-table-head' )\r\n } ;\r\n } else {\r\n if( start == undefined ) {\r\n this.classList.remove( 'wptb-table-preview-head' );\r\n trs[i].classList.remove( 'wptb-table-head' );\r\n }\r\n }\r\n } else {\r\n if (i % 2 == 0) {\r\n if ( start == undefined ) {\r\n trs[i].style.backgroundColor = jQuery('#wptb-odd-row-bg').val();\r\n }\r\n trs[i].classList.remove( 'wptb-table-head' );\r\n } else {\r\n if ( start == undefined ) {\r\n trs[i].style.backgroundColor = jQuery('#wptb-even-row-bg').val();\r\n }\r\n trs[i].classList.remove( 'wptb-table-head' );\r\n }\r\n }\r\n\r\n tdsArr[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 (var 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 if( i == 0 ) {\r\n maxColsFull = jMainIter;\r\n }\r\n }\r\n if (j > maxCols) {\r\n maxCols = j;\r\n }\r\n }\r\n this.columns = maxCols;\r\n this.maxCols = maxColsFull;\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 let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\r\n if( ! tableColumnWidthAutoFixedCheckbox.checked ) {\r\n tableColumnWidthAutoFixedCheckbox.checked = true;\r\n }\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 }\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 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[parseInt( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] ) {\r\n if( td.style.width ) {\r\n arrayCellsWidthFixedHelper[parseInt( 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[parseInt( td.dataset.xIndex )] = 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 if( arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] ) {\r\n arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n } else {\r\n arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n }\r\n }\r\n } else if( arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] ) {\r\n if( ! td.dataset.wptbFixedWidth ) {\r\n td.dataset.wptbCssTdAutoWidth = true;\r\n }\r\n } else if( arrayCellsWidthFixedHelper[parseInt( 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 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 tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto + tableBorderCommon;\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 - tableBorderCommon;\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 = null;\r\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed - tableBorderCommon;\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 = null;\r\n table.style.minWidth = null;\r\n table.style.maxWidth = tableTdsSumMaxWidth + 'px';\r\n }\r\n } else {\r\n table.style.maxWidth = null;\r\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\r\n table.style.width = null;\r\n tableTdWidthAuto = '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 \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 let tableColumnHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\r\n if( ! tableColumnHeightAutoFixedCheckbox.checked ) {\r\n tableColumnHeightAutoFixedCheckbox.checked = true;\r\n }\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 }\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 }\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\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 }\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\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 cellPointer,\r\n cellsBuffer,\r\n cell = document.querySelector('.wptb-highlighted'),\r\n cellStyle = cell.getAttribute('style'),\r\n pos = c_pos != undefined && typeof c_pos === 'number' ? c_pos : getCoords(cell)[1];\r\n \r\n \r\n \r\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\r\n table.addColumnEnd();\r\n } else {\r\n let pendingInsertion = false,\r\n stepsToMove,\r\n td, bro,\r\n carriedRowspans = [],\r\n currentCell;\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n carriedRowspans.push(0);\r\n }\r\n\r\n for (var i = 0; i < rows.length; i++) {\r\n cellPointer = 0;\r\n cellsBuffer = rows[i].getElementsByTagName('td');\r\n pendingInsertion = false;\r\n for (var xPosition = 0;\r\n xPosition < maxAmountOfCells;\r\n xPosition += stepsToMove) {\r\n stepsToMove = 1;\r\n\r\n if (pendingInsertion) {\r\n 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 }\r\n if (currentCell && rows[i].contains(currentCell)) {\r\n bro = currentCell.nextSibling;\r\n if (bro) {\r\n rows[i].insertBefore(td.getDOMElement(), bro);\r\n } else {\r\n rows[i].appendChild(td.getDOMElement());\r\n }\r\n } else {\r\n rows[i].insertBefore(td.getDOMElement(), cellsBuffer[0]);\r\n }\r\n break;\r\n } else if (carriedRowspans[xPosition] > 0) {\r\n // If no pending insertion, let's check if no rowspan from upper cells is pending in current position\r\n if (pos == xPosition) {\r\n pendingInsertion = true;\r\n }\r\n } else {\r\n currentCell = cellsBuffer[cellPointer++];\r\n if (currentCell.rowSpan > 1) {\r\n stepsToMove = currentCell.colSpan;\r\n for (var k = 0; k < currentCell.colSpan; k++) {\r\n carriedRowspans[xPosition + k] = currentCell.rowSpan;\r\n if (xPosition + k == pos) {\r\n pendingInsertion = true;\r\n }\r\n }\r\n } else if (currentCell.colSpan > 1) {\r\n stepsToMove = currentCell.colSpan;\r\n for (var k = 0; k < currentCell.colSpan; k++) {\r\n if (xPosition + k == pos) {\r\n pendingInsertion = true;\r\n }\r\n }\r\n } else if (xPosition == pos) {\r\n pendingInsertion = true;\r\n }\r\n }\r\n }\r\n\r\n for (var l = 0; l < maxAmountOfCells; l++) {\r\n if (carriedRowspans[l] > 0)\r\n carriedRowspans[l]--;\r\n }\r\n\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 };\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 currentTableTd,\r\n currentTdStyle;\r\n r.classList.add( 'wptb-row' );\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 < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\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 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 < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\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 td.getDOMElement().setAttribute( 'style', cellStyle );\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\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 table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\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\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\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 table.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n WPTB_Helper.settingsPanelClear();\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n }\r\n \r\n table.recalculateIndexes();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n undoSelect();\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 table.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n WPTB_Helper.settingsPanelClear();\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n }\r\n \r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n undoSelect();\r\n };\r\n\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 // 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};","var WPTB_Text = function ( text , DOMElementProt ) {\r\n let DOMElement = document.createElement('div'),\r\n elText2 = document.createElement('div'),\r\n elP = document.createElement('p'),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n \r\n DOMElement.classList.add( 'wptb-text-container' );\r\n\r\n elP.innerHTML = text != undefined ? text : 'Text';\r\n elText2.appendChild(elP);\r\n DOMElement.appendChild(elText2);\r\n if ( DOMElementProt ) {\r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n };\r\n\r\n let attributes = [...DOMElementProt.attributes];\r\n for( let i = 0; i < attributes.length; i++ ) {\r\n DOMElement.setAttribute(attributes[i].name, attributes[i].value);\r\n }\r\n } \r\n\r\n this.kind = 'text';\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n\r\n return this;\r\n};"]}
1
+ {"version":3,"sources":["applyGenericItemSettings.js","wptb-builder.js","WPTB_Builder.js","WPTB_Button.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Image.js","WPTB_Initializer.js","WPTB_innerElementSet.js","WPTB_LeftPanel.js","WPTB_List.js","WPTB_ListItem.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Parser2.js","WPTB_Settings.js","WPTB_Space.js","WPTB_Stringifier.js","WPTB_Stringifier2.js","WPTB_Table.js","WPTB_Text.js"],"names":["applyGenericItemSettings","element","kindIndexProt","copy","node","getDOMElement","index","listItems","undefined","document","counter","nextIndex","kind","wptbElements","getElementsByClassName","elementIndexesArr","i","length","regex","RegExp","infArr","className","match","push","elementIndexMax","Math","max","split","onmouseenter","event","classList","add","btnDelete","createElement","btnCopy","btnMove","actions","draggable","onclick","act","parentNode","el","removeChild","thisRow","contains","table","WPTB_Helper","findAncestor","dataTitleColumnSet","td","target","temp","srcList","querySelectorAll","innerHTML","WPTB_List","insertBefore","nextSibling","WPTB_Text","childNodes","WPTB_Image","children","src","text","querySelector","WPTB_Button","WPTB_innerElementSet","parent","type","dragImagesArr","ondragstart","style","opacity","remove","dataTransfer","setDragImage","setData","a","e","preventDefault","buttonsTinyMceInit","tinyMCE","init","inline","plugins","dialog_type","theme","menubar","fixed_toolbar_container","paste_as_text","toolbar","setup","ed","on","row","init_instance_callback","editor","window","currentEditor","totalWidth","offsetWidth","getElementById","scrollTop","bodyElement","display","position","right","top","listItemsTinyMceInit","appendChild","onmouseleave","iter","observer","MutationObserver","mutations","config","attributes","attributeFilter","observe","node_wptb_element_kind_num","WPTB_ElementOptions","increment","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","JSON","parse","responseText","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","WPTB_LeftPanel","WPTB_Settings","send","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","addEventListener","DOMElementProt","DOMElement","elButton","el_B","el_BDiv","wptbElementMutch","Array","isArray","attributesContainer","setAttribute","name","wptbButtonWrapper","wptbButtonWrapAttributes","wptbButton","wptbButtonAttributes","WPTB_Cell","callback","highlightRow","parentRow","columnCount","parseInt","tds","getElementsByTagName","classToAdd","ttd","highlightColumn","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","wptbPhElement","wptbSpaceBetween","j","WPTB_Space","wptbElementTypeClass","wptbTypeElementArr","wptbListItems","WPTB_ListItem","setCoords","y","x","dataset","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","parseFloat","height","offsetHeight","WPTB_DropHandle","thisElem","newElementProxy","includes","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","body","ondragenter","ondragover","ondragleave","ondrop","getData","getDOMParentElement","nodeName","toLowerCase","innerElement","innerElementNext","wptbContainer","onscroll","localName","indics","types","notDragEnter","coordinatesElement","getBoundingClientRect","left","Number","indexOf","elementDrag","offsetY","layerY","bottom","priv","key","elemIdClass","prop","cloneNode","properties","affectedEl","wptbButtonA","wptbSize","b","buttonAlignment","justifyContent","buttonAlignmentSelect","selectOption","selectOptionVal","selected","buttonHref","getAttribute","buttonLinkTarget","buttonId","buttonHrefInput","buttonLinkTargetInput","buttonLinkTargetInputId","buttonLinkTargetInputLabel","buttotIdInput","checked","buttonTextColor","color","buttonColor","backgroundColor","buttonTextColorInput","buttonBackgroundColorInput","rgbToHex","elementsA","aTextAlign","textAlign","imageAlignmentSelect","imageLinkHref","inputImageLink","imageLinkTarget","imageLinkTargetInput","imageLinkTargetInputId","imageLinkTargetInputLabel","img","imgWidth","imageWidthInputRange","imageWidthInputNumber","imgAlternativeText","imageAlternativeTextInput","elementFontSize","fontSize","elementTextColor","textFontSizeInputRange","textFontSizeInputNumber","textColorInput","elementList","elementListColor","listColorInput","elementListItem","listItemP","listItemPClasses","elementListClassSelect","listIconSelectLabel","nodeType","listIconSelectLabelId","elementListStyleTypeSelect","elementListItemContent","listItemPTextAlignArr","p","listItemPTextAlignLeftCount","listItemPTextAlignCenterCount","listItemPTextAlignRightCount","elementListAlignmentSelect","maxListItemTAlLeftC","optionsClass","buttons","size","n_Class","num","optionControls","wpColorPicker","change","ui","classe","ps","number","toString","slider","oninput","onchange","alt","href","linkHttpCheckChange","rel","removeAttribute","jc","id","parentNodeSettingItem","listItem","hexToRgb","hex","result","exec","rgb","slice","getDragImageCustom","hostName","location","protocol","hostname","image","button","list","listItemsRecalculateIndex","ulElem","par","listStyleTypeIndex","article","keyCode","duplicate","firstChild","innerText","pText","replace","trim","selectedText","getSelectionText","link","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","contentsForHeader","tdElements","textContent","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","txt","getSelection","selection","createRange","settingsPanelClear","wpColorPickerClear","inputId","input","wpPickerContainer","newInput","url","results","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","elImage","anchor","file_frame","wp","media","frames","title","multiple","attachment","state","get","first","toJSON","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","columns","div","classId","stopPropagation","onmouseover","wptbElementButtons","wptbTdBgColorSavedSet","trNumber","tableRows","trBackgroundColor","wptbEvenRowBg","clear","tableHeader","tableAdaptiveForMobile","wptbAdaptiveTableCheckbox","wptbAdaptiveTable","tableTopRowAsHeadSavedSet","wptbTopRowAsHeader","tableBorderColorWidthSavedSet","tableBorderColor","borderColor","tableBorderColorInput","tableBorderWidth","borderWidth","wptbTableBorderWidthSlider","wptbTableBorderWidthNumber","tableTd","applyInnerBorder","innerBorderCheckInput","wptbApplyInnerBorder","wptbTableInnerBorderSlider","wptbTableInnerBorderNumber","tableCells","tableInnerborderNumber","addInnerBorderSize","borderStyle","addCellPadding","addInnerBorder","styles","wptbPreviewTable","marginBottom","addBorderSize","cellPaddingSavedSet","wptbTableCellSlider","wptbTableCellNumber","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","wptbTableBorderNumber","wptbTextfontSizeNumber","wptbImageWidthNumber","wptbTableColumnWidthNumber","wptbTableRowHeightNumber","tdDefaultWidth","wptbInnerBorderCheck","tableBorderColorSetArea","addColumnWidth","highlighted","addRowHeight","createMobileHeadForTable","thisEvent","wptbElement","toggleTableEditMode","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","wpcdFixedToolbar","hasAttribute","innerElements","el_L","item","wptbListItemReturn","divcontent","styleDot","listItemKeyListener","previous","action","content","html","setTimeout","append","selectedCells","multipleCellMode","activateMultipleSelectMode","deactivateMultipleSelectMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","code","columnTitleMobile","WPTB_Parser2","elementHtml","createTextNode","tagName","elems","effectAllowed","ondragend","shortcodePopupWindow","bar","wptb_admin_object","t","messagingArea","WPTB_Stringifier","outerHTML","messagingAreaText","params","security_code","rs","wptbId","stringify","data","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","elSpaceBetween","spaceBetween","t_space","spaceParent","alert","codeMain","tableColumns","minWidth","maxWidth","mceContentBodys","k","dataMceStyle","contentEditable","spellCheck","mceIds","wptbActions","wptbActionsLength","columnNameDivContainer","columnNameDiv","WPTB_Stringifier2","start","nodeValue","int_elem_arr","attributes_list","internal_elements","inter_elem","array","wptbTableSetup","maxAmountOfCells","maxAmountOfRows","mark","rowSpan","cs","colSpan","markedCells","noCells","singleCells","multipleCells","cellSettings","column","cellHighlighted","wptbTableColumnWidthSlider","tableColumnWidthAutoFixedCheckbox","wptbFixedWidth","wptbTableRowHeightSlider","tableRowHeightAutoFixedCheckbox","wptbFixedHeight","isSquare","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","string","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","apply","getActualPointsInRow","points","search","skipInCols","reconstraction","insertRow","wptb_preview_table","cellModeBackground","leftScrollPanelCurtain","leftScrollPanelCellSettings","wptbPreviewTableTds","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","z","cleaner","dataXIndex","tableTdsFor","colspan","widthIsSet","arrayTdsFromPreviousRow","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","tableFullStyleObj","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","head","cssForTdsWidthAutoOld","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","tableColumnHeightAutoFixedCheckbox","wptbAdaptiveTableChoseBlock","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","l","r","aux","from","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","call","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","wptbLeftScrollPanelCellSetting","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","pop","onresize","elText2","elP"],"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 listItems,\r\n copy;\r\n \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 } else if ( kindIndexProt && ! copy ) {\r\n index = kindIndexProt.split('-')[1];\r\n }\r\n \r\n node.onmouseenter = function (event) {\r\n this.classList.add('wptb-directlyhovered');\r\n let btnDelete = document.createElement( 'span' ),\r\n btnCopy = document.createElement( 'span' ),\r\n btnMove = document.createElement( 'span' ),\r\n actions = document.createElement( 'span' ), i;\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 btnMove.classList.add(\"dashicons\", \"dashicons-move\", 'wptb-move-action');\r\n btnMove.draggable = true;\r\n btnDelete.onclick = function (event) {\r\n let act = this.parentNode.parentNode,\r\n el = act.parentNode;\r\n el.removeChild(act);\r\n \r\n if( act.kind == 'text' ) {\r\n let thisRow = el.parentNode\r\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n \r\n };\r\n btnCopy.onclick = function (event) {\r\n let copy;\r\n if (element.kind == 'list') {\r\n var td = event.target.parentNode.parentNode.parentNode,\r\n temp = [],\r\n srcList = event.target.parentNode.parentNode.querySelectorAll('ul li .wptb-list-item-content');\r\n\r\n for (var i = 0; i < srcList.length; i++) {\r\n temp.push(srcList[i].innerHTML);\r\n }\r\n\r\n copy = new WPTB_List( temp, node );\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n } else if (element.kind == 'text') {\r\n var td = event.target.parentNode.parentNode.parentNode;\r\n copy = new WPTB_Text(event.target.parentNode.parentNode.childNodes[0].innerHTML, node);\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n } else if ( element.kind == 'image' ) {\r\n var td = event.target.parentNode.parentNode.parentNode;\r\n copy = new WPTB_Image( event.target.parentNode.parentNode.children[0].children[0].src, node );\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n } else {\r\n var td = event.target.parentNode.parentNode.parentNode,\r\n text = event.target.parentNode.parentNode.childNodes[0].querySelector( 'p' ).innerHTML;\r\n copy = new WPTB_Button( text, node );\r\n\r\n node.parentNode.insertBefore( copy.getDOMElement(), node.nextSibling );\r\n }\r\n \r\n WPTB_innerElementSet( copy.getDOMElement() );\r\n };\r\n let parent = this,\r\n infArr,\r\n type;\r\n infArr = parent.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n type = infArr[1];\r\n let dragImagesArr = WPTB_Helper.dragImagesArr();\r\n btnMove.ondragstart = function (event) {\r\n this.parentNode.style.opacity = 0;\r\n parent.classList.remove( 'wptb-directlyhovered' );\r\n parent.classList.add( 'wptb-moving-mode' );\r\n \r\n event.dataTransfer.setDragImage( dragImagesArr[type], 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.parentNode;\r\n if( act.kind == 'text' ) {\r\n let thisRow = el.parentNode\r\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n };\r\n\r\n if (element.kind === 'button') {\r\n let a = node.querySelector( 'a' ),\r\n target = a.querySelector( 'div' );\r\n a.onclick = function( e ) {\r\n e.preventDefault();\r\n }\r\n WPTB_Helper.buttonsTinyMceInit( target );\r\n } else if (element.kind === 'text') {\r\n tinyMCE.init({\r\n target: node.childNodes[0],\r\n inline: true,\r\n plugins: \"link, paste\",\r\n dialog_type: \"modal\",\r\n theme: 'modern',\r\n menubar: false,\r\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\r\n paste_as_text: true,\r\n toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',\r\n setup : function( ed ) {\r\n ed.on( 'change', function(e) {\r\n let row = WPTB_Helper.findAncestor( node, 'wptb-row' );\r\n if( row.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n });\r\n },\r\n init_instance_callback: function (editor) {\r\n window.currentEditor = editor;\r\n //editor.fire('focus');\r\n editor.on('focus', function (e) {\r\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\r\n if (window.currentEditor &&\r\n document.getElementById('wptb_builder').scrollTop >= 55 &&\r\n window.currentEditor.bodyElement.style.display != 'none') {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\r\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\r\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\r\n } else {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\r\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\r\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\r\n }\r\n });\r\n }\r\n });\r\n \r\n } else {\r\n listItems = node.getElementsByClassName( 'wptb-list-item-content' );\r\n for ( let i = 0; i < listItems.length; i++ ) {\r\n WPTB_Helper.listItemsTinyMceInit( listItems[i] );\r\n }\r\n }\r\n\r\n actions.appendChild(btnMove);\r\n actions.appendChild(btnCopy);\r\n actions.appendChild(btnDelete);\r\n this.appendChild( actions );\r\n };\r\n\r\n node.onmouseleave = function ( event ) {\r\n this.classList.remove( 'wptb-directlyhovered' );\r\n let iter = 0;\r\n while( event.target.querySelector( '.wptb-actions' ) && iter < 5 ) {\r\n event.target.querySelector( '.wptb-actions' ).remove();\r\n iter++;\r\n }\r\n };\r\n \r\n // Change data-title-column if the title was changed\r\n if( element.kind == 'text' ) {\r\n var observer = new MutationObserver( function( mutations ) {\r\n let row = WPTB_Helper.findAncestor( node, 'wptb-row' );\r\n if( row.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n });\r\n var config = { attributes: true, attributeFilter: ['style'] };\r\n observer.observe( element.getDOMElement(), config );\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 new WPTB_ElementOptions( element, index, kindIndexProt );\r\n\r\n document.counter.increment(element.kind);\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 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 WPTB_Table();\r\n WPTB_LeftPanel();\r\n WPTB_Settings();\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 document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\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 document.addEventListener('DOMContentLoaded', WPTB_Builder);\r\n})();","var WPTB_Button = function( text, DOMElementProt ) {\r\n \r\n var DOMElement = document.createElement('div'),\r\n elButton = document.createElement('div'),\r\n el_B = document.createElement('a'),\r\n el_BDiv = document.createElement( 'div' ),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n\r\n DOMElement.classList.add('wptb-button-container', 'wptb-size-M', 'wptb-');\r\n elButton.classList.add('wptb-button-wrapper');\r\n el_BDiv.classList.add('wptb-button');\r\n el_BDiv.innerHTML = text != undefined ? text : 'Button Text';\r\n \r\n // Creation of a new button when copying to avoid errors when assigning new event handlers.\r\n if ( DOMElementProt ) {\r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n }; \r\n var attributesContainer = [...DOMElementProt.attributes];\r\n if ( attributesContainer.length > 0 ) {\r\n for( let i = 0; i < attributesContainer.length; i++ ) {\r\n DOMElement.setAttribute(attributesContainer[i].name, attributesContainer[i].value);\r\n } \r\n }\r\n \r\n var wptbButtonWrapper = DOMElementProt.querySelector( '.wptb-button-wrapper' );\r\n if ( wptbButtonWrapper ) {\r\n var wptbButtonWrapAttributes = [...wptbButtonWrapper.attributes];\r\n if ( wptbButtonWrapAttributes.length > 0 ) {\r\n for( let i = 0; i < wptbButtonWrapAttributes.length; i++ ) {\r\n if ( wptbButtonWrapAttributes[i].name == 'style') {\r\n elButton.setAttribute( wptbButtonWrapAttributes[i].name, wptbButtonWrapAttributes[i].value );\r\n }\r\n } \r\n }\r\n }\r\n \r\n var wptbButton = DOMElementProt.querySelector( 'a' );\r\n if ( wptbButton ) {\r\n var wptbButtonAttributes = [...wptbButton.attributes];\r\n if ( wptbButtonAttributes.length > 0 ) {\r\n for( let i = 0; i < wptbButtonAttributes.length; i++ ) {\r\n if ( wptbButtonAttributes[i].name == 'style' || \r\n wptbButtonAttributes[i].name == 'href' || \r\n wptbButtonAttributes[i].name == 'target' ) {\r\n el_B.setAttribute( wptbButtonAttributes[i].name, wptbButtonAttributes[i].value );\r\n }\r\n } \r\n }\r\n }\r\n }\r\n \r\n elButton.appendChild(el_B);\r\n el_B.appendChild( el_BDiv );\r\n DOMElement.appendChild(elButton);\r\n \r\n \r\n \r\n this.kind = 'button';\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n\r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n\r\n return this;\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 WPTB_innerElementSet( DOMElement );\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\r\n let wptbSpaceBetween = DOMElement.getElementsByClassName( 'wptb-space-between' );\r\n\r\n if ( wptbSpaceBetween.length > 0 ) {\r\n for( let j = 0; j < wptbSpaceBetween.length; j++ ) {\r\n WPTB_Space( wptbSpaceBetween[j] );\r\n }\r\n }\r\n \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 if ( wptbPhElement[i].kind == 'list' ) {\r\n let wptbListItems = wptbPhElement[i].getElementsByTagName( 'li' );\r\n if( wptbListItems.length > 0 ) {\r\n for ( let i = 0; i < wptbListItems.length; i++ ) {\r\n WPTB_ListItem( undefined, wptbListItems[i] );\r\n }\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 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 = parseFloat( this.offsetWidth, 10 ) - \r\n parseFloat( tdPaddingLeft, 10 ) - \r\n parseFloat( tdPaddingRight, 10 ) -\r\n parseFloat( tdBorderLeftWidth, 10 ) -\r\n parseFloat( tdBorderRightWidth, 10 );\r\n \r\n let height = parseFloat( this.offsetHeight, 10 ) - \r\n parseFloat( tdPaddingTop, 10 ) - \r\n parseFloat( tdPaddingBottom, 10 ) -\r\n parseFloat( tdBorderTopWidth, 10 ) -\r\n parseFloat( tdBorderBottomWidth, 10 );\r\n \r\n return {\r\n width: width, \r\n height: height\r\n };\r\n }\r\n\r\n return this;\r\n};","var WPTB_DropHandle = function (thisElem, e) {\r\n \r\n function newElementProxy(el) {\r\n if (el.includes('list')) {\r\n return new WPTB_List();\r\n } else if (el.includes('image')) {\r\n return new WPTB_Image();\r\n } else if (el.includes('text')) {\r\n return new WPTB_Text();\r\n } else if (el.includes('button')) {\r\n return new WPTB_Button();\r\n }\r\n }\r\n \r\n let wptbDropHandle,\r\n wptbDropBorderMarker;\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 let 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\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 = 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 }\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 }\r\n } else {\r\n let innerElement = wptbDropHandle.getDOMParentElement();\r\n td = innerElement.parentNode;\r\n \r\n if( wptbDropHandle.dataset.text == 'Abowe Element' ) {\r\n td.insertBefore( element, innerElement );\r\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\r\n let innerElementNext = innerElement.nextSibling;\r\n td.insertBefore( element, innerElementNext );\r\n }\r\n }\r\n \r\n let thisRow = td.parentNode\r\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n WPTB_Helper.dataTitleColumnSet( table );\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 }\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 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 if( thisRow.classList.contains( 'wptb-table-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 wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\r\n let height = thisElem.offsetHeight,\r\n coordinatesElement = thisElem.getBoundingClientRect(),\r\n left = Number( 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 = Number( coordinatesElement.top ) - Number( 11 );\r\n wptbDropHandle.dataset.text = 'Abowe Element';\r\n if ( y > height/2 ) {\r\n top = Number( 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 = Number( 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 = ( Number( thisElem.offsetWidth ) - Number( 1 ) ) + 'px';\r\n\r\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\r\n wptbDropBorderMarkerRight.style.height = ( Number( coordinatesElement.bottom ) - Number( 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_ElementOptions = function ( element, index, kindIndexProt ) {\r\n\r\n var node = element.getDOMElement(), elemIdClass;\r\n\r\n prop = document.querySelector(\".wptb-\" + element.kind + \"-options-prototype\").cloneNode(true);\r\n prop.classList.remove(\"wptb-\" + element.kind + \"-options-prototype\"); // remove prototype from the class\r\n elemIdClass = 'wptb-options-' + element.kind + \"-\" + index;\r\n\r\n var properties = prop.getElementsByClassName('wptb-element-property');\r\n\r\n for (var i = 0; i < properties.length; i++) {\r\n properties[i].dataset.element = elemIdClass;\r\n }\r\n\r\n prop.classList.add(elemIdClass);\r\n document.getElementById(\"element-options-group\").appendChild(prop);\r\n \r\n if ( kindIndexProt ) {\r\n if ( element.kind == 'button' ) {\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt )[0],\r\n wptbButtonWrapper,\r\n wptbButtonA,\r\n wptbButton,\r\n wptbSize;\r\n \r\n if ( affectedEl ) {\r\n wptbSize = affectedEl.className.match(/wptb-size-([a-z]+)/i);\r\n }\r\n \r\n if( wptbSize && Array.isArray( wptbSize ) ) {\r\n var b = prop.getElementsByClassName('wptb-btn-size-btn');\r\n \r\n for ( var i = 0; i < b.length; i++ ) {\r\n b[i].classList.remove( 'selected' );\r\n \r\n if ( b[i].innerHTML == wptbSize[1] ) {\r\n b[i].classList.add( 'selected' );\r\n }\r\n }\r\n }\r\n \r\n if( affectedEl ) {\r\n wptbButtonWrapper = affectedEl.getElementsByClassName( 'wptb-button-wrapper' );\r\n \r\n wptbButtonA = affectedEl.getElementsByTagName( 'a' );\r\n \r\n wptbButton = affectedEl.getElementsByClassName( 'wptb-button' );\r\n }\r\n \r\n if ( wptbButtonWrapper ) {\r\n let buttonAlignment = wptbButtonWrapper[0].style.justifyContent,\r\n buttonAlignmentSelect = prop.querySelector( 'select[data-type=\"button-alignment\"]' ),\r\n selectOption = buttonAlignmentSelect.getElementsByTagName( 'option' ),\r\n selectOptionVal;\r\n \r\n if ( buttonAlignment == 'flex-start' ) {\r\n selectOptionVal = 'left';\r\n } else if ( buttonAlignment == 'center' || ! buttonAlignment ) {\r\n selectOptionVal = 'center';\r\n } else if ( buttonAlignment == 'flex-end' ) {\r\n selectOptionVal = 'right';\r\n }\r\n \r\n for ( let i = 0; i < selectOption.length; i++ ) {\r\n if ( selectOption[i].value == selectOptionVal ) {\r\n selectOption[i].selected = true;\r\n }\r\n }\r\n }\r\n \r\n if ( wptbButtonA.length > 0 ) {\r\n let buttonHref = wptbButtonA[0].getAttribute( 'href' ), \r\n buttonLinkTarget = wptbButtonA[0].getAttribute( 'target' ),\r\n buttonId = wptbButtonA[0].getAttribute( 'id' ),\r\n \r\n \r\n buttonHrefInput = prop.querySelector( 'input[data-type=\"button-link\"]' ),\r\n buttonLinkTargetInput = prop.querySelector( 'input[data-type=\"button-link-target\"]' ),\r\n buttonLinkTargetInputId = buttonLinkTargetInput.getAttribute( 'id' ),\r\n buttonLinkTargetInputLabel = buttonLinkTargetInput.parentNode.getElementsByTagName( 'label' )[0],\r\n \r\n buttotIdInput = prop.querySelector( 'input[data-type=\"button-id\"]' );\r\n\r\n buttonLinkTargetInputId = buttonLinkTargetInputId + '-' + kindIndexProt.split( '-' )[1];\r\n buttonLinkTargetInput.setAttribute( 'id', buttonLinkTargetInputId );\r\n buttonLinkTargetInputLabel.setAttribute( 'for', buttonLinkTargetInputId );\r\n\r\n buttonHrefInput.value = buttonHref;\r\n\r\n if( buttonLinkTarget && buttonLinkTarget == '_blank') {\r\n buttonLinkTargetInput.checked = true;\r\n }\r\n \r\n buttotIdInput.value = buttonId;\r\n }\r\n \r\n if( wptbButton ) {\r\n let buttonTextColor = wptbButton[0].style.color,\r\n buttonColor = wptbButton[0].style.backgroundColor,\r\n buttonTextColorInput = prop.querySelector( 'input[data-type=\"button-text-color\"]' ),\r\n buttonBackgroundColorInput = prop.querySelector( 'input[data-type=\"button-color\"]' );\r\n \r\n \r\n buttonTextColorInput.value = WPTB_Helper.rgbToHex( buttonTextColor );\r\n \r\n buttonBackgroundColorInput.value = WPTB_Helper.rgbToHex( buttonColor );\r\n \r\n }\r\n } else if ( element.kind == 'image' ) {\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\r\n if ( affectedEl.length > 0 ) {\r\n let elementsA = affectedEl[0].getElementsByTagName( 'a' );\r\n if ( elementsA.length > 0 ) {\r\n let a = elementsA[0];\r\n\r\n if ( a ) {\r\n a.onclick = function( e ) {\r\n e.preventDefault();\r\n }\r\n // set select according to the alignment of the image\r\n let aTextAlign = a.style.textAlign,\r\n imageAlignmentSelect = prop.querySelector( 'select[data-type=\"image-alignment\"]' ),\r\n selectOption = imageAlignmentSelect.getElementsByTagName( 'option' );\r\n\r\n for ( let i = 0; i < selectOption.length; i++ ) {\r\n if ( selectOption[i].value == aTextAlign ) {\r\n selectOption[i].selected = true;\r\n }\r\n }\r\n\r\n // set text link for input field of setting panel\r\n let imageLinkHref = a.getAttribute( 'href' ),\r\n inputImageLink = prop.querySelector( 'input[data-type=\"image-link\"]' );\r\n if ( imageLinkHref ) {\r\n inputImageLink.value = imageLinkHref;\r\n }\r\n\r\n // set checkbox for target of link \r\n let imageLinkTarget = a.getAttribute( 'target' ),\r\n imageLinkTargetInput = prop.querySelector( 'input[data-type=\"image-link-target\"]' ),\r\n imageLinkTargetInputId = imageLinkTargetInput.getAttribute( 'id' ),\r\n imageLinkTargetInputLabel = imageLinkTargetInput.parentNode.getElementsByTagName( 'label' )[0];\r\n\r\n imageLinkTargetInputId = imageLinkTargetInputId + '-' + kindIndexProt.split( '-' )[1];\r\n\r\n imageLinkTargetInput.setAttribute( 'id', imageLinkTargetInputId );\r\n imageLinkTargetInputLabel.setAttribute( 'for', imageLinkTargetInputId );\r\n\r\n if ( imageLinkTarget && imageLinkTarget == '_blank' ) {\r\n imageLinkTargetInput.checked = true;\r\n }\r\n\r\n let img = a.getElementsByTagName( 'img' );\r\n if ( img.length > 0 ) {\r\n // set value for input fields of image size\r\n let imgWidth = img[0].style.width;\r\n if ( imgWidth ) {\r\n let imageWidthInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"image-size\"]' ),\r\n imageWidthInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"image-size\"]' );\r\n\r\n imageWidthInputRange.value = parseInt( imgWidth );\r\n imageWidthInputNumber.value = parseInt( imgWidth );\r\n }\r\n\r\n // set value for input field of alternative text image\r\n let imgAlternativeText = img[0].getAttribute('alt'),\r\n imageAlternativeTextInput = prop.querySelector( 'input[type=\"text\"][data-type=\"alternative-text\"]' );\r\n\r\n imageAlternativeTextInput.value = imgAlternativeText;\r\n }\r\n }\r\n }\r\n }\r\n } else if ( element.kind == 'text' ) {\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\r\n if ( affectedEl.length > 0 ) {\r\n let elementFontSize = affectedEl[0].style.fontSize,\r\n elementTextColor = affectedEl[0].style.color;\r\n let textFontSizeInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"font-size\"]' ),\r\n textFontSizeInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"font-size\"]' ),\r\n textColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"color\"]' );\r\n\r\n textFontSizeInputRange.value = parseInt( elementFontSize );\r\n textFontSizeInputNumber.value = parseInt( elementFontSize );\r\n textColorInput.value = WPTB_Helper.rgbToHex( elementTextColor );\r\n }\r\n } else if ( element.kind == 'list' ) {\r\n let elementList = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\r\n if ( elementList.length > 0 ) {\r\n let elementListColor = elementList[0].querySelector( 'p' ).style.color;\r\n let listColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"list-text-color\"]' );\r\n listColorInput.value = WPTB_Helper.rgbToHex( elementListColor );\r\n \r\n let elementListItem = elementList[0].querySelectorAll( 'li' );\r\n if ( elementListItem.length > 0 ) {\r\n let listItemP = elementListItem[0].querySelector( 'p' );\r\n let listItemPClasses = listItemP.classList;\r\n //listItemPClasses = [...listItemPClasses];\r\n if ( listItemPClasses.length > 0 ) {\r\n let elementListClassSelect = prop.querySelector( 'select[data-type=\"list-class\"]' );\r\n if ( elementListClassSelect ) {\r\n elementListClassSelect.value = 'unordered';\r\n \r\n let listIconSelectLabel = elementListClassSelect.parentNode.nextSibling;\r\n for ( let i = 0; i < 10; i++ ) {\r\n if ( listIconSelectLabel.nodeType == '1' ) {\r\n break;\r\n } else {\r\n listIconSelectLabel = listIconSelectLabel.nextSibling;\r\n }\r\n }\r\n if ( listIconSelectLabel ) {\r\n let listIconSelectLabelId = listIconSelectLabel.getAttribute( 'id' );\r\n listIconSelectLabel.setAttribute( 'id', listIconSelectLabelId + '-' + kindIndexProt );\r\n listIconSelectLabel.style.display = 'flex';\r\n }\r\n \r\n let elementListStyleTypeSelect = prop.querySelector( 'select[data-type=\"list-style-type\"]' );\r\n if ( elementListStyleTypeSelect ) {\r\n elementListStyleTypeSelect.parentNode.style.display = 'flex';\r\n \r\n if( listItemPClasses.contains( 'wptb-list-style-type-disc' ) ) {\r\n elementListStyleTypeSelect.value = 'disc';\r\n } else if( listItemPClasses.contains( 'wptb-list-style-type-circle' ) ) {\r\n elementListStyleTypeSelect.value = 'circle';\r\n } else if( listItemPClasses.contains( 'wptb-list-style-type-square' ) ) {\r\n elementListStyleTypeSelect.value = 'square';\r\n } else if ( listItemPClasses.contains( 'wptb-list-style-type-none' ) ) {\r\n elementListStyleTypeSelect.value = 'none';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n let elementListItemContent = elementList[0].getElementsByClassName( 'wptb-list-item-content' );\r\n if ( elementListItemContent.length > 0 ) {\r\n let listItemPTextAlignArr = [];\r\n for ( let i = 0; i < elementListItemContent.length; i++ ) {\r\n let p = elementListItemContent[i].querySelector( 'p' );\r\n if ( p ) {\r\n if ( p.style.textAlign ) {\r\n listItemPTextAlignArr.push( p.style.textAlign );\r\n } else {\r\n listItemPTextAlignArr.push( 'left' );\r\n }\r\n }\r\n \r\n }\r\n \r\n let listItemPTextAlignLeftCount = 0,\r\n listItemPTextAlignCenterCount = 0,\r\n listItemPTextAlignRightCount = 0;\r\n \r\n if ( listItemPTextAlignArr.length > 0 ) {\r\n for ( let i = 0; i < listItemPTextAlignArr.length; i++ ) {\r\n if ( listItemPTextAlignArr[i] ) {\r\n if ( listItemPTextAlignArr[i] == 'left' ) {\r\n listItemPTextAlignLeftCount++;\r\n } else if ( listItemPTextAlignArr[i] == 'center' ) {\r\n listItemPTextAlignCenterCount++;\r\n } else if ( listItemPTextAlignArr[i] == 'right' ) {\r\n listItemPTextAlignRightCount++;\r\n }\r\n }\r\n }\r\n }\r\n \r\n let elementListAlignmentSelect = prop.querySelector( 'select[data-type=\"list-alignment\"]' ),\r\n maxListItemTAlLeftC = Math.max( listItemPTextAlignLeftCount, listItemPTextAlignCenterCount, listItemPTextAlignRightCount );\r\n \r\n if ( listItemPTextAlignLeftCount == maxListItemTAlLeftC ) {\r\n elementListAlignmentSelect.value = 'left';\r\n } else if ( listItemPTextAlignCenterCount == maxListItemTAlLeftC ) {\r\n elementListAlignmentSelect.value = 'center';\r\n } else if ( listItemPTextAlignRightCount == maxListItemTAlLeftC ) {\r\n elementListAlignmentSelect.value = 'right';\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n node.onclick = function () {\r\n var infArr = this.className.match(/wptb-element-((.+-)\\d+)/i),\r\n optionsClass = '.wptb-' + infArr[2] + 'options' +\r\n '.wptb-options-' + infArr[1];\r\n\r\n document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';\r\n document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';\r\n document.getElementById(\"element-options-group\").style.display = 'block';\r\n\r\n var children = document.getElementById(\"element-options-group\").childNodes;\r\n for (var i = 0; i < children.length; i++) {\r\n if (children[i].style)\r\n children[i].style.display = 'none';\r\n }\r\n\r\n document.querySelector(optionsClass).style.display = 'block';\r\n\r\n //var listStyleType, textAlign;\r\n\r\n// switch (element.kind) {\r\n\r\n// case 'text':\r\n// jQuery(prop).find('[data-type=color]').wpColorPicker({ defaultColor: node.style.color });\r\n// prop.querySelector('[type=number][data-type=font-size]').value\r\n// = prop.querySelector('[type=range][data-type=font-size]').value\r\n// = node.style.fontSize.substring(0, node.style.fontSize.length - 2);\r\n// break;\r\n// case 'list':\r\n// textAlign = node.querySelector('li p').style.textAlign;\r\n// listStyleType = node.querySelector('li').style.listStyleType;\r\n// if ( prop.querySelector( 'select[data-type=list-class]' ) ) {\r\n// console.log(textAlign);\r\n// console.log(listStyleType);\r\n// console.log(listStyleType);\r\n// console.log(prop);\r\n// prop.querySelector('select[data-type=list-class]').selectedIndex = ( listStyleType == 'decimal' ? 0 : 1 );\r\n// }\r\n// if ( prop.querySelector('select[data-type=list-style-type]') ) {\r\n// prop.querySelector('select[data-type=list-style-type]').selectedIndex = (listStyleType == 'circle' ? 0 : (listStyleType == 'square' ? 1 : 2));\r\n// }\r\n// if ( prop.querySelector('select[data-type=list-alignment]') ) {\r\n// prop.querySelector('select[data-type=list-alignment]').selectedIndex = (textAlign == 'left' ? 0 : (textAlign == 'center' ? 1 : 2));\r\n// }\r\n// break;\r\n// case 'image':\r\n// break;\r\n// case 'button':\r\n// jQuery(prop).find('[data-type=button-color]').wpColorPicker({ defaultColor: node.style.backgroundColor });\r\n// break;\r\n//\r\n// }\r\n };\r\n\r\n if (element.kind == 'button') {\r\n //We must add this special kind of property, since it is triggered with click event\r\n var buttons = prop.getElementsByClassName('wptb-btn-size-btn');\r\n\r\n for (var i = 0; i < buttons.length; i++) {\r\n buttons[i].onclick = function () {\r\n var size = this.innerHTML,\r\n n_Class = this.dataset.element,\r\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\r\n type = infArr[1],\r\n num = infArr[2],\r\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\r\n affectedEl.classList.remove('wptb-size-S');\r\n affectedEl.classList.remove('wptb-size-M');\r\n affectedEl.classList.remove('wptb-size-L');\r\n affectedEl.classList.remove('wptb-size-XL');\r\n affectedEl.classList.add('wptb-size-' + size);\r\n var b = this.parentNode.getElementsByClassName('wptb-btn-size-btn');\r\n for (var i = 0; i < b.length; i++) {\r\n b[i].classList.remove('selected');\r\n }\r\n this.classList.add('selected');\r\n }\r\n }\r\n }\r\n\r\n var optionControls = prop.getElementsByClassName('wptb-element-property');\r\n\r\n for (var i = 0; i < optionControls.length; i++) {\r\n if (optionControls[i].classList.contains('wptb-color-picker')) {\r\n jQuery(optionControls[i]).wpColorPicker({\r\n change: function (event, ui) {\r\n var parent = event.target, 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 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 = ui.color.toString();\r\n } else {\r\n affectedEl.getElementsByClassName('wptb-button')[0].style.backgroundColor = ui.color.toString();\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 = ui.color.toString();\r\n }\r\n }\r\n } else {\r\n affectedEl.style.color = ui.color.toString();\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (optionControls[i].dataset.type === 'font-size') {\r\n var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-text-font-size-slider')[0];\r\n slider.oninput = function () {\r\n this.parentNode.parentNode.getElementsByClassName('wptb-text-font-size-number')[0].value = this.value;\r\n this.parentNode.parentNode.getElementsByClassName('wptb-text-font-size-number')[0].onchange();\r\n }\r\n }\r\n\r\n if (optionControls[i].dataset.type === 'image-size') {\r\n var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-image-size-slider')[0];\r\n slider.oninput = function () {\r\n this.parentNode.parentNode.getElementsByClassName('wptb-image-width-number')[0].value = this.value;\r\n this.parentNode.parentNode.getElementsByClassName('wptb-image-width-number')[0].onchange();\r\n }\r\n }\r\n\r\n optionControls[i].onchange = function (event) {\r\n\r\n var n_Class = this.dataset.element,\r\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\r\n type = infArr[1],\r\n num = infArr[2],\r\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0],\r\n val = this.value;\r\n\r\n switch (this.dataset.type) {\r\n case 'src':\r\n var img = affectedEl.getElementsByTagName(\"img\")[0];\r\n img.src = this.value;\r\n break;\r\n case 'alternative-text':\r\n var img = affectedEl.getElementsByTagName('img')[0];\r\n img.alt = this.value;\r\n break;\r\n case 'image-link':\r\n affectedEl.getElementsByTagName('a')[0].href = WPTB_Helper.linkHttpCheckChange( this.value );\r\n break;\r\n case 'image-link-target':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].target = '_blank';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].target = '_self';\r\n }\r\n break;\r\n case 'image-link-nofollow':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].removeAttribute('rel');\r\n }\r\n break;\r\n case 'image-size':\r\n affectedEl.getElementsByTagName('a')[0].style.width = this.value + '%';\r\n affectedEl.getElementsByTagName('a')[0].style.height = 'auto';\r\n this.parentNode.parentNode.getElementsByClassName('wptb-image-size-slider')[0].value = this.value;\r\n break;\r\n case 'image-alignment':\r\n affectedEl.getElementsByClassName( 'wptb-image-wrapper' )[0].style.textAlign = this.value;\r\n break;\r\n case 'font-size':\r\n affectedEl.style.fontSize = val + 'px';\r\n break;\r\n case 'button-alignment':\r\n var jc = '';\r\n if (this.value == 'left') {\r\n jc = 'start';\r\n } else if (this.value == 'right') {\r\n jc = 'flex-end';\r\n } else {\r\n jc = 'center';\r\n }\r\n affectedEl.getElementsByClassName('wptb-button-wrapper')[0].style.justifyContent = jc;\r\n break;\r\n case 'button-link':\r\n if ( this.value ) {\r\n affectedEl.getElementsByTagName( 'a' )[0].href = WPTB_Helper.linkHttpCheckChange( this.value );\r\n } else {\r\n affectedEl.getElementsByTagName( 'a' )[0].removeAttribute( 'href' );\r\n }\r\n break;\r\n case 'button-link-target':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].target = '_blank';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].target = '_self';\r\n }\r\n break;\r\n case 'button-link-nofollow':\r\n if (this.checked == true) {\r\n affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';\r\n } else {\r\n affectedEl.getElementsByTagName('a')[0].removeAttribute( 'rel' );\r\n }\r\n break;\r\n case 'button-id':\r\n if( this.value ) {\r\n affectedEl.getElementsByTagName( 'a' )[0].id = this.value;\r\n } else {\r\n affectedEl.getElementsByTagName( 'a' )[0].removeAttribute( 'id' );\r\n }\r\n case 'button-color':\r\n break;\r\n case 'list-alignment':\r\n let listItems = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItems.length; i++) {\r\n let p = listItems[i].querySelector( 'p' );\r\n if ( p ) {\r\n p.style.textAlign = this.value;\r\n }\r\n }\r\n break;\r\n case 'list-class':\r\n let parentNode = event.target\r\n .parentNode\r\n .parentNode\r\n .querySelector('[data-type=list-style-type]')\r\n .parentNode,\r\n parentNodeSettingItem = parentNode.parentNode;\r\n if (val == 'unordered') {\r\n parentNode.style.display = 'flex';\r\n \r\n parentNodeSettingItem.querySelector( '.wptb-list-icon-select-label' ).style.display = 'flex';\r\n let listItem = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItem.length; i++) {\r\n let p = listItem[i].querySelector( 'p' );\r\n p.removeAttribute ( 'class' );\r\n p.classList.add( 'wptb-list-style-type-disc' );\r\n }\r\n parentNodeSettingItem.querySelector('[data-type=list-style-type]').value = 'disc';\r\n } else {\r\n parentNode.style.display = 'none';\r\n parentNodeSettingItem.querySelector( '.wptb-list-icon-select-label' ).style.display = 'none';\r\n var listItem = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItem.length; i++) {\r\n let p = listItem[i].querySelector( 'p' );\r\n p.removeAttribute ( 'class' );\r\n }\r\n }\r\n break;\r\n case 'list-style-type':\r\n var listItem = affectedEl.querySelectorAll('li');\r\n for (var i = 0; i < listItem.length; i++) {\r\n let p = listItem[i].querySelector( 'p' );\r\n p.removeAttribute ( 'class' );\r\n p.classList.add( 'wptb-list-style-type-' + val.toLowerCase() );\r\n }\r\n break;\r\n }\r\n }\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 var rgb = rgb.match( /^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i );\r\n\r\n return ( rgb && rgb.length === 4 ) ? \"#\" +\r\n ( \"0\" + parseInt( rgb[1],10 ).toString( 16 )).slice( -2 ) +\r\n ( \"0\" + parseInt( rgb[2],10 ).toString( 16 )).slice( -2 ) +\r\n ( \"0\" + parseInt( rgb[3],10 ).toString( 16 )).slice( -2 ) : '';\r\n },\r\n getDragImageCustom: function ( type ) {\r\n let hostName = location.protocol + '//' + location.hostname;\r\n let img = document.createElement( 'img' );\r\n img.src = hostName + '/wp-content/plugins/wp-table-builder/inc/admin/views/builder/icons/' + type + '.png';\r\n return img;\r\n },\r\n dragImagesArr: function() {\r\n return {\r\n text: WPTB_Helper.getDragImageCustom( 'text' ),\r\n image: WPTB_Helper.getDragImageCustom( 'image' ),\r\n button: WPTB_Helper.getDragImageCustom( 'button' ),\r\n list: WPTB_Helper.getDragImageCustom( 'list' )\r\n };\r\n },\r\n listItemsRecalculateIndex: function( ulElem ) {\r\n let par = ulElem.querySelectorAll( 'p' );\r\n if ( par.length > 0 ) {\r\n for ( let i = 0; i < par.length; i++ ) {\r\n par[i].dataset.listStyleTypeIndex = Number( i ) + 1 + '.';\r\n }\r\n }\r\n },\r\n listItemsTinyMceInit: function( listItem ) {\r\n tinyMCE.init({\r\n target: listItem,\r\n inline: true,\r\n plugins: \"link, paste\",\r\n dialog_type: \"modal\",\r\n theme: 'modern',\r\n menubar: false,\r\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\r\n paste_as_text: true,\r\n toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',\r\n setup: function(ed) {\r\n ed.on('keydown', function(e) {\r\n let article = e.target.parentNode;\r\n if ( e.keyCode == 13 ) {\r\n e.preventDefault();\r\n let text = e.target.innerHTML;\r\n let duplicate = new WPTB_ListItem( text, article, true );\r\n \r\n article.parentNode.insertBefore( duplicate.getDOMElement(), article );\r\n WPTB_Helper.listItemsTinyMceInit( duplicate.getDOMElement().firstChild );\r\n e.target.querySelector( 'p' ).innerText = 'New List Item';\r\n //tinyMCE.execCommand('mceInsertContent', false, 'New List Item');\r\n WPTB_Helper.listItemsRecalculateIndex( article.parentNode );\r\n \r\n } else if ( e.keyCode == '8' || e.keyCode == '46' ) {\r\n let p = e.target.querySelector( 'p' );\r\n let pText = p.innerHTML.replace(/<[^>]+>/g, '');\r\n pText = pText.replace( /\\s+/g, ' ' ).trim();\r\n pText = pText.replace( /&nbsp;/g, '').trim();\r\n \r\n if( pText == '' ) {\r\n e.preventDefault();\r\n e.target.querySelector( 'p' ).innerText = '\\n';\r\n } else {\r\n let selectedText = WPTB_Helper.getSelectionText();\r\n selectedText = selectedText.replace( /\\s+/g, ' ' ).trim();\r\n selectedText = selectedText.replace( /&nbsp;/g, '' ).trim();\r\n if( selectedText == pText ) {\r\n e.preventDefault();\r\n e.target.querySelector( 'p' ).innerText = '\\n';\r\n }\r\n }\r\n }\r\n });\r\n \r\n ed.on( 'keyup', function( e ) {\r\n \r\n });\r\n },\r\n init_instance_callback: function (editor) {\r\n window.currentEditor = editor;\r\n editor.on('focus', function (e) {\r\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\r\n if (window.currentEditor &&\r\n document.getElementById('wptb_builder').scrollTop >= 55 &&\r\n window.currentEditor.bodyElement.style.display != 'none') {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\r\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\r\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\r\n } else {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\r\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\r\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n buttonsTinyMceInit: function( target ) {\r\n tinyMCE.init({\r\n target: target,\r\n inline: true,\r\n plugins: \"link\",\r\n dialog_type: \"modal\",\r\n theme: 'modern',\r\n menubar: false,\r\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\r\n toolbar: 'bold italic strikethrough',\r\n setup : function(ed) {\r\n ed.on('keydown', function(e) {\r\n if (e.keyCode == 13) {\r\n e.preventDefault();\r\n }\r\n });\r\n },\r\n init_instance_callback: function (editor) {\r\n window.currentEditor = editor;\r\n editor.on('focus', function (e) {\r\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\r\n if (window.currentEditor &&\r\n document.getElementById('wptb_builder').scrollTop >= 55 &&\r\n window.currentEditor.bodyElement.style.display != 'none') {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\r\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\r\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\r\n } else {\r\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\r\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\r\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n linkHttpCheckChange: function( link ) {\r\n if ( link ) {\r\n 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 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 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 = '';\r\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = '';\r\n thisRowChildren[j].dataset.wptbTitleColumnColor = '';\r\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = '';\r\n thisRowChildren[j].dataset.wptbTitleAlign = '';\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 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 settingsPanelClear: function() {\r\n document.getElementById( 'wptb-adaptive-table-checkbox' ).checked = false;\r\n document.getElementById( 'wptb-top-row-as-header' ).checked = false;\r\n document.getElementById( 'wptb-table-border-slider' ).value = 0;\r\n document.getElementById( 'wptb-table-border-number' ).value = 0;\r\n document.getElementById( 'wptb-inner-border-check' ).checked = false;\r\n document.getElementById( 'wptb-apply-inner-border' ).classList.remove( 'visible' );\r\n document.getElementById( 'wptb-table-inner-border-slider' ).value = 1;\r\n document.getElementById( 'wptb-table-inner-border-number' ).value = 1;\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-table-border-color' );\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-table-header-bg' );\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-even-row-bg' );\r\n \r\n WPTB_Helper.wpColorPickerClear( 'wptb-odd-row-bg' );\r\n \r\n document.getElementById( 'wptb-table-cell-slider' ).value = 15;\r\n document.getElementById( 'wptb-table-cell-number' ).value = 15;\r\n },\r\n wpColorPickerClear: function( inputId ) {\r\n let input = document.getElementById( inputId );\r\n let wpPickerContainer = WPTB_Helper.findAncestor( input, 'wp-picker-container' );\r\n let parent = wpPickerContainer.parentNode;\r\n parent.removeChild( wpPickerContainer );\r\n let newInput = document.createElement( 'input' );\r\n newInput.setAttribute( 'id', inputId );\r\n newInput.value = \"\";\r\n parent.appendChild( newInput );\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 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}\r\n","var WPTB_Image = function ( src, DOMElementProt ) {\r\n let DOMElement,\r\n elImage,\r\n kindIndexProt = undefined,\r\n copy = false;\r\n if ( DOMElementProt == undefined ) {\r\n DOMElement = document.createElement( 'div' );\r\n elImage = document.createElement( 'div' );\r\n\t let anchor = document.createElement( 'a' ),\r\n\t img = document.createElement( 'img' );\r\n anchor.style.display = 'inline-block';\r\n anchor.appendChild( img );\r\n DOMElement.classList.add( 'wptb-image-container' );\r\n elImage.classList.add( 'wptb-image-wrapper' );\r\n elImage.appendChild( anchor );\r\n DOMElement.appendChild( elImage );\r\n \r\n anchor.onclick = function( e ) {\r\n e.preventDefault();\r\n }\r\n \r\n file_frame = wp.media.frames.file_frame = wp.media({\r\n\t\ttitle: 'Select a image to upload',\r\n\t\tbutton: {\r\n\t\t\ttext: 'Use this image'\r\n\t\t},\r\n\t\tmultiple: false\r\n });\r\n // When an image is selected, run a callback.\r\n file_frame.on('select', function () {\r\n attachment = file_frame.state().get('selection').first().toJSON();\r\n img.src = attachment.url;\r\n });\r\n // Finally, open the modal\r\n if (src == undefined) {\r\n file_frame.open();\r\n } else {\r\n img.src = src;\r\n }\r\n } else {\r\n DOMElement = DOMElementProt.cloneNode( true );\r\n \r\n DOMElement.getElementsByTagName( 'a' )[0].onclick = function(e) {\r\n e.preventDefault();\r\n };\r\n \r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n };\r\n }\r\n \r\n this.kind = 'image';\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n\tapplyGenericItemSettings( this, kindIndexProt, copy );\r\n\r\n\treturn this;\r\n};","var WPTB_Initializer = function () {\r\n\r\n const MIN_COLUMNS = 1,\r\n MIN_ROWS = 1,\r\n MAX_COLUMNS = 10,\r\n MAX_ROWS = 10;\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 WPTB_Table(columns, rows);\r\n }\r\n \r\n// if( document.getElementsByClassName( 'wptb-preview-table' ).length == 0 ) {\r\n// WPTB_LeftPanel();\r\n// }\r\n\r\n};\r\n","var WPTB_innerElementSet = function ( element ) {\n \n function newElementProxy(el) {\n if (el == 'list') {\n return new WPTB_List();\n } else if (el == 'image') {\n return new WPTB_Image();\n } else if (el == 'text') {\n return new WPTB_Text();\n } else if (el == 'button') {\n return new WPTB_Button();\n }\n }\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 () {\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 = 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( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Abowe Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n let thisRow = td.parentNode\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n } else {\n return;\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n\n WPTB_innerElementSet( element );\n\n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","var WPTB_LeftPanel = function () {\r\n\r\n var table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n \r\n function wptbTdBgColorSavedSet( inputId, trNumber ) {\r\n if ( trNumber > 3 ) return;\r\n if( table ) {\r\n let tableRows = table.getElementsByTagName('tr');\r\n if ( tableRows.length > trNumber ) {\r\n let trBackgroundColor = tableRows[trNumber].style.backgroundColor;\r\n var wptbEvenRowBg = document.getElementById(inputId);\r\n if ( wptbEvenRowBg && trBackgroundColor ) {\r\n wptbEvenRowBg.value = WPTB_Helper.rgbToHex( trBackgroundColor );\r\n }\r\n }\r\n }\r\n \r\n }\r\n \r\n wptbTdBgColorSavedSet( 'wptb-even-row-bg', 1 );\r\n jQuery('#wptb-even-row-bg').wpColorPicker({\r\n change: function ( event, ui ) {\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 1; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = ui.color.toString();\r\n }\r\n },\r\n clear: function(){\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 1; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = '';\r\n let tds = tableRows[i].getElementsByTagName('td');\r\n for ( let j = 0; j < tds.length; j++ ) {\r\n tds[j].style.backgroundColor = '';\r\n }\r\n }\r\n },\r\n\r\n });\r\n \r\n wptbTdBgColorSavedSet( 'wptb-odd-row-bg', 2 );\r\n jQuery('#wptb-odd-row-bg').wpColorPicker({\r\n change: function ( event, ui ) {\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 2; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = ui.color.toString();\r\n }\r\n },\r\n clear: function(){\r\n var tableRows = table.getElementsByTagName('tr');\r\n for ( let i = 2; i < tableRows.length; i += 2 ) {\r\n tableRows[i].style.backgroundColor = '';\r\n let tds = tableRows[i].getElementsByTagName( 'td' );\r\n for ( var j = 0; j < tds.length; j++ ) {\r\n tds[j].style.backgroundColor = '';\r\n }\r\n }\r\n },\r\n });\r\n \r\n wptbTdBgColorSavedSet( 'wptb-table-header-bg', 0 );\r\n jQuery('#wptb-table-header-bg').wpColorPicker({\r\n change: function (event, ui) {\r\n var tableHeader = table.getElementsByTagName('tr')[0];\r\n tableHeader.style.backgroundColor = ui.color.toString();\r\n },\r\n clear: function(){\r\n var tableHeader = table.getElementsByTagName('tr')[0];\r\n tableHeader.style.backgroundColor = '';\r\n let tds = tableHeader.getElementsByTagName('td');\r\n for (var j = 0; j < tds.length; j++) {\r\n tds[j].style.backgroundColor = '';\r\n }\r\n },\r\n });\r\n \r\n function tableAdaptiveForMobile( table ) {\r\n let wptbAdaptiveTableCheckbox = document.getElementById( 'wptb-adaptive-table-checkbox' );\r\n if( table && table.dataset.wptbAdaptiveTable ) {\r\n wptbAdaptiveTableCheckbox.checked = true;\r\n } else {\r\n wptbAdaptiveTableCheckbox.checked = false;\r\n }\r\n }\r\n tableAdaptiveForMobile( table );\r\n \r\n function tableTopRowAsHeadSavedSet( table ) {\r\n let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\r\n \r\n if( table && table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n wptbTopRowAsHeader.checked = true;\r\n } else {\r\n wptbTopRowAsHeader.checked = false;\r\n }\r\n }\r\n tableTopRowAsHeadSavedSet( table );\r\n \r\n function tableBorderColorWidthSavedSet() {\r\n let table = document.getElementsByClassName('wptb-preview-table');\r\n if ( table.length > 0 ) {\r\n let tableBorderColor = table[0].style.borderColor;\r\n if ( tableBorderColor ) {\r\n let tableBorderColorInput = document.getElementById( 'wptb-table-border-color' );\r\n if ( tableBorderColorInput ) {\r\n tableBorderColorInput.value = WPTB_Helper.rgbToHex( tableBorderColor );\r\n }\r\n }\r\n \r\n let tableBorderWidth = table[0].style.borderWidth;\r\n if ( tableBorderWidth ) {\r\n let wptbTableBorderWidthSlider = document.getElementById('wptb-table-border-slider'),\r\n wptbTableBorderWidthNumber = document.getElementById('wptb-table-border-number');\r\n \r\n if ( wptbTableBorderWidthSlider ) {\r\n wptbTableBorderWidthSlider.value = parseInt( tableBorderWidth );\r\n }\r\n if ( wptbTableBorderWidthNumber ) {\r\n wptbTableBorderWidthNumber.value = parseInt( tableBorderWidth );\r\n }\r\n }\r\n \r\n \r\n let tableTd = table[0].querySelector( 'td' );\r\n let applyInnerBorder = tableTd.style.borderWidth;\r\n if ( applyInnerBorder ) {\r\n let innerBorderCheckInput = document.getElementById( 'wptb-inner-border-check' );\r\n let wptbApplyInnerBorder = document.getElementById( 'wptb-apply-inner-border' );\r\n if ( applyInnerBorder && parseInt( applyInnerBorder ) > 0 ) {\r\n if ( innerBorderCheckInput ) {\r\n innerBorderCheckInput.checked = true;\r\n \r\n if ( wptbApplyInnerBorder ) {\r\n wptbApplyInnerBorder.classList.add( 'visible' );\r\n let wptbTableInnerBorderSlider = document.getElementById( 'wptb-table-inner-border-slider' );\r\n let wptbTableInnerBorderNumber = document.getElementById( 'wptb-table-inner-border-number' );\r\n wptbTableInnerBorderSlider.value = parseInt( applyInnerBorder );\r\n wptbTableInnerBorderNumber.value = parseInt( applyInnerBorder );\r\n }\r\n }\r\n } else {\r\n innerBorderCheckInput.checked = false;\r\n }\r\n }\r\n \r\n if ( ( tableBorderWidth && parseInt( tableBorderWidth ) > 0 ) || ( applyInnerBorder && parseInt( applyInnerBorder ) > 0 ) ) {\r\n document.getElementById( 'wptb-table-border-color-set-area' ).style.display = '';\r\n }\r\n }\r\n }\r\n \r\n tableBorderColorWidthSavedSet();\r\n\r\n jQuery('#wptb-table-border-color').wpColorPicker({\r\n change: function (event, ui) {\r\n var tableCells = table.getElementsByTagName('td');\r\n table.style.border = document.querySelector('#wptb-table-border-number').value + 'px solid ' + ui.color.toString();\r\n\r\n for (var i = 0; i < tableCells.length; i++) {\r\n let tableInnerborderNumber = document.querySelector('#wptb-table-inner-border-number').value;\r\n if ( document.getElementById('wptb-inner-border-check').checked ) {\r\n tableCells[i].style.border = ( tableInnerborderNumber != 0 ? tableInnerborderNumber : 1 ) + 'px solid ' + ui.color.toString();\r\n }\r\n }\r\n },\r\n clear: function() {\r\n var tableCells = table.getElementsByTagName('td');\r\n table.style.borderColor = '';\r\n\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.borderColor = '';\r\n }\r\n }\r\n });\r\n\r\n function addInnerBorderSize(value) {\r\n var tableCells = table.getElementsByTagName('td');\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.borderWidth = document.querySelector('#wptb-table-inner-border-number').value + 'px';\r\n tableCells[i].style.borderStyle = 'solid';\r\n }\r\n }\r\n\r\n function addCellPadding(value) {\r\n var tableCells = table.getElementsByTagName('td');\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.padding = value + 'px';\r\n }\r\n }\r\n\r\n function addInnerBorder( checked ) {\r\n var styles, color = document.querySelector('#wptb-table-border-color').value != undefined ?\r\n document.querySelector('#wptb-table-border-color').value : 'rgb(0,0,0)';\r\n if ( document.querySelector( '#wptb-table-inner-border-slider' ).value == 0 || document.querySelector( '#wptb-table-inner-border-number' ).value == 0 ) {\r\n document.querySelector( '#wptb-table-inner-border-slider' ).value = 1;\r\n document.querySelector( '#wptb-table-inner-border-number' ).value = 1;\r\n }\r\n let width = document.querySelector( '#wptb-table-inner-border-slider' ).value + 'px';\r\n let wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\r\n if( wptbPreviewTable.length > 0 ) {\r\n if (checked == 'checked') {\r\n document.getElementById('wptb-apply-inner-border').style.marginBottom = '0px';\r\n var tableCells = wptbPreviewTable[0].getElementsByTagName( 'td' );\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.border = width + ' solid ' + color;\r\n }\r\n document.getElementById( 'wptb-apply-inner-border' ).classList.add( 'visible' );\r\n } else {\r\n document.getElementById( 'wptb-apply-inner-border' ).classList.remove( 'visible' );\r\n var tableCells = wptbPreviewTable[0].getElementsByTagName( 'td' );\r\n for (var i = 0; i < tableCells.length; i++) {\r\n tableCells[i].style.border = '0px solid ' + color;\r\n tableCells[i].style.border = null;\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n function addBorderSize( value ) {\r\n table.style.borderWidth = value + 'px';\r\n table.style.borderStyle = 'solid';\r\n }\r\n \r\n function cellPaddingSavedSet() {\r\n let table = document.getElementsByClassName('wptb-preview-table');\r\n \r\n if ( table.length > 0 ) {\r\n let td = table[0].querySelector( 'td' );\r\n \r\n if ( td ) {\r\n let padding = td.style.padding;\r\n \r\n if ( padding ) {\r\n let wptbTableCellSlider = document.getElementById('wptb-table-cell-slider'),\r\n wptbTableCellNumber = document.getElementById('wptb-table-cell-number');\r\n \r\n if ( wptbTableCellSlider ) {\r\n wptbTableCellSlider.value = parseInt( padding );\r\n }\r\n if ( wptbTableCellNumber ) {\r\n wptbTableCellNumber.value = parseInt( padding );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n cellPaddingSavedSet();\r\n \r\n function numberImputSize( 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 thisValue = String( thisValue );\r\n if ( thisValue > maxValue ) {\r\n this.value = maxValue;\r\n }\r\n }\r\n }\r\n \r\n let wptbTableBorderNumber = document.getElementById( 'wptb-table-border-number' );\r\n numberImputSize( wptbTableBorderNumber, 1, 50 );\r\n \r\n let wptbTableInnerBorderNumber = document.getElementById( 'wptb-table-inner-border-number' );\r\n numberImputSize( wptbTableInnerBorderNumber, 1, 50 );\r\n \r\n let wptbTableCellNumber = document.getElementById( 'wptb-table-cell-number' );\r\n numberImputSize( wptbTableCellNumber, 1, 50 );\r\n \r\n let wptbTextfontSizeNumber = document.getElementById( 'wptb-text-font-size-number' );\r\n numberImputSize( wptbTextfontSizeNumber, 1, 50 );\r\n \r\n let wptbImageWidthNumber = document.getElementById( 'wptb-image-width-number' );\r\n numberImputSize( wptbImageWidthNumber, 2, 100 );\r\n \r\n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\r\n numberImputSize( wptbTableColumnWidthNumber, 2, 500 );\r\n \r\n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\r\n numberImputSize( wptbTableRowHeightNumber, 2, 200 );\r\n \r\n \r\n \r\n document.getElementById('wptb-table-cell-slider').oninput = function () {\r\n document.getElementById('wptb-table-cell-number').value = this.value;\r\n addCellPadding(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-cell-number').onchange = function () {\r\n document.getElementById('wptb-table-cell-slider').value = this.value;\r\n addCellPadding(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-border-slider').oninput = function () {\r\n document.getElementById('wptb-table-border-number').value = this.value;\r\n addBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n \r\n let wptbInnerBorderCheck = document.getElementById('wptb-inner-border-check').checked,\r\n tableBorderColorSetArea = document.getElementById( 'wptb-table-border-color-set-area' );\r\n if ( this.value == 0 && wptbInnerBorderCheck == false ) {\r\n tableBorderColorSetArea.style.display = 'none';\r\n } else {\r\n tableBorderColorSetArea.style.display = '';\r\n }\r\n };\r\n\r\n document.getElementById('wptb-table-border-number').onchange = function () {\r\n document.getElementById('wptb-table-border-slider').value = this.value;\r\n addBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-inner-border-slider').oninput = function () {\r\n document.getElementById('wptb-table-inner-border-number').value = this.value;\r\n addInnerBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-table-inner-border-number').onchange = function () {\r\n document.getElementById('wptb-table-inner-border-slider').value = this.value;\r\n addInnerBorderSize(this.value);\r\n table.tdDefaultWidth();\r\n };\r\n\r\n document.getElementById('wptb-inner-border-check').onchange = function () {\r\n if( table ) {\r\n let val = this.checked ? 'checked' : 'unchecked';\r\n addInnerBorder( val );\r\n let borderWidth = document.getElementById('wptb-table-border-slider').value,\r\n tableBorderColorSetArea = document.getElementById( 'wptb-table-border-color-set-area' );\r\n if( val == 'unchecked' && borderWidth == 0 ) {\r\n tableBorderColorSetArea.style.display = 'none';\r\n } else {\r\n tableBorderColorSetArea.style.display = '';\r\n }\r\n }\r\n \r\n };\r\n \r\n document.getElementById( 'wptb-table-column-width-slider' ).oninput = function () {\r\n document.getElementById( 'wptb-table-column-width-number' ).value = this.value;\r\n table.addColumnWidth( this.value );\r\n };\r\n \r\n document.getElementById( 'wptb-table-column-width-number' ).onchange = function () {\r\n document.getElementById( 'wptb-table-column-width-slider' ).value = this.value;\r\n table.addColumnWidth( this.value );\r\n };\r\n \r\n document.getElementById( 'wptb-table-column-width-auto-fixed' ).onchange = function () {\r\n if( this.checked ) {\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\r\n table.addColumnWidth( width );\r\n } else {\r\n table.addColumnWidth( false, true );\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\r\n document.getElementById( 'wptb-table-column-width-number' ).value = width;\r\n document.getElementById( 'wptb-table-column-width-slider' ).value = width;\r\n }\r\n };\r\n\r\n document.getElementById( 'wptb-table-row-height-slider' ).oninput = function () {\r\n document.getElementById( 'wptb-table-row-height-number' ).value = this.value;\r\n table.addRowHeight( this.value );\r\n };\r\n\r\n document.getElementById( 'wptb-table-row-height-number' ).onchange = function () {\r\n document.getElementById( 'wptb-table-row-height-slider' ).value = this.value;\r\n table.addRowHeight( this.value );\r\n };\r\n \r\n document.getElementById( 'wptb-table-row-height-auto-fixed' ).onchange = function () {\r\n if( this.checked ) {\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let height = WPTB_Helper.getRowHeight( table, highlighted );\r\n table.addRowHeight( height );\r\n } else {\r\n table.addRowHeight( false, true );\r\n let highlighted = table.querySelector( '.wptb-highlighted' );\r\n let height = WPTB_Helper.getRowHeight( table, highlighted );\r\n document.getElementById( 'wptb-table-row-height-number' ).value = height;\r\n document.getElementById( 'wptb-table-row-height-slider' ).value = height;\r\n }\r\n };\r\n \r\n document.getElementById( 'wptb-adaptive-table-checkbox' ).onchange = function() {\r\n if( this.checked ) {\r\n table.dataset.wptbAdaptiveTable = 1;\r\n } else {\r\n table.dataset.wptbAdaptiveTable = 0;\r\n }\r\n };\r\n \r\n function createMobileHeadForTable( table, thisEvent ) {\r\n \r\n if( thisEvent.checked ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n \r\n table.classList.add( 'wptb-table-preview-head' );\r\n table.rows[0].classList.add( 'wptb-table-head' );\r\n } else {\r\n let rows = table.rows;\r\n table.classList.remove( 'wptb-table-preview-head' );\r\n rows[0].classList.remove( 'wptb-table-head' );\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 thisRowChildren[j].removeAttribute( 'data-wptb-title-column' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-font-size' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-color' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-background-color' );\r\n thisRowChildren[j].removeAttribute( 'data-wptb-title-align' );\r\n }\r\n }\r\n }\r\n }\r\n \r\n document.getElementById( 'wptb-top-row-as-header' ).onchange = function () {\r\n createMobileHeadForTable( table, this );\r\n }\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 document.getElementById('wptb-activate-cell-management-mode').onclick = table.toggleTableEditMode;\r\n document.getElementById( 'wptb-table-edit-mode-close' ).onclick = table.toggleTableEditMode;\r\n document.getElementById( 'wptb-left-scroll-panel-curtain-close' ).onclick = table.toggleTableEditMode;\r\n document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;\r\n document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;\r\n document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;\r\n document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;\r\n document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;\r\n document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;\r\n document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;\r\n document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;\r\n document.getElementById('wptb-delete-column').onclick = table.deleteColumn;\r\n document.getElementById('wptb-delete-row').onclick = table.deleteRow;\r\n document.getElementById('wptb-merge-cells').onclick = table.mergeCells;\r\n document.getElementById('wptb-split-cell').onclick = table.splitCell;\r\n }\r\n \r\n document.querySelector( '.wptb-left-panel-extend' ).onclick = function() {\r\n let wptbContainer = document.querySelector( '.wptb-container' );\r\n if( wptbContainer ) {\r\n if ( wptbContainer.classList.contains( 'collapsed' ) ) {\r\n wptbContainer.classList.remove( 'collapsed' );\r\n } else {\r\n wptbContainer.classList.add( 'collapsed' );\r\n }\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.addEventListener( 'click', 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 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 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 } \r\n }, false);\r\n \r\n};","var WPTB_List = function ( innerElements, DOMElementProt ) {\r\n\r\n var el_L = document.createElement('ul'), item,\r\n DOMElement = document.createElement('div'),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n DOMElement.classList.add( 'wptb-list-item-container' );\r\n\r\n this.kind = 'list';\r\n\r\n if (innerElements === '') {\r\n //Case for edit mode list\r\n } else if ( !innerElements ) {\r\n for (var i = 0; i < 3; i++) {\r\n item = new WPTB_ListItem( '<p>List Item ' + (i + 1) + '</p>');\r\n el_L.appendChild(item.getDOMElement());\r\n }\r\n } else {\r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n };\r\n \r\n for ( var i = 0; i < innerElements.length; i++ ) {\r\n let listItem = DOMElementProt.querySelector( 'li' );\r\n item = new WPTB_ListItem( innerElements[i], listItem, true );\r\n el_L.appendChild(item.getDOMElement());\r\n }\r\n }\r\n DOMElement.appendChild(el_L);\r\n //window.addElementOptions('list', elList);\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n }\r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n WPTB_Helper.listItemsRecalculateIndex( el_L );\r\n\r\n return this;\r\n};","var WPTB_ListItem = function ( text, DOMElementProt, copy ) {\r\n let wptbListItemReturn;\r\n if ( DOMElementProt == undefined || ( DOMElementProt && copy )) {\r\n if (text == undefined) text = 'New List Item';\r\n var DOMElement = document.createElement('li'),\r\n //divdot = document.createElement('div'),\r\n divcontent = document.createElement('div');\r\n //libullet = document.createElement('li');\r\n //divdot.classList.add('wptb-list-item-style-dot');\r\n divcontent.classList.add('wptb-list-item-content');\r\n //libullet.classList.add('wptb-bullet');\r\n if ( DOMElementProt ) {\r\n let styleDot = DOMElementProt.getAttribute( 'style' );\r\n if ( styleDot ) {\r\n DOMElement.setAttribute( 'style', styleDot );\r\n }\r\n }\r\n //DOMElement.appendChild(divdot);\r\n DOMElement.appendChild(divcontent);\r\n //divdot.appendChild(libullet);\r\n divcontent.innerHTML = text;\r\n divcontent.onkeyup = window.listItemKeyListener;\r\n \r\n wptbListItemReturn = true;\r\n } else {\r\n var DOMElement = DOMElementProt;\r\n var divcontent = DOMElement.getElementsByClassName( 'wptb-list-item-content' )[0];\r\n \r\n divcontent.onkeyup = window.listItemKeyListener;\r\n \r\n wptbListItemReturn = false;\r\n }\r\n \r\n DOMElement.onmouseenter = function (event) {\r\n\r\n var btnDelete = document.createElement('span'),\r\n btnCopy = document.createElement('span'),\r\n actions = document.createElement('span'),\r\n previous,\r\n i;\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 this.classList.add('wptb-directlyhovered');\r\n\r\n btnDelete.onclick = function () {\r\n var action = this.parentNode, \r\n item = this.parentNode.parentNode,\r\n parent = item.parentNode;\r\n item.removeChild( action );\r\n parent.removeChild( item );\r\n WPTB_Helper.listItemsRecalculateIndex( parent );\r\n };\r\n\r\n btnCopy.onclick = function (event) {\r\n var listItem = event.target.parentNode.parentNode,\r\n content = listItem.querySelector('.wptb-list-item-content'),\r\n html = content.innerHTML;\r\n var duplicate = new WPTB_ListItem( html, listItem, true );\r\n listItem.parentNode.insertBefore( duplicate.getDOMElement(), DOMElement );\r\n WPTB_Helper.listItemsTinyMceInit( duplicate.getDOMElement().firstChild );\r\n setTimeout( function(){\r\n divcontent.innerHTML = html;\r\n WPTB_Helper.listItemsRecalculateIndex( listItem.parentNode );\r\n }, 5 );\r\n };\r\n\r\n actions.append(btnCopy, btnDelete);\r\n this.appendChild(actions);\r\n };\r\n\r\n DOMElement.onmouseleave = function (event) {\r\n this.removeAttribute( 'class' );\r\n let iter = 0;\r\n while( event.target.querySelector( '.wptb-actions' ) && iter < 5 ) {\r\n event.target.querySelector( '.wptb-actions' ).remove();\r\n iter++;\r\n }\r\n };\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n \r\n if ( wptbListItemReturn ) {\r\n return this;\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) {\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}","var WPTB_Parser2 = function (code) {\r\n if( Array.isArray( code ) ) {\r\n let elementHtml;\r\n \r\n if ( code.length == 1) {\r\n return elementHtml.appendChild( document.createTextNode( code[0] ) );\r\n }\r\n if( 0 in code ) {\r\n let tagName = code[0];\r\n elementHtml = document.createElement( tagName );\r\n \r\n if ( 1 in code ) {\r\n if( Array.isArray( code[1] ) ) {\r\n let attributes = code[1];\r\n \r\n for( let i = 0; i < attributes.length; i++ ) {\r\n if( Array.isArray( attributes[i] ) ) {\r\n elementHtml.setAttribute(attributes[i][0], attributes[i][1]);\r\n }\r\n }\r\n }\r\n }\r\n \r\n if ( 2 in code ) {\r\n if ( Array.isArray( code[2] ) ) {\r\n for ( let i = 0; i < code[2].length; i++ ) {\r\n if ( typeof code[2][i] === 'string' && tagName.toLowerCase() == 'p' ) {\r\n elementHtml.appendChild( document.createTextNode( code[2][i] ) );\r\n continue;\r\n }\r\n if ( ! WPTB_Parser( code[2][i] ) ) continue;\r\n elementHtml.appendChild( WPTB_Parser( code[2][i] ) );\r\n }\r\n } else if( typeof code[2] === 'string' ) {\r\n elementHtml.appendChild( document.createTextNode( code[2] ) );\r\n }\r\n \r\n }\r\n }\r\n \r\n return elementHtml;\r\n } else {\r\n return false;\r\n }\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 elems[i].ondragend = function () {\r\n let wptbDropHandle = document.querySelector( '.wptb-drop-handle' ),\r\n wptbDropBorderMarker = document.querySelector( '.wptb-drop-border-marker' );\r\n if ( wptbDropHandle || wptbDropBorderMarker ) {\r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\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 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 ( e ) {\r\n if( this.classList.contains( 'wptb-button-disable' ) ) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function () {\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 table.toggleTableEditMode();\r\n }\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 = document.getElementsByClassName( 'wptb-preview-table' );\r\n if( code.length > 0 ) {\r\n code = WPTB_Stringifier( code[0] );\r\n code = code.outerHTML;\r\n } else { \r\n code = '';\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 security_code: wptb_admin_object.security_code\r\n };\r\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\r\n params.id = rs;\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 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 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 } else if( data[0] == 'edited' ) {\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\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","var WPTB_Space = function ( elSpaceBetween ) {\r\n\r\n function newElementProxy(el) {\r\n if (el.includes('list')) {\r\n return new WPTB_List();\r\n } else if (el.includes('image')) {\r\n return new WPTB_Image();\r\n } else if (el.includes('text')) {\r\n return new WPTB_Text();\r\n } else if (el.includes('button')) {\r\n return new WPTB_Button();\r\n }\r\n }\r\n let spaceBetween;\r\n if ( ! elSpaceBetween ) {\r\n spaceBetween = document.createElement('div'), spaceBetween.classList.add('wptb-space-between');\r\n } else {\r\n spaceBetween = elSpaceBetween;\r\n }\r\n\r\n spaceBetween.ondragenter = function () {\r\n this.classList.add('visible');\r\n };\r\n spaceBetween.ondragover = function (event) {\r\n event.preventDefault();\r\n };\r\n\r\n spaceBetween.ondragleave = function () {\r\n this.classList.remove('visible');\r\n };\r\n\r\n spaceBetween.ondrop = function (event) {\r\n event.stopPropagation();\r\n\r\n var p = event.target.nextSibling,\r\n td = event.target,\r\n element, t_space, spaceParent;\r\n\r\n while ( !td.classList.contains('wptb-droppable') ) {\r\n td = td.parentNode;\r\n }\r\n\r\n if (event.dataTransfer.getData('wptbElement')) {\r\n element = newElementProxy(event.dataTransfer.getData('wptbElement'));\r\n this.classList.remove('visible');\r\n\r\n if (p == null) {\r\n td.appendChild(element.getDOMElement());\r\n td.appendChild(new WPTB_Space());\r\n } else {\r\n td.insertBefore(element.getDOMElement(), p);\r\n td.insertBefore(new WPTB_Space(), p);\r\n }\r\n\r\n } else {\r\n alert(event.dataTransfer.getData('node'));\r\n element = document.getElementsByClassName(event.dataTransfer.getData('node'))[0];\r\n t_space = element.nextSibling;\r\n spaceParent = element.parentNode;\r\n if (t_space != undefined) {\r\n spaceParent.removeChild(t_space);\r\n }\r\n\r\n if (p == null) {\r\n td.appendChild(element);\r\n td.appendChild(new WPTB_Space());\r\n } else {\r\n td.insertBefore(element, p);\r\n td.insertBefore(new WPTB_Space(), p);\r\n }\r\n\r\n }\r\n this.classList.remove('visible');\r\n };\r\n \r\n if ( ! elSpaceBetween ) {\r\n return spaceBetween;\r\n }\r\n};","var WPTB_Stringifier = function ( codeMain ) {\r\n if ( codeMain ) {\r\n let code = codeMain.cloneNode( true );\r\n code.classList.add( 'wptb-table-preview-static-indic' );\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 if ( codeMain.querySelector( 'wptb-table-preview-head' ) ) {\r\n tds[i].removeAttribute( 'data-x-index' );\r\n }\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 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 innerElements[j].classList.remove( 'wptb-directlyhovered' );\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 }\r\n \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}","var WPTB_Stringifier2 = function ( node, start = false ) {\r\n\r\n\tif ( node == undefined ) {\r\n\t\treturn '';\r\n\t} else if ( node.tagName == undefined && node.nodeType == 3 ) {\r\n return node.nodeValue;\r\n }\r\n \r\n let code = [],\r\n children,\r\n int_elem_arr = false,\r\n attributes = [...node.attributes],\r\n attributes_list = [],\r\n internal_elements = [];\r\n if ( ( node.parentNode.classList.contains( 'wptb-list-item-content' ) || \r\n node.parentNode.classList.contains( 'mce-content-body' ) ) && \r\n node.tagName.toLowerCase() == 'p' ) {\r\n children = node.childNodes;\r\n int_elem_arr = true;\r\n } else if( node.children.length > 0 ) {\r\n children = node.children;\r\n } else {\r\n children = node.childNodes;\r\n }\r\n if ( attributes.length > 0 ) {\r\n for ( let i = 0; i < attributes.length; i++ ) {\r\n attributes_list[i] = [attributes[i].name, attributes[i].value];\r\n }\r\n } else {\r\n attributes_list = '';\r\n }\r\n \r\n if ( children.length > 0 ) {\r\n for ( let i = 0; i < children.length; i++) {\r\n let inter_elem = WPTB_Stringifier(children[i]);\r\n \r\n if ( Array.isArray( inter_elem ) || int_elem_arr ) {\r\n internal_elements[i] = inter_elem;\r\n } else if ( typeof inter_elem === 'string' && inter_elem ) {\r\n internal_elements = inter_elem;\r\n }\r\n }\r\n } else {\r\n internal_elements = '';\r\n }\r\n \r\n \r\n code.push(node.tagName.toLowerCase(), attributes_list , internal_elements);\r\n \r\n return code;\r\n}","var array = [], WPTB_Table = function (columns, rows) {\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 var rs = this.rowSpan,\r\n cs = this.colSpan,\r\n markedCells,\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(this),\r\n row = position[0],\r\n column = position[1];\r\n if ( ! document.select.isActivated() ) {\r\n return;\r\n }\r\n if (this.className.match(/wptb-highlighted/)) {\r\n this.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 this.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 markedCells = document.getElementsByClassName('wptb-highlighted').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 let cellHighlighted = document.querySelector( '.wptb-highlighted' );\r\n if( cellHighlighted ) {\r\n let wptbTableColumnWidthSlider = document.getElementById( 'wptb-table-column-width-slider' );\r\n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\r\n let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\r\n let width = cellHighlighted.style.width;\r\n if( width ) {\r\n wptbTableColumnWidthSlider.value = parseFloat( width, 10 );\r\n wptbTableColumnWidthNumber.value = parseFloat( width, 10 );\r\n tableColumnWidthAutoFixedCheckbox.checked = true;\r\n } else if( cellHighlighted.dataset.wptbFixedWidth ) {\r\n wptbTableColumnWidthSlider.value = cellHighlighted.dataset.wptbFixedWidth;\r\n wptbTableColumnWidthNumber.value = cellHighlighted.dataset.wptbFixedWidth;\r\n tableColumnWidthAutoFixedCheckbox.checked = true;\r\n } else {\r\n let cellWidth = WPTB_Helper.getColumnWidth( table, cellHighlighted );\r\n wptbTableColumnWidthSlider.value = cellWidth;\r\n wptbTableColumnWidthNumber.value = cellWidth;\r\n tableColumnWidthAutoFixedCheckbox.checked = false;\r\n }\r\n \r\n \r\n let wptbTableRowHeightSlider = document.getElementById( 'wptb-table-row-height-slider' );\r\n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\r\n let tableRowHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\r\n let height = cellHighlighted.style.height;\r\n if( height ) {\r\n wptbTableRowHeightSlider.value = parseFloat( height, 10 );\r\n wptbTableRowHeightNumber.value = parseFloat( height, 10 );\r\n tableRowHeightAutoFixedCheckbox.checked = true;\r\n } else if( cellHighlighted.dataset.wptbFixedHeight ) {\r\n wptbTableRowHeightSlider.value = cellHighlighted.dataset.wptbFixedHeight;\r\n wptbTableRowHeightNumber.value = cellHighlighted.dataset.wptbFixedHeight;\r\n tableRowHeightAutoFixedCheckbox.checked = true;\r\n } else {\r\n let cellHeight = WPTB_Helper.getRowHeight( table, cellHighlighted );\r\n wptbTableRowHeightSlider.value = cellHeight;\r\n wptbTableRowHeightNumber.value = cellHeight;\r\n tableRowHeightAutoFixedCheckbox.checked = false;\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 /* \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 var 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 tds = table.getElementsByClassName('wptb-highlighted');\r\n while (tds.length) {\r\n tds[0].classList.remove('wptb-highlighted');\r\n }\r\n for (var i = 0; i < array.length; i++) {\r\n for (var j = 0; j < array[i].length; j++) {\r\n array[i][j] = 0;\r\n }\r\n }\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 };\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-header-bg').val('');\r\n jQuery('#wptb-even-row-bg').val('');\r\n jQuery('#wptb-odd-row-bg').val('');\r\n jQuery('#wptb-table-border-color').val('');\r\n jQuery('#wptb-table-inner-border-number,#wptb-table-inner-border-slider').val('0');\r\n jQuery('#wptb-table-border-number,#wptb-table-border-slider').val('0');\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' );\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 row.appendChild(cell.getDOMElement());\r\n }\r\n }\r\n } else {\r\n let wptb_preview_table = document.getElementsByClassName( 'wptb-preview-table' );\r\n\r\n if (wptb_preview_table.length > 0) {\r\n table = wptb_preview_table[0];\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 }\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\r\n table.toggleTableEditMode = function () {\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 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.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 } else {\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.classList.add( 'wptb-preview-table-manage-cells' );\r\n }\r\n }\r\n\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\r\n table.recalculateIndexes = function ( start ) {\r\n let trs = this.getElementsByTagName('tr'), tds, maxCols = 0, maxColsFull = 0,\r\n tdsArr = [];\r\n let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\r\n \r\n for (var i = 0; i < trs.length; i++) {\r\n if ( i == 0 ) {\r\n if ( start == undefined ) {\r\n trs[i].style.backgroundColor = jQuery('#wptb-table-header-bg').val();\r\n }\r\n if( wptbTopRowAsHeader.checked ) {\r\n if( start == undefined ) {\r\n this.classList.add( 'wptb-table-preview-head' ); \r\n trs[i].classList.add( 'wptb-table-head' )\r\n } ;\r\n } else {\r\n if( start == undefined ) {\r\n this.classList.remove( 'wptb-table-preview-head' );\r\n trs[i].classList.remove( 'wptb-table-head' );\r\n }\r\n }\r\n } else {\r\n if (i % 2 == 0) {\r\n if ( start == undefined ) {\r\n trs[i].style.backgroundColor = jQuery('#wptb-odd-row-bg').val();\r\n }\r\n trs[i].classList.remove( 'wptb-table-head' );\r\n } else {\r\n if ( start == undefined ) {\r\n trs[i].style.backgroundColor = jQuery('#wptb-even-row-bg').val();\r\n }\r\n trs[i].classList.remove( 'wptb-table-head' );\r\n }\r\n }\r\n\r\n tdsArr[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 (var 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 if( i == 0 ) {\r\n maxColsFull = jMainIter;\r\n }\r\n }\r\n if (j > maxCols) {\r\n maxCols = j;\r\n }\r\n }\r\n this.columns = maxCols;\r\n this.maxCols = maxColsFull;\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 let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\r\n if( ! tableColumnWidthAutoFixedCheckbox.checked ) {\r\n tableColumnWidthAutoFixedCheckbox.checked = true;\r\n }\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 }\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 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[parseInt( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] ) {\r\n if( td.style.width ) {\r\n arrayCellsWidthFixedHelper[parseInt( 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[parseInt( td.dataset.xIndex )] = 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 if( arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] ) {\r\n arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n } else {\r\n arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n }\r\n }\r\n } else if( arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] ) {\r\n if( ! td.dataset.wptbFixedWidth ) {\r\n td.dataset.wptbCssTdAutoWidth = true;\r\n }\r\n } else if( arrayCellsWidthFixedHelper[parseInt( 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 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 tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto + tableBorderCommon;\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 - tableBorderCommon;\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 = null;\r\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed - tableBorderCommon;\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 = null;\r\n table.style.minWidth = null;\r\n table.style.maxWidth = tableTdsSumMaxWidth + 'px';\r\n }\r\n } else {\r\n table.style.maxWidth = null;\r\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\r\n table.style.width = null;\r\n tableTdWidthAuto = '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 \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 let tableColumnHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\r\n if( ! tableColumnHeightAutoFixedCheckbox.checked ) {\r\n tableColumnHeightAutoFixedCheckbox.checked = true;\r\n }\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 }\r\n \r\n table.reconstraction = function() {\r\n let tds = table.getElementsByTagName( 'td' );\r\n let wptbAdaptiveTableChoseBlock = document.getElementsByClassName( 'wptb-adaptive-table-chose-block' );\r\n if( wptbAdaptiveTableChoseBlock.length > 0 ) {\r\n wptbAdaptiveTableChoseBlock = wptbAdaptiveTableChoseBlock[0];\r\n }\r\n table.mergingСellsHorizontally = false;\r\n table.mergingCellsVertically = false;\r\n table.dataset.reconstraction = 1;\r\n wptbAdaptiveTableChoseBlock.style.display = 'block';\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 wptbAdaptiveTableChoseBlock.style.display = 'none';\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 wptbAdaptiveTableChoseBlock.style.display = 'none';\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 }\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\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 }\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\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 cellPointer,\r\n cellsBuffer,\r\n cell = document.querySelector('.wptb-highlighted'),\r\n cellStyle = cell.getAttribute('style'),\r\n pos = c_pos != undefined && typeof c_pos === 'number' ? c_pos : getCoords(cell)[1];\r\n \r\n \r\n \r\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\r\n table.addColumnEnd();\r\n } else {\r\n let pendingInsertion = false,\r\n stepsToMove,\r\n td, bro,\r\n carriedRowspans = [],\r\n currentCell;\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n carriedRowspans.push(0);\r\n }\r\n\r\n for (var i = 0; i < rows.length; i++) {\r\n cellPointer = 0;\r\n cellsBuffer = rows[i].getElementsByTagName('td');\r\n pendingInsertion = false;\r\n for (var xPosition = 0;\r\n xPosition < maxAmountOfCells;\r\n xPosition += stepsToMove) {\r\n stepsToMove = 1;\r\n\r\n if (pendingInsertion) {\r\n 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 }\r\n if (currentCell && rows[i].contains(currentCell)) {\r\n bro = currentCell.nextSibling;\r\n if (bro) {\r\n rows[i].insertBefore(td.getDOMElement(), bro);\r\n } else {\r\n rows[i].appendChild(td.getDOMElement());\r\n }\r\n } else {\r\n rows[i].insertBefore(td.getDOMElement(), cellsBuffer[0]);\r\n }\r\n break;\r\n } else if (carriedRowspans[xPosition] > 0) {\r\n // If no pending insertion, let's check if no rowspan from upper cells is pending in current position\r\n if (pos == xPosition) {\r\n pendingInsertion = true;\r\n }\r\n } else {\r\n currentCell = cellsBuffer[cellPointer++];\r\n if (currentCell.rowSpan > 1) {\r\n stepsToMove = currentCell.colSpan;\r\n for (var k = 0; k < currentCell.colSpan; k++) {\r\n carriedRowspans[xPosition + k] = currentCell.rowSpan;\r\n if (xPosition + k == pos) {\r\n pendingInsertion = true;\r\n }\r\n }\r\n } else if (currentCell.colSpan > 1) {\r\n stepsToMove = currentCell.colSpan;\r\n for (var k = 0; k < currentCell.colSpan; k++) {\r\n if (xPosition + k == pos) {\r\n pendingInsertion = true;\r\n }\r\n }\r\n } else if (xPosition == pos) {\r\n pendingInsertion = true;\r\n }\r\n }\r\n }\r\n\r\n for (var l = 0; l < maxAmountOfCells; l++) {\r\n if (carriedRowspans[l] > 0)\r\n carriedRowspans[l]--;\r\n }\r\n\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 };\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 currentTableTd,\r\n currentTdStyle;\r\n r.classList.add( 'wptb-row' );\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 < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\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 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 < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\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 td.getDOMElement().setAttribute( 'style', cellStyle );\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\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 table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\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\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 let wptbLeftScrollPanelCellSetting = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ); \r\n if( wptbLeftScrollPanelCellSetting ) {\r\n wptbLeftScrollPanelCellSetting.classList.remove( 'visible' );\r\n }\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 table.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n WPTB_Helper.settingsPanelClear();\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n }\r\n \r\n table.recalculateIndexes();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n undoSelect();\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 table.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n WPTB_Helper.settingsPanelClear();\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n }\r\n \r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n undoSelect();\r\n };\r\n\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 // 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};","var WPTB_Text = function ( text , DOMElementProt ) {\r\n let DOMElement = document.createElement('div'),\r\n elText2 = document.createElement('div'),\r\n elP = document.createElement('p'),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n \r\n DOMElement.classList.add( 'wptb-text-container' );\r\n\r\n elP.innerHTML = text != undefined ? text : 'Text';\r\n elText2.appendChild(elP);\r\n DOMElement.appendChild(elText2);\r\n if ( DOMElementProt ) {\r\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n copy = true;\r\n };\r\n\r\n let attributes = [...DOMElementProt.attributes];\r\n for( let i = 0; i < attributes.length; i++ ) {\r\n DOMElement.setAttribute(attributes[i].name, attributes[i].value);\r\n }\r\n } \r\n\r\n this.kind = 'text';\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n\r\n return this;\r\n};"]}
inc/admin/js/core/WPTB_Helper.js CHANGED
@@ -216,6 +216,7 @@ var WPTB_Helper = {
216
  return txt;
217
  },
218
  settingsPanelClear: function() {
 
219
  document.getElementById( 'wptb-top-row-as-header' ).checked = false;
220
  document.getElementById( 'wptb-table-border-slider' ).value = 0;
221
  document.getElementById( 'wptb-table-border-number' ).value = 0;
216
  return txt;
217
  },
218
  settingsPanelClear: function() {
219
+ document.getElementById( 'wptb-adaptive-table-checkbox' ).checked = false;
220
  document.getElementById( 'wptb-top-row-as-header' ).checked = false;
221
  document.getElementById( 'wptb-table-border-slider' ).value = 0;
222
  document.getElementById( 'wptb-table-border-number' ).value = 0;
inc/admin/js/core/WPTB_LeftPanel.js CHANGED
@@ -75,6 +75,16 @@ var WPTB_LeftPanel = function () {
75
  },
76
  });
77
 
 
 
 
 
 
 
 
 
 
 
78
  function tableTopRowAsHeadSavedSet( table ) {
79
  let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );
80
 
@@ -388,6 +398,14 @@ var WPTB_LeftPanel = function () {
388
  }
389
  };
390
 
 
 
 
 
 
 
 
 
391
  function createMobileHeadForTable( table, thisEvent ) {
392
 
393
  if( thisEvent.checked ) {
75
  },
76
  });
77
 
78
+ function tableAdaptiveForMobile( table ) {
79
+ let wptbAdaptiveTableCheckbox = document.getElementById( 'wptb-adaptive-table-checkbox' );
80
+ if( table && table.dataset.wptbAdaptiveTable ) {
81
+ wptbAdaptiveTableCheckbox.checked = true;
82
+ } else {
83
+ wptbAdaptiveTableCheckbox.checked = false;
84
+ }
85
+ }
86
+ tableAdaptiveForMobile( table );
87
+
88
  function tableTopRowAsHeadSavedSet( table ) {
89
  let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );
90
 
398
  }
399
  };
400
 
401
+ document.getElementById( 'wptb-adaptive-table-checkbox' ).onchange = function() {
402
+ if( this.checked ) {
403
+ table.dataset.wptbAdaptiveTable = 1;
404
+ } else {
405
+ table.dataset.wptbAdaptiveTable = 0;
406
+ }
407
+ };
408
+
409
  function createMobileHeadForTable( table, thisEvent ) {
410
 
411
  if( thisEvent.checked ) {
inc/admin/js/core/WPTB_Settings.js CHANGED
@@ -31,6 +31,12 @@ var WPTB_Settings = function () {
31
  document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {
32
  shortcodePopupWindow.classList.remove( 'wptb-popup-show' );
33
  }
 
 
 
 
 
 
34
 
35
  document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function () {
36
  let bar = document.querySelector( '.wptb-edit-bar' );
31
  document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {
32
  shortcodePopupWindow.classList.remove( 'wptb-popup-show' );
33
  }
34
+
35
+ document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( e ) {
36
+ if( this.classList.contains( 'wptb-button-disable' ) ) {
37
+ e.preventDefault();
38
+ }
39
+ }
40
 
41
  document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function () {
42
  let bar = document.querySelector( '.wptb-edit-bar' );
inc/admin/js/core/WPTB_Stringifier.js CHANGED
@@ -61,8 +61,13 @@ var WPTB_Stringifier = function ( codeMain ) {
61
  let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );
62
  let wptbActionsLength = wptbActions.length;
63
  while ( wptbActionsLength > 0 ) {
64
- wptbActions[0].parentNode.removeChild( wptbActions[0] );
65
- wptbActionsLength--;
 
 
 
 
 
66
  }
67
  }
68
  }
61
  let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );
62
  let wptbActionsLength = wptbActions.length;
63
  while ( wptbActionsLength > 0 ) {
64
+ if( wptbActions[0] && wptbActions[0].parentNode ) {
65
+ wptbActions[0].parentNode.removeChild( wptbActions[0] );
66
+ wptbActionsLength--;
67
+ } else {
68
+ break;
69
+ }
70
+
71
  }
72
  }
73
  }
inc/admin/js/core/WPTB_Table.js CHANGED
@@ -389,6 +389,7 @@ var array = [], WPTB_Table = function (columns, rows) {
389
  table = document.createElement( 'table' );
390
  table.classList.add( 'wptb-preview-table' );
391
  table.dataset.reconstraction = 1;
 
392
  //Add the data rows.
393
  for (var i = 0; i < rows; i++) {
394
 
@@ -819,19 +820,26 @@ var array = [], WPTB_Table = function (columns, rows) {
819
 
820
  table.reconstraction = function() {
821
  let tds = table.getElementsByTagName( 'td' );
 
 
 
 
822
  table.mergingСellsHorizontally = false;
823
  table.mergingCellsVertically = false;
824
  table.dataset.reconstraction = 1;
 
825
  let forBreak = 0;
826
  for( let i = 0; i < tds.length; i++ ) {
827
  if( tds[i].colSpan > 1 ) {
828
  table.dataset.reconstraction = 0;
 
829
  table.mergingСellsHorizontally = true;
830
  forBreak++;
831
  }
832
 
833
  if( tds[i].rowSpan > 1 ) {
834
  table.dataset.reconstraction = 0;
 
835
  table.mergingCellsVertically = true;
836
  forBreak++;
837
  }
@@ -1418,6 +1426,10 @@ var array = [], WPTB_Table = function (columns, rows) {
1418
  table.addRowHeight();
1419
  WPTB_Helper.dataTitleColumnSet( table );
1420
  undoSelect();
 
 
 
 
1421
  };
1422
 
1423
  /*
389
  table = document.createElement( 'table' );
390
  table.classList.add( 'wptb-preview-table' );
391
  table.dataset.reconstraction = 1;
392
+ table.dataset.wptbAdaptiveTable = 1;
393
  //Add the data rows.
394
  for (var i = 0; i < rows; i++) {
395
 
820
 
821
  table.reconstraction = function() {
822
  let tds = table.getElementsByTagName( 'td' );
823
+ let wptbAdaptiveTableChoseBlock = document.getElementsByClassName( 'wptb-adaptive-table-chose-block' );
824
+ if( wptbAdaptiveTableChoseBlock.length > 0 ) {
825
+ wptbAdaptiveTableChoseBlock = wptbAdaptiveTableChoseBlock[0];
826
+ }
827
  table.mergingСellsHorizontally = false;
828
  table.mergingCellsVertically = false;
829
  table.dataset.reconstraction = 1;
830
+ wptbAdaptiveTableChoseBlock.style.display = 'block';
831
  let forBreak = 0;
832
  for( let i = 0; i < tds.length; i++ ) {
833
  if( tds[i].colSpan > 1 ) {
834
  table.dataset.reconstraction = 0;
835
+ wptbAdaptiveTableChoseBlock.style.display = 'none';
836
  table.mergingСellsHorizontally = true;
837
  forBreak++;
838
  }
839
 
840
  if( tds[i].rowSpan > 1 ) {
841
  table.dataset.reconstraction = 0;
842
+ wptbAdaptiveTableChoseBlock.style.display = 'none';
843
  table.mergingCellsVertically = true;
844
  forBreak++;
845
  }
1426
  table.addRowHeight();
1427
  WPTB_Helper.dataTitleColumnSet( table );
1428
  undoSelect();
1429
+ let wptbLeftScrollPanelCellSetting = document.getElementById( 'wptb-left-scroll-panel-cell-settings' );
1430
+ if( wptbLeftScrollPanelCellSetting ) {
1431
+ wptbLeftScrollPanelCellSetting.classList.remove( 'visible' );
1432
+ }
1433
  };
1434
 
1435
  /*
inc/admin/views/builder/wptb-builder-header.php CHANGED
@@ -16,8 +16,9 @@
16
  <path style="fill:#0D557E" d="M373.996,456.673c0,3.631-2.954,6.585-6.585,6.585h-15.722c-3.631,0-6.585-2.954-6.585-6.585 V352.839c0-3.647,2.954-6.585,6.585-6.585h15.722c3.631,0,6.585,2.938,6.585,6.585V456.673z" data-original="#FFB600" class="" data-old_color="#0D567F"/>
17
  </g></g> </svg>
18
  </div>
19
- <div id="wptb-messaging-area">
20
-
 
21
  </div>
22
  <div class="wptb-right">
23
  <?php
@@ -30,7 +31,8 @@
30
  }
31
  $wptb_preview_button_url = add_query_arg(
32
  array(
33
- 'wptb_table_preview' => $wptb_preview_button_url_value_id,
 
34
  ),
35
  home_url()
36
  );
@@ -52,9 +54,9 @@
52
  <?php esc_html_e( 'Save Table', 'wp-table-builder' ); ?>
53
  </a>
54
  </div>
55
- <div class="wptb-close">
56
- <a href="<?php echo esc_url( admin_url( 'admin.php?page=wptb-overview' ) ); ?>"><span class="dashicons dashicons-no" style="font-size: 30px; width: 30px; height: 30px;"></span></a>
57
- </div>
58
  </div>
59
 
60
  <div class="wptb-popup-window-modal">
16
  <path style="fill:#0D557E" d="M373.996,456.673c0,3.631-2.954,6.585-6.585,6.585h-15.722c-3.631,0-6.585-2.954-6.585-6.585 V352.839c0-3.647,2.954-6.585,6.585-6.585h15.722c3.631,0,6.585,2.938,6.585,6.585V456.673z" data-original="#FFB600" class="" data-old_color="#0D567F"/>
17
  </g></g> </svg>
18
  </div>
19
+
20
+ <div class="wptb-close">
21
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=wptb-overview' ) ); ?>"><span class="dashicons dashicons-no" style="font-size: 30px; width: 30px; height: 30px;"></span></a>
22
  </div>
23
  <div class="wptb-right">
24
  <?php
31
  }
32
  $wptb_preview_button_url = add_query_arg(
33
  array(
34
+ 'post_type' => 'wptb-tables',
35
+ 'p' => $wptb_preview_button_url_value_id,
36
  ),
37
  home_url()
38
  );
54
  <?php esc_html_e( 'Save Table', 'wp-table-builder' ); ?>
55
  </a>
56
  </div>
57
+ </div>
58
+ <div id="wptb-messaging-area">
59
+
60
  </div>
61
 
62
  <div class="wptb-popup-window-modal">
inc/admin/views/builder/wptb-builder-table-settings.php CHANGED
@@ -12,6 +12,17 @@
12
  title="<?php esc_attr_e( 'Manage Cells', 'wp_table_builder' ); ?>">
13
  </div>
14
  </div>
 
 
 
 
 
 
 
 
 
 
 
15
  <div class="wptb-settings-items">
16
  <div class="wptb-settings-row wptb-settings-middle-xs">
17
  <label class="wptb-checkbox-button">
12
  title="<?php esc_attr_e( 'Manage Cells', 'wp_table_builder' ); ?>">
13
  </div>
14
  </div>
15
+ <div class="wptb-settings-items wptb-adaptive-table-chose-block" style="display: none;">
16
+ <div class="wptb-settings-row wptb-settings-middle-xs">
17
+ <label class="wptb-checkbox-button">
18
+ <span style="font-size: 16px">
19
+ <?php esc_html_e( 'Make Table Responsive', 'wp-table-builder' ); ?>
20
+ </span>
21
+ <input id="wptb-adaptive-table-checkbox" type="checkbox" />
22
+ <i></i>
23
+ </label>
24
+ </div>
25
+ </div>
26
  <div class="wptb-settings-items">
27
  <div class="wptb-settings-row wptb-settings-middle-xs">
28
  <label class="wptb-checkbox-button">
inc/common/class-helpers.php CHANGED
@@ -48,7 +48,8 @@ class Helpers {
48
 
49
  $url = add_query_arg(
50
  array(
51
- 'wptb_table_preview' => absint( $table_id ),
 
52
  ),
53
  home_url()
54
  );
48
 
49
  $url = add_query_arg(
50
  array(
51
+ 'post_type' => 'wptb-tables',
52
+ 'p' => absint( $table_id )
53
  ),
54
  home_url()
55
  );
inc/core/class-preview.php CHANGED
@@ -73,16 +73,18 @@ class Preview {
73
  public function is_preview_page() {
74
 
75
  // if this is a preview page, then continue
76
- if ( empty( $_GET['wptb_table_preview'] ) ) {
77
  return false;
78
- }
 
 
79
 
80
  // if the user is authorized and if user rights are valid
81
  if ( ! is_user_logged_in() || ! Helpers::wptb_current_user_can() ) {
82
  return false;
83
  }
84
 
85
- $this->table_data = $this->get_table_data( absint( $_GET['wptb_table_preview'] ) );
86
 
87
  // Check if the form is available
88
  if ( empty( $this->table_data ) ) {
@@ -130,7 +132,7 @@ class Preview {
130
 
131
  add_filter( 'get_the_excerpt', array( $this, 'the_content' ), 999 );
132
 
133
- add_filter( 'template_include', array( $this, 'template_include' ) );
134
 
135
  add_filter( 'post_thumbnail_html', '__return_empty_string' );
136
 
@@ -160,12 +162,14 @@ class Preview {
160
  *
161
  * @return string
162
  */
163
- public function the_title() {
164
 
165
- $title = sprintf(
166
- esc_html__( '%s Preview', 'wp-table-builder' ),
167
- ! empty( $this->table_data->post_title ) ? sanitize_text_field( $this->table_data->post_title ) : esc_html__( 'Table', 'wp-table-builder' )
168
- );
 
 
169
 
170
  return $title;
171
 
@@ -197,7 +201,7 @@ class Preview {
197
  */
198
  public function template_include() {
199
 
200
- return locate_template( array( 'page.php', 'single.php', 'index.php' ) );
201
 
202
  }
203
 
73
  public function is_preview_page() {
74
 
75
  // if this is a preview page, then continue
76
+ if ( empty( $_GET['post_type'] ) && empty( $_GET['p'] ) ) {
77
  return false;
78
+ } elseif ( sanitize_text_field( $_GET['post_type'] ) !== 'wptb-tables' ) {
79
+ return false;
80
+ }
81
 
82
  // if the user is authorized and if user rights are valid
83
  if ( ! is_user_logged_in() || ! Helpers::wptb_current_user_can() ) {
84
  return false;
85
  }
86
 
87
+ $this->table_data = $this->get_table_data( absint( $_GET['p'] ) );
88
 
89
  // Check if the form is available
90
  if ( empty( $this->table_data ) ) {
132
 
133
  add_filter( 'get_the_excerpt', array( $this, 'the_content' ), 999 );
134
 
135
+ //add_filter( 'template_include', array( $this, 'template_include' ) );
136
 
137
  add_filter( 'post_thumbnail_html', '__return_empty_string' );
138
 
162
  *
163
  * @return string
164
  */
165
+ public function the_title( $title ) {
166
 
167
+ if( ( is_singular( 'post' ) || is_singular( 'page' ) ) && in_the_loop() ) {
168
+ $title = sprintf(
169
+ esc_html__( '%s Preview', 'wp-table-builder' ),
170
+ ! empty( $this->table_data->post_title ) ? sanitize_text_field( $this->table_data->post_title ) : esc_html__( 'Table', 'wp-table-builder' )
171
+ );
172
+ }
173
 
174
  return $title;
175
 
201
  */
202
  public function template_include() {
203
 
204
+ return locate_template( array( 'single.php', 'singular.php', 'index.php' ) );
205
 
206
  }
207
 
inc/frontend/css/wp-table-builder-frontend.css CHANGED
@@ -75,7 +75,7 @@ table.wptb-preview-table-mobile {
75
  overflow-wrap: break-word;
76
  margin: 0 !important;
77
  word-wrap: break-word;
78
- word-break: break-all;
79
  }
80
 
81
  .wptb-table-container table tr td ul {
@@ -102,6 +102,10 @@ table.wptb-preview-table-mobile {
102
  margin-bottom: 15px;
103
  }
104
 
 
 
 
 
105
  .wptb-image-wrapper img {
106
  width: 100%;
107
  }
@@ -297,30 +301,21 @@ table.wptb-preview-table-mobile {
297
  padding: 0px !important;
298
  }
299
 
300
- <<<<<<< HEAD
301
  /*.wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container {
302
- =======
303
- .wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container {
304
- >>>>>>> 766b3cbc93ba1a84e3d8611b365a5ea6be1dc402
305
  position: relative;
306
  width: 50%;
307
  }*/
308
 
309
- <<<<<<< HEAD
310
  /*.wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container .wptb-column-title-mobile {
311
- =======
312
- .wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container .wptb-column-title-mobile {
313
- >>>>>>> 766b3cbc93ba1a84e3d8611b365a5ea6be1dc402
314
  display: block;
315
  min-height: 60px;
316
  }*/
317
 
318
- <<<<<<< HEAD
319
  /*.wptb-table-container table.wptb-table-preview-head td.wptb-column-title-mobile-not-elements
320
  .wptb-column-title-mobile-container .wptb-column-title-mobile::before {
321
- =======
322
- .wptb-table-container table.wptb-table-preview-head td.wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container .wptb-column-title-mobile::before {
323
- >>>>>>> 766b3cbc93ba1a84e3d8611b365a5ea6be1dc402
324
  display: block;
325
  width: 100%;
326
  padding: 0px;
75
  overflow-wrap: break-word;
76
  margin: 0 !important;
77
  word-wrap: break-word;
78
+ word-break: break-word;
79
  }
80
 
81
  .wptb-table-container table tr td ul {
102
  margin-bottom: 15px;
103
  }
104
 
105
+ .wptb-cell .wptb-ph-element a {
106
+ box-shadow: none;
107
+ }
108
+
109
  .wptb-image-wrapper img {
110
  width: 100%;
111
  }
301
  padding: 0px !important;
302
  }
303
 
304
+
305
  /*.wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container {
 
 
 
306
  position: relative;
307
  width: 50%;
308
  }*/
309
 
310
+
311
  /*.wptb-column-title-mobile-not-elements .wptb-column-title-mobile-container .wptb-column-title-mobile {
 
 
 
312
  display: block;
313
  min-height: 60px;
314
  }*/
315
 
316
+
317
  /*.wptb-table-container table.wptb-table-preview-head td.wptb-column-title-mobile-not-elements
318
  .wptb-column-title-mobile-container .wptb-column-title-mobile::before {
 
 
 
319
  display: block;
320
  width: 100%;
321
  padding: 0px;
inc/frontend/js/wp-table-builder-frontend.js CHANGED
@@ -166,7 +166,7 @@ jQuery( document ).ready( function ( $ ) {
166
  if( previewTable.length > 0 && tableContainer.length > 0 ) {
167
  tableContainer = tableContainer[0];
168
  previewTable = previewTable[0];
169
- if( previewTable.dataset.reconstraction == 1 ) {
170
  let tableContainerWidth = tableContainer.offsetWidth;
171
  let previewTableWidth = previewTable.offsetWidth;
172
  if( tableContainerWidth < previewTableWidth ) {
166
  if( previewTable.length > 0 && tableContainer.length > 0 ) {
167
  tableContainer = tableContainer[0];
168
  previewTable = previewTable[0];
169
+ if( previewTable.dataset.reconstraction == 1 && previewTable.dataset.wptbAdaptiveTable == 1 ) {
170
  let tableContainerWidth = tableContainer.offsetWidth;
171
  let previewTableWidth = previewTable.offsetWidth;
172
  if( tableContainerWidth < previewTableWidth ) {
languages/wp-table-builder.pot CHANGED
@@ -16,19 +16,19 @@ msgstr ""
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
- #: ../inc/admin/class-admin-menu.php:91, ../inc/admin/class-admin-menu.php:103
20
  msgid "WP Table Builder"
21
  msgstr ""
22
 
23
- #: ../inc/admin/class-admin-menu.php:92, ../inc/admin/class-admin-menu.php:113
24
  msgid "Table Builder"
25
  msgstr ""
26
 
27
- #: ../inc/admin/class-admin-menu.php:104, ../inc/admin/class-admin-menu.php:182
28
  msgid "All Tables"
29
  msgstr ""
30
 
31
- #: ../inc/admin/class-admin-menu.php:114, ../inc/admin/class-admin-menu.php:186
32
  msgid "Add New"
33
  msgstr ""
34
 
@@ -36,11 +36,11 @@ msgstr ""
36
  msgid "Edit"
37
  msgstr ""
38
 
39
- #: ../inc/admin/class-tables.php:44, ../inc/admin/class-tables.php:49, ../inc/admin/class-wptb-listing.php:161
40
  msgid "Shortcode"
41
  msgstr ""
42
 
43
- #: ../inc/admin/class-tables.php:48, ../inc/admin/class-wptb-listing.php:160
44
  msgid "Title"
45
  msgstr ""
46
 
@@ -56,47 +56,67 @@ msgstr ""
56
  msgid "WPTB Tables"
57
  msgstr ""
58
 
59
- #: ../inc/admin/class-wptb-listing.php:29
60
- msgid "Table deleted successfully."
61
- msgstr ""
62
-
63
- #: ../inc/admin/class-wptb-listing.php:35
64
- msgid "Bulk Delete Performed Successfully."
65
- msgstr ""
66
-
67
  #. translators: %s - admin area page builder page URL.
68
- #: ../inc/admin/class-wptb-listing.php:92
69
  msgid "Whoops, you haven't created a table yet. Want to <a href=\"%s\">give it a go</a>?"
70
  msgstr ""
71
 
72
- #: ../inc/admin/class-wptb-listing.php:111
73
  msgstr ""
74
 
75
- #: ../inc/admin/class-wptb-listing.php:121
76
  msgid "Edit This Table"
77
  msgstr ""
78
 
79
- #: ../inc/admin/class-wptb-listing.php:162
80
  msgid "Created"
81
  msgstr ""
82
 
83
- #: ../inc/admin/class-wptb-listing.php:163
84
  msgid "ID"
85
  msgstr ""
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  #: ../inc/admin/views/builder/additional-element.php:3, ../inc/admin/views/builder/wptb-builder-left-panel.php:26
88
  msgid "Button"
89
  msgstr ""
90
 
91
- #: ../inc/admin/views/builder/wptb-builder-header.php:26
92
  msgid "</> Embed"
93
  msgstr ""
94
 
95
- #: ../inc/admin/views/builder/wptb-builder-header.php:31
 
 
 
 
96
  msgid "Save Table"
97
  msgstr ""
98
 
99
- #: ../inc/admin/views/builder/wptb-builder-header.php:44
100
  msgid "To embed this table on your site, please paste the following shortcode inside a post or page."
101
  msgstr ""
102
 
@@ -284,39 +304,59 @@ msgstr ""
284
  msgid "Close"
285
  msgstr ""
286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  #: ../inc/admin/views/builder/wptb-builder-table-settings.php:19
 
 
 
 
288
  msgid "Top Row As Header"
289
  msgstr ""
290
 
291
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:29
292
  msgid "Table Border"
293
  msgstr ""
294
 
295
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:42
296
  msgid "Apply Inner Border"
297
  msgstr ""
298
 
299
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:52
300
  msgid "Inner Border Size"
301
  msgstr ""
302
 
303
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:67
304
  msgid "Border Color"
305
  msgstr ""
306
 
307
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:77
308
  msgid "Cell Padding"
309
  msgstr ""
310
 
311
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:93
312
  msgid "Header Background"
313
  msgstr ""
314
 
315
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:105
316
  msgid "Even Row Background"
317
  msgstr ""
318
 
319
- #: ../inc/admin/views/builder/wptb-builder-table-settings.php:117
320
  msgid "Odd Row Background"
321
  msgstr ""
322
 
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
+ #: ../inc/admin/class-admin-menu.php:94, ../inc/admin/class-admin-menu.php:106
20
  msgid "WP Table Builder"
21
  msgstr ""
22
 
23
+ #: ../inc/admin/class-admin-menu.php:95, ../inc/admin/class-admin-menu.php:116
24
  msgid "Table Builder"
25
  msgstr ""
26
 
27
+ #: ../inc/admin/class-admin-menu.php:107, ../inc/admin/class-admin-menu.php:186
28
  msgid "All Tables"
29
  msgstr ""
30
 
31
+ #: ../inc/admin/class-admin-menu.php:117, ../inc/admin/class-admin-menu.php:190
32
  msgid "Add New"
33
  msgstr ""
34
 
36
  msgid "Edit"
37
  msgstr ""
38
 
39
+ #: ../inc/admin/class-tables.php:44, ../inc/admin/class-tables.php:49, ../inc/admin/class-wptb-listing.php:189
40
  msgid "Shortcode"
41
  msgstr ""
42
 
43
+ #: ../inc/admin/class-tables.php:48, ../inc/admin/class-wptb-listing.php:188
44
  msgid "Title"
45
  msgstr ""
46
 
56
  msgid "WPTB Tables"
57
  msgstr ""
58
 
 
 
 
 
 
 
 
 
59
  #. translators: %s - admin area page builder page URL.
60
+ #: ../inc/admin/class-wptb-listing.php:110
61
  msgid "Whoops, you haven't created a table yet. Want to <a href=\"%s\">give it a go</a>?"
62
  msgstr ""
63
 
64
+ #: ../inc/admin/class-wptb-listing.php:129
65
  msgstr ""
66
 
67
+ #: ../inc/admin/class-wptb-listing.php:139
68
  msgid "Edit This Table"
69
  msgstr ""
70
 
71
+ #: ../inc/admin/class-wptb-listing.php:190
72
  msgid "Created"
73
  msgstr ""
74
 
75
+ #: ../inc/admin/class-wptb-listing.php:191
76
  msgid "ID"
77
  msgstr ""
78
 
79
+ #: ../inc/admin/class-wptb-listing.php:254
80
+ msgid "Table duplicate successfully."
81
+ msgstr ""
82
+
83
+ #: ../inc/admin/class-wptb-listing.php:270
84
+ msgid "Table deleted successfully."
85
+ msgstr ""
86
+
87
+ #: ../inc/admin/class-wptb-listing.php:294
88
+ msgid "Bulk Delete Performed Successfully."
89
+ msgstr ""
90
+
91
+ #: ../inc/core/class-preview.php:169
92
+ msgid "%s Preview"
93
+ msgstr ""
94
+
95
+ #: ../inc/core/class-preview.php:170
96
+ msgid "Table"
97
+ msgstr ""
98
+
99
+ #: ../inc/core/class-preview.php:187
100
+ msgid "This is a preview of your table. This page is not publicly accessible."
101
+ msgstr ""
102
+
103
  #: ../inc/admin/views/builder/additional-element.php:3, ../inc/admin/views/builder/wptb-builder-left-panel.php:26
104
  msgid "Button"
105
  msgstr ""
106
 
107
+ #: ../inc/admin/views/builder/wptb-builder-header.php:42
108
  msgid "</> Embed"
109
  msgstr ""
110
 
111
+ #: ../inc/admin/views/builder/wptb-builder-header.php:49
112
+ msgid "Preview"
113
+ msgstr ""
114
+
115
+ #: ../inc/admin/views/builder/wptb-builder-header.php:54
116
  msgid "Save Table"
117
  msgstr ""
118
 
119
+ #: ../inc/admin/views/builder/wptb-builder-header.php:67
120
  msgid "To embed this table on your site, please paste the following shortcode inside a post or page."
121
  msgstr ""
122
 
304
  msgid "Close"
305
  msgstr ""
306
 
307
+ #: ../inc/admin/views/builder/wptb-builder-left-panel.php:301
308
+ msgid "Column Width"
309
+ msgstr ""
310
+
311
+ #: ../inc/admin/views/builder/wptb-builder-left-panel.php:316, ../inc/admin/views/builder/wptb-builder-left-panel.php:341
312
+ msgid "Fixed"
313
+ msgstr ""
314
+
315
+ #: ../inc/admin/views/builder/wptb-builder-left-panel.php:317, ../inc/admin/views/builder/wptb-builder-left-panel.php:342
316
+ msgid "Auto"
317
+ msgstr ""
318
+
319
+ #: ../inc/admin/views/builder/wptb-builder-left-panel.php:326
320
+ msgid "Row Height"
321
+ msgstr ""
322
+
323
  #: ../inc/admin/views/builder/wptb-builder-table-settings.php:19
324
+ msgid "Make Table Responsive"
325
+ msgstr ""
326
+
327
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:30
328
  msgid "Top Row As Header"
329
  msgstr ""
330
 
331
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:40
332
  msgid "Table Border"
333
  msgstr ""
334
 
335
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:53
336
  msgid "Apply Inner Border"
337
  msgstr ""
338
 
339
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:63
340
  msgid "Inner Border Size"
341
  msgstr ""
342
 
343
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:78
344
  msgid "Border Color"
345
  msgstr ""
346
 
347
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:88
348
  msgid "Cell Padding"
349
  msgstr ""
350
 
351
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:104
352
  msgid "Header Background"
353
  msgstr ""
354
 
355
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:116
356
  msgid "Even Row Background"
357
  msgstr ""
358
 
359
+ #: ../inc/admin/views/builder/wptb-builder-table-settings.php:128
360
  msgid "Odd Row Background"
361
  msgstr ""
362
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: imtiazrayhan
3
  Tags: table, table builder, drag and drop
4
  Requires at least: 4.9
5
  Tested up to: 5.2
6
- Stable tag: 1.0.3
7
  Requires PHP: 5.6
8
  License: GPL3+
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -59,6 +59,13 @@ That's it. You're done!
59
 
60
  == Changelog ==
61
 
 
 
 
 
 
 
 
62
  = 1.0.3 =
63
 
64
  * FIX: PHP function not declared issue.
3
  Tags: table, table builder, drag and drop
4
  Requires at least: 4.9
5
  Tested up to: 5.2
6
+ Stable tag: 1.0.4
7
  Requires PHP: 5.6
8
  License: GPL3+
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
59
 
60
  == Changelog ==
61
 
62
+ = 1.0.4 =
63
+
64
+ * NEW - Option to choose whether to make the table responsive or not.
65
+ * FIX - Table Preview issue.
66
+ * FIX - Preview button not working in the editor.
67
+ * FIX - Words breaking for Text element.
68
+
69
  = 1.0.3 =
70
 
71
  * FIX: PHP function not declared issue.
wp-table-builder.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: WP Table Builder
16
  * Plugin URI: https://wptablebuilder.com/
17
  * Description: Drag and Drop Table Builder Plugin for WordPress.
18
- * Version: 1.0.3
19
  * Author: Imtiaz Rayhan
20
  * Author URI: https://imtiazrayhan.com//
21
  * License: GPL-3.0+
@@ -39,7 +39,7 @@ define( __NAMESPACE__ . '\NS', __NAMESPACE__ . '\\' );
39
 
40
  define( NS . 'WP_TABLE_BUILDER', 'wp-table-builder' );
41
 
42
- define( NS . 'PLUGIN_VERSION', '1.0.3' );
43
 
44
  define( NS . 'WP_TABLE_BUILDER_DIR', plugin_dir_path( __FILE__ ) );
45
 
15
  * Plugin Name: WP Table Builder
16
  * Plugin URI: https://wptablebuilder.com/
17
  * Description: Drag and Drop Table Builder Plugin for WordPress.
18
+ * Version: 1.0.4
19
  * Author: Imtiaz Rayhan
20
  * Author URI: https://imtiazrayhan.com//
21
  * License: GPL-3.0+
39
 
40
  define( NS . 'WP_TABLE_BUILDER', 'wp-table-builder' );
41
 
42
+ define( NS . 'PLUGIN_VERSION', '1.0.4' );
43
 
44
  define( NS . 'WP_TABLE_BUILDER_DIR', plugin_dir_path( __FILE__ ) );
45